• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021 Bestechnic (Shanghai) Co., Ltd. All rights reserved.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14add_if_exists = $(foreach d,$(1),$(if $(wildcard $(srctree)/$(d)),$(d) ,))
15
16# -------------------------------------------
17# CHIP selection
18# -------------------------------------------
19
20export CHIP
21
22ifneq (,)
23else ifeq ($(CHIP),best1000)
24KBUILD_CPPFLAGS += -DCHIP_BEST1000
25CPU := m4
26export CHIP_HAS_FPU := 1
27export CHIP_HAS_USB := 1
28export CHIP_HAS_USBPHY := 0
29export CHIP_HAS_SDMMC := 1
30export CHIP_HAS_PSRAM := 1
31export CHIP_HAS_SPI := 1
32export CHIP_HAS_SPILCD := 1
33export CHIP_HAS_SPIPHY := 0
34export CHIP_HAS_I2C := 1
35export CHIP_HAS_UART := 2
36export CHIP_HAS_DMA := 2
37export CHIP_HAS_SPDIF := 1
38export CHIP_HAS_TRANSQ := 0
39export CHIP_HAS_EXT_PMU := 0
40export CHIP_HAS_AUDIO_CONST_ROM := 1
41export CHIP_FLASH_CTRL_VER := 1
42export CHIP_PSRAM_CTRL_VER := 1
43export CHIP_SPI_VER := 1
44export CHIP_HAS_EC_CODEC_REF := 0
45export CHIP_HAS_SCO_DMA_SNAPSHOT := 0
46export CHIP_ROM_UTILS_VER := 1
47export CHIP_HAS_SECURE_BOOT := 1
48export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
49export NO_LPU_26M ?= 1
50else ifeq ($(CHIP),best1305)
51KBUILD_CPPFLAGS += -DCHIP_BEST1305
52CPU := m33
53SHA256_ROM := 0
54export CHIP_HAS_SECURE_BOOT := 0
55export CHIP_HAS_FPU := 1
56export CHIP_HAS_USB := 0
57export CHIP_HAS_USBPHY := 0
58export CHIP_HAS_SDMMC := 0
59export CHIP_HAS_PSRAM := 0
60export CHIP_HAS_SPI := 1
61export CHIP_HAS_SPILCD := 0
62export CHIP_HAS_SPIPHY := 0
63export CHIP_HAS_I2C := 3
64export CHIP_HAS_UART := 2
65export CHIP_HAS_DMA := 2
66export CHIP_HAS_I2S := 1
67export CHIP_HAS_TDM := 1
68export CHIP_HAS_I2S_TDM_TRIGGER := 1
69export CHIP_HAS_SPDIF := 0
70export CHIP_HAS_TRANSQ := 0
71export CHIP_HAS_PSC := 1
72export CHIP_HAS_EXT_PMU := 0
73export CHIP_HAS_CP := 1
74export CHIP_HAS_AUDIO_CONST_ROM := 0
75export CHIP_FLASH_CTRL_VER := 4
76export CHIP_CACHE_VER := 3
77export CHIP_SPI_VER := 4
78export CHIP_HAS_EC_CODEC_REF := 1
79export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
80export CHIP_ROM_UTILS_VER := 1
81export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
82else ifeq ($(CHIP),best1400)
83ifeq ($(CHIP_SUBTYPE),best1402)
84SUBTYPE_VALID := 1
85KBUILD_CPPFLAGS += -DCHIP_BEST1402
86export CHIP_FLASH_CTRL_VER := 3
87else
88KBUILD_CPPFLAGS += -DCHIP_BEST1400
89export CHIP_FLASH_CTRL_VER := 2
90endif
91CPU := m4
92export CHIP_HAS_FPU := 1
93export CHIP_HAS_USB := 1
94export CHIP_HAS_USBPHY := 0
95export CHIP_HAS_SDMMC := 0
96export CHIP_HAS_PSRAM := 0
97export CHIP_HAS_SPI := 1
98export CHIP_HAS_SPILCD := 0
99export CHIP_HAS_SPIPHY := 0
100export CHIP_HAS_I2C := 1
101export CHIP_HAS_UART := 3
102export CHIP_HAS_DMA := 1
103export CHIP_HAS_SPDIF := 0
104export CHIP_HAS_TRANSQ := 0
105export CHIP_HAS_EXT_PMU := 0
106export CHIP_HAS_AUDIO_CONST_ROM := 0
107export CHIP_SPI_VER := 3
108export BTDUMP_ENABLE := 1
109export CHIP_HAS_EC_CODEC_REF := 1
110export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
111export CHIP_ROM_UTILS_VER := 1
112export CHIP_HAS_SECURE_BOOT := 1
113export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
114export NO_LPU_26M ?= 1
115else ifeq ($(CHIP),best1501)
116KBUILD_CPPFLAGS += -DCHIP_BEST1501
117ifeq ($(CHIP_SUBSYS),sensor_hub)
118SUBSYS_VALID := 1
119KBUILD_CPPFLAGS += -DCHIP_SUBSYS_SENS
120export CHIP_HAS_DMA := 1
121export CHIP_HAS_I2C := 4
122export CHIP_HAS_SPILCD := 1
123export CHIP_HAS_UART := 2
124export CHIP_HAS_I2S := 1
125else
126export CHIP_HAS_USB := 1
127export CHIP_HAS_USBPHY := 1
128export CHIP_HAS_SDMMC := 1
129export CHIP_HAS_CP := 1
130export CHIP_HAS_DMA := 2
131export CHIP_HAS_I2C := 2
132export CHIP_HAS_UART := 3
133export CHIP_HAS_SPDIF := 1
134export CHIP_HAS_I2S := 2
135endif
136CPU := m33
137export CHIP_HAS_FPU := 1
138export CHIP_HAS_PSRAM := 0
139export CHIP_HAS_SPI := 1
140export CHIP_HAS_SPIPHY := 0
141export CHIP_HAS_TDM := 1
142export CHIP_HAS_I2S_TDM_TRIGGER := 1
143export CHIP_HAS_TRANSQ := 0
144export CHIP_HAS_PSC := 1
145export CHIP_HAS_EXT_PMU := 1
146export CHIP_HAS_AUDIO_CONST_ROM := 0
147export CHIP_FLASH_CTRL_VER := 4
148export CHIP_PSRAM_CTRL_VER := 2
149export CHIP_SPI_VER := 5
150export CHIP_CACHE_VER := 3
151export CHIP_INTERSYS_VER := 2
152export CHIP_GPIO_VER := 2
153export PSC_GPIO_IRQ_CTRL := 1
154export CHIP_RAM_BOOT := 1
155export CHIP_HAS_EC_CODEC_REF := 1
156export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
157export CHIP_ROM_UTILS_VER := 2
158export CHIP_HAS_SECURE_BOOT := 1
159export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 1
160export BLE_V2 :=1
161else ifeq ($(CHIP),best1600)
162KBUILD_CPPFLAGS += -DCHIP_BEST1600
163ifeq ($(BTH_AS_MAIN_MCU),1)
164export BOOT_LOADER_ENTRY_HOOK := 1
165KBUILD_CPPFLAGS += -DBTH_AS_MAIN_MCU
166endif
167ifeq ($(CHIP_SUBSYS),bth)
168SUBSYS_VALID := 1
169KBUILD_CPPFLAGS += -DCHIP_SUBSYS_BTH
170CPU := m33
171LIBC_ROM := 0
172CRC32_ROM := 0
173SHA256_ROM := 0
174export CHIP_HAS_DMA := 1
175export CHIP_HAS_UART := 2
176ifeq ($(FPGA),1)
177export CHIP_HAS_I2C := 1
178export CHIP_HAS_I2S := 1
179export CHIP_HAS_TDM := 1
180endif
181else ifeq ($(CHIP_SUBSYS),sensor_hub)
182SUBSYS_VALID := 1
183KBUILD_CPPFLAGS += -DCHIP_SUBSYS_SENS
184CPU := m33
185export CHIP_HAS_DMA := 1
186export CHIP_HAS_I2C := 5
187export CHIP_HAS_SPI := 1
188export CHIP_HAS_SPILCD := 1
189export CHIP_HAS_UART := 3
190export CHIP_HAS_I2S := 1
191export CHIP_HAS_TDM := 1
192export CHIP_HAS_I2S_TDM_TRIGGER := 1
193else
194CPU := m55
195export CHIP_HAS_USB := 1
196export CHIP_HAS_USBPHY := 1
197export CHIP_HAS_SDMMC := 1
198export CHIP_HAS_PSRAM := 1
199export CHIP_HAS_DMA := 2
200export CHIP_HAS_I2C := 2
201export CHIP_HAS_SPI := 1
202export CHIP_HAS_SPILCD := 1
203export CHIP_HAS_UART := 2
204export CHIP_HAS_SPDIF := 1
205export CHIP_HAS_I2S := 2
206export CHIP_HAS_TDM := 1
207export CHIP_HAS_I2S_TDM_TRIGGER := 1
208endif
209export CHIP_HAS_FPU := 1
210export CHIP_HAS_TRANSQ := 0
211export CHIP_HAS_PSC := 1
212export CHIP_HAS_EXT_PMU := 1
213export CHIP_CACHE_VER := 4
214export CHIP_FLASH_CTRL_VER := 6
215export CHIP_PSRAM_CTRL_VER := 2
216export CHIP_SPI_VER := 5
217export CHIP_INTERSYS_VER := 2
218export CHIP_GPIO_VER := 2
219export PSC_GPIO_IRQ_CTRL := 1
220export CHIP_RAM_BOOT := 0
221export CHIP_HAS_EC_CODEC_REF := 1
222export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
223export CHIP_ROM_UTILS_VER := 2
224export CHIP_HAS_SECURE_BOOT := 1
225export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 1
226export BLE_V2 :=1
227else ifeq ($(CHIP),best2000)
228KBUILD_CPPFLAGS += -DCHIP_BEST2000
229CPU := m4
230export CHIP_HAS_FPU := 1
231export CHIP_HAS_USB := 1
232export CHIP_HAS_USBPHY := 1
233export CHIP_HAS_SDMMC := 1
234export CHIP_HAS_PSRAM := 1
235export CHIP_HAS_SPI := 1
236export CHIP_HAS_SPILCD := 1
237export CHIP_HAS_SPIPHY := 1
238export CHIP_HAS_I2C := 1
239export CHIP_HAS_UART := 3
240export CHIP_HAS_DMA := 2
241export CHIP_HAS_SPDIF := 2
242export CHIP_HAS_TRANSQ := 1
243export CHIP_HAS_PSC := 1
244export CHIP_HAS_EXT_PMU := 0
245export CHIP_HAS_AUDIO_CONST_ROM := 0
246export CHIP_FLASH_CTRL_VER := 1
247export CHIP_PSRAM_CTRL_VER := 1
248export CHIP_SPI_VER := 1
249export CHIP_HAS_EC_CODEC_REF := 0
250export CHIP_HAS_SCO_DMA_SNAPSHOT := 0
251export CHIP_ROM_UTILS_VER := 1
252export CHIP_HAS_SECURE_BOOT := 1
253export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
254export NO_LPU_26M ?= 1
255else ifeq ($(CHIP),best2001)
256KBUILD_CPPFLAGS += -DCHIP_BEST2001
257ifeq ($(CHIP_SUBSYS),dsp)
258SUBSYS_VALID := 1
259KBUILD_CPPFLAGS += -DCHIP_BEST2001_DSP
260CPU := a7
261DSP_ENABLE ?= 1
262else
263CPU := m33
264export CHIP_HAS_CP := 1
265endif
266export CHIP_HAS_FPU := 1
267export CHIP_HAS_USB := 1
268export CHIP_HAS_USBPHY := 1
269export CHIP_HAS_SDMMC := 1
270export CHIP_HAS_PSRAM := 1
271export CHIP_HAS_PSRAMUHS := 1
272export CHIP_HAS_SPI := 1
273export CHIP_HAS_SPILCD := 1
274export CHIP_HAS_SPIPHY := 1
275export CHIP_HAS_SPIDPD := 1
276export CHIP_HAS_I2C := 2
277export CHIP_HAS_UART := 3
278ifeq ($(DSP_ENABLE), 1)
279export DSP_USE_GPDMA ?= 1
280ifeq ($(LARGE_RAM), 1)
281$(error LARGE_RAM conflicts with DSP_ENABLE)
282endif
283endif
284ifeq ($(DSP_USE_GPDMA), 1)
285export CHIP_HAS_DMA := 1
286KBUILD_CPPFLAGS += -DDSP_USE_GPDMA
287else
288ifeq ($(CHIP_SUBSYS),dsp)
289export CHIP_HAS_DMA := 0
290else
291export CHIP_HAS_DMA := 2
292endif
293endif
294export CHIP_HAS_SPDIF := 1
295export CHIP_HAS_TRANSQ := 2
296export CHIP_HAS_EXT_PMU := 0
297export CHIP_HAS_AUDIO_CONST_ROM := 0
298export CHIP_FLASH_CTRL_VER := 3
299export CHIP_PSRAM_CTRL_VER := 2
300export CHIP_SPI_VER := 4
301export CHIP_CACHE_VER := 2
302export CHIP_HAS_EC_CODEC_REF := 1
303export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
304export CHIP_ROM_UTILS_VER := 1
305export CHIP_HAS_SECURE_BOOT := 1
306export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
307export NO_LPU_26M ?= 1
308export FLASH_SIZE ?= 0x1000000
309export OSC_26M_X4_AUD2BB := 0
310export USB_USE_USBPLL := 1
311export CHIP_HAS_A7_DSP := 1
312export CHIP_HAS_WIFI := 1
313export A7_DSP_SPEED ?= 1100
314#780:780M, 1000:1G, 1100:1.1G
315else ifeq ($(CHIP),best2002)
316KBUILD_CPPFLAGS += -DCHIP_BEST2002
317CPU := m33
318export CHIP_HAS_CP := 1
319export CHIP_INTERSYS_VER := 2
320export CHIP_HAS_FPU := 1
321export CHIP_HAS_USB := 1
322export CHIP_HAS_USBPHY := 1
323export CHIP_HAS_SDMMC := 1
324export CHIP_HAS_SPI := 0
325export CHIP_HAS_SPILCD := 1
326export CHIP_HAS_I2C := 1
327export CHIP_HAS_UART := 3
328export CHIP_HAS_DMA := 1
329export CHIP_HAS_I2S := 1
330export CHIP_HAS_TRANSQ := 1
331export CHIP_HAS_EXT_PMU := 0
332export AF_DEVICE_INT_CODEC ?= 0
333export CHIP_HAS_AUDIO_CONST_ROM := 0
334export CHIP_FLASH_CTRL_VER := 5
335export FLASH_LOCK_CP_ACCESS := 1
336export CHIP_SPI_VER := 4
337export CHIP_HAS_SPIPHY := 1
338export CHIP_CACHE_VER := 4
339export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
340export NO_LPU_26M ?= 0
341export FLASH_SIZE ?= 0x100000
342export OSC_26M_X4_AUD2BB := 0
343export USB_USE_USBPLL := 0
344export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
345export CHIP_ROM_UTILS_VER := 2
346export CHIP_HAS_SECURE_BOOT := 0
347export CHIP_HAS_SDIO_DEVICE := 1
348export CHIP_HAS_WIFI := 1
349export CHIP_WIFITSF_VER := 2
350else ifeq ($(CHIP),best2003)
351KBUILD_CPPFLAGS += -DCHIP_BEST2003
352#KBUILD_CPPFLAGS += -DEXTEND_TRANSQ_2003
353ifeq ($(CHIP_SUBSYS),dsp)
354SUBSYS_VALID := 1
355KBUILD_CPPFLAGS += -DCHIP_BEST2003_DSP
356CPU := a7
357DSP_ENABLE ?= 1
358else
359ifeq ($(CHIP_SUBSYS),cmcp)
360SUBSYS_VALID := 1
361endif
362CPU := m33
363export CHIP_HAS_CP := 1
364endif
365export CHIP_INTERSYS_VER := 2
366export CHIP_HAS_FPU := 1
367export CHIP_HAS_USB := 1
368export CHIP_HAS_USBPHY := 1
369export CHIP_HAS_SDMMC := 1
370export CHIP_HAS_PSRAM := 1
371export CHIP_HAS_PSRAMUHS := 1
372export CHIP_HAS_SPI := 1
373export CHIP_HAS_SPILCD := 1
374export CHIP_HAS_SPIPHY := 1
375export CHIP_HAS_SPIDPD := 0
376export CHIP_HAS_I2C := 3
377export CHIP_HAS_UART := 4
378ifeq ($(DSP_ENABLE), 1)
379export DSP_USE_GPDMA ?= 1
380ifeq ($(LARGE_RAM), 1)
381$(error LARGE_RAM conflicts with DSP_ENABLE)
382endif
383endif
384ifeq ($(DSP_USE_GPDMA), 1)
385export CHIP_HAS_DMA := 1
386KBUILD_CPPFLAGS += -DDSP_USE_GPDMA
387else
388ifeq ($(CHIP_SUBSYS),dsp)
389export CHIP_HAS_DMA := 0
390else
391export CHIP_HAS_DMA := 2
392endif
393endif
394export CHIP_HAS_I2S := 2
395export CHIP_HAS_SPDIF := 1
396export CHIP_HAS_TRANSQ := 2
397export CHIP_HAS_EXT_PMU := 0
398export CHIP_HAS_AUDIO_CONST_ROM := 0
399export CHIP_FLASH_CTRL_VER := 5
400export NANDFLASH_SUPPORT ?= 0
401export FLASH_LOCK_CP_ACCESS := 1
402export CHIP_PSRAM_CTRL_VER := 3
403export CHIP_PSRAM_SQPI_MODE := 0
404export CHIP_SPI_VER := 4
405export CHIP_CACHE_VER := 4
406export CHIP_HAS_EC_CODEC_REF := 1
407export CHIP_HAS_SCO_DMA_SNAPSHOT := 0
408export NO_LPU_26M ?= 0
409export FLASH_SIZE ?= 0x1000000
410export OSC_26M_X4_AUD2BB := 0
411export USB_USE_USBPLL := 0
412export CHIP_HAS_A7_DSP := 1
413#780:780M, 1000:1G, 1100:1.1G
414export A7_DSP_SPEED ?= 1100
415export PSRAMUHS_SPEED ?= 900
416export PSRAM_SPEED ?= 200
417export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
418export CHIP_ROM_UTILS_VER := 2
419export CHIP_HAS_SECURE_BOOT := 1
420export CHIP_HAS_WIFI := 1
421else ifeq ($(CHIP),best2300)
422KBUILD_CPPFLAGS += -DCHIP_BEST2300
423CPU := m4
424export CHIP_HAS_FPU := 1
425export CHIP_HAS_USB := 1
426export CHIP_HAS_USBPHY := 1
427export CHIP_HAS_SDMMC := 1
428export CHIP_HAS_PSRAM := 0
429export CHIP_HAS_SPI := 1
430export CHIP_HAS_SPILCD := 1
431export CHIP_HAS_SPIPHY := 1
432export CHIP_HAS_I2C := 2
433export CHIP_HAS_UART := 3
434export CHIP_HAS_DMA := 2
435export CHIP_HAS_I2S := 1
436export CHIP_HAS_SPDIF := 1
437export CHIP_HAS_TRANSQ := 0
438export CHIP_HAS_PSC := 1
439export CHIP_HAS_EXT_PMU := 1
440export CHIP_HAS_AUDIO_CONST_ROM := 0
441export CHIP_FLASH_CTRL_VER := 2
442export CHIP_SPI_VER := 2
443export CHIP_HAS_EC_CODEC_REF := 0
444export CHIP_HAS_SCO_DMA_SNAPSHOT := 0
445export CHIP_ROM_UTILS_VER := 1
446export CHIP_HAS_SECURE_BOOT := 1
447export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
448export NO_LPU_26M ?= 1
449else ifeq ($(CHIP),best2300a)
450KBUILD_CPPFLAGS += -DCHIP_BEST2300A
451CPU := m33
452LIBC_ROM := 0
453CRC32_ROM := 0
454SHA256_ROM := 0
455export LIBC_OVERRIDE ?= 1
456export CHIP_HAS_FPU := 1
457export CHIP_HAS_USB := 1
458export CHIP_HAS_USBPHY := 1
459export CHIP_HAS_SDMMC := 1
460export CHIP_HAS_PSRAM := 0
461export CHIP_HAS_SPI := 1
462export CHIP_HAS_SPILCD := 1
463export CHIP_HAS_SPIPHY := 1
464export CHIP_HAS_I2C := 3
465export CHIP_HAS_UART := 3
466export CHIP_HAS_DMA := 2
467export CHIP_HAS_I2S := 2
468export CHIP_HAS_TDM := 2
469export CHIP_HAS_I2S_TDM_TRIGGER := 1
470export CHIP_HAS_SPDIF := 1
471export CHIP_HAS_TRANSQ := 0
472export CHIP_HAS_PSC := 1
473export CHIP_HAS_EXT_PMU := 1
474export CHIP_HAS_CP := 1
475export CHIP_HAS_AUDIO_CONST_ROM := 0
476export CHIP_FLASH_CTRL_VER := 3
477export CHIP_SPI_VER := 4
478export CHIP_CACHE_VER := 2
479export CHIP_RAM_BOOT := 1
480export CHIP_HAS_EC_CODEC_REF := 1
481export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
482export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 1
483export CHIP_ROM_UTILS_VER := 1
484export CHIP_HAS_SECURE_BOOT := 1
485export NO_LPU_26M ?= 1
486export BOOT_LOADER_ENTRY_HOOK ?= 1
487else ifeq ($(CHIP),best2300p)
488KBUILD_CPPFLAGS += -DCHIP_BEST2300P
489CPU := m4
490export CHIP_HAS_FPU := 1
491export CHIP_HAS_USB := 1
492export CHIP_HAS_USBPHY := 1
493export CHIP_HAS_SDMMC := 1
494export CHIP_HAS_PSRAM := 0
495export CHIP_HAS_SPI := 1
496export CHIP_HAS_SPILCD := 1
497export CHIP_HAS_SPIPHY := 1
498export CHIP_HAS_I2C := 2
499export CHIP_HAS_UART := 3
500export CHIP_HAS_DMA := 2
501export CHIP_HAS_I2S := 2
502export CHIP_HAS_TDM := 2
503export CHIP_HAS_SPDIF := 1
504export CHIP_HAS_TRANSQ := 0
505export CHIP_HAS_PSC := 1
506export CHIP_HAS_EXT_PMU := 1
507export CHIP_HAS_CP := 1
508export CHIP_HAS_AUDIO_CONST_ROM := 0
509export CHIP_FLASH_CTRL_VER := 2
510export CHIP_SPI_VER := 3
511export CHIP_CACHE_VER := 2
512export CHIP_HAS_EC_CODEC_REF := 1
513export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
514export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
515export CHIP_ROM_UTILS_VER := 1
516export CHIP_HAS_SECURE_BOOT := 1
517export NO_LPU_26M ?= 1
518else ifeq ($(CHIP),best3001)
519ifeq ($(CHIP_SUBTYPE),best3005)
520SUBTYPE_VALID := 1
521KBUILD_CPPFLAGS += -DCHIP_BEST3005
522export CHIP_CACHE_VER := 2
523export CHIP_FLASH_CTRL_VER := 2
524else
525KBUILD_CPPFLAGS += -DCHIP_BEST3001
526export CHIP_FLASH_CTRL_VER := 1
527endif
528CPU := m4
529export CHIP_HAS_FPU := 1
530export CHIP_HAS_USB := 1
531export CHIP_HAS_USBPHY := 1
532export CHIP_HAS_SDMMC := 0
533export CHIP_HAS_PSRAM := 0
534export CHIP_HAS_SPI := 1
535export CHIP_HAS_SPILCD := 0
536export CHIP_HAS_SPIPHY := 0
537export CHIP_HAS_I2C := 1
538export CHIP_HAS_UART := 2
539export CHIP_HAS_DMA := 1
540export CHIP_HAS_SPDIF := 1
541export CHIP_HAS_TRANSQ := 0
542export CHIP_HAS_EXT_PMU := 0
543export CHIP_HAS_AUDIO_CONST_ROM := 0
544export CHIP_SPI_VER := 3
545export CHIP_HAS_EC_CODEC_REF := 0
546export CHIP_HAS_SCO_DMA_SNAPSHOT := 0
547export CHIP_ROM_UTILS_VER := 1
548export CHIP_HAS_SECURE_BOOT := 1
549export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
550export NO_LPU_26M ?= 1
551else ifeq ($(CHIP),best3003)
552KBUILD_CPPFLAGS += -DCHIP_BEST3003
553CPU := m33
554export CHIP_HAS_FPU := 1
555export CHIP_HAS_USB := 1
556export CHIP_HAS_USBPHY := 1
557export CHIP_HAS_SDMMC := 0
558export CHIP_HAS_PSRAM := 0
559export CHIP_HAS_SPI := 1
560export CHIP_HAS_SPILCD := 0
561export CHIP_HAS_SPIPHY := 0
562export CHIP_HAS_I2C := 1
563export CHIP_HAS_UART := 2
564export CHIP_HAS_DMA := 2
565export CHIP_HAS_SPDIF := 1
566export CHIP_HAS_TRANSQ := 0
567export CHIP_HAS_EXT_PMU := 0
568export CHIP_HAS_AUDIO_CONST_ROM := 0
569export CHIP_CACHE_VER := 2
570export CHIP_FLASH_CTRL_VER := 2
571export CHIP_SPI_VER := 4
572export CHIP_HAS_DCO ?= 1
573export CHIP_HAS_SECURE_BOOT := 1
574export NO_LPU_26M ?= 1
575else ifeq ($(CHIP),fpga1000)
576KBUILD_CPPFLAGS += -DCHIP_FPGA1000
577KBUILD_CPPFLAGS += -DCHIP_BEST1000
578CPU := m4
579export CHIP_HAS_FPU := 1
580export CHIP_HAS_USB := 1
581export CHIP_HAS_USBPHY := 0
582export CHIP_HAS_SDMMC := 1
583export CHIP_HAS_PSRAM := 1
584export CHIP_HAS_SPI := 1
585export CHIP_HAS_SPILCD := 1
586export CHIP_HAS_SPIPHY := 0
587export CHIP_HAS_I2C := 1
588export CHIP_HAS_UART := 2
589export CHIP_HAS_DMA := 2
590export CHIP_HAS_SPDIF := 1
591export CHIP_HAS_TRANSQ := 0
592export CHIP_HAS_EXT_PMU := 0
593export CHIP_HAS_AUDIO_CONST_ROM := 1
594export CHIP_FLASH_CTRL_VER := 1
595export CHIP_PSRAM_CTRL_VER := 1
596export CHIP_SPI_VER := 1
597export CHIP_HAS_EC_CODEC_REF := 0
598export CHIP_HAS_SCO_DMA_SNAPSHOT := 0
599export CHIP_ROM_UTILS_VER := 1
600export CHIP_HAS_SECURE_BOOT := 1
601export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 0
602export NO_LPU_26M ?= 1
603else ifeq ($(CHIP),best1501simu)
604KBUILD_CPPFLAGS += -DCHIP_BEST1501SIMU
605export CHIP_HAS_USB := 0
606export CHIP_HAS_USBPHY := 1
607export CHIP_HAS_SDMMC := 1
608export CHIP_HAS_CP := 0
609export CHIP_HAS_DMA := 2
610export CHIP_HAS_I2C := 2
611export CHIP_HAS_UART := 3
612export CHIP_HAS_SPDIF := 1
613export CHIP_HAS_I2S := 2
614CPU ?= m4
615
616ifeq ($(CPU),m4)
617KBUILD_CPPFLAGS += -DCPU_M4
618endif
619
620ifeq ($(CHIP_SUB),best1501p)
621KBUILD_CPPFLAGS += -D__FPGA_1501P__
622KBUILD_CPPFLAGS += -DFLASH_ULTRA_LOW_SPEED
623endif
624
625
626export CHIP_HAS_FPU := 1
627export CHIP_HAS_PSRAM := 0
628export CHIP_HAS_SPI := 1
629export CHIP_HAS_SPIPHY := 0
630export CHIP_HAS_TDM := 1
631export CHIP_HAS_I2S_TDM_TRIGGER := 1
632export CHIP_HAS_TRANSQ := 0
633export CHIP_HAS_PSC := 0
634export CHIP_HAS_EXT_PMU := 1
635export CHIP_HAS_AUDIO_CONST_ROM := 0
636export CHIP_FLASH_CTRL_VER := 4
637export CHIP_PSRAM_CTRL_VER := 2
638export CHIP_SPI_VER := 5
639export CHIP_CACHE_VER := 3
640export CHIP_INTERSYS_VER := 2
641export CHIP_GPIO_VER := 2
642export PSC_GPIO_IRQ_CTRL := 1
643export CHIP_RAM_BOOT := 1
644export CHIP_HAS_EC_CODEC_REF := 1
645export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
646export CHIP_ROM_UTILS_VER := 2
647export CHIP_HAS_SECURE_BOOT := 0
648export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 1
649export BLE_V2 :=1
650ifeq ($(RAMSTART),1)
651KBUILD_CPPFLAGS += -DRAMSTART
652endif
653ifeq ($(MAGIC_NUM),1)
654KBUILD_CPPFLAGS += -DMAGIC_NUM_AUTO
655endif
656ifeq ($(ASIC_SIMU),1)
657KBUILD_CPPFLAGS += -DASIC_SIMU
658endif
659else ifeq ($(CHIP),best1600simu)
660KBUILD_CPPFLAGS += -DCHIP_BEST1600SIMU
661export CHIP_HAS_USB := 0
662export CHIP_HAS_USBPHY := 1
663export CHIP_HAS_SDMMC := 1
664export CHIP_HAS_CP := 0
665export CHIP_HAS_DMA := 2
666export CHIP_HAS_I2C := 2
667export CHIP_HAS_UART := 2
668export CHIP_HAS_SPDIF := 1
669export CHIP_HAS_I2S := 1
670CPU ?= m4
671
672ifeq ($(CPU),m4)
673KBUILD_CPPFLAGS += -DCPU_M4
674endif
675
676export CHIP_HAS_FPU := 1
677export CHIP_HAS_PSRAM := 0
678export CHIP_HAS_SPI := 1
679export CHIP_HAS_SPIPHY := 0
680export CHIP_HAS_TDM := 1
681export CHIP_HAS_I2S_TDM_TRIGGER := 1
682export CHIP_HAS_TRANSQ := 0
683export CHIP_HAS_PSC := 0
684export CHIP_HAS_EXT_PMU := 1
685export CHIP_HAS_AUDIO_CONST_ROM := 0
686export CHIP_FLASH_CTRL_VER := 4
687export CHIP_PSRAM_CTRL_VER := 2
688export CHIP_SPI_VER := 5
689export CHIP_CACHE_VER := 3
690export CHIP_INTERSYS_VER := 2
691export CHIP_GPIO_VER := 2
692export PSC_GPIO_IRQ_CTRL := 1
693export CHIP_RAM_BOOT := 1
694export CHIP_HAS_EC_CODEC_REF := 1
695export CHIP_HAS_SCO_DMA_SNAPSHOT := 1
696export CHIP_ROM_UTILS_VER := 2
697export CHIP_HAS_SECURE_BOOT := 0
698export CHIP_HAS_ANC_HW_GAIN_SMOOTHING := 1
699export BLE_V2 :=1
700ifeq ($(RAMSTART),1)
701KBUILD_CPPFLAGS += -DRAMSTART
702endif
703ifeq ($(MAGIC_NUM),1)
704KBUILD_CPPFLAGS += -DMAGIC_NUM_AUTO
705endif
706else
707$(error Invalid CHIP: $(CHIP))
708endif
709
710ifneq ($(CHIP_SUBTYPE),)
711ifneq ($(SUBTYPE_VALID),1)
712$(error Invalid CHIP_SUBTYPE=$(CHIP_SUBTYPE) for CHIP=$(CHIP))
713endif
714export CHIP_SUBTYPE
715endif
716
717ifneq ($(CHIP_SUBSYS),)
718ifneq ($(SUBSYS_VALID),1)
719$(error Invalid CHIP_SUBSYS=$(CHIP_SUBSYS) for CHIP=$(CHIP))
720endif
721export CHIP_SUBSYS
722endif
723
724ifeq ($(CPU),)
725CPU := m33
726endif
727export CPU
728
729ifneq ($(filter a%,$(CPU)),)
730# Override lds file
731ifeq ($(PSRAMUHS_ENABLE), 1)
732LDS_FILE := armca_psram.lds
733else
734ifeq ($(FT_TEST_2001),1)
735LDS_FILE := armca_ft2001.lds
736else
737LDS_FILE := armca.lds
738endif
739endif
740
741ifeq ($(GEN_BOOT_SECTION),1)
742CPPFLAGS_${LDS_FILE} += -DGEN_BOOT_SECTION
743endif
744
745ifeq ($(EXEC_IN_RAM),1)
746CPPFLAGS_${LDS_FILE} += -DEXEC_IN_RAM
747else ifeq ($(EXEC_IN_PSRAM),1)
748CPPFLAGS_${LDS_FILE} += -DEXEC_IN_PSRAM
749endif
750endif
751
752ifeq ($(CHIP_HAS_A7_DSP),1)
753KBUILD_CPPFLAGS += -DCHIP_HAS_A7_DSP
754endif
755
756KBUILD_CPPFLAGS += -DCHIP_HAS_UART=$(CHIP_HAS_UART)
757ifneq ($(CHIP_HAS_I2C),)
758KBUILD_CPPFLAGS += -DCHIP_HAS_I2C=$(CHIP_HAS_I2C)
759endif
760
761ifeq ($(CHIP_HAS_USB),1)
762KBUILD_CPPFLAGS += -DCHIP_HAS_USB
763endif
764
765ifneq ($(filter-out 0,$(CHIP_HAS_TRANSQ)),)
766KBUILD_CPPFLAGS += -DCHIP_HAS_TRANSQ=$(CHIP_HAS_TRANSQ)
767endif
768
769ifeq ($(NO_TRUSTZONE),1)
770KBUILD_CPPFLAGS += -DNO_TRUSTZONE
771endif
772
773ifneq ($(NUTTX_BUILD),1)
774ifneq ($(filter 1,$(NO_CP) $(ARM_CMSE)),)
775export CHIP_HAS_CP := 0
776endif
777endif
778
779ifeq ($(CHIP_HAS_CP),1)
780KBUILD_CPPFLAGS += -DCHIP_HAS_CP
781endif
782
783ifeq ($(CHIP_HAS_AUDIO_CONST_ROM),1)
784KBUILD_CPPFLAGS += -DCHIP_HAS_AUDIO_CONST_ROM
785endif
786
787ifeq ($(CHIP_HAS_ANC_HW_GAIN_SMOOTHING),1)
788KBUILD_CPPFLAGS += -DANC_HW_GAIN_SMOOTHING
789endif
790
791ifeq ($(CORE_SLEEP_POWER_DOWN),1)
792KBUILD_CPPFLAGS += -DCORE_SLEEP_POWER_DOWN
793endif
794
795ifneq ($(SECURE_BOOT_VER),)
796KBUILD_CPPFLAGS += -DSECURE_BOOT_VER=$(SECURE_BOOT_VER)
797endif
798
799ifeq ($(CHIP_HAS_EXT_PMU),1)
800export PMU_IRQ_UNIFIED ?= 1
801endif
802
803# -------------------------------------------
804# Standard C library
805# -------------------------------------------
806export NUTTX_BUILD ?= 0
807
808export NOSTD
809export LIBC_ROM
810
811ifeq ($(NOSTD),1)
812
813ifeq ($(MBED),1)
814$(error Invalid configuration: MBED needs standard C library support)
815endif
816ifeq ($(RTOS),1)
817ifneq ($(NO_LIBC),1)
818$(error Invalid configuration: RTOS needs standard C library support)
819endif
820endif
821
822ifneq ($(NO_LIBC),1)
823core-y += utils/libc/
824KBUILD_CPPFLAGS += -Iutils/libc/inc
825endif
826
827SPECS_CFLAGS :=
828
829LIB_LDFLAGS := $(filter-out -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys,$(LIB_LDFLAGS))
830
831KBUILD_CPPFLAGS += -ffreestanding
832ifeq ($(TOOLCHAIN),armclang)
833# 1) Avoid -nostdinc
834#    CMSIS header files need arm_compat.h, which is one of toolchain's standard header files
835# 2) Always -nostdlib for compiling C/C++ files
836#    Never convert standard API calls to non-standard library calls, but just emit standard API calls
837# 3) Avoid -nostdlib for linking final image
838#    Some 64-bit calculations and math functions need toolchain's standard library
839KBUILD_CPPFLAGS += -nostdlib
840else
841KBUILD_CPPFLAGS += -nostdinc
842CFLAGS_IMAGE += -nostdlib
843endif
844
845KBUILD_CPPFLAGS += -DNOSTD
846
847else # NOSTD != 1
848
849ifneq ($(filter 1,$(LIBC_ROM) $(LIBC_OVERRIDE)),)
850core-y += utils/libc/
851endif
852
853ifeq ($(TOOLCHAIN),armclang)
854LIB_LDFLAGS := $(filter-out -lsupc++,$(LIB_LDFLAGS))
855else
856ifneq ($(NOSYS),1)
857SPECS_CFLAGS := --specs=nano.specs
858else
859SPECS_CFLAGS := --specs=nosys.specs
860endif
861LIB_LDFLAGS += -lm -lc -lgcc -lnosys
862endif
863
864endif # NOSTD != 1
865
866# -------------------------------------------
867# RTOS library
868# -------------------------------------------
869
870export RTOS
871
872ifeq ($(RTOS),1)
873
874ifeq ($(CPU),m4)
875KERNEL ?= RTX
876else
877KERNEL ?= RTX5
878ifeq ($(KERNEL),RTX)
879$(error RTX doesn't support $(CPU))
880endif
881endif
882
883export KERNEL
884
885VALID_KERNEL_LIST := RTX RTX5 FREERTOS NUTTX RTT LITEOS_M LITEOS_A RHINO
886
887ifeq ($(filter $(VALID_KERNEL_LIST),$(KERNEL)),)
888$(error Bad KERNEL=$(KERNEL). Valid values are: $(VALID_KERNEL_LIST))
889endif
890
891core-y += rtos/
892
893KBUILD_CPPFLAGS += -DRTOS
894KBUILD_CPPFLAGS += -DKERNEL_$(KERNEL)
895#CPPFLAGS_${LDS_FILE} += -DKERNEL_$(KERNEL)
896
897ifeq ($(KERNEL),LITEOS_M)
898KBUILD_CPPFLAGS += -DPOSIX_SUPPORT
899ifeq ($(GEN_LIB),1)
900KBUILD_CPPFLAGS += -DOHOS_LIB
901endif
902ifeq ($(SDK),1)
903KBUILD_CPPFLAGS += -DOHOS_SDK
904endif
905endif
906
907ifeq ($(KERNEL),NUTTX)
908LIB_LDFLAGS := $(filter-out -lstdc++ -lc -lnosys,$(LIB_LDFLAGS)) -nodefaultlibs -nostdlib
909KBUILD_CPPFLAGS += \
910	-Iinclude/rtos/nuttx/
911else ifeq ($(KERNEL),RTX)
912KBUILD_CPPFLAGS += \
913	-Iinclude/rtos/rtx/
914KBUILD_CPPFLAGS += -D__RTX_CPU_STATISTICS__=1
915#KBUILD_CPPFLAGS += -DTASK_HUNG_CHECK_ENABLED=1
916else ifeq ($(KERNEL),RTX5)
917OS_IDLESTKSIZE ?= 1024
918KBUILD_CPPFLAGS += \
919	-Iinclude/rtos/rtx5/
920KBUILD_CPPFLAGS += -D__RTX_CPU_STATISTICS__=1
921#KBUILD_CPPFLAGS += -DTASK_HUNG_CHECK_ENABLED=1
922else ifeq ($(KERNEL),RTT)
923KBUILD_CPPFLAGS += -DOS_MAIN_SUPPORT=1
924KBUILD_CPPFLAGS += -Irtos/rt_thread/CMSIS/RTOS2/RT_Thread/src/		\
925					-Irtos/rt_thread/CMSIS/CMSIS_5/CMSIS/Core/Include/ \
926					-Irtos/rt_thread/CMSIS/CMSIS_5/CMSIS/RTOS2/Include/ \
927					-Irtos/rt_thread/CMSIS/CMSIS_5/CMSIS/RTOS2/Template/ \
928					-Irtos/rt_thread/bsp/best200x_$(CPU)/	\
929					-Irtos/rt_thread/include/				\
930					-Irtos/rt_thread/components/finsh/      \
931					-Irtos/rt_thread/
932
933ifeq ($(CPU),a7)
934KBUILD_CPPFLAGS += -Irtos/rt_thread/libcpu/arm/cortex-a/
935KBUILD_CPPFLAGS += -Wno-stringop-truncation -Wno-stringop-overflow
936else
937KBUILD_CPPFLAGS += -Irtos/rt_thread/libcpu/arm/cortex-m33/
938endif
939cflags-y += -Wno-error=implicit-function-declaration -Wno-error=implicit-function-declaration
940else ifeq ($(KERNEL),RHINO)
941KBUILD_CPPFLAGS += \
942    -Irtos/rhino \
943    -Irtos/rhino/include \
944    -Irtos/rhino/cmsis
945ifneq ($(CPU),a7)
946KBUILD_CPPFLAGS += \
947    -Irtos/rhino/arch/arm/armv7m/include
948else
949KBUILD_CPPFLAGS += \
950    -Irtos/rhino/arch/arm/armv7a/include \
951    -Irtos/rhino/smp
952endif
953else ifeq ($(KERNEL),FREERTOS)
954KBUILD_CPPFLAGS += \
955    -Iinclude/rtos/freertos/
956ifeq ($(CPU),m33)
957KBUILD_CPPFLAGS += -Iinclude/rtos/freertos/ARM_CM33/
958else
959KBUILD_CPPFLAGS += -Iinclude/rtos/freertos/ARM_CM4F/
960endif
961#if kernel is LITEOS_M and LITEOS_A
962else ifneq (, $(filter $(KERNEL),LITEOS_M LITEOS_A))
963KBUILD_CPPFLAGS += -DCMSIS_OS_VER=2
964RTOS_NAME := $(shell echo $(KERNEL) | tr A-Z a-z)
965KBUILD_CPPFLAGS += -Iinclude/rtos/liteos/$(RTOS_NAME)/kal/cmsis
966# KBUILD_CPPFLAGS += -Iinclude/rtos/liteos/$(RTOS_NAME)/kal/posix/include
967ifeq ($(KERNEL),LITEOS_A)
968CPPFLAGS_${LDS_FILE} += -DOS_HEAP_SIZE=$(OS_HEAP_SIZE)
969endif
970endif #rtx
971
972ifeq ($(OSTICK_USE_FAST_TIMER), 1)
973KBUILD_CPPFLAGS += -DOSTICK_USE_FAST_TIMER
974endif
975
976ifeq ($(TWS),1)
977OS_TASKCNT ?= 12
978OS_SCHEDULERSTKSIZE ?= 768
979OS_IDLESTKSIZE ?= 512
980else
981OS_TASKCNT ?= 20
982OS_SCHEDULERSTKSIZE ?= 512
983OS_IDLESTKSIZE ?= 256
984endif
985
986ifeq ($(CPU),m33)
987OS_CLOCK_NOMINAL ?= 16000
988else
989OS_CLOCK_NOMINAL ?= 32000
990endif
991OS_FIFOSZ ?= 24
992
993export OS_TASKCNT
994export OS_SCHEDULERSTKSIZE
995export OS_IDLESTKSIZE
996export OS_CLOCK_NOMINAL
997export OS_FIFOSZ
998
999ifeq ($(OS_THREAD_TIMING_STATISTICS_ENABLE),1)
1000export OS_THREAD_TIMING_STATISTICS_ENABLE
1001KBUILD_CPPFLAGS += -DOS_THREAD_TIMING_STATISTICS_ENABLE
1002KBUILD_CPPFLAGS += -DOS_THREAD_TIMING_STATISTICS_PEROID_MS=6000
1003endif
1004
1005# shall set WATCHER_DOG ?= 0 when enable this feature
1006ifeq ($(SPECIFIC_FREQ_POWER_CONSUMPTION_MEASUREMENT_ENABLE),1)
1007export SPECIFIC_FREQ_POWER_CONSUMPTION_MEASUREMENT_ENABLE
1008KBUILD_CPPFLAGS += -DSPECIFIC_FREQ_POWER_CONSUMPTION_MEASUREMENT_ENABLE
1009IGNORE_POWER_ON_KEY_DURING_BOOT_UP ?= 1
1010endif
1011
1012endif # RTOS
1013
1014# -------------------------------------------
1015# MBED library
1016# -------------------------------------------
1017
1018export MBED
1019
1020ifeq ($(MBED),1)
1021
1022core-y += mbed/
1023
1024KBUILD_CPPFLAGS += -DMBED
1025
1026KBUILD_CPPFLAGS += \
1027	-Imbed/api \
1028	-Imbed/common \
1029
1030endif
1031
1032# -------------------------------------------
1033# DEBUG functions
1034# -------------------------------------------
1035
1036export DEBUG
1037
1038ifeq ($(CHIP),best1400)
1039OPT_LEVEL ?= s
1040endif
1041
1042ifneq ($(OPT_LEVEL),)
1043KBUILD_CFLAGS	+= -O$(OPT_LEVEL)
1044else
1045KBUILD_CFLAGS	+= -O2
1046endif
1047
1048ifeq ($(NOSTD),1)
1049export NO_BUF_OVERFLOW_CHECK := 1
1050endif
1051
1052ifeq ($(DEBUG),1)
1053
1054KBUILD_CPPFLAGS	+= -DDEBUG
1055
1056ifneq ($(NO_BUF_OVERFLOW_CHECK),1)
1057KBUILD_CFLAGS  	+= -fstack-protector-strong
1058endif
1059
1060else # !DEBUG
1061
1062KBUILD_CPPFLAGS	+= -DNDEBUG
1063
1064REL_TRACE_ENABLE ?= 1
1065ifeq ($(REL_TRACE_ENABLE),1)
1066KBUILD_CPPFLAGS	+= -DREL_TRACE_ENABLE
1067endif
1068
1069endif # !DEBUG
1070
1071ifeq ($(NO_CHK_TRC_FMT),1)
1072KBUILD_CPPFLAGS	+= -DNO_CHK_TRC_FMT
1073else
1074# Typedef int32_t to int, and typedef uint32_t to unsigned int
1075KBUILD_CPPFLAGS	+= -U__INT32_TYPE__ -D__INT32_TYPE__=int -U__UINT32_TYPE__
1076endif
1077
1078ifeq ($(MERGE_CONST),1)
1079ifeq ($(TOOLCHAIN),armclang)
1080$(error MERGE_CONST is not supported in $(TOOLCHAIN))
1081else
1082KBUILD_CPPFLAGS += -fmerge-constants -fmerge-all-constants
1083endif
1084endif
1085
1086ifeq ($(CORE_DUMP),1)
1087export CORE_DUMP
1088core-y += utils/crash_catcher/ utils/xyzmodem/
1089endif
1090
1091# -------------------------------------------
1092# SIMU functions
1093# -------------------------------------------
1094
1095export SIMU
1096
1097ifeq ($(SIMU),1)
1098
1099KBUILD_CPPFLAGS += -DSIMU
1100
1101ifeq ($(ROM_SRAM_TEXT_SIMU),1)
1102KBUILD_CPPFLAGS += -DROM_SRAM_TEXT_SIMU
1103endif
1104
1105endif
1106
1107# -------------------------------------------
1108# FPGA functions
1109# -------------------------------------------
1110
1111export FPGA
1112
1113ifeq ($(FPGA),1)
1114
1115KBUILD_CPPFLAGS += -DFPGA
1116
1117endif
1118
1119# -------------------------------------------
1120# ROM_BUILD functions
1121# -------------------------------------------
1122
1123export ROM_BUILD
1124
1125ifeq ($(ROM_BUILD),1)
1126
1127KBUILD_CPPFLAGS += -DROM_BUILD
1128
1129endif
1130
1131# -------------------------------------------
1132# NANDFLASH_BUILD functions
1133# -------------------------------------------
1134
1135export NANDFLASH_BUILD
1136
1137ifeq ($(NANDFLASH_BUILD),1)
1138
1139KBUILD_CPPFLAGS += -DNANDFLASH_BUILD
1140
1141endif
1142
1143# Limit the length of REVISION_INFO if ROM_BUILD or using rom.lds
1144ifneq ($(filter 1,$(ROM_BUILD))$(filter rom.lds,$(LDS_FILE)),)
1145ifeq ($(CHIP),best1000)
1146REVISION_INFO := x
1147else
1148REVISION_INFO := $(GIT_REVISION)
1149endif
1150endif
1151
1152# -------------------------------------------
1153# PROGRAMMER functions
1154# -------------------------------------------
1155
1156export PROGRAMMER
1157
1158ifeq ($(PROGRAMMER),1)
1159
1160KBUILD_CPPFLAGS += -DPROGRAMMER
1161
1162ifeq ($(NO_SIMPLE_TASK_SWITCH),1)
1163KBUILD_CPPFLAGS += -DNO_SIMPLE_TASK_SWITCH
1164endif
1165
1166endif
1167
1168# -------------------------------------------
1169# ROM_UTILS functions
1170# -------------------------------------------
1171
1172export ROM_UTILS_ON ?= 0
1173ifeq ($(ROM_UTILS_ON),1)
1174KBUILD_CPPFLAGS += -DROM_UTILS_ON
1175core-y += utils/rom_utils/
1176endif
1177
1178# -------------------------------------------
1179# Predefined common features
1180# -------------------------------------------
1181
1182ifeq ($(OSC_26M_X4_AUD2BB),1)
1183export OSC_26M_X4_AUD2BB
1184export ANA_26M_X4_ENABLE ?= 1
1185export FLASH_LOW_SPEED ?= 0
1186endif
1187
1188ifeq ($(USB_AUDIO_APP),1)
1189export CODEC_HIGH_QUALITY ?= 1
1190endif
1191
1192ifeq ($(BT_ANC),1)
1193export ANC_APP := 1
1194endif
1195ifeq ($(ANC_APP),1)
1196export CODEC_HIGH_QUALITY ?= 1
1197endif
1198
1199ifeq ($(CHIP),best1000)
1200export AUDIO_OUTPUT_DIFF ?= 1
1201AUDIO_OUTPUT_DC_CALIB ?= $(AUDIO_OUTPUT_DIFF)
1202export AUDIO_OUTPUT_SMALL_GAIN_ATTN ?= 1
1203export AUDIO_OUTPUT_SW_GAIN ?= 1
1204export ANC_L_R_MISALIGN_WORKAROUND ?= 1
1205else ifeq ($(CHIP),best2000)
1206ifeq ($(CODEC_HIGH_QUALITY),1)
1207export VCODEC_VOLT ?= 2.5V
1208else
1209export VCODEC_VOLT ?= 1.6V
1210endif
1211ifeq ($(VCODEC_VOLT),2.5V)
1212AUDIO_OUTPUT_DC_CALIB ?= 0
1213AUDIO_OUTPUT_DC_CALIB_ANA ?= 1
1214else
1215AUDIO_OUTPUT_DC_CALIB ?= 1
1216AUDIO_OUTPUT_DC_CALIB_ANA ?= 0
1217endif
1218ifneq ($(AUDIO_OUTPUT_DIFF),1)
1219# Class-G module still needs improving
1220#DAC_CLASSG_ENABLE ?= 1
1221endif
1222else ifeq ($(CHIP),best2001)
1223export VCODEC_VOLT ?= 1.8V
1224AUDIO_OUTPUT_DC_CALIB ?= 0
1225AUDIO_OUTPUT_DC_CALIB_ANA ?= 1
1226else ifneq ($(filter best3001 best3003 best3005,$(CHIP)),)
1227export VCODEC_VOLT ?= 2.5V
1228AUDIO_OUTPUT_DC_CALIB ?= 1
1229AUDIO_OUTPUT_DC_CALIB_ANA ?= 0
1230else
1231AUDIO_OUTPUT_DC_CALIB ?= 0
1232AUDIO_OUTPUT_DC_CALIB_ANA ?= 1
1233endif
1234
1235ifeq ($(AUDIO_OUTPUT_DC_CALIB)-$(AUDIO_OUTPUT_DC_CALIB_ANA),1-1)
1236$(error AUDIO_OUTPUT_DC_CALIB and AUDIO_OUTPUT_DC_CALIB_ANA cannot be enabled at the same time)
1237endif
1238export AUDIO_OUTPUT_DC_CALIB
1239export AUDIO_OUTPUT_DC_CALIB_ANA
1240
1241ifeq ($(PLAYBACK_USE_I2S),1)
1242export PLAYBACK_USE_I2S
1243KBUILD_CPPFLAGS += -DPLAYBACK_USE_I2S
1244export AF_DEVICE_I2S := 1
1245ifeq ($(CHIP_HAS_I2S_TDM_TRIGGER),1)
1246KBUILD_CPPFLAGS += -DHW_I2S_TDM_TRIGGER
1247endif
1248endif
1249
1250ifeq ($(CHIP),best1400)
1251export AUDIO_RESAMPLE ?= 1
1252export PMU_IRQ_UNIFIED ?= 1
1253else ifeq ($(CHIP),best2001)
1254export AUDIO_RESAMPLE ?= 1
1255else ifeq ($(CHIP),best2003)
1256export AUDIO_RESAMPLE := 1
1257else
1258export AUDIO_RESAMPLE ?= 0
1259endif
1260
1261ifeq ($(AUDIO_RESAMPLE),1)
1262ifeq ($(CHIP),best1000)
1263export SW_PLAYBACK_RESAMPLE ?= 1
1264export SW_CAPTURE_RESAMPLE ?= 1
1265export NO_SCO_RESAMPLE ?= 1
1266endif # CHIP is best1000
1267ifeq ($(CHIP),best2000)
1268export SW_CAPTURE_RESAMPLE ?= 1
1269export SW_SCO_RESAMPLE ?= 1
1270export NO_SCO_RESAMPLE ?= 0
1271endif # CHIP is best2000
1272ifeq ($(BT_ANC),1)
1273ifeq ($(NO_SCO_RESAMPLE),1)
1274$(error BT_ANC and NO_SCO_RESAMPLE cannot be enabled at the same time)
1275endif
1276endif # BT_ANC
1277endif # AUDIO_RESAMPLE
1278
1279ifeq ($(SW_IIR_EQ_PROCESS),1)
1280export SW_IIR_EQ_PROCESS
1281export A2DP_EQ_24BIT = 1
1282endif
1283
1284ifeq ($(HW_DC_FILTER_WITH_IIR),1)
1285export HW_DC_FILTER_WITH_IIR
1286KBUILD_CPPFLAGS += -DHW_DC_FILTER_WITH_IIR
1287export HW_FILTER_CODEC_IIR ?= 1
1288endif
1289
1290ifeq ($(USB_AUDIO_APP),1)
1291export ANDROID_ACCESSORY_SPEC ?= 1
1292export FIXED_CODEC_ADC_VOL ?= 0
1293
1294ifneq ($(BTUSB_AUDIO_MODE),1)
1295NO_PWRKEY ?= 1
1296NO_GROUPKEY ?= 1
1297endif
1298endif
1299
1300ifneq ($(CHIP),best1000)
1301ifneq ($(CHIP)-$(TWS),best2000-1)
1302# For bt
1303export A2DP_EQ_24BIT ?= 1
1304# For usb audio
1305ifeq ($(APP_USB_A2DP_SOURCE),1)
1306export AUDIO_PLAYBACK_24BIT ?= 0
1307else
1308export AUDIO_PLAYBACK_24BIT ?= 1
1309endif
1310endif
1311endif
1312
1313ifeq ($(PLAYBACK_FORCE_48K),1)
1314export PLAYBACK_FORCE_48K
1315endif
1316
1317ifeq ($(ANC_ASSIST_ENABLED),1)
1318KBUILD_CPPFLAGS += -DANC_ASSIST_ENABLED
1319KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
1320export SPEECH_TX_24BIT := 1
1321export AUDIO_OUTPUT_SW_GAIN := 1
1322ifeq ($(CHIP),best2300p)
1323export ANC_ASSIST_USE_INT_CODEC := 1
1324export PLAYBACK_FORCE_48K := 1
1325export SPEECH_RX_24BIT := 1
1326export AF_STREAM_ID_0_PLAYBACK_FADEOUT := 1
1327endif
1328
1329ifeq ($(VOICE_ASSIST_WD_ENABLED),1)
1330export VOICE_ASSIST_WD_ENABLED
1331export ANC_ASSIST_PILOT_TONE_ALWAYS_ON := 1
1332endif
1333
1334ifeq ($(VOICE_ASSIST_PILOT_ANC_ENABLED),1)
1335export VOICE_ASSIST_PILOT_ANC_ENABLED
1336export ANC_ASSIST_PILOT_TONE_ALWAYS_ON := 1
1337endif
1338endif
1339
1340ifeq ($(AUDIO_ANC_FB_ADJ_MC),1)
1341KBUILD_CPPFLAGS += -DAUDIO_ANC_FB_ADJ_MC
1342KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
1343endif
1344
1345export ULTRA_LOW_POWER ?= 0
1346ifeq ($(ULTRA_LOW_POWER),1)
1347export FLASH_LOW_SPEED ?= 1
1348export PSRAM_LOW_SPEED ?= 1
1349endif
1350
1351ifeq ($(CHIP),best2000)
1352ifeq ($(USB_HIGH_SPEED),1)
1353export AUDIO_USE_BBPLL ?= 1
1354endif
1355ifeq ($(AUDIO_USE_BBPLL),1)
1356ifeq ($(MCU_HIGH_PERFORMANCE_MODE),1)
1357$(error MCU_HIGH_PERFORMANCE_MODE conflicts with AUDIO_USE_BBPLL)
1358endif
1359else # !AUDIO_USE_BBPLL
1360ifeq ($(USB_HIGH_SPEED),1)
1361$(error AUDIO_USE_BBPLL must be used with USB_HIGH_SPEED)
1362endif
1363endif # !AUDIO_USE_BBPLL
1364endif # best2000
1365
1366ifeq ($(FAST_TIMER_COMPENSATE),1)
1367export CALIB_SLOW_TIMER := 1
1368export TIMER_USE_FPU := 1
1369endif
1370
1371### voice compression feature switch
1372export VOC_ENCODE_ENABLE ?= 0
1373
1374# -------------------------------------------
1375# BT features
1376# -------------------------------------------
1377
1378ifneq ($(filter apps/ tests/speech_test/ tests/ota_boot/, $(core-y)),)
1379export BT_APP ?= 1
1380FULL_APP_PROJECT ?= 1
1381endif
1382
1383ifeq ($(BT_APP),1)
1384
1385export BT_IF_INCLUDES ?=
1386export BT_PROFILES_INCLUDES ?=
1387
1388export INTERSYS_NO_THREAD ?= 0
1389
1390export INTERSYS_DEBUG ?= 1
1391ifeq ($(INTERSYS_DEBUG),1)
1392	KBUILD_CPPFLAGS += -DINTERSYS_DEBUG=1
1393endif
1394
1395export BT_DEBUG_TPORTS ?= 0
1396ifneq ($(BT_DEBUG_TPORTS),0)
1397	KBUILD_CPPFLAGS += -D__BT_DEBUG_TPORTS__
1398endif
1399
1400export SNOOP_DATA_EXCHANGE_VIA_BLE ?= 0
1401ifeq ($(SNOOP_DATA_EXCHANGE_VIA_BLE),1)
1402	KBUILD_CPPFLAGS += -DSNOOP_DATA_EXCHANGE_VIA_BLE
1403endif
1404
1405export SYNC_BT_CTLR_PROFILE ?= 0
1406ifeq ($(SYNC_BT_CTLR_PROFILE),1)
1407	KBUILD_CPPFLAGS += -DSYNC_BT_CTLR_PROFILE
1408endif
1409
1410export PROFILE_DEBUG ?= 0
1411ifeq ($(PROFILE_DEBUG),1)
1412	KBUILD_CPPFLAGS += -DXA_DEBUG=1
1413endif
1414
1415BT_IF_INCLUDES += \
1416	-Iservices/bt_if_enhanced/inc
1417BT_PROFILES_INCLUDES += \
1418	-Iservices/bt_profiles_enhanced/inc
1419
1420#KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__ -D__A2DP_AVDTP_DR__
1421#KBUILD_CPPFLAGS += -D__A2DP_AVDTP_DR__
1422
1423ifeq ($(A2DP_AVDTP_CP),1)
1424KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
1425endif
1426
1427ifneq ($(filter-out 2M 3M,$(BT_RF_PREFER)),)
1428$(error Invalid BT_RF_PREFER=$(BT_RF_PREFER))
1429endif
1430ifneq ($(BT_RF_PREFER),)
1431RF_PREFER := $(subst .,P,$(BT_RF_PREFER))
1432KBUILD_CPPFLAGS += -D__$(RF_PREFER)_PACK__
1433endif
1434
1435export HIGH_EFFICIENCY_TX_PWR_CTRL ?= 0
1436ifeq ($(HIGH_EFFICIENCY_TX_PWR_CTRL),1)
1437KBUILD_CPPFLAGS += -DHIGH_EFFICIENCY_TX_PWR_CTRL
1438endif # ifeq ($(HIGH_EFFICIENCY_TX_PWR_CTRL),1)
1439
1440export IS_USE_MIXING_FRQ_FOR_A2DP_STREAMING ?= 0
1441ifeq ($(IS_USE_MIXING_FRQ_FOR_A2DP_STREAMING),1)
1442KBUILD_CPPFLAGS += -DIS_USE_MIXING_FRQ_FOR_A2DP_STREAMING
1443endif
1444
1445export AUDIO_SCO_BTPCM_CHANNEL ?= 1
1446ifeq ($(AUDIO_SCO_BTPCM_CHANNEL),1)
1447KBUILD_CPPFLAGS += -D_SCO_BTPCM_CHANNEL_
1448endif
1449
1450export BT_ONE_BRING_TWO ?= 0
1451ifeq ($(BT_ONE_BRING_TWO),1)
1452KBUILD_CPPFLAGS += -D__BT_ONE_BRING_TWO__
1453endif
1454
1455export BT_PAUSE_BG_A2DP ?= 0
1456ifeq ($(BT_PAUSE_BG_A2DP),1)
1457KBUILD_CPPFLAGS += -DBT_PAUSE_BG_A2DP
1458endif
1459
1460export BT_CLOSE_BG_A2DP ?= 0
1461ifeq ($(BT_CLOSE_BG_A2DP),1)
1462KBUILD_CPPFLAGS += -DBT_CLOSE_BG_A2DP
1463endif
1464
1465export BT_DONT_AUTO_PLAY_BG_A2DP ?= 0
1466ifeq ($(BT_DONT_AUTO_PLAY_BG_A2DP),1)
1467KBUILD_CPPFLAGS += -DBT_DONT_AUTO_PLAY_BG_A2DP
1468endif
1469
1470export BT_BLOCK_2ND_SCO_BEFORE_CALL_ACTIVE ?= 0
1471ifeq ($(BT_BLOCK_2ND_SCO_BEFORE_CALL_ACTIVE),1)
1472KBUILD_CPPFLAGS += -DBT_BLOCK_2ND_SCO_BEFORE_CALL_ACTIVE
1473endif
1474
1475export A2DP_PROMPT_PLAY_ONLY_AVRCP_PLAY_RECEIVED ?= 1
1476ifeq ($(A2DP_PROMPT_PLAY_ONLY_AVRCP_PLAY_RECEIVED),1)
1477KBUILD_CPPFLAGS += -DA2DP_PROMPT_PLAY_ONLY_AVRCP_PLAY_RECEIVED
1478endif
1479
1480export A2DP_DELAY_PROMPT_PLAY ?= 0
1481ifeq ($(A2DP_DELAY_PROMPT_PLAY),1)
1482KBUILD_CPPFLAGS += -DA2DP_DELAY_PROMPT_PLAY
1483endif
1484
1485export BT_MUTE_NEW_A2DP ?= 0
1486ifeq ($(BT_MUTE_NEW_A2DP),1)
1487KBUILD_CPPFLAGS += -DBT_MUTE_NEW_A2DP
1488endif
1489
1490export BT_PAUSE_NEW_A2DP ?= 0
1491ifeq ($(BT_PAUSE_NEW_A2DP),1)
1492KBUILD_CPPFLAGS += -DBT_PAUSE_NEW_A2DP
1493endif
1494
1495export BT_CLOSE_NEW_A2DP ?= 0
1496ifeq ($(BT_CLOSE_NEW_A2DP),1)
1497KBUILD_CPPFLAGS += -DBT_CLOSE_NEW_A2DP
1498endif
1499
1500export BT_KEEP_ONE_STREAM_CLOSE_CONNECTED_A2DP ?= 0
1501ifeq ($(BT_KEEP_ONE_STREAM_CLOSE_CONNECTED_A2DP),1)
1502KBUILD_CPPFLAGS += -DBT_KEEP_ONE_STREAM_CLOSE_CONNECTED_A2DP
1503endif
1504
1505export BT_DONT_AUTO_REPORT_DELAY_REPORT ?= 0
1506ifeq ($(BT_DONT_AUTO_REPORT_DELAY_REPORT),1)
1507KBUILD_CPPFLAGS += -DBT_DONT_AUTO_REPORT_DELAY_REPORT
1508endif
1509
1510export BT_HFP_DONT_SUPPORT_CLI_FEATURE ?= 0
1511ifeq ($(BT_HFP_DONT_SUPPORT_CLI_FEATURE),1)
1512KBUILD_CPPFLAGS += -DBT_HFP_DONT_SUPPORT_CLI_FEATURE
1513endif
1514
1515export BT_HFP_DONT_SUPPORT_ENHANCED_CALL_FEATURE ?= 0
1516ifeq ($(BT_HFP_DONT_SUPPORT_ENHANCED_CALL_FEATURE),1)
1517KBUILD_CPPFLAGS += -DBT_HFP_DONT_SUPPORT_ENHANCED_CALL_FEATURE
1518endif
1519
1520export BT_HFP_SUPPORT_HF_INDICATORS_FEATURE ?= 0
1521ifeq ($(BT_HFP_SUPPORT_HF_INDICATORS_FEATURE),1)
1522KBUILD_CPPFLAGS += -DBT_HFP_SUPPORT_HF_INDICATORS_FEATURE
1523endif
1524
1525export BT_HFP_DONT_SUPPORT_APPLE_HF_AT_COMMAND ?= 0
1526ifeq ($(BT_HFP_DONT_SUPPORT_APPLE_HF_AT_COMMAND),1)
1527KBUILD_CPPFLAGS += -DBT_HFP_DONT_SUPPORT_APPLE_HF_AT_COMMAND
1528endif
1529
1530export BT_DONT_PLAY_MUTE_WHEN_A2DP_STUCK_PATCH ?= 1
1531ifeq ($(BT_DONT_PLAY_MUTE_WHEN_A2DP_STUCK_PATCH),1)
1532KBUILD_CPPFLAGS += -DBT_DONT_PLAY_MUTE_WHEN_A2DP_STUCK_PATCH
1533endif
1534
1535export SPP_SERVICE_NUM ?= 5
1536KBUILD_CPPFLAGS += -DSPP_SERVICE_NUM=$(SPP_SERVICE_NUM)
1537
1538export BT_DISC_ACL_AFTER_AUTH_KEY_MISSING ?= 0
1539ifeq ($(BT_DISC_ACL_AFTER_AUTH_KEY_MISSING),1)
1540KBUILD_CPPFLAGS += -DBT_DISC_ACL_AFTER_AUTH_KEY_MISSING
1541endif
1542
1543export USE_PAGE_SCAN_REPETITION_MODE_R1 ?= 0
1544ifeq ($(USE_PAGE_SCAN_REPETITION_MODE_R1),1)
1545KBUILD_CPPFLAGS += -DUSE_PAGE_SCAN_REPETITION_MODE_R1
1546endif
1547
1548export A2DP_PLAYER_USE_BT_TRIGGER ?= 1
1549ifeq ($(A2DP_PLAYER_USE_BT_TRIGGER),1)
1550KBUILD_CPPFLAGS += -D__A2DP_PLAYER_USE_BT_TRIGGER__
1551endif
1552
1553export BT_SELECT_PROF_DEVICE_ID ?= 0
1554ifeq ($(BT_ONE_BRING_TWO),1)
1555ifeq ($(BT_SELECT_PROF_DEVICE_ID),1)
1556KBUILD_CPPFLAGS += -D__BT_SELECT_PROF_DEVICE_ID__
1557endif
1558endif
1559
1560export SBC_SELECT_CHANNEL_SUPPORT ?= 1
1561ifeq ($(SBC_SELECT_CHANNEL_SUPPORT),1)
1562KBUILD_CPPFLAGS += -DSBC_SELECT_CHANNEL_SUPPORT
1563endif
1564
1565export SBC_FUNC_IN_ROM ?= 0
1566ifeq ($(SBC_FUNC_IN_ROM),1)
1567
1568KBUILD_CPPFLAGS += -D__SBC_FUNC_IN_ROM__
1569
1570ifeq ($(CHIP),best2000)
1571UNALIGNED_ACCESS ?= 1
1572KBUILD_CPPFLAGS += -D__SBC_FUNC_IN_ROM_VBEST2000_ONLYSBC__
1573KBUILD_CPPFLAGS += -D__SBC_FUNC_IN_ROM_VBEST2000__
1574endif
1575endif
1576
1577export BT_HID_DEVICE ?= 0
1578ifeq ($(BT_HID_DEVICE),1)
1579KBUILD_CPPFLAGS += -DBT_HID_DEVICE
1580endif
1581
1582export BT_PBAP_SUPPORT ?= 0
1583ifeq ($(BT_PBAP_SUPPORT),1)
1584KBUILD_CPPFLAGS += -DBT_PBAP_SUPPORT
1585KBUILD_CPPFLAGS += -DBT_OBEX_SUPPORT
1586endif
1587
1588export BT_MAP_SUPPORT ?= 0
1589ifeq ($(BT_MAP_SUPPORT),1)
1590KBUILD_CPPFLAGS += -DBT_MAP_SUPPORT
1591KBUILD_CPPFLAGS += -DBT_OBEX_SUPPORT
1592endif
1593
1594export BT_ALWAYS_IN_DISCOVERABLE_MODE ?= 0
1595ifeq ($(BT_ALWAYS_IN_DISCOVERABLE_MODE),1)
1596KBUILD_CPPFLAGS += -DBT_ALWAYS_IN_DISCOVERABLE_MODE
1597endif
1598
1599export HFP_1_6_ENABLE ?= 1
1600ifeq ($(HFP_1_6_ENABLE),1)
1601KBUILD_CPPFLAGS += -DHFP_1_6_ENABLE
1602endif
1603
1604# Fix codec and vqe sample rate
1605ifeq ($(SPEECH_BONE_SENSOR),1)
1606export SPEECH_CODEC_FIXED_SAMPLE_RATE := 16000
1607export SPEECH_VQE_FIXED_SAMPLE_RATE := 16000
1608endif
1609
1610ifeq ($(ANC_ASSIST_ENABLED),1)
1611export SPEECH_CODEC_FIXED_SAMPLE_RATE := 16000
1612export SPEECH_VQE_FIXED_SAMPLE_RATE := 16000
1613endif
1614
1615ifeq ($(AUDIO_ADAPTIVE_IIR_EQ),1)
1616export AUDIO_ADAPTIVE_IIR_EQ := 1
1617export HW_DAC_IIR_EQ_PROCESS := 1
1618endif
1619
1620ifeq ($(AUDIO_ADAPTIVE_FIR_EQ),1)
1621export AUDIO_ADAPTIVE_FIR_EQ := 1
1622export HW_FIR_EQ_PROCESS := 1
1623endif
1624
1625export SPEECH_CODEC_FIXED_SAMPLE_RATE ?= 0
1626ifneq ($(filter 8000 16000 48000,$(SPEECH_CODEC_FIXED_SAMPLE_RATE)),)
1627KBUILD_CPPFLAGS += -DSPEECH_CODEC_FIXED_SAMPLE_RATE=$(SPEECH_CODEC_FIXED_SAMPLE_RATE)
1628#export DSP_LIB ?= 1
1629endif
1630
1631export SPEECH_VQE_FIXED_SAMPLE_RATE ?= 0
1632ifneq ($(filter 8000 16000,$(SPEECH_VQE_FIXED_SAMPLE_RATE)),)
1633#export DSP_LIB ?= 1
1634endif
1635
1636export A2DP_AAC_ON ?= 0
1637ifeq ($(A2DP_AAC_ON),1)
1638KBUILD_CPPFLAGS += -DA2DP_AAC_ON
1639KBUILD_CPPFLAGS += -D__ACC_FRAGMENT_COMPATIBLE__
1640endif
1641
1642export FDKAAC_VERSION ?= 2
1643
1644ifneq ($(FDKAAC_VERSION),)
1645KBUILD_CPPFLAGS += -DFDKAAC_VERSION=$(FDKAAC_VERSION)
1646endif
1647
1648export A2DP_LHDC_ON ?= 0
1649ifeq ($(A2DP_LHDC_ON),1)
1650KBUILD_CPPFLAGS += -DA2DP_LHDC_ON
1651export A2DP_LHDC_V3 ?= 0
1652ifeq ($(A2DP_LHDC_V3),1)
1653KBUILD_CPPFLAGS += -DA2DP_LHDC_V3
1654endif
1655export A2DP_LHDC_LARC ?= 0
1656ifeq ($(A2DP_LHDC_LARC),1)
1657KBUILD_CPPFLAGS += -DA2DP_LHDC_LARC
1658endif
1659core-y += thirdparty/audio_codec_lib/liblhdc-dec/
1660endif
1661
1662export A2DP_SCALABLE_ON ?= 0
1663ifeq ($(A2DP_SCALABLE_ON),1)
1664KBUILD_CPPFLAGS += -DA2DP_SCALABLE_ON
1665KBUILD_CPPFLAGS += -DGLOBAL_SRAM_KISS_FFT
1666#KBUILD_CPPFLAGS += -DA2DP_SCALABLE_UHQ_SUPPORT
1667core-y += thirdparty/audio_codec_lib/scalable/
1668endif
1669
1670export A2DP_LDAC_ON ?= 0
1671ifeq ($(A2DP_LDAC_ON),1)
1672KBUILD_CPPFLAGS += -DA2DP_LDAC_ON
1673core-y += thirdparty/audio_codec_lib/ldac/
1674endif
1675
1676export A2DP_LC3_ON ?= 0
1677ifeq ($(A2DP_LC3_ON),1)
1678KBUILD_CPPFLAGS += -DA2DP_LC3_ON
1679endif
1680
1681export A2DP_SBC_PLC_ENABLED ?= 0
1682
1683export A2DP_CP_ACCEL ?= 0
1684ifeq ($(A2DP_CP_ACCEL),1)
1685KBUILD_CPPFLAGS += -DA2DP_CP_ACCEL
1686endif
1687
1688export SCO_CP_ACCEL ?= 0
1689ifeq ($(SCO_CP_ACCEL),1)
1690KBUILD_CPPFLAGS += -DSCO_CP_ACCEL
1691# spx fft will share buffer which is not fit for dual cores.
1692KBUILD_CPPFLAGS += -DUSE_CMSIS_F32_FFT
1693endif
1694
1695export SCO_TRACE_CP_ACCEL ?= 0
1696ifeq ($(SCO_TRACE_CP_ACCEL),1)
1697KBUILD_CPPFLAGS += -DSCO_TRACE_CP_ACCEL
1698endif
1699
1700ifeq ($(BT_XTAL_SYNC),1)
1701KBUILD_CPPFLAGS += -DBT_XTAL_SYNC_NEW_METHOD
1702KBUILD_CPPFLAGS += -DFIXED_BIT_OFFSET_TARGET
1703endif
1704
1705ifeq ($(FPGA_A2DP_SINK),1)
1706KBUILD_CPPFLAGS += -DFPGA_A2DP_SINK
1707endif
1708
1709ifeq ($(HSP_ENABLE),1)
1710KBUILD_CPPFLAGS += -D__HSP_ENABLE__
1711endif
1712
1713export TX_RX_PCM_MASK ?= 0
1714ifeq ($(TX_RX_PCM_MASK),1)
1715KBUILD_CPPFLAGS += -DTX_RX_PCM_MASK
1716endif
1717
1718export PCM_PRIVATE_DATA_FLAG ?= 0
1719ifeq ($(PCM_PRIVATE_DATA_FLAG),1)
1720KBUILD_CPPFLAGS += -DPCM_PRIVATE_DATA_FLAG
1721endif
1722
1723export PCM_FAST_MODE ?= 0
1724ifeq ($(PCM_FAST_MODE),1)
1725KBUILD_CPPFLAGS += -DPCM_FAST_MODE
1726endif
1727
1728export LOW_DELAY_SCO ?= 0
1729ifeq ($(LOW_DELAY_SCO),1)
1730KBUILD_CPPFLAGS += -DLOW_DELAY_SCO
1731endif
1732
1733export CVSD_BYPASS ?= 0
1734ifeq ($(CVSD_BYPASS),1)
1735KBUILD_CPPFLAGS += -DCVSD_BYPASS
1736endif
1737
1738export SCO_FORCE_CVSD ?= 0
1739ifeq ($(SCO_FORCE_CVSD),1)
1740KBUILD_CPPFLAGS += -DSCO_FORCE_CVSD
1741endif
1742
1743export SCO_DMA_SNAPSHOT ?= 0
1744ifeq ($(CHIP_HAS_SCO_DMA_SNAPSHOT),1)
1745export SCO_DMA_SNAPSHOT := 1
1746KBUILD_CPPFLAGS += -DSCO_DMA_SNAPSHOT
1747endif
1748
1749ifeq ($(CHIP_ROM_UTILS_VER),)
1750$(warning "CHIP_ROM_UTILS_VER must be defined, CHIP after BEST1501")
1751$(warning "use \"export CHIP_ROM_UTILS_VER := 2\", other use \"export CHIP_ROM_UTILS_VER := 1\"")
1752export CHIP_ROM_UTILS_VER := 1
1753endif
1754KBUILD_CPPFLAGS += -DROM_UTILS_VER=$(CHIP_ROM_UTILS_VER)
1755
1756export SCO_OPTIMIZE_FOR_RAM ?= 0
1757ifeq ($(SCO_OPTIMIZE_FOR_RAM),1)
1758KBUILD_CPPFLAGS += -DSCO_OPTIMIZE_FOR_RAM
1759endif
1760
1761export SW_IIR_PROMPT_EQ_PROCESS ?= 0
1762ifeq ($(SW_IIR_PROMPT_EQ_PROCESS),1)
1763ifeq ($(SW_IIR_EQ_PROCESS),1)
1764$(error SW_IIR_PROMPT_EQ_PROCESS and SW_IIR_EQ_PROCESS cannot be enabled at the same time)
1765endif
1766endif
1767
1768export AAC_TEXT_PARTIAL_IN_FLASH ?= 0
1769ifeq ($(AAC_TEXT_PARTIAL_IN_FLASH),1)
1770KBUILD_CPPFLAGS += -DAAC_TEXT_PARTIAL_IN_FLASH
1771endif
1772
1773export IS_BES_BATTERY_MANAGER_ENABLED ?= 1
1774ifeq ($(IS_BES_BATTERY_MANAGER_ENABLED),1)
1775KBUILD_CPPFLAGS += -DIS_BES_BATTERY_MANAGER_ENABLED
1776endif
1777
1778ifeq ($(SUPPORT_BATTERY_REPORT),1)
1779KBUILD_CPPFLAGS += -DSUPPORT_BATTERY_REPORT
1780endif
1781
1782ifeq ($(SUPPORT_HF_INDICATORS),1)
1783KBUILD_CPPFLAGS += -DSUPPORT_HF_INDICATORS
1784endif
1785
1786ifeq ($(SUPPORT_SIRI),1)
1787KBUILD_CPPFLAGS += -DSUPPORT_SIRI
1788endif
1789
1790export BQB_PROFILE_TEST ?= 0
1791ifeq ($(BQB_PROFILE_TEST),1)
1792KBUILD_CPPFLAGS += -D__BQB_PROFILE_TEST__
1793endif
1794
1795export AUDIO_SPECTRUM ?= 0
1796ifeq ($(AUDIO_SPECTRUM),1)
1797KBUILD_CPPFLAGS += -D__AUDIO_SPECTRUM__
1798KBUILD_CPPFLAGS += -DGLOBAL_SRAM_KISS_FFT
1799endif
1800
1801ifeq ($(INTERCONNECTION),1)
1802export INTERCONNECTION
1803KBUILD_CPPFLAGS += -D__INTERCONNECTION__
1804endif
1805
1806export INTERACTION ?= 0
1807ifeq ($(INTERACTION),1)
1808KBUILD_CPPFLAGS += -D__INTERACTION__
1809endif
1810
1811export INTERACTION_FASTPAIR ?= 0
1812ifeq ($(INTERACTION_FASTPAIR),1)
1813KBUILD_CPPFLAGS += -D__INTERACTION_FASTPAIR__
1814KBUILD_CPPFLAGS += -D__INTERACTION_CUSTOMER_AT_COMMAND__
1815endif
1816
1817export TWS_PROMPT_SYNC ?= 0
1818ifeq ($(TWS_PROMPT_SYNC), 1)
1819export MIX_AUDIO_PROMPT_WITH_A2DP_MEDIA_ENABLED ?= 1
1820KBUILD_CPPFLAGS += -DTWS_PROMPT_SYNC
1821endif
1822
1823export AUDIO_PROMPT_USE_DAC2_ENABLED ?= 0
1824ifeq ($(CHIP), best1501)
1825export AUDIO_PROMPT_USE_DAC2_ENABLED := 1
1826endif
1827ifeq ($(ANC_ASSIST_PILOT_TONE_ALWAYS_ON),1)
1828export AUDIO_PROMPT_USE_DAC2_ENABLED := 0
1829endif
1830
1831ifeq ($(AUDIO_PROMPT_USE_DAC2_ENABLED),1)
1832export MIX_AUDIO_PROMPT_WITH_A2DP_MEDIA_ENABLED := 0
1833export AUDIO_OUTPUT_DAC2 := 1
1834endif
1835
1836ifeq ($(MIX_AUDIO_PROMPT_WITH_A2DP_MEDIA_ENABLED),1)
1837KBUILD_CPPFLAGS += -DMIX_AUDIO_PROMPT_WITH_A2DP_MEDIA_ENABLED
1838export RESAMPLE_ANY_SAMPLE_RATE ?= 1
1839export AUDIO_OUTPUT_SW_GAIN := 1
1840endif
1841
1842export MEDIA_PLAY_24BIT ?= 1
1843
1844ifeq ($(LBRT),1)
1845export LBRT
1846KBUILD_CPPFLAGS += -DLBRT
1847endif
1848
1849ifeq ($(IBRT),1)
1850export IBRT
1851KBUILD_CPPFLAGS += -DIBRT
1852KBUILD_CPPFLAGS += -DIBRT_BLOCKED
1853KBUILD_CPPFLAGS += -DIBRT_NOT_USE
1854KBUILD_CPPFLAGS += -D__A2DP_AUDIO_SYNC_FIX_DIFF_NOPID__
1855
1856export IBRT_UI_V1 ?= 0
1857ifeq ($(IBRT_UI_V1),1)
1858KBUILD_CPPFLAGS += -DIBRT_UI_V1
1859else
1860export TRACE_GLOBAL_TAG ?= 1
1861endif
1862endif
1863
1864export IBRT_TESTMODE ?= 0
1865ifeq ($(IBRT_TESTMODE),1)
1866KBUILD_CPPFLAGS += -D__IBRT_IBRT_TESTMODE__
1867endif
1868
1869ifeq ($(IBRT),1)
1870TWS_SYSTEM_ENABLED := 1
1871endif
1872ifeq ($(TWS_SYSTEM_ENABLED),1)
1873export TWS_SYSTEM_ENABLED
1874KBUILD_CPPFLAGS += -DTWS_SYSTEM_ENABLED
1875endif
1876
1877# IBRT_RIGHT_MASTER==1 means right bud is master, otherwise left bud is master
1878export IBRT_RIGHT_MASTER ?= 1
1879ifeq ($(IBRT_RIGHT_MASTER),1)
1880KBUILD_CPPFLAGS += -DIBRT_RIGHT_MASTER
1881endif
1882
1883export BES_AUD ?= 0
1884ifeq ($(BES_AUD),1)
1885KBUILD_CPPFLAGS += -DBES_AUD
1886endif
1887
1888export IBRT_SEARCH_UI ?= 0
1889ifeq ($(IBRT_SEARCH_UI),1)
1890KBUILD_CPPFLAGS += -DIBRT_SEARCH_UI
1891endif
1892
1893export SEARCH_UI_COMPATIBLE_UI_V2 ?= 0
1894ifeq ($(SEARCH_UI_COMPATIBLE_UI_V2),1)
1895KBUILD_CPPFLAGS += -DIBRT_SEARCH_UI
1896KBUILD_CPPFLAGS += -DSEARCH_UI_COMPATIBLE_UI_V2
1897endif
1898
1899ifeq ($(IBRT),1)
1900ifeq ($(IBRT_CORE_V2),1)
1901export IBRT_V2_MULTIPOINT := 1
1902KBUILD_CPPFLAGS += -DIBRT_V2_MULTIPOINT
1903else
1904export IBRT_V2_MULTIPOINT := 0
1905endif
1906else
1907export IBRT_V2_MULTIPOINT := 0
1908endif
1909
1910export IBRT_UI_MASTER_ON_TWS_DISCONNECTED ?= 0
1911ifeq ($(IBRT_UI_MASTER_ON_TWS_DISCONNECTED),1)
1912KBUILD_CPPFLAGS += -DIBRT_UI_MASTER_ON_TWS_DISCONNECTED
1913endif
1914
1915export AF_STREAM_ID_0_PLAYBACK_FADEOUT ?= 0
1916ifneq ($(AF_STREAM_ID_0_PLAYBACK_FADEOUT),0)
1917KBUILD_CPPFLAGS += -DAF_STREAM_ID_0_PLAYBACK_FADEOUT
1918endif
1919
1920export POWER_ON_ENTER_TWS_PAIRING_ENABLED ?= 0
1921ifeq ($(POWER_ON_ENTER_TWS_PAIRING_ENABLED),1)
1922IGNORE_POWER_ON_KEY_DURING_BOOT_UP ?= 1
1923KBUILD_CPPFLAGS += -DPOWER_ON_ENTER_TWS_PAIRING_ENABLED
1924endif
1925
1926export POWER_ON_ENTER_FREEMAN_PAIRING_ENABLED ?= 0
1927ifeq ($(POWER_ON_ENTER_FREEMAN_PAIRING_ENABLED),1)
1928IGNORE_POWER_ON_KEY_DURING_BOOT_UP ?= 1
1929KBUILD_CPPFLAGS += -DPOWER_ON_ENTER_FREEMAN_PAIRING_ENABLED
1930endif
1931
1932export PRODUCTION_LINE_PROJECT_ENABLED ?= 0
1933ifeq ($(PRODUCTION_LINE_PROJECT_ENABLED),1)
1934POWER_ON_OPEN_BOX_ENABLED := 0
1935KBUILD_CPPFLAGS += -DPRODUCTION_LINE_PROJECT_ENABLED
1936endif
1937
1938export POWER_ON_OPEN_BOX_ENABLED ?= 0
1939ifeq ($(POWER_ON_OPEN_BOX_ENABLED),1)
1940IGNORE_POWER_ON_KEY_DURING_BOOT_UP ?= 1
1941KBUILD_CPPFLAGS += -DPOWER_ON_OPEN_BOX_ENABLED
1942endif
1943
1944export FREEMAN_OTA_ENABLE ?= 0
1945ifeq ($(FREEMAN_OTA_ENABLE),1)
1946KBUILD_CPPFLAGS += -DFREEMAN_OTA_ENABLED
1947endif
1948
1949export IGNORE_POWER_ON_KEY_DURING_BOOT_UP ?= 0
1950ifeq ($(IGNORE_POWER_ON_KEY_DURING_BOOT_UP),1)
1951KBUILD_CPPFLAGS += -DIGNORE_POWER_ON_KEY_DURING_BOOT_UP
1952endif
1953
1954ifeq ($(BT_ANC),1)
1955KBUILD_CPPFLAGS += -D__BT_ANC__
1956endif
1957
1958ifeq ($(BTUSB_AUDIO_MODE),1)
1959export BTUSB_AUDIO_MODE
1960KBUILD_CPPFLAGS += -DBTUSB_AUDIO_MODE
1961endif
1962
1963ifeq ($(BT_USB_AUDIO_DUAL_MODE),1)
1964export BT_USB_AUDIO_DUAL_MODE
1965KBUILD_CPPFLAGS += -DBT_USB_AUDIO_DUAL_MODE
1966endif
1967
1968# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
1969# BT watch related features
1970# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1971
1972export BT_WATCH_MASTER ?= 0
1973export BT_WATCH_SLAVE ?= 0
1974
1975export EPLAYER_ON ?= 0
1976export EPLAYER_TEST ?= 0
1977export ECOMM_ON ?= 0
1978export ESHELL_ON ?= 0
1979export EAUDIO_ON ?= 0
1980export EAUDIO_TEST ?= 0
1981export BT_SERVICE_ON ?= 0
1982export BT_SERVICE_NATIVE ?= 0
1983export BT_SERVICE_DISTRIBUTE ?= 0
1984export BT_SERVICE_DISTRIBUTE_CLIENT ?= 0
1985export BT_SERVICE_DISTRIBUTE_SERVER ?= 0
1986export BT_SERVICE_DISTRIBUTE_TRANSPORT_ECOMM ?= 0
1987export BT_SERVICE_DISTRIBUTE_TRANSPORT_INTERSYS ?= 0
1988export BT_SERVICE_TEST ?= 0
1989
1990export EPLAYER_INCLUDES ?=
1991EPLAYER_INCLUDES += \
1992    -Iservices/eplayer/eplayer \
1993    -Iservices/eplayer/eplayer/source \
1994    -Iservices/eplayer/eplayer/sink \
1995    -Iservices/eplayer/eplayer/decoder \
1996    -Iservices/eplayer/eplayer/mediainfo \
1997    -Iservices/eplayer/eplayer/platform/besrtx \
1998    -Iutils/eindexfifo \
1999    -Iutils/evf/ \
2000    -Iutils/evf/impl
2001
2002export ECOMM_INCLUDES ?=
2003ECOMM_INCLUDES += \
2004    -Iservices/ecomm/ecomm \
2005    -Iservices/ecomm/ecomm/transport \
2006    -Iservices/ecomm/ecomm/platform \
2007    -Iservices/ecomm/ecomm/platform/bes_cmsisos \
2008    -Iservices/ecomm/api \
2009    -Iservices/ecomm/component \
2010    -Iutils/eindexfifo \
2011    -Iutils/evf/ \
2012    -Iutils/evf/impl \
2013    -Iutils/crc32
2014
2015export ESHELL_INCLUDES ?=
2016ESHELL_INCLUDES += \
2017    -Iutils/eshell
2018
2019export EAUDIO_INCLUDES ?=
2020EAUDIO_INCLUDES += \
2021    -Iservices/eaudio/inc \
2022    -Iservices/eaudio/effect \
2023    -Iservices/eaudio/device \
2024    -Iservices/eaudio/policy \
2025    -Iservices/eaudio/heap \
2026    -Iservices/eaudio/resample \
2027    -Iservices/bt_app \
2028    -Iutils/cqueue \
2029    -Iutils/heap \
2030    -Iservices/multimedia/audio/process/resample/include \
2031    -Iservices/multimedia/audio/process/resample/coef/include
2032
2033export BT_SERVICE_INCLUDES ?=
2034BT_SERVICE_INCLUDES += \
2035    -Iservices/bt_service \
2036    -Iservices/bt_service/inc \
2037    -Iservices/bt_service/distribute/inc \
2038    -Iservices/bt_service/distribute/client/inc \
2039    -Iservices/bt_service/distribute/server/inc \
2040    -Iservices/bt_service/distribute/transport/ecomm \
2041    -Iutils/transport_if \
2042
2043EINDEXFIFO_ON ?= 0
2044EVF_ON ?= 0
2045
2046ifeq ($(EPLAYER_ON),1)
2047EINDEXFIFO_ON := 1
2048EVF_ON := 1
2049KBUILD_CPPFLAGS += -D__BESRTX__
2050endif
2051
2052ifeq ($(ECOMM_ON),1)
2053EINDEXFIFO_ON := 1
2054EVF_ON := 1
2055endif
2056
2057ifeq ($(EINDEXFIFO_ON),1)
2058core-y += utils/eindexfifo/
2059endif
2060
2061ifeq ($(EVF_ON),1)
2062core-y += utils/evf/
2063endif
2064
2065ifeq ($(ESHELL_ON),1)
2066core-y += utils/eshell/
2067KBUILD_CPPFLAGS += -DESHELL_ON
2068endif
2069
2070ifeq ($(EAUDIO_ON),1)
2071KBUILD_CPPFLAGS += -DEAUDIO_ON
2072endif
2073
2074ifeq ($(BT_SERVICE_ON),1)
2075KBUILD_CPPFLAGS += -DBT_SERVICE_ON
2076endif
2077
2078ifeq ($(BT_WATCH_MASTER),1)
2079KBUILD_CPPFLAGS += -DBT_WATCH_MASTER
2080endif
2081
2082ifeq ($(BT_WATCH_SLAVE),1)
2083KBUILD_CPPFLAGS += -DBT_WATCH_SLAVE
2084endif
2085
2086# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2087# BT source features
2088# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2089
2090ifeq ($(BT_WATCH_APP),1)
2091
2092export BT_WATCH_APP
2093
2094export BT_SOURCE := 1
2095
2096export BT_MULTI_SOURCE ?= 0
2097export APP_LINEIN_A2DP_SOURCE ?= 0
2098export A2DP_SOURCE_AAC_ON ?= 0
2099export A2DP_SOURCE_LHDC_ON ?= 0
2100export APP_I2S_A2DP_SOURCE ?= 0
2101export APP_USB_A2DP_SOURCE ?= 0
2102export HFP_AG_ROLE ?= 0
2103export HFP_AG_SCO_AUTO_CONN ?= 0
2104export SOURCE_TRACE_RX ?= 0
2105export A2DP_SOURCE_TEST ?= 0
2106export HFP_AG_TEST ?= 0
2107
2108KBUILD_CPPFLAGS += -DBT_WATCH_APP
2109
2110ifeq ($(BT_SOURCE),1)
2111KBUILD_CPPFLAGS += -DBT_SOURCE
2112endif
2113
2114ifeq ($(SOURCE_TRACE_RX),1)
2115KBUILD_CPPFLAGS += -D__SOURCE_TRACE_RX__
2116endif
2117
2118ifeq ($(BT_MULTI_SOURCE),1)
2119KBUILD_CPPFLAGS += -DBT_MULTI_SOURCE
2120endif
2121
2122ifeq ($(HFP_AG_ROLE),1)
2123KBUILD_CPPFLAGS += -DHFP_AG_ROLE
2124
2125ifeq ($(HFP_AG_SCO_AUTO_CONN),1)
2126KBUILD_CPPFLAGS += -DHFP_AG_SCO_AUTO_CONN
2127endif
2128
2129ifeq ($(HFP_AG_TEST),1)
2130KBUILD_CPPFLAGS += -DHFP_AG_TEST
2131endif
2132endif # HFP_AG_ROLE
2133
2134ifeq ($(APP_LINEIN_A2DP_SOURCE),1)
2135KBUILD_CPPFLAGS += -DAPP_LINEIN_A2DP_SOURCE
2136KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2137endif
2138
2139ifeq ($(A2DP_SOURCE_AAC_ON),1)
2140KBUILD_CPPFLAGS += -DA2DP_SOURCE_AAC_ON
2141KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2142endif
2143
2144ifeq ($(A2DP_SOURCE_LHDC_ON),1)
2145KBUILD_CPPFLAGS += -DA2DP_SOURCE_LHDC_ON
2146KBUILD_CPPFLAGS += -DFLASH_UNIQUE_ID
2147KBUILD_CPPFLAGS += -DA2DP_ENCODE_CP_ACCEL
2148##KBUILD_CPPFLAGS += -DA2DP_TRACE_ENCODE_CP_ACCEL
2149core-y += thirdparty/audio_codec_lib/liblhdc-enc/
2150endif
2151
2152ifeq ($(APP_I2S_A2DP_SOURCE),1)
2153KBUILD_CPPFLAGS += -DAPP_I2S_A2DP_SOURCE
2154KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2155endif
2156
2157ifeq ($(APP_USB_A2DP_SOURCE),1)
2158KBUILD_CPPFLAGS += -DAPP_USB_A2DP_SOURCE
2159KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2160KBUILD_CPPFLAGS += -DA2DP_ENCODE_CP_ACCEL
2161endif
2162
2163else # !BT_WATCH_APP
2164
2165ifeq ($(BT_SOURCE),1)
2166
2167KBUILD_CPPFLAGS += -DBT_SOURCE
2168
2169ifeq ($(BT_MULTI_SOURCE),1)
2170KBUILD_CPPFLAGS += -DBT_MULTI_SOURCE
2171endif
2172
2173ifeq ($(SOURCE_TRACE_RX),1)
2174KBUILD_CPPFLAGS += -D__SOURCE_TRACE_RX__
2175endif
2176
2177ifeq ($(HFP_AG_ROLE),1)
2178KBUILD_CPPFLAGS += -DHFP_AG_ROLE
2179
2180ifeq ($(HFP_AG_SCO_AUTO_CONN),1)
2181KBUILD_CPPFLAGS += -DHFP_AG_SCO_AUTO_CONN
2182endif
2183
2184ifeq ($(HFP_AG_TEST),1)
2185KBUILD_CPPFLAGS += -DHFP_AG_TEST
2186endif
2187endif # HFP_AG_ROLE
2188
2189ifeq ($(APP_LINEIN_A2DP_SOURCE),1)
2190KBUILD_CPPFLAGS += -DAPP_LINEIN_A2DP_SOURCE
2191KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2192endif
2193
2194ifeq ($(A2DP_SOURCE_AAC_ON),1)
2195KBUILD_CPPFLAGS += -DA2DP_SOURCE_AAC_ON
2196KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2197endif
2198
2199ifeq ($(A2DP_SOURCE_LHDC_ON),1)
2200KBUILD_CPPFLAGS += -DA2DP_SOURCE_LHDC_ON
2201KBUILD_CPPFLAGS += -DFLASH_UNIQUE_ID
2202KBUILD_CPPFLAGS += -DA2DP_ENCODE_CP_ACCEL
2203##KBUILD_CPPFLAGS += -DA2DP_TRACE_ENCODE_CP_ACCEL
2204core-y += thirdparty/audio_codec_lib/liblhdc-enc/
2205endif
2206
2207ifeq ($(APP_I2S_A2DP_SOURCE),1)
2208KBUILD_CPPFLAGS += -DAPP_I2S_A2DP_SOURCE
2209KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2210endif
2211
2212ifeq ($(APP_USB_A2DP_SOURCE),1)
2213KBUILD_CPPFLAGS += -DAPP_USB_A2DP_SOURCE
2214KBUILD_CPPFLAGS += -D__A2DP_AVDTP_CP__
2215KBUILD_CPPFLAGS += -DA2DP_ENCODE_CP_ACCEL
2216endif
2217
2218ifeq ($(A2DP_SOURCE_TEST),1)
2219KBUILD_CPPFLAGS += -DA2DP_SOURCE_TEST
2220endif
2221
2222endif # BT_SOURCE
2223
2224endif # !BT_WATCH_APP
2225
2226endif # BT_APP
2227
2228# -------------------------------------------
2229# BLE features
2230# -------------------------------------------
2231# BLE profiles enable flag
2232## ANC service
2233export ANCS ?= 0
2234export ANCC ?= 0
2235
2236# AMS service
2237export AMS ?= 0
2238export AMSC ?= 0
2239
2240# BMS service
2241export BMS ?= 0
2242
2243## HID service
2244export BLE_HID ?= 0
2245
2246## BATT service
2247export BLE_BATT ?= 0
2248
2249## DISS service
2250export BLE_DISS ?= 0
2251
2252ifeq ($(GOOGLE_SERVICE_ENABLE), 1)
2253export BISTO_ENABLE := 1
2254export GFPS_ENABLE := 1
2255endif
2256
2257ifeq ($(BISTO_ENABLE),1)
2258export BISTO_ENABLE
2259export VOICE_DATAPATH_ENABLED := 1
2260export CRASH_REBOOT ?= 1
2261export BLE_SECURITY_ENABLED := 1
2262ifeq ($(CHIP),best1400)
2263export DUMP_CRASH_LOG ?= 0
2264else
2265export DUMP_CRASH_LOG ?= 0
2266endif
2267export VOICE_DATAPATH_TYPE ?= gsound
2268#export TRACE_DUMP2FLASH ?= 1
2269export FLASH_SUSPEND := 1
2270export AI_OTA := 1
2271# ANC service server enable
2272ANCS := 1
2273# ANC service client enable
2274ANCC := 1
2275
2276# AMS server enable
2277AMS := 1
2278# AMS client enable
2279AMSC := 1
2280
2281# BMS server enable
2282BMS := 1
2283
2284endif # ifeq ($(BISTO_ENABLE),1)
2285
2286# 1 to enable BLE, 0 to disable BLE
2287export BLE ?= 0
2288
2289BLE_SWITCH := \
2290    $(BISTO_ENABLE) \
2291    $(GFPS_ENABLE) \
2292    $(AMA_VOICE) \
2293    $(DMA_VOICE) \
2294    $(CUSTOMIZE_VOICE) \
2295    $(GMA_VOICE) \
2296    $(SMART_VOICE) \
2297    $(TENCENT_VOICE) \
2298    $(TILE_DATAPATH_ENABLED) \
2299    $(BLE_ONLY_ENABLED)
2300
2301ifneq ($(filter 1, $(BLE_SWITCH)),)
2302export BLE := 1
2303endif
2304
2305ifeq ($(BLE),1)
2306
2307export BLE_APP_INCLUDES ?=
2308export BLE_PROFILES_INCLUDES ?=
2309export BLE_STACK_INCLUDES ?=
2310
2311ifeq ($(BLE_V2),1)
2312ifeq ($(BLE_AOB_UX_ENABLED),1)
2313KBUILD_CPPFLAGS += -DAOB_UX_ENABLED
2314endif
2315
2316export CUSTOMER_DEFINE_ADV_DATA ?= 0
2317ifeq ($(CUSTOMER_DEFINE_ADV_DATA),1)
2318KBUILD_CPPFLAGS += -DCUSTOMER_DEFINE_ADV_DATA
2319endif
2320
2321export BLE_SEC_ACCEPT_BY_CUSTOMER ?= 0
2322ifeq ($(BLE_SEC_ACCEPT_BY_CUSTOMER),1)
2323KBUILD_CPPFLAGS += -DBLE_SEC_ACCEPT_BY_CUSTOMER
2324endif
2325
2326KBUILD_CPPFLAGS += -DBLE_V2
2327BLE_APP_INCLUDES += \
2328    -Iservices/ble_app_v2 \
2329    -Iservices/ble_app_v2/app_batt/ \
2330    -Iservices/ble_app_v2/app_ble_custom \
2331    -Iservices/ble_app_v2/app_datapath/ \
2332    -Iservices/ble_app_v2/app_gfps \
2333    -Iservices/ble_app_v2/app_hid/ \
2334    -Iservices/ble_app_v2/app_hrps/ \
2335    -Iservices/ble_app_v2/app_htp/ \
2336    -Iservices/ble_app_v2/app_main \
2337    -Iservices/ble_app_v2/app_ota \
2338    -Iservices/ble_app_v2/app_sec \
2339    -Iservices/ble_app_v2/app_tota \
2340    -Iservices/ble_app_v2/app_tws \
2341    -Iservices/ble_app_v2/app_vob \
2342    -Iservices/ble_app_v2/app_voice \
2343    -Iservices/aob_core/custom \
2344    -Iservices/aob_core/inc \
2345    -Iservices/aob_core/inc/event \
2346    -Iservices/aob_core/inc/stm \
2347    -Iservices/aob_core/inc/call_ctl \
2348    -Iutils/hsm
2349ifeq ($(BLE_AUDIO_ENABLED),1)
2350BLE_APP_INCLUDES += \
2351    -Iservices/ble_audio_app \
2352    -Iservices/ble_audio_app/app_bap \
2353    -Iservices/ble_audio_app/app_arc \
2354    -Iservices/ble_audio_app/app_acc \
2355    -Iservices/ble_audio_app/app_atc \
2356    -Iservices/ble_audio_app/app_cap
2357endif
2358
2359ifeq ($(AMSC),1)
2360BLE_APP_INCLUDES += \
2361    -Iservices/ble_app_v2/app_amsc/
2362endif
2363
2364ifeq ($(ANCS),1)
2365BLE_APP_INCLUDES += \
2366    -Iservices/ble_app_v2/app_ancs/
2367endif
2368
2369ifeq ($(ANCC),1)
2370BLE_APP_INCLUDES += \
2371    -Iservices/ble_app_v2/app_ancc/
2372endif
2373
2374BLE_PROFILES_INCLUDES += \
2375    -Iservices/ble_profiles_v2 \
2376    -Iservices/ble_profiles_v2/buds/ \
2377    -Iservices/ble_profiles_v2/datapath/datapathps/api/ \
2378    -Iservices/ble_profiles_v2/gfps/api/ \
2379    -Iservices/ble_profiles_v2/gfps/gfps_crypto/ \
2380    -Iservices/ble_profiles_v2/gfps/gfps_provider/api/ \
2381    -Iservices/ble_profiles_v2/gfps/gfps_provider/src/ \
2382    -Iservices/ble_profiles_v2/ota \
2383    -Iservices/ble_profiles_v2/tota \
2384    -Iservices/ble_profiles_v2/tile \
2385    -Iservices/ble_profiles_v2/voicepath/gsound
2386ifeq ($(BLE_AUDIO_ENABLED),1)
2387BLE_PROFILES_INCLUDES += \
2388    -Iservices/ble_profiles_v2/otp \
2389    -Iservices/ble_profiles_v2/otp/otc/api \
2390    -Iservices/ble_profiles_v2/otp/ots/api \
2391    -Iservices/ble_profiles_v2/csip \
2392    -Iservices/ble_profiles_v2/csip/csisc/api \
2393    -Iservices/ble_profiles_v2/csip/csism/api
2394endif
2395ifeq ($(AMSC),1)
2396BLE_PROFILES_INCLUDES += \
2397    -Iservices/ble_profiles_v2/ams/ \
2398    -Iservices/ble_profiles_v2/ams/amsc/ \
2399    -Iservices/ble_profiles_v2/ams/amsc/api
2400endif
2401ifeq ($(ANCS),1)
2402BLE_PROFILES_INCLUDES += \
2403    -Iservices/ble_profiles_v2/anc/ancs/api
2404endif
2405ifeq ($(ANCC),1)
2406BLE_PROFILES_INCLUDES += \
2407    -Iservices/ble_profiles_v2/anc/ \
2408    -Iservices/ble_profiles_v2/anc/ancc/ \
2409    -Iservices/ble_profiles_v2/anc/ancc/src \
2410    -Iservices/ble_profiles_v2/anc/ancc/api
2411endif
2412
2413BLE_STACK_INCLUDES += \
2414    -Iservices/ble_stack_v2/ip/ahi/api/ \
2415    -Iservices/ble_stack_v2/ip/ble/hl/api/ \
2416    -Iservices/ble_stack_v2/ip/ble/hl/inc/ \
2417    -Iservices/ble_stack_v2/ip/ble/hl/src/gap/gapc/ \
2418    -Iservices/ble_stack_v2/ip/ble/hl/src/gap/gapm/ \
2419    -Iservices/ble_stack_v2/ip/ble/hl/src/gap/ \
2420    -Iservices/ble_stack_v2/ip/ble/hl/src/gatt/ \
2421    -Iservices/ble_stack_v2/ip/ble/hl/src/inc/ \
2422    -Iservices/ble_stack_v2/ip/ble/hl/src/l2cap/ \
2423    -Iservices/ble_stack_v2/ip/hci/api/ \
2424    -Iservices/ble_stack_v2/ip/hci/src/ \
2425    -Iservices/ble_stack_v2/modules/aes/api/ \
2426    -Iservices/ble_stack_v2/modules/common/api/ \
2427    -Iservices/ble_stack_v2/modules/ecc_p256/api/ \
2428    -Iservices/ble_stack_v2/modules/ke/api/ \
2429    -Iservices/ble_stack_v2/modules/rwip/api/
2430ifeq ($(BLE_AUDIO_ENABLED),1)
2431BLE_STACK_INCLUDES += \
2432    -Iservices/ble_stack_v2/ip/ble/iso/data_path/ \
2433    -Iservices/ble_stack_v2/ip/ble/iso/data_path/isogen/api/ \
2434    -Iservices/ble_stack_v2/ip/ble/iso/data_path/isoohci/api/ \
2435    -Iservices/ble_stack_v2/ip/ble/iso/data_path/isogen/src/ \
2436    -Iservices/ble_stack_v2/ip/ble/iso/data_path/isoohci/src/ \
2437    -Iservices/ble_stack_v2/ip/gaf/api/ \
2438    -Iservices/ble_stack_v2/ip/gaf/api/acc/ \
2439    -Iservices/ble_stack_v2/ip/gaf/api/acc/mc/ \
2440    -Iservices/ble_stack_v2/ip/gaf/api/acc/ot/ \
2441    -Iservices/ble_stack_v2/ip/gaf/api/acc/tb/ \
2442    -Iservices/ble_stack_v2/ip/gaf/api/acc/vc/ \
2443    -Iservices/ble_stack_v2/ip/gaf/api/arc/ \
2444    -Iservices/ble_stack_v2/ip/gaf/api/arc/aic/ \
2445    -Iservices/ble_stack_v2/ip/gaf/api/arc/mic/ \
2446    -Iservices/ble_stack_v2/ip/gaf/api/arc/vc/ \
2447    -Iservices/ble_stack_v2/ip/gaf/api/arc/voc/ \
2448    -Iservices/ble_stack_v2/ip/gaf/api/atc/ \
2449    -Iservices/ble_stack_v2/ip/gaf/api/atc/csi/ \
2450    -Iservices/ble_stack_v2/ip/gaf/api/atc/raa/ \
2451    -Iservices/ble_stack_v2/ip/gaf/api/bap/ \
2452    -Iservices/ble_stack_v2/ip/gaf/api/bap/bc/ \
2453    -Iservices/ble_stack_v2/ip/gaf/api/bap/capa/ \
2454    -Iservices/ble_stack_v2/ip/gaf/api/bap/uc/ \
2455    -Iservices/ble_stack_v2/ip/gaf/api/cap/ \
2456    -Iservices/ble_stack_v2/ip/gaf/api/iap/ \
2457    -Iservices/ble_stack_v2/ip/gaf/inc/ \
2458	-Iservices/ble_stack_v2/ip/gaf/src/ \
2459    -Iservices/ble_stack_v2/ip/gaf/src/al/ \
2460    -Iservices/ble_stack_v2/ip/gaf/src/arc/ \
2461    -Iservices/ble_stack_v2/ip/gaf/src/bap/bc/ \
2462    -Iservices/ble_stack_v2/ip/gaf/src/bap/capa/ \
2463    -Iservices/ble_stack_v2/ip/gaf/src/bap/codec/ \
2464    -Iservices/ble_stack_v2/ip/gaf/src/iap/
2465endif
2466else
2467BLE_APP_INCLUDES += \
2468    -Iservices/ble_app \
2469    -Iservices/ble_app/app_amsc/ \
2470    -Iservices/ble_app/app_ancc/ \
2471    -Iservices/ble_app/app_batt/ \
2472    -Iservices/ble_app/app_ble_custom \
2473    -Iservices/ble_app/app_datapath/ \
2474    -Iservices/ble_app/app_gfps \
2475    -Iservices/ble_app/app_hid/ \
2476    -Iservices/ble_app/app_hrps/ \
2477    -Iservices/ble_app/app_htp/ \
2478    -Iservices/ble_app/app_main \
2479    -Iservices/ble_app/app_ota \
2480    -Iservices/ble_app/app_sec \
2481    -Iservices/ble_app/app_tota \
2482    -Iservices/ble_app/app_tws \
2483    -Iservices/ble_app/app_vob \
2484    -Iservices/ble_app/app_voice
2485ifeq ($(AMSC),1)
2486BLE_APP_INCLUDES += \
2487    -Iservices/ble_app/app_amsc/
2488endif
2489
2490ifeq ($(ANCC),1)
2491BLE_APP_INCLUDES += \
2492    -Iservices/ble_app/app_ancc/
2493endif
2494
2495BLE_PROFILES_INCLUDES += \
2496    -Iservices/ble_profiles/bas/bass/api/ \
2497    -Iservices/ble_profiles/bas/bass/src/ \
2498    -Iservices/ble_profiles/datapath/datapathps/api/ \
2499    -Iservices/ble_profiles/gfps/api/ \
2500    -Iservices/ble_profiles/gfps/gfps_crypto/ \
2501    -Iservices/ble_profiles/gfps/gfps_provider/api/ \
2502    -Iservices/ble_profiles/gfps/gfps_provider/src/ \
2503    -Iservices/ble_profiles/hogp/ \
2504    -Iservices/ble_profiles/hogp/hogpd/api/ \
2505    -Iservices/ble_profiles/hrp/ \
2506    -Iservices/ble_profiles/hrp/hrps/api/ \
2507    -Iservices/ble_profiles/hrp/hrps/src \
2508    -Iservices/ble_profiles/htp/ \
2509    -Iservices/ble_profiles/htp/htpt/api/ \
2510    -Iservices/ble_profiles/htp/htpt/src/ \
2511    -Iservices/ble_profiles/ota \
2512    -Iservices/ble_profiles/tile \
2513    -Iservices/ble_profiles/voicepath/gsound
2514ifeq ($(AMSC),1)
2515BLE_PROFILES_INCLUDES += \
2516    -Iservices/ble_profiles/ams/ \
2517    -Iservices/ble_profiles/ams/amsc/
2518endif
2519ifeq ($(ANCS),1)
2520BLE_PROFILES_INCLUDES += \
2521    -Iservices/ble_profiles/anc/ancs/api
2522endif
2523ifeq ($(ANCC),1)
2524BLE_PROFILES_INCLUDES += \
2525    -Iservices/ble_profiles/anc/ \
2526    -Iservices/ble_profiles/anc/ancc/ \
2527    -Iservices/ble_profiles/anc/ancc/src/
2528endif
2529
2530BLE_STACK_INCLUDES += \
2531    -Iservices/ble_stack/app/api/  \
2532    -Iservices/ble_stack/app/src/ \
2533    -Iservices/ble_stack/ble_ip \
2534    -Iservices/ble_stack/common/api \
2535    -Iservices/ble_stack/hci/api/ \
2536    -Iservices/ble_stack/hci/inc/ \
2537    -Iservices/ble_stack/hci/src/ \
2538    -Iservices/ble_stack/hl/api \
2539    -Iservices/ble_stack/hl/inc/ \
2540    -Iservices/ble_stack/hl/src/gap/ \
2541    -Iservices/ble_stack/hl/src/gap/gapc/ \
2542    -Iservices/ble_stack/hl/src/gap/gapm/ \
2543    -Iservices/ble_stack/hl/src/gap/smpc/ \
2544    -Iservices/ble_stack/hl/src/gatt/ \
2545    -Iservices/ble_stack/hl/src/gatt/attc/ \
2546    -Iservices/ble_stack/hl/src/gatt/attm/ \
2547    -Iservices/ble_stack/hl/src/gatt/atts/ \
2548    -Iservices/ble_stack/hl/src/gatt/gattc/ \
2549    -Iservices/ble_stack/hl/src/gatt/gattm/ \
2550    -Iservices/ble_stack/hl/src/l2c/l2cc/ \
2551    -Iservices/ble_stack/hl/src/l2c/l2cm/ \
2552    -Iservices/ble_stack/ke/api/ \
2553    -Iservices/ble_stack/ke/src/ \
2554    -Iservices/ble_stack/profiles/htp/ \
2555    -Iservices/ble_stack/profiles/htp/htpt/api/ \
2556    -Iservices/ble_stack/profiles/htp/htpt/src/
2557endif #BLE_V2
2558
2559KBUILD_CPPFLAGS += -D__IAG_BLE_INCLUDE__
2560
2561export BLE_CONNECTION_MAX ?= 2
2562KBUILD_CPPFLAGS += -DBLE_CONNECTION_MAX=$(BLE_CONNECTION_MAX)
2563
2564ifeq ($(IS_ENABLE_DEUGGING_MODE),1)
2565KBUILD_CPPFLAGS += -DIS_ENABLE_DEUGGING_MODE
2566endif
2567
2568ifeq ($(BLE_USE_RPA),1)
2569KBUILD_CPPFLAGS += -DBLE_USE_RPA
2570endif
2571
2572ifeq ($(BLE_AUDIO_ENABLED),1)
2573export BLE_AUDIO_ENABLED
2574KBUILD_CPPFLAGS += -DBLE_AUDIO_ENABLED=1
2575KBUILD_CPPFLAGS += -DBLE_AUDIO_CONNECTION_CNT=2
2576KBUILD_CPPFLAGS += -DBLE_AUDIO_CIS_CONN_CNT=4
2577
2578# currently always enable mobile for debug
2579export AOB_MOBILE_ENABLED ?= 1
2580ifeq ($(AOB_MOBILE_ENABLED),1)
2581KBUILD_CPPFLAGS += -DAOB_MOBILE_ENABLED
2582endif
2583else
2584KBUILD_CPPFLAGS += -DBLE_AUDIO_ENABLED=0
2585endif
2586
2587ifeq ($(GFPS_ENABLE),1)
2588BLE_SECURITY_ENABLED := 1
2589endif
2590ifeq ($(BLE_SECURITY_ENABLED), 1)
2591export BLE_SECURITY_ENABLED
2592KBUILD_CPPFLAGS += -DCFG_APP_SEC
2593endif
2594
2595ifeq ($(BISTO_ENABLE),1)
2596ifneq ($(IBRT),1)
2597#disbled before IBRT MAP role switch feature is ready
2598KBUILD_CPPFLAGS += -DBT_MAP_SUPPORT
2599KBUILD_CPPFLAGS += -DBT_OBEX_SUPPORT
2600endif
2601endif
2602
2603KBUILD_CPPFLAGS += -D__BLE_TX_USE_BT_TX_QUEUE__
2604KBUILD_CPPFLAGS += -DBES_BLE_ACTIVITY_MAX=9
2605KBUILD_CPPFLAGS += -DBES_BLE_ADV_DATA_MAX=31
2606
2607ifeq ($(ANCS),1)
2608KBUILD_CPPFLAGS += -DANCS_ENABLED
2609endif
2610
2611ifeq ($(ANCC),1)
2612KBUILD_CPPFLAGS += -DANCC_ENABLED
2613endif
2614
2615ifeq ($(AMS),1)
2616KBUILD_CPPFLAGS += -DAMS_ENABLED
2617endif
2618
2619ifeq ($(AMSC),1)
2620KBUILD_CPPFLAGS += -DAMSC_ENABLED
2621endif
2622
2623ifeq ($(BMS),1)
2624KBUILD_CPPFLAGS += -DBMS_ENABLED
2625endif
2626
2627ifeq ($(BLE_HID),1)
2628KBUILD_CPPFLAGS += -DBLE_HID_ENABLE
2629endif
2630
2631ifeq ($(BLE_BATT),1)
2632KBUILD_CPPFLAGS += -DBLE_BATT_ENABLE
2633endif
2634
2635ifeq ($(BLE_DISS),1)
2636KBUILD_CPPFLAGS += -DBLE_DISS_ENABLE
2637endif
2638
2639endif # BLE
2640
2641# -------------------------------------------
2642# Full application features (BT and/or BLE)
2643# -------------------------------------------
2644
2645ifeq ($(FULL_APP_PROJECT),1)
2646
2647export SPEECH_LIB ?= 1
2648
2649# make sure the value of GFPS_ENABLE and GMA_VOICE is confirmed above here
2650ifneq ($(filter 1,$(GFPS_ENABLE) $(GMA_VOICE) $(TOTA) $(TOTA_v2) $(BLE) $(CTKD_ENABLE)),)
2651core-y += utils/encrypt/
2652endif
2653
2654ifeq ($(CTKD_ENABLE),1)
2655export CTKD_ENABLE
2656core-y += utils/aes_cmac/
2657KBUILD_CPPFLAGS += -DCTKD_ENABLE
2658endif
2659
2660ifeq ($(SIGNAL_GENERATOR),1)
2661core-y += utils/signal_generator/
2662KBUILD_CPPFLAGS += -DSIGNAL_GENERATOR
2663endif
2664
2665export BESLIB_INFO := $(GIT_REVISION)
2666
2667export FLASH_PROTECTION ?= 1
2668
2669export APP_TEST_AUDIO ?= 0
2670
2671ifeq ($(APP_TEST_MODE),1)
2672export APP_TEST_MODE
2673KBUILD_CPPFLAGS += -DAPP_TEST_MODE
2674endif
2675
2676export VOICE_PROMPT ?= 1
2677
2678export AUDIO_QUEUE_SUPPORT ?= 1
2679
2680export VOICE_RECOGNITION ?= 0
2681
2682export FLASH_SUSPEND ?= 1
2683
2684export ENGINEER_MODE ?= 1
2685ifeq ($(ENGINEER_MODE),1)
2686FACTORY_MODE := 1
2687endif
2688ifeq ($(FACTORY_MODE),1)
2689KBUILD_CPPFLAGS += -D__FACTORY_MODE_SUPPORT__
2690endif
2691
2692export NEW_NV_RECORD_ENABLED ?= 1
2693ifeq ($(NEW_NV_RECORD_ENABLED),1)
2694KBUILD_CPPFLAGS += -DNEW_NV_RECORD_ENABLED
2695KBUILD_CPPFLAGS += -Iservices/nv_section/userdata_section
2696else
2697KBUILD_CPPFLAGS += -Iservices/nvrecord
2698endif
2699
2700FILE_SYSTEM_SECTION_SIZE ?= 0
2701
2702ifeq ($(APP_USE_LED_INDICATE_IBRT_STATUS),1)
2703KBUILD_CPPFLAGS += -D__APP_USE_LED_INDICATE_IBRT_STATUS__
2704endif
2705
2706ifeq ($(HEAR_THRU_PEAK_DET),1)
2707KBUILD_CPPFLAGS += -D__HEAR_THRU_PEAK_DET__
2708endif
2709
2710ifeq ($(BLE),1)
2711KBUILD_CPPFLAGS += -DBESBT_STACK_SIZE=1024*8+512
2712else
2713KBUILD_CPPFLAGS += -DBESBT_STACK_SIZE=1024*5+512
2714endif
2715
2716ifeq ($(FREE_TWS_PAIRING_ENABLED),1)
2717KBUILD_CPPFLAGS += -DFREE_TWS_PAIRING_ENABLED
2718endif
2719
2720ifeq ($(VOICE_TX_AEC),1)
2721export VOICE_TX_AEC
2722KBUILD_CPPFLAGS += -DVOICE_TX_AEC
2723KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
2724endif
2725
2726ifeq ($(APP_NOISE_ESTIMATION),1)
2727export APP_NOISE_ESTIMATION
2728KBUILD_CPPFLAGS += -DAPP_NOISE_ESTIMATION
2729KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
2730endif
2731
2732ifeq ($(VOICE_PROMPT),1)
2733KBUILD_CPPFLAGS += -DMEDIA_PLAYER_SUPPORT
2734endif
2735
2736ifeq ($(TOTA),1)
2737KBUILD_CPPFLAGS += -DTOTA
2738ifeq ($(BLE),1)
2739KBUILD_CPPFLAGS += -DBLE_TOTA_ENABLED
2740endif
2741KBUILD_CPPFLAGS += -DSHOW_RSSI
2742KBUILD_CPPFLAGS += -DTEST_OVER_THE_AIR_ENANBLED
2743export TEST_OVER_THE_AIR ?= 1
2744endif
2745
2746ifeq ($(TOTA_v2),1)
2747KBUILD_CPPFLAGS += -DTOTA_v2
2748ifeq ($(BLE),1)
2749KBUILD_CPPFLAGS += -DBLE_TOTA_ENABLEDx
2750endif
2751KBUILD_CPPFLAGS += -DSHOW_RSSI
2752KBUILD_CPPFLAGS += -DTEST_OVER_THE_AIR_ENANBLED
2753export TEST_OVER_THE_AIR_v2 ?= 1
2754endif
2755
2756export RESUME_MUSIC_AFTER_CRASH_REBOOT ?= 0
2757ifeq ($(RESUME_MUSIC_AFTER_CRASH_REBOOT),1)
2758KBUILD_CPPFLAGS += -DRESUME_MUSIC_AFTER_CRASH_REBOOT
2759endif
2760
2761ifeq ($(TEST_OVER_THE_AIR),1)
2762export TEST_OVER_THE_AIR
2763KBUILD_CPPFLAGS += -DTEST_OVER_THE_AIR_ENANBLED=1
2764endif
2765
2766ifeq ($(USE_THIRDPARTY),1)
2767KBUILD_CPPFLAGS += -D__THIRDPARTY
2768core-y += thirdparty/
2769endif
2770
2771ifeq ($(SENSOR),1)
2772export SENSOR
2773KBUILD_CPPFLAGS += -D__SENSOR__
2774endif
2775
2776ifeq ($(APP_UART_MODULE),1)
2777export APP_UART_MODULE
2778KBUILD_CPPFLAGS += -DAPP_UART_MODULE
2779endif
2780
2781export APP_KEY_ENABLE := 1
2782ifeq ($(APP_KEY_ENABLE),1)
2783KBUILD_CPPFLAGS += -DAPP_KEY_ENABLE
2784endif
2785
2786ifeq ($(APP_ANC_TEST),1)
2787export APP_ANC_TEST
2788KBUILD_CPPFLAGS += -DAPP_ANC_TEST
2789endif
2790
2791# AUDIO_DEBUG
2792ifeq ($(AUDIO_DEBUG_CMD),1)
2793export AUDIO_DEBUG_CMD
2794endif
2795
2796ifeq ($(AUDIO_DEBUG),1)
2797export AUDIO_DEBUG
2798export AUDIO_DEBUG_CMD ?= 1
2799KBUILD_CPPFLAGS += -DAUDIO_DEBUG
2800endif
2801# AUDIO_DEBUG END
2802
2803ifneq ($(filter BT_HFP_AT BT_SPP,$(APP_DEBUG_TOOL)),)
2804export APP_DEBUG_TOOL
2805endif
2806
2807export BT_WIFI_COEX_P12 ?=0
2808ifeq ($(DEBUG),1)
2809ifneq ($(filter 1, $(AUDIO_DEBUG_CMD) $(AUTO_TEST) $(BES_AUTOMATE_TEST)),)
2810export APP_TRACE_RX_ENABLE := 1
2811else
2812ifneq ($(BT_DEBUG_TPORTS),0)
2813ifeq ($(BT_WIFI_COEX_P12),0)
2814export APP_TRACE_RX_ENABLE := 1
2815endif
2816endif
2817endif
2818endif
2819ifeq ($(APP_TRACE_RX_ENABLE),1)
2820KBUILD_CPPFLAGS += -DAPP_TRACE_RX_ENABLE
2821endif
2822
2823ifeq ($(WATCHER_DOG),1)
2824KBUILD_CPPFLAGS += -D__WATCHER_DOG_RESET__
2825endif
2826
2827ifeq ($(AUTO_TEST),1)
2828export AUTO_TEST
2829KBUILD_CFLAGS += -D_AUTO_TEST_
2830endif
2831
2832ifeq ($(BES_AUTOMATE_TEST),1)
2833export BES_AUTOMATE_TEST
2834KBUILD_CFLAGS += -DBES_AUTOMATE_TEST
2835endif
2836
2837ifeq ($(SPEECH_BONE_SENSOR),1)
2838export SPEECH_BONE_SENSOR
2839# ADC and I2S use PLL
2840# export NO_SCO_RESAMPLE := 1
2841KBUILD_CPPFLAGS += -DSPEECH_BONE_SENSOR
2842
2843# Configure IIC
2844KBUILD_CPPFLAGS += -DI2C_TASK_MODE
2845KBUILD_CPPFLAGS += -DLIS25BA_I2C_ID=0
2846
2847# Configure I2S/TDM
2848ifneq ($(CHIP_HAS_TDM),)
2849# 2300p/2300a...
2850export AF_DEVICE_TDM := 1
2851export SPEECH_BONE_SENSOR_TDM := 1
2852KBUILD_CPPFLAGS += -DI2S_MCLK_FROM_SPDIF
2853KBUILD_CPPFLAGS += -DI2S_MCLK_PIN
2854KBUILD_CPPFLAGS += -DI2S_MCLK_IOMUX_INDEX=33
2855else
2856# 2300
2857export AF_DEVICE_I2S := 1
2858export SPEECH_BONE_SENSOR_I2S := 1
2859KBUILD_CPPFLAGS += -DI2S_MCLK_FROM_SPDIF
2860KBUILD_CPPFLAGS += -DI2S_MCLK_PIN
2861KBUILD_CPPFLAGS += -DI2S_MCLK_IOMUX_INDEX=13
2862KBUILD_CPPFLAGS += -DCLKOUT_IOMUX_INDEX=13
2863endif
2864
2865# Sync ADC and I2S
2866ifeq ($(CHIP_HAS_I2S_TDM_TRIGGER),1)
2867# Hardware trigger method
2868KBUILD_CPPFLAGS += -DHW_I2S_TDM_TRIGGER
2869else
2870# Software method
2871export INT_LOCK_EXCEPTION ?= 1
2872KBUILD_CPPFLAGS += -DAF_ADC_I2S_SYNC
2873endif
2874# KBUILD_CPPFLAGS += -DSPEECH_DEBUG_ADC_I2S_SYNC
2875endif # SPEECH_BONE_SENSOR
2876
2877export IS_AUTOPOWEROFF_ENABLED ?= 1
2878ifeq ($(IS_AUTOPOWEROFF_ENABLED),1)
2879KBUILD_CFLAGS += -D__BTIF_AUTOPOWEROFF__
2880endif
2881
2882# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2883# BISTO feature
2884# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2885ifeq ($(BISTO_ENABLE),1)
2886
2887KBUILD_CFLAGS += -DBISTO_ENABLED
2888
2889KBUILD_CPPFLAGS += -DCFG_SW_KEY_LPRESS_THRESH_MS=1000
2890
2891KBUILD_CPPFLAGS += -DDEBUG_BLE_DATAPATH=0
2892
2893KBUILD_CFLAGS += -DCRC32_OF_IMAGE
2894
2895ASSERT_SHOW_FILE_FUNC ?= 1
2896
2897#KBUILD_CPPFLAGS += -DSAVING_AUDIO_DATA_TO_SD_ENABLED=1
2898
2899KBUILD_CPPFLAGS += -DIS_GSOUND_BUTTION_HANDLER_WORKAROUND_ENABLED
2900
2901ifeq ($(GSOUND_HOTWORD_ENABLE), 1)
2902export GSOUND_HOTWORD_ENABLE
2903KBUILD_CFLAGS += -DGSOUND_HOTWORD_ENABLED
2904ifeq ($(GSOUND_HOTWORD_EXTERNAL), 1)
2905export GSOUND_HOTWORD_EXTERNAL
2906KBUILD_CFLAGS += -DGSOUND_HOTWORD_EXTERNAL
2907endif
2908endif
2909
2910REDUCED_GUESTURE_ENABLE ?= 0
2911
2912ifeq ($(REDUCED_GUESTURE_ENABLE), 1)
2913KBUILD_CFLAGS += -DREDUCED_GUESTURE_ENABLED
2914endif
2915endif # BISTO_ENABLE
2916
2917# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2918# GFPS feature
2919# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2920ifeq ($(GFPS_ENABLE),1)
2921export BLE_SECURITY_ENABLED := 1
2922export GFPS_ENABLE
2923
2924KBUILD_CPPFLAGS += -DGFPS_ENABLED
2925
2926# this macro is used to determain if the resolveable private address is used for BLE
2927KBUILD_CPPFLAGS += -DBLE_USE_RPA
2928endif # GFPS
2929
2930# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2931# AMA feature
2932# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2933ifeq ($(AMA_VOICE),1)
2934export AMA_VOICE
2935
2936KBUILD_CPPFLAGS += -D__AMA_VOICE__
2937KBUILD_CPPFLAGS += -DBLE_USE_RPA
2938KBUILD_CPPFLAGS += -DAMA_ENCODE_USE_OPUS
2939endif # AMA_VOICE
2940
2941# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2942# DMA feature
2943# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2944ifeq ($(DMA_VOICE),1)
2945export DMA_VOICE
2946KBUILD_CPPFLAGS += -D__DMA_VOICE__
2947KBUILD_CPPFLAGS += -D__BES__
2948KBUILD_CPPFLAGS += -DNVREC_BAIDU_DATA_SECTION
2949KBUILD_CPPFLAGS += -DBAIDU_DATA_RAND_LEN=8
2950KBUILD_CPPFLAGS += -DFM_MIN_FREQ=875
2951KBUILD_CPPFLAGS += -DFM_MAX_FREQ=1079
2952KBUILD_CPPFLAGS += -DBAIDU_DATA_DEF_FM_FREQ=893
2953KBUILD_CPPFLAGS += -DBAIDU_DATA_SN_LEN=16
2954export SHA256_ROM ?= 1
2955ifeq ($(LIBC_ROM),1)
2956$(error LIBC_ROM should be 0 when DMA_VOICE=1)
2957endif
2958endif # DMA_VOICE
2959
2960# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2961# GMA feature
2962# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2963ifeq ($(GMA_VOICE),1)
2964export GMA_VOICE
2965KBUILD_CPPFLAGS += -D__GMA_VOICE__
2966
2967#KBUILD_CPPFLAGS += -DKEYWORD_WAKEUP_ENABLED=0
2968#KBUILD_CPPFLAGS += -DPUSH_AND_HOLD_ENABLED=1
2969#KBUILD_CPPFLAGS += -DAI_32KBPS_VOICE=0
2970
2971KBUILD_CPPFLAGS += -D__GMA_OTA_TWS__
2972#KBUILD_CPPFLAGS += -DMCU_HIGH_PERFORMANCE_MODE
2973endif
2974
2975# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2976# SMART_VOICE feature
2977# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2978ifeq ($(SMART_VOICE),1)
2979export SMART_VOICE
2980KBUILD_CPPFLAGS += -D__SMART_VOICE__
2981#SPEECH_CODEC_CAPTURE_CHANNEL_NUM ?= 2
2982#KBUILD_CPPFLAGS += -DMCU_HIGH_PERFORMANCE_MODE
2983#KBUILD_CPPFLAGS += -DSPEECH_CAPTURE_TWO_CHANNEL
2984endif # SMART_VOICE
2985
2986# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2987# TENCENT_VOICE feature
2988# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2989ifeq ($(TENCENT_VOICE),1)
2990export TENCENT_VOICE
2991KBUILD_CPPFLAGS += -D__TENCENT_VOICE__
2992endif # TENCENT_VOICE
2993
2994# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2995# CUSTOMIZE feature
2996# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2997ifeq ($(CUSTOMIZE_VOICE),1)
2998export CUSTOMIZE_VOICE
2999KBUILD_CPPFLAGS += -D__CUSTOMIZE_VOICE__
3000#SPEECH_CODEC_CAPTURE_CHANNEL_NUM ?= 2
3001#KBUILD_CPPFLAGS += -DMCU_HIGH_PERFORMANCE_MODE
3002#KBUILD_CPPFLAGS += -DSPEECH_CAPTURE_TWO_CHANNEL
3003endif # CUSTOMIZE_VOICE
3004
3005# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3006# Dual MIC recording feature
3007# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3008ifeq ($(DUAL_MIC_RECORDING),1)
3009export DUAL_MIC_RECORDING
3010KBUILD_CPPFLAGS += -DDUAL_MIC_RECORDING
3011KBUILD_CPPFLAGS += -DGLOBAL_SRAM_KISS_FFT
3012
3013ifeq ($(STEREO_RECORD_PROCESS),1)
3014export STEREO_RECORD_PROCESS
3015endif
3016endif # DUAL_MIC_RECORDING
3017
3018# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3019# AI_VOICE feature
3020# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3021ifneq ($(filter 1,$(BISTO_ENABLE) $(AMA_VOICE) $(DMA_VOICE) $(SMART_VOICE) $(TENCENT_VOICE) $(GMA_VOICE) $(CUSTOMIZE_VOICE) $(DUAL_MIC_RECORDING)),)
3022AI_VOICE := 1
3023USE_THIRDPARTY := 1
3024endif
3025
3026ifeq ($(AI_VOICE),1)
3027export AI_VOICE
3028KBUILD_CPPFLAGS += -D__AI_VOICE__
3029BTIF_DIP_DEVICE := 1
3030
3031ifeq ($(BLE),1)
3032KBUILD_CPPFLAGS += -D__AI_VOICE_BLE_ENABLE__
3033endif
3034
3035ifeq ($(ALEXA_WWE),1)
3036KBUILD_CPPFLAGS += -DAPP_THREAD_STACK_SIZE=3072
3037endif
3038endif # AI_VOICE
3039
3040ifeq ($(THROUGH_PUT),1)
3041KBUILD_CPPFLAGS += -D__THROUGH_PUT__
3042endif # THROUGH_PUT
3043
3044ifeq ($(USE_KNOWLES),1)
3045KBUILD_CPPFLAGS += -D__KNOWLES
3046KBUILD_CPPFLAGS += -DIDLE_ALEXA_KWD
3047export THIRDPARTY_LIB := knowles_uart
3048endif
3049
3050AI_CAPTURE_CHANNEL_NUM ?= 0
3051ifneq ($(AI_CAPTURE_CHANNEL_NUM),0)
3052KBUILD_CPPFLAGS += -DAI_CAPTURE_CHANNEL_NUM=$(AI_CAPTURE_CHANNEL_NUM)
3053endif
3054
3055AI_CAPTURE_DATA_AEC ?= 0
3056ifeq ($(AI_CAPTURE_DATA_AEC),1)
3057KBUILD_CPPFLAGS += -DAI_CAPTURE_DATA_AEC
3058KBUILD_CPPFLAGS += -DAI_ALGORITHM_ENABLE
3059KBUILD_CPPFLAGS += -DAEC_STERE_ON
3060KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
3061endif
3062
3063export AI_AEC_CP_ACCEL ?= 0
3064ifeq ($(AI_AEC_CP_ACCEL),1)
3065KBUILD_CPPFLAGS += -DAI_AEC_CP_ACCEL
3066endif
3067
3068export BTIF_DIP_DEVICE ?= 0
3069ifeq ($(BTIF_DIP_DEVICE),1)
3070KBUILD_CPPFLAGS += -DBTIF_DIP_DEVICE
3071endif
3072
3073# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3074# Print bt addr config
3075# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3076export BT_ADDR_PRINT_CONFIG ?= 0
3077ifeq ($(BT_ADDR_PRINT_CONFIG),1)
3078KBUILD_CPPFLAGS += -DBT_ADDR_OUTPUT_PRINT_NUM=2
3079else
3080KBUILD_CPPFLAGS += -DBT_ADDR_OUTPUT_PRINT_NUM=6
3081endif
3082
3083# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3084# MULTI_AI feature
3085# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3086# NOTE: value of AI_VOICE and BISTO_ENABLE must already confirmed above here
3087ifeq ($(AI_VOICE)-$(BISTO_ENABLE),1-1)
3088IS_MULTI_AI_ENABLE := 1
3089endif
3090ifeq ($(IS_MULTI_AI_ENABLE),1)
3091export SHA256_ROM ?= 1
3092KBUILD_CPPFLAGS += -DIS_MULTI_AI_ENABLED
3093endif # MULTI_AI
3094
3095# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3096# VOICE COMPRESSION feature
3097# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3098DUAL_MIC_RECORDING ?= 0
3099RECORDING_USE_OPUS ?= 0
3100RECORDING_USE_OPUS_LOWER_BANDWIDTH ?= 0
3101RECORDING_USE_SCALABLE ?= 0
3102## determine the value of VOC_ENCODE_ENABLE
3103ifneq ($(filter 1, $(AMA_VOICE) $(DMA_VOICE) $(GMA_VOICE) $(SMART_VOICE) $(TENCENT_VOICE) $(CUSTOMIZE_VOICE) $(DUAL_MIC_RECORDING)),)
3104export VOC_ENCODE_ENABLE := 1
3105KBUILD_CPPFLAGS += -DVOC_ENCODE_ENABLE
3106endif
3107
3108## voice compression use ADPCM
3109# KBUILD_CPPFLAGS += -DVOC_ENCODE_ADPCM=1
3110
3111## voice compression use OPUS
3112### record use OPUS
3113VOC_RECORD_ENCODE_USE_OPUS ?= 0
3114ifeq ($(filter 0, $(DUAL_MIC_RECORDING) $(RECORDING_USE_OPUS)),)
3115VOC_RECORD_ENCODE_USE_OPUS := 1
3116#### recording use opus config
3117KBUILD_CPPFLAGS += -DRECORDING_USE_OPUS
3118#### low bandwidth config
3119ifeq ($(RECORDING_USE_OPUS_LOWER_BANDWIDTH),1)
3120KBUILD_CPPFLAGS += -DRECORDING_USE_OPUS_LOW_BANDWIDTH
3121endif
3122endif
3123### AI use OPUS
3124VOC_AI_ENCODE_USE_OPUS ?= 0
3125ifneq ($(filter 1, $(AMA_VOICE) $(DMA_VOICE) $(GMA_VOICE) $(SMART_VOICE) $(TENCENT_VOICE) $(CUSTOMIZE_VOICE)),)
3126VOC_AI_ENCODE_USE_OPUS := 1
3127endif
3128### voice compression codec type determine
3129ifneq ($(filter 1, $(VOC_RECORD_ENCODE_USE_OPUS) $(VOC_AI_ENCODE_USE_OPUS)),)
3130export VOC_ENCODE_OPUS := 1
3131KBUILD_CPPFLAGS += -DVOC_ENCODE_OPUS=2
3132KBUILD_CPPFLAGS += -DOPUS_IN_OVERLAY
3133endif
3134
3135## voice compression use SBC
3136ifeq ($(BISTO_ENABLE), 1)
3137export VOC_ENCODE_SBC := 1
3138KBUILD_CPPFLAGS += -DVOC_ENCODE_SBC=3
3139endif
3140
3141## voice compression use SCALABLE
3142ifeq ($(filter 0, $(DUAL_MIC_RECORDING) $(RECORDING_USE_SCALABLE)),)
3143export VOC_ENCODE_SCALABLE := 1
3144KBUILD_CPPFLAGS += -DVOC_ENCODE_SCALABLE=4
3145KBUILD_CPPFLAGS += -DRECORDING_USE_SCALABLE
3146endif
3147
3148
3149# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3150# VOICE_DATAPATH feature
3151# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3152ifeq ($(VOICE_DATAPATH_ENABLED),1)
3153export VOICE_DATAPATH_ENABLED
3154KBUILD_CPPFLAGS += -DVOICE_DATAPATH
3155endif # VOICE_DATAPATH
3156
3157export SLAVE_ADV_BLE_ENABLED ?= 0
3158ifeq ($(SLAVE_ADV_BLE_ENABLED),1)
3159KBUILD_CPPFLAGS += -DSLAVE_ADV_BLE
3160endif
3161
3162# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3163# TILE feature
3164# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3165ifeq ($(TILE_DATAPATH_ENABLED),1)
3166export TILE_DATAPATH_ENABLED
3167KBUILD_CPPFLAGS += -DTILE_DATAPATH
3168endif
3169
3170export CUSTOM_INFORMATION_TILE_ENABLE ?= 0
3171ifeq ($(CUSTOM_INFORMATION_TILE_ENABLE),1)
3172KBUILD_CPPFLAGS += -DCUSTOM_INFORMATION_TILE=1
3173endif # TILE
3174
3175# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3176# MFI feature
3177# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3178ifeq ($(IOS_MFI),1)
3179KBUILD_CPPFLAGS += -DIOS_IAP2_PROTOCOL
3180endif # IOS_MFI
3181
3182# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3183# OTA feature
3184# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3185export VERSION_INFO
3186
3187export OTA_ENABLE ?= 0
3188ifneq ($(filter 1,$(BES_OTA) $(AI_OTA) $(INTERCONNECTION) $(GMA_VOICE)),)
3189OTA_ENABLE := 1
3190endif
3191
3192ifeq ($(OTA_ENABLE),1)
3193ifeq ($(FPGA),1)
3194export OTA_CODE_OFFSET ?= 0
3195else
3196ifneq ($(filter best1400 best2300 best2300p,$(CHIP)),)
3197export OTA_CODE_OFFSET ?= 0x18000
3198else
3199export OTA_CODE_OFFSET ?= 0x20000
3200endif
3201endif
3202KBUILD_CPPFLAGS += -DOTA_ENABLE
3203KBUILD_CPPFLAGS += -D__APP_IMAGE_FLASH_OFFSET__=$(OTA_CODE_OFFSET)
3204KBUILD_CPPFLAGS += -DFIRMWARE_REV
3205ifeq ($(FLASH_REMAP),1)
3206export FLASH_PROTECTION := 0
3207# can change this value if 2MB cannot fit the application image
3208OTA_MAX_IMAGE_SIZE ?= 0x200000
3209OTA_REMAP_OFFSET ?= $(OTA_MAX_IMAGE_SIZE)
3210KBUILD_CPPFLAGS += -DOTA_REMAP_OFFSET=$(OTA_REMAP_OFFSET)
3211KBUILD_CPPFLAGS += -DFLASH_REMAP
3212KBUILD_CPPFLAGS += -DNEW_IMAGE_FLASH_OFFSET=$(OTA_CODE_OFFSET)
3213else
3214KBUILD_CPPFLAGS += -DNEW_IMAGE_FLASH_OFFSET=0x200000
3215endif # REMAP
3216endif # OTA
3217
3218ifeq ($(BES_OTA),1)
3219export BES_OTA
3220KBUILD_CPPFLAGS += -DBES_OTA
3221
3222ifeq ($(IBRT),1)
3223export IBRT_OTA := 1
3224KBUILD_CPPFLAGS += -DIBRT_OTA
3225endif
3226endif
3227
3228ifeq ($(AI_OTA),1)
3229export AI_OTA
3230KBUILD_CPPFLAGS += -DAI_OTA
3231endif
3232
3233# shall not be updated by application project, as it influences the ibrt core library
3234ifneq ($(filter 1, $(GFPS_ENABLE) $(TILE_DATAPATH_ENABLED) $(GMA_VOICE) $(BES_OTA) $(DUAL_MIC_RECORDING) $(LINEIN_TRANS_ON)),)
3235export APP_TWS_MTU_SIZE := 672
3236else
3237export APP_TWS_MTU_SIZE := 348
3238endif
3239KBUILD_CPPFLAGS += -DAPP_TWS_CTRL_BUFFER_MAX_LEN=$(APP_TWS_MTU_SIZE)
3240
3241# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3242# MIX_MIC_DURING_MUSIC feature
3243# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3244ifeq ($(MIX_MIC_DURING_MUSIC_ENABLED),1)
3245KBUILD_CPPFLAGS += -DMIX_MIC_DURING_MUSIC
3246endif
3247
3248# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3249# PROMPT_IN_FLASH feature
3250# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3251ifeq ($(PROMPT_IN_FLASH),1)
3252export PROMPT_IN_FLASH
3253KBUILD_CPPFLAGS += -DPROMPT_IN_FLASH
3254
3255ifeq ($(PROMPT_EMBEDED),1)
3256export PROMPT_EMBEDED
3257KBUILD_CPPFLAGS += -DPROMPT_EMBEDED
3258endif
3259endif
3260
3261ifeq ($(COMBO_CUSBIN_IN_FLASH),1)
3262KBUILD_CPPFLAGS += -DCOMBO_CUSBIN_IN_FLASH
3263endif
3264
3265# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3266# Flash suspend features
3267# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3268ifeq ($(FLASH_SUSPEND), 1)
3269KBUILD_CPPFLAGS += -DFLASH_SUSPEND
3270endif
3271
3272# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3273# BLE only enable features
3274# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3275ifeq ($(BLE_ONLY_ENABLED),1)
3276export BLE_ONLY_ENABLED
3277KBUILD_CPPFLAGS += -DBLE_ONLY_ENABLED
3278KBUILD_CPPFLAGS += -DBLE_POWER_LEVEL_0
3279endif
3280
3281# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3282# GATT over BR/EDR features
3283# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3284ifeq ($(GATT_OVER_BR_EDR),1)
3285export GATT_OVER_BR_EDR
3286KBUILD_CPPFLAGS += -D__GATT_OVER_BR_EDR__
3287endif
3288
3289# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
3290# Sensor Hub features
3291# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3292ifeq ($(SENSOR_HUB),1)
3293KBUILD_CPPFLAGS += -DSENSOR_HUB
3294endif
3295
3296ifneq ($(HW_VERSION_STRING),)
3297export HW_VERSION_STRING
3298endif
3299
3300KBUILD_CPPFLAGS += -DMULTIPOINT_DUAL_SLAVE
3301
3302endif # FULL_APP_PROJECT
3303
3304# -------------------------------------------
3305# Speech features
3306# -------------------------------------------
3307
3308ifeq ($(USB_AUDIO_SPEECH),1)
3309export USB_AUDIO_SPEECH
3310export USB_AUDIO_DYN_CFG := 0
3311export KEEP_SAME_LATENCY := 1
3312export SPEECH_LIB := 1
3313endif
3314
3315ifeq ($(SPEECH_LIB),1)
3316
3317export DSP_LIB ?= 1
3318
3319ifeq ($(USB_AUDIO_APP),1)
3320ifneq ($(USB_AUDIO_SEND_CHAN),$(SPEECH_CODEC_CAPTURE_CHANNEL_NUM))
3321$(info )
3322$(info CAUTION: Change USB_AUDIO_SEND_CHAN($(USB_AUDIO_SEND_CHAN)) to SPEECH_CODEC_CAPTURE_CHANNEL_NUM($(SPEECH_CODEC_CAPTURE_CHANNEL_NUM)))
3323$(info )
3324export USB_AUDIO_SEND_CHAN := $(SPEECH_CODEC_CAPTURE_CHANNEL_NUM)
3325ifneq ($(USB_AUDIO_SEND_CHAN),$(SPEECH_CODEC_CAPTURE_CHANNEL_NUM))
3326$(error ERROR: Failed to change USB_AUDIO_SEND_CHAN($(USB_AUDIO_SEND_CHAN)))
3327endif
3328endif
3329endif
3330
3331#export HFP_DISABLE_NREC ?= 0
3332
3333ifeq ($(SCO_ADD_CUSTOMER_CODEC),1)
3334export SCO_ADD_CUSTOMER_CODEC
3335KBUILD_CPPFLAGS += -DSCO_ADD_CUSTOMER_CODEC
3336endif
3337
3338ifeq ($(SPEECH_TX_24BIT),1)
3339export SPEECH_TX_24BIT
3340KBUILD_CPPFLAGS += -DSPEECH_TX_24BIT
3341endif
3342
3343ifeq ($(SPEECH_TX_DC_FILTER),1)
3344export SPEECH_TX_DC_FILTER
3345KBUILD_CPPFLAGS += -DSPEECH_TX_DC_FILTER
3346export HFP_DISABLE_NREC := 1
3347endif
3348
3349ifeq ($(SPEECH_TX_MIC_CALIBRATION),1)
3350export SPEECH_TX_MIC_CALIBRATION
3351KBUILD_CPPFLAGS += -DSPEECH_TX_MIC_CALIBRATION
3352endif
3353
3354ifeq ($(SPEECH_TX_MIC_FIR_CALIBRATION),1)
3355export SPEECH_TX_MIC_FIR_CALIBRATION
3356KBUILD_CPPFLAGS += -DSPEECH_TX_MIC_FIR_CALIBRATION
3357endif
3358
3359#export SPEECH_TX_AEC_CODEC_REF ?= 0
3360
3361ifeq ($(SPEECH_TX_AEC),1)
3362export SPEECH_TX_AEC
3363KBUILD_CPPFLAGS += -DSPEECH_TX_AEC
3364export HFP_DISABLE_NREC := 1
3365ifeq ($(CHIP_HAS_EC_CODEC_REF),1)
3366export SPEECH_TX_AEC_CODEC_REF := 1
3367endif
3368endif
3369
3370ifeq ($(SPEECH_TX_AEC2),1)
3371export SPEECH_TX_AEC2
3372$(error SPEECH_TX_AEC2 is not supported now, use SPEECH_TX_AEC2FLOAT instead)
3373KBUILD_CPPFLAGS += -DSPEECH_TX_AEC2
3374export HFP_DISABLE_NREC := 1
3375ifeq ($(CHIP_HAS_EC_CODEC_REF),1)
3376export SPEECH_TX_AEC_CODEC_REF := 1
3377endif
3378endif
3379
3380ifeq ($(SPEECH_TX_AEC3),1)
3381export SPEECH_TX_AEC3
3382KBUILD_CPPFLAGS += -DSPEECH_TX_AEC3
3383export HFP_DISABLE_NREC := 1
3384ifeq ($(CHIP_HAS_EC_CODEC_REF),1)
3385export SPEECH_TX_AEC_CODEC_REF := 1
3386endif
3387endif
3388
3389ifeq ($(SPEECH_TX_AEC2FLOAT),1)
3390export SPEECH_TX_AEC2FLOAT
3391KBUILD_CPPFLAGS += -DSPEECH_TX_AEC2FLOAT
3392export HFP_DISABLE_NREC := 1
3393#export DSP_LIB ?= 1
3394ifeq ($(CHIP_HAS_EC_CODEC_REF),1)
3395export SPEECH_TX_AEC_CODEC_REF := 1
3396endif
3397endif
3398
3399ifeq ($(SPEECH_TX_NS),1)
3400export SPEECH_TX_NS
3401KBUILD_CPPFLAGS += -DSPEECH_TX_NS
3402export HFP_DISABLE_NREC := 1
3403endif
3404
3405ifeq ($(SPEECH_TX_NN_NS),1)
3406export SPEECH_TX_NN_NS
3407KBUILD_CPPFLAGS += -DSPEECH_TX_NN_NS
3408export NN_LIB ?= 1
3409endif
3410
3411ifeq ($(SPEECH_TX_NN_NS2),1)
3412export SPEECH_TX_NN_NS2
3413KBUILD_CPPFLAGS += -DSPEECH_TX_NN_NS2
3414export NN_LIB ?= 1
3415endif
3416
3417ifeq ($(SPEECH_TX_NS2),1)
3418export SPEECH_TX_NS2
3419KBUILD_CPPFLAGS += -DSPEECH_TX_NS2
3420export HFP_DISABLE_NREC := 1
3421KBUILD_CPPFLAGS += -DLC_MMSE_FRAME_LENGTH=$(LC_MMSE_FRAME_LENGTH)
3422endif
3423
3424ifeq ($(SPEECH_TX_NS2FLOAT),1)
3425export SPEECH_TX_NS2FLOAT
3426KBUILD_CPPFLAGS += -DSPEECH_TX_NS2FLOAT
3427export HFP_DISABLE_NREC := 1
3428#export DSP_LIB ?= 1
3429endif
3430
3431ifeq ($(SPEECH_TX_NS3),1)
3432export SPEECH_TX_NS3
3433KBUILD_CPPFLAGS += -DSPEECH_TX_NS3
3434export HFP_DISABLE_NREC := 1
3435endif
3436
3437ifeq ($(SPEECH_TX_WNR),1)
3438export SPEECH_TX_WNR
3439KBUILD_CPPFLAGS += -DSPEECH_TX_WNR
3440export HFP_DISABLE_NREC := 1
3441endif
3442
3443ifeq ($(SPEECH_CS_VAD),1)
3444export SPEECH_CS_VAD
3445KBUILD_CPPFLAGS += -DSPEECH_CS_VAD
3446export HFP_DISABLE_NREC := 1
3447endif
3448
3449export SPEECH_CODEC_CAPTURE_CHANNEL_NUM ?= 1
3450
3451#export SPEECH_TX_2MIC_SWAP_CHANNELS ?= 0
3452
3453ifeq ($(SPEECH_TX_2MIC_NS),1)
3454export SPEECH_TX_2MIC_NS
3455KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS
3456export HFP_DISABLE_NREC := 1
3457export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3458endif
3459
3460ifeq ($(SPEECH_TX_2MIC_NS2),1)
3461export SPEECH_TX_2MIC_NS2
3462KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS2
3463export HFP_DISABLE_NREC := 1
3464KBUILD_CPPFLAGS += -DCOH_FRAME_LENGTH=$(COH_FRAME_LENGTH)
3465export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3466endif
3467
3468ifeq ($(SPEECH_TX_2MIC_NS3),1)
3469export SPEECH_TX_2MIC_NS3
3470KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS3
3471export HFP_DISABLE_NREC := 1
3472export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3473endif
3474
3475ifeq ($(SPEECH_TX_2MIC_NS4),1)
3476export SPEECH_TX_2MIC_NS4
3477KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS4
3478export HFP_DISABLE_NREC := 1
3479
3480ifeq ($(SPEECH_BONE_SENSOR),1)
3481# Get 1 channel from sensor
3482export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 1
3483else
3484export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3485endif
3486endif
3487
3488ifeq ($(SPEECH_TX_2MIC_NS5),1)
3489export SPEECH_TX_2MIC_NS5
3490KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS5
3491export HFP_DISABLE_NREC := 1
3492export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3493endif
3494
3495ifeq ($(SPEECH_TX_2MIC_NS6),1)
3496export SPEECH_TX_2MIC_NS6
3497KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS6
3498export HFP_DISABLE_NREC := 1
3499export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3500endif
3501
3502ifeq ($(SPEECH_TX_2MIC_NS8),1)
3503export SPEECH_TX_2MIC_NS8
3504KBUILD_CPPFLAGS += -DSPEECH_TX_2MIC_NS8
3505KBUILD_CPPFLAGS += -DHFP_DISABLE_NREC
3506export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3507endif
3508
3509ifeq ($(SPEECH_TX_3MIC_NS),1)
3510export SPEECH_TX_3MIC_NS
3511KBUILD_CPPFLAGS += -DSPEECH_TX_3MIC_NS
3512export HFP_DISABLE_NREC := 1
3513ifeq ($(SPEECH_BONE_SENSOR),1)
3514# Get 1 channel from sensor
3515export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3516else
3517export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 3
3518endif
3519endif
3520
3521ifeq ($(SPEECH_TX_3MIC_NS2),1)
3522export SPEECH_TX_3MIC_NS2
3523KBUILD_CPPFLAGS += -DSPEECH_TX_3MIC_NS2
3524export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 3
3525KBUILD_CPPFLAGS += -DMCU_HIGH_PERFORMANCE_MODE
3526endif
3527
3528ifeq ($(SPEECH_TX_3MIC_NS3),1)
3529export SPEECH_TX_3MIC_NS3
3530KBUILD_CPPFLAGS += -DSPEECH_TX_3MIC_NS3
3531export HFP_DISABLE_NREC := 1
3532# Get 1 channel from sensor
3533export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 3
3534endif
3535
3536ifeq ($(SPEECH_TX_THIRDPARTY_ALANGO),1)
3537export SPEECH_TX_THIRDPARTY_ALANGO
3538export SPEECH_TX_THIRDPARTY := 1
3539core-y += thirdparty/alango_lib/
3540endif
3541
3542ifeq ($(SPEECH_TX_THIRDPARTY),1)
3543export SPEECH_TX_THIRDPARTY
3544KBUILD_CPPFLAGS += -DSPEECH_TX_THIRDPARTY
3545export HFP_DISABLE_NREC := 1
3546export SPEECH_CODEC_CAPTURE_CHANNEL_NUM = 2
3547ifeq ($(CHIP_HAS_EC_CODEC_REF),1)
3548export SPEECH_TX_AEC_CODEC_REF := 1
3549endif
3550endif
3551
3552ifeq ($(SPEECH_TX_NOISE_GATE),1)
3553export SPEECH_TX_NOISE_GATE
3554KBUILD_CPPFLAGS += -DSPEECH_TX_NOISE_GATE
3555export HFP_DISABLE_NREC := 1
3556endif
3557
3558ifeq ($(SPEECH_TX_COMPEXP),1)
3559export SPEECH_TX_COMPEXP
3560KBUILD_CPPFLAGS += -DSPEECH_TX_COMPEXP
3561export HFP_DISABLE_NREC := 1
3562endif
3563
3564ifeq ($(SPEECH_TX_AGC),1)
3565export SPEECH_TX_AGC
3566KBUILD_CPPFLAGS += -DSPEECH_TX_AGC
3567export HFP_DISABLE_NREC := 1
3568endif
3569
3570ifeq ($(SPEECH_TX_EQ),1)
3571export SPEECH_TX_EQ
3572KBUILD_CPPFLAGS += -DSPEECH_TX_EQ
3573export HFP_DISABLE_NREC := 1
3574#export DSP_LIB ?= 1
3575endif
3576
3577ifeq ($(SPEECH_TX_POST_GAIN),1)
3578export SPEECH_TX_POST_GAIN
3579KBUILD_CPPFLAGS += -DSPEECH_TX_POST_GAIN
3580endif
3581
3582ifneq ($(SCO_DMA_SNAPSHOT),1)
3583export SPEECH_TX_AEC_CODEC_REF := 0
3584endif
3585
3586# disable codec ref when 2300a enable anc
3587ifeq ($(CHIP), best2300a)
3588ifeq ($(ANC_APP), 1)
3589export SPEECH_TX_AEC_CODEC_REF := 0
3590endif
3591endif
3592
3593# disable codec ref when 1501 enable psap
3594ifeq ($(CHIP), best1501)
3595ifeq ($(PSAP_APP), 1)
3596export SPEECH_TX_AEC_CODEC_REF := 0
3597endif
3598endif
3599
3600# disable codec ref when enable sidetone
3601ifeq ($(SPEECH_SIDETONE), 1)
3602export SPEECH_TX_AEC_CODEC_REF := 0
3603endif
3604
3605ifeq ($(SPEECH_TX_AEC_CODEC_REF),1)
3606KBUILD_CPPFLAGS += -DSPEECH_TX_AEC_CODEC_REF
3607endif
3608
3609ifeq ($(SPEECH_RX_NS),1)
3610export SPEECH_RX_NS
3611KBUILD_CPPFLAGS += -DSPEECH_RX_NS
3612export HFP_DISABLE_NREC := 1
3613endif
3614
3615ifeq ($(SPEECH_RX_NS2),1)
3616export SPEECH_RX_NS2
3617KBUILD_CPPFLAGS += -DSPEECH_RX_NS2
3618export HFP_DISABLE_NREC := 1
3619endif
3620
3621ifeq ($(SPEECH_RX_NS2FLOAT),1)
3622export SPEECH_RX_NS2FLOAT
3623KBUILD_CPPFLAGS += -DSPEECH_RX_NS2FLOAT
3624export HFP_DISABLE_NREC := 1
3625#export DSP_LIB ?= 1
3626endif
3627
3628ifeq ($(SPEECH_RX_NS3),1)
3629export SPEECH_RX_NS3
3630KBUILD_CPPFLAGS += -DSPEECH_RX_NS3
3631export HFP_DISABLE_NREC := 1
3632endif
3633
3634ifeq ($(SPEECH_RX_AGC),1)
3635export SPEECH_RX_AGC
3636KBUILD_CPPFLAGS += -DSPEECH_RX_AGC
3637export HFP_DISABLE_NREC := 1
3638endif
3639
3640ifeq ($(SPEECH_RX_COMPEXP),1)
3641export SPEECH_RX_COMPEXP
3642export HFP_DISABLE_NREC := 1
3643endif
3644
3645ifeq ($(SPEECH_RX_EQ),1)
3646export SPEECH_RX_EQ
3647KBUILD_CPPFLAGS += -DSPEECH_RX_EQ
3648export HFP_DISABLE_NREC := 1
3649#export DSP_LIB ?= 1
3650endif
3651
3652ifeq ($(SPEECH_RX_HW_EQ),1)
3653export SPEECH_RX_HW_EQ
3654export HFP_DISABLE_NREC := 1
3655endif
3656
3657ifeq ($(SPEECH_RX_DAC_EQ),1)
3658export SPEECH_RX_DAC_EQ
3659export HFP_DISABLE_NREC := 1
3660endif
3661
3662ifeq ($(SPEECH_RX_POST_GAIN),1)
3663export SPEECH_RX_POST_GAIN
3664KBUILD_CPPFLAGS += -DSPEECH_RX_POST_GAIN
3665endif
3666
3667ifeq ($(SPEECH_RX_EQ),1)
3668# enable 24bit to fix low level signal distortion
3669export SPEECH_RX_24BIT := 1
3670endif
3671
3672export SPEECH_PROCESS_FRAME_MS 	?= 16
3673ifeq ($(SPEECH_CODEC_CAPTURE_CHANNEL_NUM),1)
3674export SPEECH_PROCESS_FRAME_MS := 15
3675endif
3676ifeq ($(SPEECH_TX_NN_NS),1)
3677export SPEECH_PROCESS_FRAME_MS := 16
3678endif
3679ifeq ($(SPEECH_TX_NN_NS2),1)
3680export SPEECH_PROCESS_FRAME_MS := 16
3681endif
3682ifeq ($(SPEECH_TX_2MIC_NS2),1)
3683export SPEECH_PROCESS_FRAME_MS := 15
3684endif
3685ifeq ($(SPEECH_TX_2MIC_NS4),1)
3686export SPEECH_PROCESS_FRAME_MS := 15
3687endif
3688ifeq ($(SPEECH_TX_2MIC_NS5),1)
3689export SPEECH_PROCESS_FRAME_MS := 15
3690endif
3691ifeq ($(SPEECH_TX_THIRDPARTY),1)
3692export SPEECH_PROCESS_FRAME_MS := 15
3693endif
3694KBUILD_CPPFLAGS += -DSPEECH_PROCESS_FRAME_MS=$(SPEECH_PROCESS_FRAME_MS)
3695
3696export SPEECH_SCO_FRAME_MS 		?= 15
3697KBUILD_CPPFLAGS += -DSPEECH_SCO_FRAME_MS=$(SPEECH_SCO_FRAME_MS)
3698
3699ifeq ($(SPEECH_SIDETONE),1)
3700export SPEECH_SIDETONE
3701KBUILD_CPPFLAGS += -DSPEECH_SIDETONE
3702ifeq ($(HW_SIDETONE_IIR_PROCESS),1)
3703ifeq ($(ANC_APP),1)
3704$(error ANC_APP conflicts with HW_SIDETONE_IIR_PROCESS)
3705endif
3706export HW_SIDETONE_IIR_PROCESS
3707KBUILD_CPPFLAGS += -DHW_SIDETONE_IIR_PROCESS
3708endif
3709ifeq ($(CHIP),best2000)
3710# Disable SCO resample
3711export SW_SCO_RESAMPLE := 0
3712export NO_SCO_RESAMPLE := 1
3713endif
3714endif
3715
3716ifeq ($(THIRDPARTY_LIB),aispeech)
3717#export DSP_LIB ?= 1
3718endif
3719
3720ifeq ($(THIRDPARTY_LIB),kws/bes)
3721export AQE_KWS := 1
3722endif
3723
3724ifeq ($(AQE_KWS),1)
3725export AQE_KWS
3726export NN_LIB := 1
3727KBUILD_CPPFLAGS += -DAQE_KWS
3728KBUILD_CPPFLAGS += -DAQE_KWS_$(AQE_KWS_NAME)
3729KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
3730endif
3731
3732ifeq ($(AUDIO_HEARING_COMPSATN),1)
3733export AUDIO_HEARING_COMPSATN
3734KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
3735KBUILD_CPPFLAGS += -DAUDIO_HEARING_COMPSATN
3736KBUILD_CPPFLAGS += -DHEARING_MOD_VAL=$(HEARING_MOD_VAL)
3737endif
3738
3739ifeq ($(HEARING_USE_STATIC_RAM),1)
3740KBUILD_CPPFLAGS += -DHEARING_USE_STATIC_RAM
3741endif
3742
3743ifeq ($(AUDIO_CUSTOM_EQ),1)
3744export AUDIO_CUSTOM_EQ
3745export USE_CMSIS_FFT_LEN_1024 := 1
3746KBUILD_CPPFLAGS += -DGLOBAL_SRAM_CMSIS_FFT
3747endif
3748
3749ifeq ($(USE_CMSIS_FFT_LEN_1024),1)
3750KBUILD_CPPFLAGS += -DARM_TABLE_TWIDDLECOEF_F32_512
3751KBUILD_CPPFLAGS += -DARM_TABLE_TWIDDLECOEF_RFFT_F32_1024
3752KBUILD_CPPFLAGS += -DARM_TABLE_BITREVIDX_FLT_512
3753endif
3754
3755KBUILD_CPPFLAGS += -DSPEECH_CODEC_CAPTURE_CHANNEL_NUM=$(SPEECH_CODEC_CAPTURE_CHANNEL_NUM)
3756KBUILD_CPPFLAGS += -DSPEECH_ASR_CAPTURE_CHANNEL_NUM=$(SPEECH_ASR_CAPTURE_CHANNEL_NUM)
3757
3758endif # SPEECH_LIB
3759
3760# -------------------------------------------
3761# Common features
3762# -------------------------------------------
3763
3764export DEBUG_PORT ?= 1
3765
3766ifneq ($(filter best1000 best2000,$(CHIP)),)
3767export AUD_SECTION_STRUCT_VERSION ?= 1
3768else
3769export AUD_SECTION_STRUCT_VERSION ?= 2
3770endif
3771ifneq ($(AUD_SECTION_STRUCT_VERSION),)
3772KBUILD_CPPFLAGS += -DAUD_SECTION_STRUCT_VERSION=$(AUD_SECTION_STRUCT_VERSION)
3773endif
3774
3775ifneq ($(FLASH_CHIP),)
3776VALID_FLASH_CHIP_LIST := ALL SIMU \
3777	GD25LE255E GD25LE128E GD25LQ64C GD25LQ32C GD25LQ16C GD25LQ80C GD25Q32C GD25Q80C GD25Q40C GD25D20C \
3778	P25Q256L P25Q128L P25Q64L P25Q32L P25Q16L P25Q80H P25Q40H P25Q21H P25Q32SL P25Q16SL \
3779	ZB25VQ128B \
3780	XM25QU128C XM25QH16C XM25QH80B \
3781	XT25Q08B \
3782	EN25S80B \
3783	W25Q128JW W25Q32FW W25Q128JV\
3784	SK25LE032
3785export FLASH_CHIP_LIST := $(subst $(comma),$(space),$(FLASH_CHIP))
3786ifneq ($(filter-out $(VALID_FLASH_CHIP_LIST),$(FLASH_CHIP_LIST)),)
3787$(error Invalid FLASH_CHIP: $(filter-out $(VALID_FLASH_CHIP_LIST),$(FLASH_CHIP_LIST)))
3788endif
3789endif
3790
3791ifneq ($(NANDFLASH_CHIP),)
3792export NANDFLASH_CHIP_LIST := $(subst $(comma),$(space),$(NANDFLASH_CHIP))
3793endif
3794
3795
3796ifeq ($(KERNEL),LITEOS_M)
3797export FAULT_DUMP ?= 0
3798else ifeq ($(KERNEL),LITEOS_A)
3799export FAULT_DUMP ?= 0
3800else
3801export FAULT_DUMP ?= 1
3802endif
3803
3804export CODEC_KEEP_CLOCK ?= 0
3805ifeq ($(CODEC_KEEP_CLOCK),1)
3806export CODEC_POWER_DOWN := 0
3807else
3808export CODEC_POWER_DOWN ?= 1
3809endif
3810
3811export AUDIO_OUTPUT_VOLUME_DEFAULT ?= 10
3812KBUILD_CPPFLAGS += -DAUDIO_OUTPUT_VOLUME_DEFAULT=$(AUDIO_OUTPUT_VOLUME_DEFAULT)
3813
3814NV_REC_DEV_VER ?= 2
3815
3816ifeq ($(NO_PWRKEY),1)
3817export NO_PWRKEY
3818endif
3819
3820ifeq ($(NO_GROUPKEY),1)
3821export NO_GROUPKEY
3822endif
3823
3824ifeq ($(NO_SLEEP),1)
3825export NO_SLEEP
3826endif
3827
3828ifeq ($(CRASH_BOOT),1)
3829export CRASH_BOOT
3830endif
3831
3832ifeq ($(USB_HIGH_SPEED),1)
3833export USB_HIGH_SPEED
3834endif
3835
3836ifeq ($(AUDIO_CODEC_ASYNC_CLOSE),1)
3837export AUDIO_CODEC_ASYNC_CLOSE
3838endif
3839
3840ifeq ($(CODEC_PLAY_BEFORE_CAPTURE),1)
3841# Enable the workaround for BEST1000 version C & earlier chips
3842export CODEC_PLAY_BEFORE_CAPTURE
3843endif
3844
3845ifeq ($(AUDIO_INPUT_CAPLESSMODE),1)
3846export AUDIO_INPUT_CAPLESSMODE
3847endif
3848
3849ifeq ($(AUDIO_INPUT_LARGEGAIN),1)
3850export AUDIO_INPUT_LARGEGAIN
3851endif
3852
3853ifeq ($(AUDIO_INPUT_MONO),1)
3854export AUDIO_INPUT_MONO
3855endif
3856
3857ifeq ($(AUDIO_OUTPUT_MONO),1)
3858export AUDIO_OUTPUT_MONO
3859endif
3860
3861ifeq ($(AUDIO_OUTPUT_INVERT_RIGHT_CHANNEL),1)
3862export AUDIO_OUTPUT_INVERT_RIGHT_CHANNEL
3863endif
3864
3865ifeq ($(AUDIO_OUTPUT_CALIB_GAIN_MISSMATCH),1)
3866export AUDIO_OUTPUT_CALIB_GAIN_MISSMATCH
3867endif
3868
3869ifeq ($(CODEC_DAC_MULTI_VOLUME_TABLE),1)
3870export CODEC_DAC_MULTI_VOLUME_TABLE
3871endif
3872
3873ifeq ($(AUDIO_OUTPUT_DAC2_SW_GAIN),1)
3874export AUDIO_OUTPUT_DAC2_SW_GAIN
3875endif
3876
3877ifeq ($(AUDIO_OUTPUT_DAC2),1)
3878export AUDIO_OUTPUT_DAC2
3879endif
3880
3881ifeq ($(DAC_CLASSG_ENABLE),1)
3882export DAC_CLASSG_ENABLE
3883endif
3884
3885ifeq ($(HW_FIR_DSD_PROCESS),1)
3886export HW_FIR_DSD_PROCESS
3887endif
3888
3889ifeq ($(HW_FIR_EQ_PROCESS),1)
3890export HW_FIR_EQ_PROCESS
3891endif
3892
3893ifeq ($(HW_IIR_EQ_PROCESS),1)
3894export HW_IIR_EQ_PROCESS
3895endif
3896
3897ifeq ($(HW_DAC_IIR_EQ_PROCESS),1)
3898export HW_DAC_IIR_EQ_PROCESS
3899endif
3900
3901ifeq ($(AUDIO_DRC),1)
3902export AUDIO_DRC
3903export AUDIO_OUTPUT_SW_GAIN := 1
3904export AUDIO_OUTPUT_SW_GAIN_BEFORE_DRC := 1
3905endif
3906
3907ifeq ($(AUDIO_LIMITER),1)
3908export AUDIO_LIMITER
3909export AUDIO_OUTPUT_SW_GAIN := 1
3910export AUDIO_OUTPUT_SW_GAIN_BEFORE_DRC := 1
3911endif
3912
3913ifeq ($(AUDIO_REVERB),1)
3914export AUDIO_REVERB
3915endif
3916
3917ifeq ($(AUDIO_HW_LIMITER),1)
3918export AUDIO_HW_LIMITER
3919endif
3920
3921ifeq ($(HW_FIR_EQ_PROCESS_2CH),1)
3922export HW_FIR_EQ_PROCESS_2CH
3923KBUILD_CPPFLAGS += -D__HW_FIR_EQ_PROCESS_2CH__
3924endif
3925
3926ifeq ($(NO_ISPI),1)
3927KBUILD_CPPFLAGS += -DNO_ISPI
3928endif
3929
3930ifeq ($(USER_SECURE_BOOT),1)
3931export BOOT_LOADER_POST_INIT_HOOK := 1
3932core-y += utils/user_secure_boot/ \
3933               utils/system_info/
3934KBUILD_CPPFLAGS += -DUSER_SECURE_BOOT
3935endif
3936
3937ifeq ($(ASSERT_SHOW_FILE_FUNC),1)
3938KBUILD_CPPFLAGS += -DASSERT_SHOW_FILE_FUNC
3939else
3940ifeq ($(ASSERT_SHOW_FILE),1)
3941KBUILD_CPPFLAGS += -DASSERT_SHOW_FILE
3942else
3943ifeq ($(ASSERT_SHOW_FUNC),1)
3944KBUILD_CPPFLAGS += -DASSERT_SHOW_FUNC
3945endif
3946endif
3947endif
3948
3949ifeq ($(LARGE_SENS_RAM),1)
3950KBUILD_CPPFLAGS += -DLARGE_SENS_RAM
3951endif
3952
3953ifeq ($(TWS),1)
3954LARGE_RAM ?= 1
3955endif
3956ifeq ($(LARGE_RAM),1)
3957ifeq ($(DSP_ENABLE), 1)
3958$(error LARGE_RAM conflicts with DSP_ENABLE)
3959endif
3960KBUILD_CPPFLAGS += -DLARGE_RAM
3961endif
3962
3963ifeq ($(LARGE_DSP_RAM),1)
3964KBUILD_CPPFLAGS += -DLARGE_DSP_RAM
3965endif
3966
3967ifeq ($(SMALL_RET_RAM),1)
3968KBUILD_CPPFLAGS += -DSMALL_RET_RAM
3969endif
3970
3971ifeq ($(SIMPLE_TASK_SWITCH),1)
3972KBUILD_CPPFLAGS += -DSIMPLE_TASK_SWITCH
3973endif
3974
3975ifeq ($(ALT_BOOT_FLASH),1)
3976KBUILD_CPPFLAGS += -DALT_BOOT_FLASH
3977endif
3978
3979ifeq ($(USB_AUDIO_APP),1)
3980ifneq ($(BTUSB_AUDIO_MODE),1)
3981export NO_OVERLAY ?= 1
3982endif
3983endif
3984ifeq ($(NO_OVERLAY),1)
3985KBUILD_CPPFLAGS +=  -DNO_OVERLAY
3986endif
3987
3988ifeq ($(CALIB_SLOW_TIMER),1)
3989KBUILD_CPPFLAGS += -DCALIB_SLOW_TIMER
3990endif
3991
3992ifneq ($(CHIP_SUBSYS),dsp)
3993export INT_LOCK_EXCEPTION ?= 1
3994endif
3995
3996ifeq ($(INT_LOCK_EXCEPTION),1)
3997KBUILD_CPPFLAGS += -DINT_LOCK_EXCEPTION
3998endif
3999
4000ifeq ($(USE_TRACE_ID),1)
4001export USE_TRACE_ID
4002export TRACE_STR_SECTION ?= 1
4003KBUILD_CPPFLAGS += -DUSE_TRACE_ID
4004endif
4005
4006ifeq ($(TRACE_STR_SECTION),1)
4007KBUILD_CPPFLAGS += -DTRACE_STR_SECTION
4008CPPFLAGS_${LDS_FILE} += -DTRACE_STR_SECTION
4009endif
4010
4011ifeq ($(ANC_APP),1)
4012export ANC_FF_ENABLED ?= 1
4013ifeq ($(ANC_FB_CHECK),1)
4014KBUILD_CPPFLAGS += -DANC_FB_CHECK
4015endif
4016ifeq ($(ANC_FF_CHECK),1)
4017KBUILD_CPPFLAGS += -DANC_FF_CHECK
4018endif
4019endif
4020
4021ifeq ($(PSAP_APP),1)
4022KBUILD_CPPFLAGS += -DPSAP_APP
4023# KBUILD_CPPFLAGS += -DPSAP_FORCE_STREAM_48K
4024endif
4025
4026ifeq ($(AUDIO_PSAP_DEHOWLING_HW),1)
4027KBUILD_CPPFLAGS += -DAUDIO_PSAP_DEHOWLING_HW
4028endif
4029
4030ifeq ($(AUDIO_ANC_SPKCALIB_HW),1)
4031KBUILD_CPPFLAGS += -DAUDIO_ANC_SPKCALIB_HW
4032endif
4033
4034ifeq ($(CHIP),best1000)
4035ifeq ($(AUD_PLL_DOUBLE),1)
4036KBUILD_CPPFLAGS += -DAUD_PLL_DOUBLE
4037endif
4038
4039ifeq ($(DUAL_AUX_MIC),1)
4040ifeq ($(AUDIO_INPUT_MONO),1)
4041$(error Invalid talk mic configuration)
4042endif
4043KBUILD_CPPFLAGS += -D_DUAL_AUX_MIC_
4044endif
4045endif # best1000
4046
4047ifeq ($(CAPTURE_ANC_DATA),1)
4048KBUILD_CPPFLAGS += -DCAPTURE_ANC_DATA
4049endif
4050
4051ifeq ($(AUDIO_ANC_TT_HW),1)
4052KBUILD_CPPFLAGS += -DAUDIO_ANC_TT_HW
4053endif
4054
4055ifeq ($(AUDIO_ANC_FB_MC_HW),1)
4056KBUILD_CPPFLAGS += -DAUDIO_ANC_FB_MC_HW
4057endif
4058
4059ifeq ($(AUDIO_ANC_FB_MC),1)
4060ifeq ($(AUDIO_RESAMPLE),1)
4061$(error AUDIO_ANC_FB_MC conflicts with AUDIO_RESAMPLE)
4062endif
4063KBUILD_CPPFLAGS += -DAUDIO_ANC_FB_MC
4064ifeq ($(ANC_FB_MC_96KHZ),1)
4065KBUILD_CPPFLAGS += -DANC_FB_MC_96KHZ
4066endif
4067endif
4068
4069ifeq ($(ANC_NOISE_TRACKER),1)
4070export ANC_NOISE_TRACKER
4071ifeq ($(IBRT),1)
4072KBUILD_CPPFLAGS += -DANC_NOISE_TRACKER_CHANNEL_NUM=1
4073else
4074KBUILD_CPPFLAGS += -DANC_NOISE_TRACKER_CHANNEL_NUM=2
4075endif
4076endif
4077
4078export PC_CMD_UART ?= 0
4079ifneq ($(PC_CMD_UART),0)
4080KBUILD_CPPFLAGS += -D__PC_CMD_UART__=$(PC_CMD_UART)
4081KBUILD_CPPFLAGS += -DAUDIO_EQ_TUNING
4082endif
4083
4084ifeq ($(TOTA_EQ_TUNING),1)
4085export TOTA_EQ_TUNING
4086endif
4087
4088ifeq ($(VOICE_DETECTOR_EN),1)
4089KBUILD_CPPFLAGS += -DVOICE_DETECTOR_EN
4090endif
4091
4092ifeq ($(VOICE_DETECTOR_SENS_EN),1)
4093KBUILD_CPPFLAGS += -DVOICE_DETECTOR_SENS_EN
4094endif
4095
4096ifneq ($(CODEC_VAD_CFG_BUF_SIZE),)
4097KBUILD_CPPFLAGS += -DCODEC_VAD_CFG_BUF_SIZE=$(CODEC_VAD_CFG_BUF_SIZE)
4098endif
4099
4100ifeq ($(VAD_USE_SAR_ADC),1)
4101KBUILD_CPPFLAGS += -DVAD_USE_SAR_ADC
4102endif
4103
4104ifeq ($(VAD_USE_8K_SAMPLE_RATE),1)
4105KBUILD_CPPFLAGS += -DVAD_USE_8K_SAMPLE_RATE
4106endif
4107
4108ifeq ($(USB_ANC_MC_EQ_TUNING),1)
4109KBUILD_CPPFLAGS += -DUSB_ANC_MC_EQ_TUNING -DANC_PROD_TEST
4110endif
4111
4112ifeq ($(MAX_DAC_OUTPUT),-60db)
4113MAX_DAC_OUTPUT_FLAGS := -DMAX_DAC_OUTPUT_M60DB
4114else
4115ifeq ($(MAX_DAC_OUTPUT),3.75mw)
4116MAX_DAC_OUTPUT_FLAGS := -DMAX_DAC_OUTPUT_3P75MW
4117else
4118ifeq ($(MAX_DAC_OUTPUT),5mw)
4119MAX_DAC_OUTPUT_FLAGS := -DMAX_DAC_OUTPUT_5MW
4120else
4121ifeq ($(MAX_DAC_OUTPUT),10mw)
4122MAX_DAC_OUTPUT_FLAGS := -DMAX_DAC_OUTPUT_10MW
4123else
4124ifneq ($(MAX_DAC_OUTPUT),30mw)
4125ifneq ($(MAX_DAC_OUTPUT),)
4126$(error Invalid MAX_DAC_OUTPUT value: $(MAX_DAC_OUTPUT) (MUST be one of: -60db 3.75mw 5mw 10mw 30mw))
4127endif
4128endif
4129endif
4130endif
4131endif
4132endif
4133export MAX_DAC_OUTPUT_FLAGS
4134
4135export SUPPORT_REMOTE_COD ?= 0
4136ifeq ($(SUPPORT_REMOTE_COD),1)
4137KBUILD_CPPFLAGS += -D_SUPPORT_REMOTE_COD_
4138endif
4139
4140export HAS_BT_SYNC ?= 0
4141ifeq ($(HAS_BT_SYNC),1)
4142KBUILD_CPPFLAGS += -D__BT_SYNC__
4143endif
4144
4145ifeq ($(SINGLE_WIRE_UART_PMU_1802),1)
4146KBUILD_CPPFLAGS += -DSINGLE_WIRE_UART_PMU_1802
4147endif
4148
4149ifeq ($(SINGLE_WIRE_UART_PMU_1803),1)
4150KBUILD_CPPFLAGS += -DSINGLE_WIRE_UART_PMU_1803
4151endif
4152
4153ifeq ($(FUZZ_TEST_SUPPORT),1)
4154KBUILD_CPPFLAGS += -D__FUZZ_TEST_SUPPORT__
4155endif
4156
4157ifeq ($(INTERSYS_RX_DMA_SPEEDUP),1)
4158CPPFLAGS_${LDS_FILE} += -DINTERSYS_RX_DMA_SPEEDUP
4159endif
4160
4161# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
4162# Put customized features above
4163# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4164
4165# vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
4166# Obsoleted features
4167# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4168OBSOLETED_FEATURE_LIST := EQ_PROCESS RB_CODEC AUDIO_EQ_PROCESS MEDIA_PLAYER_RBCODEC
4169USED_OBSOLETED_FEATURE := $(strip $(foreach f,$(OBSOLETED_FEATURE_LIST),$(if $(filter 1,$($f)),$f)))
4170ifneq ($(USED_OBSOLETED_FEATURE),)
4171$(error Obsoleted features: $(USED_OBSOLETED_FEATURE))
4172endif
4173
4174# -------------------------------------------
4175# Size and LDS macros
4176# -------------------------------------------
4177
4178ifneq ($(ROM_SIZE),)
4179KBUILD_CPPFLAGS += -DROM_SIZE=$(ROM_SIZE)
4180endif
4181
4182ifneq ($(RAM_SIZE),)
4183KBUILD_CPPFLAGS += -DRAM_SIZE=$(RAM_SIZE)
4184endif
4185
4186ifneq ($(BT_RAMRUN_SIZE),)
4187KBUILD_CPPFLAGS += -DBT_RAMRUN_SIZE=$(BT_RAMRUN_SIZE)
4188endif
4189
4190ifneq ($(BT_RAMRUN_BASE),)
4191KBUILD_CPPFLAGS += -DBT_RAMRUN_BASE=$(BT_RAMRUN_BASE)
4192endif
4193
4194ifneq ($(RAMCP_BASE),)
4195KBUILD_CPPFLAGS += -DRAMCP_BASE=$(RAMCP_BASE)
4196endif
4197
4198ifneq ($(RAMCP_SIZE),)
4199KBUILD_CPPFLAGS += -DRAMCP_SIZE=$(RAMCP_SIZE)
4200endif
4201
4202ifneq ($(RAMCPX_BASE),)
4203KBUILD_CPPFLAGS += -DRAMCPX_BASE=$(RAMCPX_BASE)
4204endif
4205
4206ifneq ($(RAMCPX_SIZE),)
4207KBUILD_CPPFLAGS += -DRAMCPX_SIZE=$(RAMCPX_SIZE)
4208endif
4209
4210ifneq ($(DSP_RAM_SIZE),)
4211KBUILD_CPPFLAGS += -DDSP_RAM_SIZE=$(DSP_RAM_SIZE)
4212endif
4213
4214export FLASH_SIZE ?= 0x100000
4215ifeq ($(CHIP_HAS_PSRAM),1)
4216export PSRAM_SIZE ?= 0x400000
4217export PSRAM_ENABLE ?= 0
4218export PSRAM_SPEED ?= 200
4219#166:166M, 200:200M, 240:240M
4220endif
4221ifneq ($(PSRAM_SIZE),)
4222KBUILD_CPPFLAGS += -DPSRAM_SIZE=$(PSRAM_SIZE)
4223endif
4224
4225ifeq ($(CHIP_HAS_PSRAMUHS),1)
4226export PSRAMUHS_ENABLE ?= 0
4227export PSRAMUHS_SPEED ?= 1000
4228#400:400M, 600:600M, 800:800M, 900:900M, 1000:1000M, 1066:1066M
4229ifeq ($(PSRAMUHS_DUAL_8BIT), 1)
4230export PSRAMUHS_SIZE ?= 0x1000000
4231ifeq ($(PSRAMUHS_DUAL_SWITCH), 1)
4232$(error PSRAMUHS_DUAL_8BIT conflicts with PSRAMUHS_DUAL_SWITCH)
4233endif
4234endif
4235export PSRAMUHS_SIZE ?= 0x800000
4236endif
4237
4238# NOTE: This size cannot be changed so that audio section address is fixed.
4239#       This rule can be removed once audio tool can set audio section address dynamically.
4240FACTORY_SECTION_SIZE ?= 0x1000
4241
4242# NOTE: This size cannot be changed so that audio section address is fixed.
4243#       This rule can be removed once audio tool can set audio section address dynamically.
4244RESERVED_SECTION_SIZE ?= 0x1000
4245ifeq ($(CHIP), best1501simu)
4246ifeq ($(ASIC_SIMU),1)
4247RESERVED_SECTION_SIZE := 0x32000
4248endif
4249endif
4250
4251ifeq ($(AUDIO_SECTION_ENABLE),1)
4252KBUILD_CPPFLAGS += -DAUDIO_SECTION_ENABLE
4253# depend on length of (ANC + AUDIO + SPEECH) in aud_section.c
4254AUD_SECTION_SIZE ?= 0x8000
4255ifeq ($(ANC_APP),1)
4256$(error Can not enable AUDIO_SECTION_ENABLE and ANC_APP together)
4257endif
4258endif
4259
4260ifeq ($(ANC_APP),1)
4261ifeq ($(CHIP),best1000)
4262AUD_SECTION_SIZE ?= 0x8000
4263else
4264AUD_SECTION_SIZE ?= 0x10000
4265endif
4266else
4267AUD_SECTION_SIZE ?= 0
4268endif
4269
4270USERDATA_SECTION_SIZE ?= 0x1000
4271
4272export PERSIST_DATA_SECTION_SIZE ?= 0
4273KBUILD_CPPFLAGS += -DPERSIST_DATA_SECTION_SIZE=$(PERSIST_DATA_SECTION_SIZE)
4274
4275CUSTOM_PARAMETER_SECTION_SIZE ?= 0x1000
4276
4277ifeq ($(ENABLE_CALCU_CPU_FREQ_LOG),1)
4278export ENABLE_CALCU_CPU_FREQ_LOG
4279endif
4280
4281ifeq ($(TOTA_CRASH_DUMP_TOOL_ENABLE),1)
4282export TOTA := 1
4283CRASH_DUMP_SECTION_SIZE ?= 0x1000
4284LOG_DUMP_SECTION_SIZE ?= 0x28000
4285#export DUMP_CRASH_LOG := 1
4286KBUILD_CPPFLAGS += -DTOTA_CRASH_DUMP_TOOL_ENABLE
4287endif
4288
4289ifeq ($(DUMP_CRASH_LOG),1)
4290CRASH_DUMP_SECTION_SIZE ?= 0x4000
4291KBUILD_CPPFLAGS += -DDUMP_CRASH_LOG
4292else
4293CRASH_DUMP_SECTION_SIZE ?= 0
4294endif
4295
4296ifeq ($(A2DP_LHDC_ON),1)
4297LHDC_LICENSE_SECTION_SIZE ?= 0x1000
4298else
4299LHDC_LICENSE_SECTION_SIZE ?= 0
4300endif
4301
4302export DUMP_LOG_ENABLE ?= 0
4303ifeq ($(DUMP_LOG_ENABLE),1)
4304ifeq ($(FLASH_SIZE),0x40000) # 2M bits
4305LOG_DUMP_SECTION_SIZE ?= 0x4000
4306endif
4307ifeq ($(FLASH_SIZE),0x80000) # 4M bits
4308LOG_DUMP_SECTION_SIZE ?= 0x8000
4309endif
4310ifeq ($(FLASH_SIZE),0x100000) # 8M bits
4311LOG_DUMP_SECTION_SIZE ?= 0x10000
4312endif
4313ifeq ($(FLASH_SIZE),0x200000) # 16M bits
4314LOG_DUMP_SECTION_SIZE ?= 0x80000
4315endif
4316ifeq ($(FLASH_SIZE),0x400000) # 32M bits
4317LOG_DUMP_SECTION_SIZE ?= 0x200000
4318endif
4319ifeq ($(FLASH_SIZE),0x800000) # 64M bits
4320LOG_DUMP_SECTION_SIZE ?= 0x400000
4321endif
4322KBUILD_CPPFLAGS += -DDUMP_LOG_ENABLE
4323else
4324LOG_DUMP_SECTION_SIZE ?= 0
4325endif
4326
4327ifeq ($(OTA_ENABLE),1)
4328OTA_UPGRADE_LOG_SIZE ?= 0x1000
4329else
4330OTA_UPGRADE_LOG_SIZE ?= 0
4331endif
4332
4333ifeq ($(CORE_DUMP_TO_FLASH),1)
4334CORE_DUMP_SECTION_SIZE ?= 0x100000
4335KBUILD_CPPFLAGS += -DCORE_DUMP_TO_FLASH
4336else
4337CORE_DUMP_SECTION_SIZE ?= 0
4338endif
4339
4340ifeq ($(GSOUND_HOTWORD_ENABLE),1)
4341# used to store hotword model, currently 240KB
4342# this value is used in link file
4343HOTWORD_SECTION_SIZE ?= 0x3C000
4344else
4345HOTWORD_SECTION_SIZE ?= 0x0
4346endif
4347
4348ifeq ($(PROMPT_IN_FLASH),1)
4349# 300K for prompt package
4350PROMPT_SECTION_SIZE ?= 0x4B000
4351else
4352PROMPT_SECTION_SIZE ?= 0x0
4353endif
4354
4355ifeq ($(COMBO_CUSBIN_IN_FLASH),1)
4356export COMBO_CUSBIN_IN_FLASH
4357COMBO_SECTION_SIZE ?= 0x1000
4358else
4359COMBO_SECTION_SIZE ?= 0
4360endif
4361
4362export LDS_SECTION_FLAGS := \
4363	-DCOMBO_SECTION_SIZE=$(COMBO_SECTION_SIZE) \
4364	-DPROMPT_SECTION_SIZE=$(PROMPT_SECTION_SIZE) \
4365	-DHOTWORD_SECTION_SIZE=$(HOTWORD_SECTION_SIZE) \
4366	-DCORE_DUMP_SECTION_SIZE=$(CORE_DUMP_SECTION_SIZE) \
4367	-DOTA_UPGRADE_LOG_SIZE=$(OTA_UPGRADE_LOG_SIZE) \
4368	-DLOG_DUMP_SECTION_SIZE=$(LOG_DUMP_SECTION_SIZE) \
4369	-DCRASH_DUMP_SECTION_SIZE=$(CRASH_DUMP_SECTION_SIZE) \
4370	-DCUSTOM_PARAMETER_SECTION_SIZE=$(CUSTOM_PARAMETER_SECTION_SIZE) \
4371	-DLHDC_LICENSE_SECTION_SIZE=$(LHDC_LICENSE_SECTION_SIZE) \
4372	-DUSERDATA_SECTION_SIZE=$(USERDATA_SECTION_SIZE) \
4373	-DPERSIST_DATA_SECTION_SIZE=$(PERSIST_DATA_SECTION_SIZE) \
4374	-DAUD_SECTION_SIZE=$(AUD_SECTION_SIZE) \
4375	-DRESERVED_SECTION_SIZE=$(RESERVED_SECTION_SIZE) \
4376	-DFACTORY_SECTION_SIZE=$(FACTORY_SECTION_SIZE) \
4377	-DFILE_SYSTEM_SECTION_SIZE=$(FILE_SYSTEM_SECTION_SIZE)
4378
4379CPPFLAGS_${LDS_FILE} += \
4380	-DLINKER_SCRIPT \
4381	-DFLASH_SIZE=$(FLASH_SIZE) \
4382	-Iplatform/hal
4383
4384CPPFLAGS_${LDS_FILE} += $(LDS_SECTION_FLAGS)
4385
4386ifneq ($(PSRAM_SIZE),)
4387CPPFLAGS_${LDS_FILE} +=-DPSRAM_SIZE=$(PSRAM_SIZE)
4388endif
4389
4390ifneq ($(PSRAMCP_SIZE),)
4391CPPFLAGS_${LDS_FILE} +=-DPSRAMCP_SIZE=$(PSRAMCP_SIZE)
4392endif
4393
4394ifneq ($(PSRAMUHS_SIZE),)
4395CPPFLAGS_${LDS_FILE} +=-DPSRAMUHS_SIZE=$(PSRAMUHS_SIZE)
4396endif
4397
4398ifneq ($(RAMV_SIZE),)
4399CPPFLAGS_${LDS_FILE} +=-DRAMV_SIZE=$(RAMV_SIZE)
4400endif
4401
4402ifneq ($(OTA_BOOT_SIZE),)
4403export OTA_BOOT_SIZE
4404export OTA_BOOT_OFFSET ?= 0
4405CPPFLAGS_${LDS_FILE} += -DOTA_BOOT_OFFSET=$(OTA_BOOT_OFFSET) -DOTA_BOOT_SIZE=$(OTA_BOOT_SIZE)
4406endif
4407
4408ifneq ($(OTA_CODE_OFFSET),)
4409export OTA_CODE_OFFSET
4410CPPFLAGS_${LDS_FILE} += -DOTA_CODE_OFFSET=$(OTA_CODE_OFFSET)
4411endif
4412
4413ifneq ($(OTA_REMAP_OFFSET),)
4414export OTA_REMAP_OFFSET
4415CPPFLAGS_${LDS_FILE} += -DOTA_REMAP_OFFSET=$(OTA_REMAP_OFFSET)
4416ifeq ($(OTA_CODE_OFFSET),)
4417$(error OTA_CODE_OFFSET should be set along with OTA_REMAP_OFFSET)
4418endif
4419endif
4420
4421ifeq ($(FLASH_REMAP),1)
4422export FLASH_REMAP
4423ifneq ($(PROGRAMMER),1)
4424ifeq ($(OTA_REMAP_OFFSET),)
4425$(error OTA_REMAP_OFFSET should be set along with FLASH_REMAP)
4426endif
4427endif
4428endif
4429
4430ifneq ($(FLASH_REGION_SIZE),)
4431CPPFLAGS_${LDS_FILE} += -DFLASH_REGION_SIZE=$(FLASH_REGION_SIZE)
4432endif
4433
4434ifneq ($(SLAVE_BIN_FLASH_OFFSET),)
4435export SLAVE_BIN_FLASH_OFFSET
4436CPPFLAGS_${LDS_FILE} += -DSLAVE_BIN_FLASH_OFFSET=$(SLAVE_BIN_FLASH_OFFSET)
4437endif
4438
4439ifeq ($(BOOT_CODE_IN_RAM),1)
4440CPPFLAGS_${LDS_FILE} += -DBOOT_CODE_IN_RAM
4441endif
4442
4443ifeq ($(GSOUND_HOTWORD_EXTERNAL),1)
4444CPPFLAGS_${LDS_FILE} += -DGSOUND_HOTWORD_EXTERNAL
4445endif
4446
4447ifeq ($(MEM_POOL_IN_CP_RAM),1)
4448CPPFLAGS_${LDS_FILE} += -DMEM_POOL_IN_CP_RAM
4449endif
4450
4451ifeq ($(PROGRAMMER_LOAD_SIMU),1)
4452CPPFLAGS_${LDS_FILE} += -DPROGRAMMER_LOAD_SIMU
4453endif
4454
4455ifeq ($(RB_CODEC),1)
4456CPPFLAGS_${LDS_FILE} += -DRB_CODEC
4457endif
4458
4459ifneq ($(DATA_BUF_START),)
4460CPPFLAGS_${LDS_FILE} += -DDATA_BUF_START=$(DATA_BUF_START)
4461endif
4462
4463ifeq ($(BTHCI_H4),1)
4464KBUILD_CFLAGS += -DBTHCI_H4
4465endif
4466
4467ifeq ($(BT_CLOSE),1)
4468KBUILD_CFLAGS	+= -D__BT_CLOSE__
4469endif
4470
4471ifeq ($(ALSA_WIFI_TO_BT),1)
4472KBUILD_CFLAGS	+= -DALSA_WIFI_TO_BT
4473endif
4474
4475ifeq ($(USE_BT_ADAPTER),1)
4476KBUILD_CFLAGS	+= -DUSE_BT_ADAPTER
4477KBUILD_CFLAGS	+= -DBLE_ADAPTER_PROFILES_NUM=10
4478KBUILD_CFLAGS	+= -DBLE_ADAPTER_CLIENT_NUM=1
4479KBUILD_CFLAGS	+= -DBLE_ADAPTER_ATTB_NUM=16
4480else
4481KBUILD_CFLAGS	+= -DBLE_ADAPTER_PROFILES_NUM=0
4482KBUILD_CFLAGS	+= -DBLE_ADAPTER_CLIENT_NUM=0
4483KBUILD_CFLAGS	+= -DBLE_ADAPTER_ATTB_NUM=0
4484endif
4485
4486ifeq ($(VAD_IN_BACKGROUND),1)
4487KBUILD_CFLAGS	+= -DVAD_IN_BACKGROUND
4488endif
4489
4490# -------------------------------------------
4491# General
4492# -------------------------------------------
4493
4494ifneq ($(NO_CONFIG),1)
4495core-y += config/
4496endif
4497
4498ifneq ($(NO_BOOT_STRUCT),1)
4499core-y += $(call add_if_exists,utils/boot_struct/)
4500endif
4501
4502export DEFAULT_CFG_SRC ?= _default_cfg_src_
4503
4504ifneq ($(wildcard $(srctree)/config/$(T)/tgt_hardware.h $(srctree)/config/$(T)/res/),)
4505KBUILD_CPPFLAGS += -Iconfig/$(T)
4506endif
4507KBUILD_CPPFLAGS += -Iconfig/$(DEFAULT_CFG_SRC)
4508
4509CPU_EXT :=
4510ifeq ($(CPU_NO_DSP),1)
4511CPU_EXT := $(CPU_EXT)+nodsp
4512endif
4513ifneq ($(CHIP_HAS_FPU),1)
4514CPU_EXT := $(CPU_EXT)+nofp
4515endif
4516
4517ifneq ($(CPU),a7)
4518CPU_CFLAGS := -mthumb
4519endif
4520
4521ifeq ($(CPU),a7)
4522CPU_CFLAGS := -marm
4523CPU_CFLAGS += -mcpu=cortex-a7
4524else ifeq ($(CPU),m55)
4525CPU_CFLAGS += -mcpu=cortex-m55
4526else ifeq ($(CPU),m33)
4527CPU_CFLAGS += -mcpu=cortex-m33$(CPU_EXT)
4528ifeq ($(ARM_CMSE),1)
4529export ARM_CMSE
4530CPU_CFLAGS += -mcmse
4531KBUILD_CPPFLAGS += -DARM_CMSE
4532endif
4533ifeq ($(ARM_CMNS),1)
4534export ARM_CMNS
4535export ARM_CMSE_TARGET ?= cm33_se
4536KBUILD_CPPFLAGS += -DARM_CMNS
4537ifeq ($(LIBC_ROM),1)
4538$(error LIBC_ROM should be 0 when ARM_CMNS=1)
4539endif
4540endif
4541else
4542CPU_CFLAGS += -mcpu=cortex-m4$(CPU_EXT)
4543endif
4544
4545ifeq ($(CHIP_HAS_FPU),1)
4546ifeq ($(CPU),a7)
4547CPU_CFLAGS += -mfpu=neon-vfpv4
4548else ifeq ($(CPU),m33)
4549CPU_CFLAGS += -mfpu=fpv5-sp-d16
4550else ifeq ($(CPU),m55)
4551# For GCC version >= 9
4552CPU_CFLAGS += -mfpu=auto
4553else
4554CPU_CFLAGS += -mfpu=fpv4-sp-d16
4555endif
4556ifeq ($(SOFT_FLOAT_ABI),1)
4557CPU_CFLAGS += -mfloat-abi=softfp
4558else
4559CPU_CFLAGS += -mfloat-abi=hard
4560endif
4561else # !CHIP_HAS_FPU
4562CPU_CFLAGS += -mfloat-abi=soft
4563endif # !CHIP_HAS_FPU
4564
4565ifneq ($(CPU),a7)
4566ifeq ($(KERNEL),RTT)
4567CPU_CFLAGS += -Wa,-mimplicit-it=thumb
4568endif
4569
4570ifeq ($(KERNEL),RHINO)
4571CPU_CFLAGS += -Wa,-mimplicit-it=thumb
4572endif
4573endif
4574
4575export UNALIGNED_ACCESS ?= 1
4576ifeq ($(UNALIGNED_ACCESS),1)
4577KBUILD_CPPFLAGS += -DUNALIGNED_ACCESS
4578else
4579CPU_CFLAGS += -mno-unaligned-access
4580endif
4581
4582ifneq ($(ALLOW_WARNING),1)
4583KBUILD_CPPFLAGS += -Werror
4584endif
4585
4586ifeq ($(NO_STARTFILES), 1)
4587LIB_LDFLAGS += -nostartfiles
4588endif
4589
4590ifeq ($(STACK_USAGE),1)
4591KBUILD_CPPFLAGS += -fstack-usage
4592endif
4593
4594ifeq ($(PIE),1)
4595ifneq ($(TOOLCHAIN),armclang)
4596ifneq ($(NOSTD),1)
4597$(error PIE can only work when NOSTD=1)
4598endif
4599KBUILD_CPPFLAGS += -msingle-pic-base
4600endif
4601KBUILD_CPPFLAGS += -fPIE
4602# -pie option will generate .dynamic section
4603#LDFLAGS += -pie
4604#LDFLAGS += -z relro -z now
4605endif
4606
4607KBUILD_CPPFLAGS += $(CPU_CFLAGS) $(SPECS_CFLAGS)
4608LINK_CFLAGS += $(CPU_CFLAGS) $(SPECS_CFLAGS)
4609CFLAGS_IMAGE += $(CPU_CFLAGS) $(SPECS_CFLAGS)
4610
4611# Save 100+ bytes by filling less alignment holes
4612# TODO: Array alignment?
4613#LDFLAGS += --sort-common --sort-section=alignment
4614
4615ifeq ($(CTYPE_PTR_DEF),1)
4616ifeq ($(TOOLCHAIN),armclang)
4617$(error CTYPE_PTR_DEF is not supported in $(TOOLCHAIN))
4618else
4619LDFLAGS_IMAGE += --defsym __ctype_ptr__=0
4620endif
4621endif
4622
4623ifeq ($(NET_FTP_CLIENT_SUPPORT),1)
4624export NET_FTP_APP_SUPPORT := 1
4625endif
4626
4627export AT_CMD ?= 1
4628ifeq ($(AT_CMD),1)
4629KBUILD_CPPFLAGS += -D__AT_CMD_SUPPORT__
4630endif
4631
4632ifeq ($(SDK),1)
4633KBUILD_CPPFLAGS += -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-function \
4634                   -Wno-unused-value -Wno-unused-parameter -Wno-unused-label
4635ifneq ($(KERNEL),RHINO)
4636KBUILD_CPPFLAGS += -Wimplicit-fallthrough=1
4637endif
4638endif
4639