1# SPDX-License-Identifier: BSD-3-Clause
2
3menu "Platform"
4
5choice
6	prompt "Platform"
7	default ZEPHYR_POSIX if ARCH_POSIX
8	default TIGERLAKE
9
10config TIGERLAKE
11	bool "Build for Tigerlake"
12	select XT_BOOT_LOADER
13	select XT_IRQ_MAP
14	select DMA_GW
15	select DW
16	select DW_DMA if !ZEPHYR_NATIVE_DRIVERS
17	select MEM_WND
18	select DMA_HW_LLI
19	select DW_DMA_AGGREGATED_IRQ
20	select DMA_FIFO_PARTITION
21	select CAVS
22	select CAVS_VERSION_2_5
23	select XT_WAITI_DELAY
24	select NO_SECONDARY_CORE_ROM
25	select CAVS_USE_LPRO_IN_WAITI
26	help
27	  Select if your target platform is Tigerlake-compatible
28
29
30config METEORLAKE
31	bool "Build for Meteorlake"
32	select ACE
33	select ACE_VERSION_1_5
34	help
35	  Select if your target platform is Meteorlake-compatible
36
37config LIBRARY
38	bool "Build Library"
39	help
40	  Select if you want to build a library.
41	  It is generic/mock configuration not tied to some specific platform.
42	  Library builds are not intended to be run on DSP, but to be used by
43	  user-space applications.
44
45config LIBRARY_STATIC
46	bool "Build Library as static archive"
47	depends on LIBRARY
48	help
49	  Select if you want to build a static library otherwise a dynamic
50	  shared library will be built.
51
52config ZEPHYR_POSIX
53	bool "Build for Zephyr native_posix board"
54	help
55	  Select if you are building a host unit test using
56	  native_posix.  This is similar to LIBRARY in that it builds
57	  host binaries, but is tied to the Zephyr posix architecture
58	  and thus able to instrument and test the whole OS
59	  environment.
60
61config IMX8
62	bool "Build for NXP i.MX8"
63	select XT_HAVE_RESET_VECTOR_ROM
64	select XT_INTERRUPT_LEVEL_1
65	select XT_INTERRUPT_LEVEL_2
66	select XT_INTERRUPT_LEVEL_3
67	select HOST_PTABLE
68	select DUMMY_DMA
69	select XT_WAITI_DELAY
70	select IMX
71	select IMX_EDMA
72	select IMX_ESAI
73	select SCHEDULE_DMA_MULTI_CHANNEL
74	select IMX_INTERRUPT_IRQSTEER
75	help
76	  Select if your target platform is imx8-compatible
77
78config IMX8X
79	bool "Build for NXP i.MX8X"
80	select XT_HAVE_RESET_VECTOR_ROM
81	select XT_INTERRUPT_LEVEL_1
82	select XT_INTERRUPT_LEVEL_2
83	select XT_INTERRUPT_LEVEL_3
84	select HOST_PTABLE
85	select DUMMY_DMA
86	select XT_WAITI_DELAY
87	select IMX
88	select IMX_EDMA
89	select IMX_ESAI
90	select SCHEDULE_DMA_MULTI_CHANNEL
91	select IMX_INTERRUPT_IRQSTEER
92	help
93	  Select if your target platform is imx8x-compatible
94
95config IMX8M
96	bool "Build for NXP i.MX8M"
97	select XT_HAVE_RESET_VECTOR_ROM
98	select XT_INTERRUPT_LEVEL_1
99	select XT_INTERRUPT_LEVEL_2
100	select XT_INTERRUPT_LEVEL_3
101	select HOST_PTABLE
102	select DUMMY_DMA
103	select XT_WAITI_DELAY
104	select IMX
105	select IMX_SDMA
106	select SCHEDULE_DMA_MULTI_CHANNEL
107	select IMX_INTERRUPT_IRQSTEER
108	help
109	  Select if your target platform is imx8m-compatible
110
111config IMX8ULP
112	bool "Build for NXP i.MX8ULP"
113	select XT_HAVE_RESET_VECTOR_ROM
114	select XT_INTERRUPT_LEVEL_1
115	select XT_INTERRUPT_LEVEL_2
116	select XT_INTERRUPT_LEVEL_3
117	select HOST_PTABLE
118	select DUMMY_DMA
119	select XT_WAITI_DELAY
120	select IMX
121	select IMX_EDMA
122	select IMX_INTERRUPT_GENERIC
123	select SCHEDULE_DMA_MULTI_CHANNEL
124	help
125	 Select if your target platform is imx8ulp-compatible.
126	 imx.8ulp support dsp.
127
128config RENOIR
129	bool "Build for Renoir"
130	select XT_INTERRUPT_LEVEL_5
131	select XT_INTERRUPT_LEVEL_3
132	select XT_INTERRUPT_LEVEL_1
133	select XT_INTERRUPT_LEVEL_4
134	select XT_WAITI_DELAY
135	select SCHEDULE_DMA_MULTI_CHANNEL
136	help
137	 Select if your target platform is renoir-compatible
138
139config REMBRANDT
140	bool "Build for Rembrandt"
141	select XT_INTERRUPT_LEVEL_5
142	select XT_INTERRUPT_LEVEL_3
143	select XT_INTERRUPT_LEVEL_1
144	select XT_INTERRUPT_LEVEL_4
145	select XT_WAITI_DELAY
146	select XTENSA_EXCLUSIVE
147	select SCHEDULE_DMA_MULTI_CHANNEL
148	help
149	 Select if your target platform is rembrandt-compatible
150
151config MT8186
152	bool "Build for MTK MT8186"
153	select XT_INTERRUPT_LEVEL_1
154	select XT_INTERRUPT_LEVEL_2
155	select XT_INTERRUPT_LEVEL_3
156	select XT_INTERRUPT_LEVEL_4
157	select DUMMY_DMA
158	select HOST_PTABLE
159	select XT_WAITI_DELAY
160	select MEDIATEK
161	select XTENSA_EXCLUSIVE
162	select SCHEDULE_DMA_MULTI_CHANNEL
163	help
164	 Select if your target platform is mt8186-compatible
165
166config MT8188
167	bool "Build for MTK MT8188"
168	select XT_INTERRUPT_LEVEL_1
169	select XT_INTERRUPT_LEVEL_2
170	select XT_INTERRUPT_LEVEL_3
171	select XT_INTERRUPT_LEVEL_4
172	select DUMMY_DMA
173	select HOST_PTABLE
174	select XT_WAITI_DELAY
175	select MEDIATEK
176	select XTENSA_EXCLUSIVE
177	select SCHEDULE_DMA_MULTI_CHANNEL
178	help
179	 Select if your target platform is mt8188-compatible.
180
181config MT8195
182	bool "Build for MTK MT8195"
183	select XT_INTERRUPT_LEVEL_1
184	select XT_INTERRUPT_LEVEL_2
185	select XT_INTERRUPT_LEVEL_3
186	select DUMMY_DMA
187	select HOST_PTABLE
188	select MEDIATEK
189	select XTENSA_EXCLUSIVE
190	select SCHEDULE_DMA_MULTI_CHANNEL
191	help
192	  Select if your target platform is mt8195-compatible
193
194endchoice
195
196config MAX_CORE_COUNT
197	int
198	default 4 if TIGERLAKE
199	default 3 if METEORLAKE
200	default 1
201	help
202	  Maximum number of cores per configuration
203
204config CORE_COUNT
205	int "Number of cores"
206	default MP_NUM_CPUS if KERNEL_BIN_NAME = "zephyr"
207	default MAX_CORE_COUNT
208	range 1 MAX_CORE_COUNT
209	help
210	  Number of used cores
211	  Lowering available core count could result in lower power consumption
212
213config MULTICORE
214	bool
215	default CORE_COUNT > 1
216	help
217	  Indicates that architecture uses multiple cores
218
219config INTEL
220	bool
221	default n
222	help
223	  This has to be selected for every Intel platform.
224	  It enables Intel platforms-specific features.
225
226config HOST
227	bool
228	default n
229	help
230	  This has to be selected for building linux test targets.
231
232config IMX
233	bool
234	default n
235	select COMPILER_WORKAROUND_CACHE_ATTR
236	help
237	  This has to be selected for every i.MX NXP platform.
238	  It enables NXP platforms-specific features.
239
240config  MEDIATEK
241	bool
242	default n
243	help
244	  This has to be selected for every MediaTek platform.
245	  It enables MediaTek platforms-specific features.
246
247config CAVS
248	bool
249	default n
250	select INTEL
251	select XT_INTERRUPT_LEVEL_2
252	select XT_INTERRUPT_LEVEL_5
253	select INTEL_HDA if !ZEPHYR_NATIVE_DRIVERS
254	select INTEL_MN
255	select WAKEUP_HOOK
256	select SCHEDULE_DMA_SINGLE_CHANNEL
257
258config CAVS_VERSION_2_5
259	depends on CAVS
260	bool
261	help
262	  Select for CAVS version 2.5
263
264config ACE
265	bool
266	default n
267	select INTEL
268
269config ACE_VERSION_1_5
270	depends on ACE
271	bool
272	help
273	  Select for ACE version 1.5
274
275config HP_MEMORY_BANKS
276	int "HP memory banks count"
277	depends on CAVS
278	default 8
279	help
280	  Available memory banks count for High Performance memory
281	  Lowering available banks could result in lower power consumption
282	  Too low count should result in unresponsive/crashing image due to not
283	  enough space for FW base image
284	  Banks are 64kb in size.
285
286config LP_MEMORY_BANKS
287	int "LP memory banks count"
288	depends on CAVS
289	default 0
290	help
291	  Available memory banks count for Low Power memory.
292	  It can be used to turn ON/OFF LPSRAM bank/s.
293	  Firmware will turn on only as many banks as are defined here.
294
295config LP_SRAM
296	bool
297	default LP_MEMORY_BANKS > 0
298	help
299	  Indicates that platform uses LPSRAM.
300
301config L1_DRAM
302	bool "L1 DRAM memory support"
303	default n
304	help
305	  Indicates that platform does support L1 DATA RAM.
306
307config L1_DRAM_MEMORY_BANKS
308	int "L1 DRAM memory banks count"
309	depends on L1_DRAM
310	default 0
311	help
312	  Available memory banks count for L1 DATA RAM.
313	  It can be used to turn ON/OFF L1 DRAM bank/s.
314	  Firmware will turn on only as many banks as specified.
315
316config L1_DRAM_MEMORY_BANK_SIZE
317	int "L1 DRAM memory bank size"
318	depends on L1_DRAM
319	default 0
320	help
321	  Specifies DRAM block size.
322	  It can be used to calculate DRAM size.
323
324config CAVS_LPS
325	bool "Intel cAVS Low Power Sequencer for Power Management"
326	depends on CAVS
327	default n
328	help
329	  Select this to enable Intel cAVS Low Power Sequencer.
330	  This option is required to support S0ix/D0ix mode
331	  on cAVS platforms.
332
333config CAVS_LPRO_ONLY
334	bool "Use low power ring oscillator always"
335	default n
336	depends on CAVS
337	help
338	  Select if you want to use only the 120MHz LPRO as the DSP clock source.
339	  This option is for debugging only at the moment, choose n if unclear.
340
341config CAVS_USE_LPRO_IN_WAITI
342	bool "Use low power ring oscillator in WFI"
343	default n
344	depends on CAVS && !CAVS_LPRO_ONLY
345	help
346	  Select if we want to use LPRO clock in waiti.
347	  After waiti exit clock source will be restored.
348	  Choose n if unclear.
349
350config L3_HEAP
351	bool "Use L3 memory heap"
352	default n
353	help
354	  Select this if L3 memory is supported on the platform and
355	  it is intended to be used for dynamic allocations.
356	  For Intel ACE platform the L3 memory is called
357	  IMR (Isolated Memory Region). Feature has been
358	  only tested on ACE platform.
359	  Choose n if unclear.
360
361config CAVS_IMR_D3_PERSISTENT
362	bool "Intel IMR content persistent on DSP in D3"
363	depends on CAVS
364	default y
365	help
366	  Select this if the Intel cAVS platform can keep the
367	  IMR (Isolated Memory Region) content persistent when
368	  the DSP is in power off (D3) mode, which means we
369	  don't need to re-downloading firmware binary to DSP
370	  SRAM so fast D3->D0 transition can be supported.
371	  Choose n if unclear.
372
373# TODO: it should just take manifest version and offsets
374config RIMAGE_SIGNING_SCHEMA
375	string "Rimage firmware signing schema name"
376	default "tgl" if TIGERLAKE
377	default "imx8" if IMX8
378	default "imx8x" if IMX8X
379	default "imx8m" if IMX8M
380	default "imx8ulp" if IMX8ULP
381	default "rn" if RENOIR
382	default "mt8186" if MT8186
383	default "mt8188" if MT8188
384	default "mt8195" if MT8195
385	default ""
386	help
387	  Signing schema name used by rimage to decide how to build final binary
388
389config SYSTICK_PERIOD
390	int "System tick period in microseconds"
391	default 1000
392	help
393	  Defines platform system tick period. It is used
394	  as a timeout check value for system agent.
395	  Value should be provided in microseconds.
396
397config HAVE_AGENT
398	bool "Enable system agent"
399	default y
400	help
401	  Enables system agent. It can be disabled on systems
402	  which are still unstable and cannot assure that
403	  system agent will always execute on time or systems
404	  with DMA based scheduling, where asynchronous interrupts
405	  can potentially starve the agent.
406
407config AMS
408	bool "Enable Async Messaging Service"
409	default n
410	help
411	  Enables Async Messaging Service.
412	  Async messages are used to send messages between modules.
413
414config AGENT_PANIC_ON_DELAY
415	bool "Enable system agent time verification panic"
416	default n
417	depends on HAVE_AGENT
418	help
419	  Enables system agent time verification panic.
420	  If scheduler timing verification fails, SA will
421	  call a DSP panic.
422
423config XTENSA_EXCLUSIVE
424	bool
425	default n
426	help
427	  This has to be selected for xtensa exclusive instructions.
428	  There is a definition for EXCLUSIVE option in xtensa-config.h
429
430config FORCE_DMA_COPY_WHOLE_BLOCK
431	bool
432	default y if MT8195
433	default n
434	depends on HOST_PTABLE
435	help
436	  The host component forces DMA to copy the block size to avoid
437	  copying byte jitter between the components of the same pipeline.
438
439config SOF_STACK_SIZE
440	int "Primary core SOF stack size"
441	default 4096
442	help
443	  Size of the primary core stack. This is the stack used by all
444	  IPC calls. Increasing it allows deeper call stack on those IPC
445	  and might be useful when creating more complex audio processing
446	  components.
447
448config SECONDARY_CORE_DISABLING_TIMEOUT
449	int
450	default 5000
451	depends on MULTICORE
452	help
453	  Timeout value (in ms) for secondary core to enter D3 state.
454
455if XTENSA
456
457config INCOHERENT
458	bool "Enable cached data access via the Coherent API"
459	default y if TIGERLAKE
460	default y if METEORLAKE
461	default n
462	help
463	  The architecture is cache incoherent. i.e FW has to manually manage
464	  cache coherency amongst objects that are used on multiple cores.
465	  This setting should only be disabled for cache incoherent
466	  architectures for testing without cached access to shared data.
467
468endif
469
470config LL_WATCHDOG
471	bool "Enable watchdog support in ll scheduler"
472	default n
473	depends on ACE
474	help
475	  Select if you want to protect ll scheduler with a watchdog timer.
476	  The watchdog is enabled after creating a ll thread for specified
477	  core. When all tasks are finished, the watchdog will be disabled
478	  before stopping the thread. Periodically, after each tick has been
479	  handled, the watchdog counter is reseted.
480
481endmenu
482