1# SPDX-License-Identifier: BSD-3-Clause
2
3menu "Platform"
4
5choice
6	prompt "Platform"
7	default APOLLOLAKE
8
9config BAYTRAIL
10	bool "Build for Baytrail"
11	select HOST_PTABLE
12	select DW_DMA_AGGREGATED_IRQ
13	select DMA_SUSPEND_DRAIN
14	select DMA_FIFO_PARTITION
15	select DW
16	select DW_DMA
17	select XT_HAVE_RESET_VECTOR_ROM
18	select XT_INTERRUPT_LEVEL_1
19	select XT_INTERRUPT_LEVEL_4
20	select XT_INTERRUPT_LEVEL_5
21	select INTEL
22	select SCHEDULE_DMA_MULTI_CHANNEL
23	help
24	  Select if your target platform is Baytrail-compatible
25
26config CHERRYTRAIL
27	bool "Build for Cherrytrail"
28	select HOST_PTABLE
29	select DW_DMA_AGGREGATED_IRQ
30	select DMA_SUSPEND_DRAIN
31	select DMA_FIFO_PARTITION
32	select DW
33	select DW_DMA
34	select XT_HAVE_RESET_VECTOR_ROM
35	select XT_INTERRUPT_LEVEL_1
36	select XT_INTERRUPT_LEVEL_4
37	select XT_INTERRUPT_LEVEL_5
38	select INTEL
39	select SCHEDULE_DMA_MULTI_CHANNEL
40	help
41	  Select if your target platform is Cherrytrail-compatible
42
43config HASWELL
44	bool "Build for Haswell"
45	select HOST_PTABLE
46	select DW_DMA_AGGREGATED_IRQ
47	select DW
48	select DW_DMA
49	select XT_HAVE_RESET_VECTOR_ROM
50	select XT_INTERRUPT_LEVEL_1
51	select XT_INTERRUPT_LEVEL_2
52	select XT_INTERRUPT_LEVEL_3
53	select INTEL
54	select SCHEDULE_DMA_MULTI_CHANNEL
55	help
56	  Select if your target platform is Haswell-compatible
57
58config BROADWELL
59	bool "Build for Broadwell"
60	select HOST_PTABLE
61	select DW_DMA_AGGREGATED_IRQ
62	select DW
63	select DW_DMA
64	select XT_HAVE_RESET_VECTOR_ROM
65	select XT_INTERRUPT_LEVEL_1
66	select XT_INTERRUPT_LEVEL_2
67	select XT_INTERRUPT_LEVEL_3
68	select INTEL
69	select SCHEDULE_DMA_MULTI_CHANNEL
70	help
71	  Select if your target platform is Broadwell-compatible
72
73config APOLLOLAKE
74	bool "Build for Apollolake"
75	select XT_BOOT_LOADER
76	select XT_IRQ_MAP
77	select DMA_GW
78	select DW
79	select DW_DMA
80	select MEM_WND
81	select DMA_HW_LLI
82	select DMA_FIFO_PARTITION
83	select CAVS
84	select CAVS_VERSION_1_5
85	help
86	  Select if your target platform is Apollolake-compatible
87
88config CANNONLAKE
89	bool "Build for Cannonlake"
90	select XT_BOOT_LOADER
91	select XT_IRQ_MAP
92	select DMA_GW
93	select DW
94	select DW_DMA
95	select MEM_WND
96	select DMA_HW_LLI
97	select DW_DMA_AGGREGATED_IRQ
98	select DMA_FIFO_PARTITION
99	select CAVS
100	select CAVS_VERSION_1_8
101	select XT_WAITI_DELAY
102	select CAVS_USE_LPRO_IN_WAITI
103	help
104	  Select if your target platform is Cannonlake-compatible
105
106config SUECREEK
107	bool "Build for Suecreek"
108	select XT_BOOT_LOADER
109	select XT_IRQ_MAP
110	select DW
111	select DW_DMA
112	select DW_SPI
113	select INTEL_IOMUX
114	select DW_GPIO
115	select DMA_HW_LLI
116	select DW_DMA_AGGREGATED_IRQ
117	select DMA_FIFO_PARTITION
118	select CAVS
119	select CAVS_VERSION_2_0
120	select XT_WAITI_DELAY
121	select CAVS_USE_LPRO_IN_WAITI
122	help
123	  Select if your target platform is Suecreek-compatible
124
125config ICELAKE
126	bool "Build for Icelake"
127	select XT_BOOT_LOADER
128	select XT_IRQ_MAP
129	select DMA_GW
130	select DW
131	select DW_DMA
132	select MEM_WND
133	select DMA_HW_LLI
134	select DW_DMA_AGGREGATED_IRQ
135	select DMA_FIFO_PARTITION
136	select CAVS
137	select CAVS_VERSION_2_0
138	select XT_WAITI_DELAY
139	select CAVS_USE_LPRO_IN_WAITI
140	help
141	  Select if your target platform is Icelake-compatible
142
143config TIGERLAKE
144	bool "Build for Tigerlake"
145	select XT_BOOT_LOADER
146	select XT_IRQ_MAP
147	select DMA_GW
148	select DW
149	select DW_DMA
150	select MEM_WND
151	select DMA_HW_LLI
152	select DW_DMA_AGGREGATED_IRQ
153	select DMA_FIFO_PARTITION
154	select CAVS
155	select CAVS_VERSION_2_5
156	select XT_WAITI_DELAY
157	select NO_SECONDARY_CORE_ROM
158	select CAVS_USE_LPRO_IN_WAITI
159	help
160	  Select if your target platform is Tigerlake-compatible
161
162config LIBRARY
163	bool "Build Library"
164	help
165	  Select if you want to build a library.
166	  It is generic/mock configuration not tied to some specific platform.
167	  Library builds are not intended to be run on DSP, but to be used by
168	  user-space applications.
169
170config IMX8
171	bool "Build for NXP i.MX8"
172	select XT_HAVE_RESET_VECTOR_ROM
173	select XT_INTERRUPT_LEVEL_1
174	select XT_INTERRUPT_LEVEL_2
175	select XT_INTERRUPT_LEVEL_3
176	select HOST_PTABLE
177	select DUMMY_DMA
178	select XT_WAITI_DELAY
179	select IMX
180	select IMX_EDMA
181	select IMX_ESAI
182	select SCHEDULE_DMA_MULTI_CHANNEL
183	select IMX_INTERRUPT_IRQSTEER
184	help
185	  Select if your target platform is imx8-compatible
186
187config IMX8X
188	bool "Build for NXP i.MX8X"
189	select XT_HAVE_RESET_VECTOR_ROM
190	select XT_INTERRUPT_LEVEL_1
191	select XT_INTERRUPT_LEVEL_2
192	select XT_INTERRUPT_LEVEL_3
193	select HOST_PTABLE
194	select DUMMY_DMA
195	select XT_WAITI_DELAY
196	select IMX
197	select IMX_EDMA
198	select IMX_ESAI
199	select SCHEDULE_DMA_MULTI_CHANNEL
200	select IMX_INTERRUPT_IRQSTEER
201	help
202	  Select if your target platform is imx8x-compatible
203
204config IMX8M
205	bool "Build for NXP i.MX8M"
206	select XT_HAVE_RESET_VECTOR_ROM
207	select XT_INTERRUPT_LEVEL_1
208	select XT_INTERRUPT_LEVEL_2
209	select XT_INTERRUPT_LEVEL_3
210	select HOST_PTABLE
211	select DUMMY_DMA
212	select XT_WAITI_DELAY
213	select IMX
214	select IMX_SDMA
215	select SCHEDULE_DMA_MULTI_CHANNEL
216	select IMX_INTERRUPT_IRQSTEER
217	help
218	  Select if your target platform is imx8m-compatible
219
220config IMX8ULP
221	bool "Build for NXP i.MX8ULP"
222	select XT_HAVE_RESET_VECTOR_ROM
223	select XT_INTERRUPT_LEVEL_1
224	select XT_INTERRUPT_LEVEL_2
225	select XT_INTERRUPT_LEVEL_3
226	select HOST_PTABLE
227	select DUMMY_DMA
228	select XT_WAITI_DELAY
229	select IMX
230	select IMX_EDMA
231	select IMX_INTERRUPT_GENERIC
232	select SCHEDULE_DMA_MULTI_CHANNEL
233	help
234	 Select if your target platform is imx8ulp-compatible.
235	 imx.8ulp support dsp.
236
237config RENOIR
238	bool "Build for Renoir"
239	select XT_INTERRUPT_LEVEL_5
240	select XT_INTERRUPT_LEVEL_3
241	select XT_INTERRUPT_LEVEL_1
242	select XT_INTERRUPT_LEVEL_4
243	select XT_WAITI_DELAY
244	select SCHEDULE_DMA_MULTI_CHANNEL
245	help
246	 Select if your target platform is renoir-compatible
247
248endchoice
249
250config MAX_CORE_COUNT
251	int
252	default 2 if APOLLOLAKE
253	default 4 if ICELAKE || CANNONLAKE || SUECREEK || TIGERLAKE
254	default 1
255	help
256	  Maximum number of cores per configuration
257
258config CORE_COUNT
259	int "Number of cores"
260	default MP_NUM_CPUS if KERNEL_BIN_NAME = "zephyr"
261	default MAX_CORE_COUNT
262	range 1 MAX_CORE_COUNT
263	help
264	  Number of used cores
265	  Lowering available core count could result in lower power consumption
266
267config MULTICORE
268	bool
269	default CORE_COUNT > 1
270	help
271	  Indicates that architecture uses multiple cores
272
273config INTEL
274	bool
275	default n
276	help
277	  This has to be selected for every Intel platform.
278	  It enables Intel platforms-specific features.
279
280config HOST
281	bool
282	default n
283	help
284	  This has to be selected for building linux test targets.
285
286config IMX
287	bool
288	default n
289	select COMPILER_WORKAROUND_CACHE_ATTR
290	help
291	  This has to be selected for every i.MX NXP platform.
292	  It enables NXP platforms-specific features.
293
294config CAVS
295	bool
296	default n
297	select INTEL
298	select XT_INTERRUPT_LEVEL_2
299	select XT_INTERRUPT_LEVEL_5
300	select INTEL_HDA
301	select INTEL_MN
302	select WAKEUP_HOOK
303	select SCHEDULE_DMA_SINGLE_CHANNEL
304
305config CAVS_VERSION_1_5
306	depends on CAVS
307	bool
308	help
309	  Select for CAVS version 1.5
310
311config CAVS_VERSION_1_8
312	depends on CAVS && !CAVS_VERSION_1_5
313	bool
314	help
315	  Select for CAVS version 1.8
316
317config CAVS_VERSION_2_0
318	depends on CAVS && !CAVS_VERSION_1_5 && !CAVS_VERSION_1_8
319	bool
320	help
321	  Select for CAVS version 2.0
322
323config CAVS_VERSION_2_5
324	depends on CAVS && !CAVS_VERSION_1_5 && !CAVS_VERSION_1_8 \
325			&& !CAVS_VERSION_2_0
326	bool
327	help
328	  Select for CAVS version 2.5
329
330config CONFIG_CHERRYTRAIL_EXTRA_DW_DMA
331	bool "Support Cherrytrail 3rd DMAC"
332	default n if !CHERRYTRAIL
333	depends on CHERRYTRAIL
334	help
335	  Select if you need support for all 3 DMACs versus the default 2 used
336	  in baytrail.
337
338config HP_MEMORY_BANKS
339	int "HP memory banks count"
340	depends on CAVS
341	default 8
342	help
343	  Available memory banks count for High Performance memory
344	  Lowering available banks could result in lower power consumption
345	  Too low count should result in unresponsive/crashing image due to not
346	  enough space for FW base image
347	  Banks are 64kb in size.
348
349config LP_MEMORY_BANKS
350	int "LP memory banks count"
351	depends on CAVS
352	default 0
353	help
354	  Available memory banks count for Low Power memory.
355	  It can be used to turn ON/OFF LPSRAM bank/s.
356	  Firmware will turn on only as many banks as are defined here.
357
358config LP_SRAM
359	bool
360	default LP_MEMORY_BANKS > 0
361	help
362	  Indicates that platform uses LPSRAM.
363
364config L1_DRAM
365	bool "L1 DRAM memory support"
366	default n
367	help
368	  Indicates that platform does support L1 DATA RAM.
369
370config L1_DRAM_MEMORY_BANKS
371	int "L1 DRAM memory banks count"
372	depends on L1_DRAM
373	default 0
374	help
375	  Available memory banks count for L1 DATA RAM.
376	  It can be used to turn ON/OFF L1 DRAM bank/s.
377	  Firmware will turn on only as many banks as specified.
378
379config L1_DRAM_MEMORY_BANK_SIZE
380	int "L1 DRAM memory bank size"
381	depends on L1_DRAM
382	default 0
383	help
384	  Specifies DRAM block size.
385	  It can be used to calculate DRAM size.
386
387config CAVS_LPS
388	bool "Intel cAVS Low Power Sequencer for Power Management"
389	depends on CAVS
390	default n
391	help
392	  Select this to enable Intel cAVS Low Power Sequencer.
393	  This option is required to support S0ix/D0ix mode
394	  on cAVS platforms.
395
396config CAVS_LPRO_ONLY
397	bool "Use low power ring oscillator always"
398	default n
399	depends on CAVS && !CAVS_VERSION_1_5
400	help
401	  Select if you want to use only the 120MHz LPRO as the DSP clock source.
402	  This option is for debugging only at the moment, choose n if unclear.
403
404config CAVS_USE_LPRO_IN_WAITI
405	bool "Use low power ring oscillator in WFI"
406	default n
407	depends on CAVS && !CAVS_LPRO_ONLY
408	help
409	  Select if we want to use LPRO clock in waiti.
410	  After waiti exit clock source will be restored.
411	  Choose n if unclear.
412
413# TODO: it should just take manifest version and offsets
414config RIMAGE_SIGNING_SCHEMA
415	string "Rimage firmware signing schema name"
416	default "byt" if BAYTRAIL
417	default "cht" if CHERRYTRAIL
418	default "hsw" if HASWELL
419	default "bdw" if BROADWELL
420	default "apl" if APOLLOLAKE
421	default "cnl" if CANNONLAKE
422	default "sue" if SUECREEK
423	default "icl" if ICELAKE
424	default "tgl" if TIGERLAKE
425	default "imx8" if IMX8
426	default "imx8x" if IMX8X
427	default "imx8m" if IMX8M
428	default "imx8ulp" if IMX8ULP
429	default "rn" if RENOIR
430	default ""
431	help
432	  Signing schema name used by rimage to decide how to build final binary
433
434config SYSTICK_PERIOD
435	int "System tick period in microseconds"
436	default 1000
437	help
438	  Defines platform system tick period. It is used
439	  as a timeout check value for system agent.
440	  Value should be provided in microseconds.
441
442config HAVE_AGENT
443	bool "Enable system agent"
444	default y
445	help
446	  Enables system agent. It can be disabled on systems
447	  which are still unstable and cannot assure that
448	  system agent will always execute on time or systems
449	  with DMA based scheduling, where asynchronous interrupts
450	  can potentially starve the agent.
451
452config AGENT_PANIC_ON_DELAY
453	bool "Enable system agent time verification panic"
454	default n
455	depends on HAVE_AGENT
456	help
457	  Enables system agent time verification panic.
458	  If scheduler timing verification fails, SA will
459	  call a DSP panic.
460
461endmenu
462