1config ARCH_LS1012A
2	bool
3	select ARMV8_SET_SMPEN
4	select ARM_ERRATA_855873 if !TFABOOT
5	select FSL_LSCH2
6	select SYS_FSL_SRDS_1
7	select SYS_HAS_SERDES
8	select SYS_FSL_DDR_BE
9	select SYS_FSL_MMDC
10	select SYS_FSL_ERRATUM_A010315
11	select SYS_FSL_ERRATUM_A009798
12	select SYS_FSL_ERRATUM_A008997
13	select SYS_FSL_ERRATUM_A009007
14	select SYS_FSL_ERRATUM_A009008
15	select ARCH_EARLY_INIT_R
16	select BOARD_EARLY_INIT_F
17	select SYS_I2C_MXC
18	select SYS_I2C_MXC_I2C1
19	select SYS_I2C_MXC_I2C2
20	imply PANIC_HANG
21
22config ARCH_LS1043A
23	bool
24	select ARMV8_SET_SMPEN
25	select ARM_ERRATA_855873 if !TFABOOT
26	select FSL_LSCH2
27	select SYS_FSL_SRDS_1
28	select SYS_HAS_SERDES
29	select SYS_FSL_DDR
30	select SYS_FSL_DDR_BE
31	select SYS_FSL_DDR_VER_50
32	select SYS_FSL_ERRATUM_A008850 if !TFABOOT
33	select SYS_FSL_ERRATUM_A008997
34	select SYS_FSL_ERRATUM_A009007
35	select SYS_FSL_ERRATUM_A009008
36	select SYS_FSL_ERRATUM_A009660 if !TFABOOT
37	select SYS_FSL_ERRATUM_A009663 if !TFABOOT
38	select SYS_FSL_ERRATUM_A009798
39	select SYS_FSL_ERRATUM_A009929
40	select SYS_FSL_ERRATUM_A009942 if !TFABOOT
41	select SYS_FSL_ERRATUM_A010315
42	select SYS_FSL_ERRATUM_A010539
43	select SYS_FSL_HAS_DDR3
44	select SYS_FSL_HAS_DDR4
45	select ARCH_EARLY_INIT_R
46	select BOARD_EARLY_INIT_F
47	select SYS_I2C_MXC
48	select SYS_I2C_MXC_I2C1
49	select SYS_I2C_MXC_I2C2
50	select SYS_I2C_MXC_I2C3
51	select SYS_I2C_MXC_I2C4
52	imply SCSI
53	imply SCSI_AHCI
54	imply CMD_PCI
55
56config ARCH_LS1046A
57	bool
58	select ARMV8_SET_SMPEN
59	select FSL_LSCH2
60	select SYS_FSL_SRDS_1
61	select SYS_HAS_SERDES
62	select SYS_FSL_DDR
63	select SYS_FSL_DDR_BE
64	select SYS_FSL_DDR_VER_50
65	select SYS_FSL_ERRATUM_A008336 if !TFABOOT
66	select SYS_FSL_ERRATUM_A008511 if !TFABOOT
67	select SYS_FSL_ERRATUM_A008850 if !TFABOOT
68	select SYS_FSL_ERRATUM_A008997
69	select SYS_FSL_ERRATUM_A009007
70	select SYS_FSL_ERRATUM_A009008
71	select SYS_FSL_ERRATUM_A009798
72	select SYS_FSL_ERRATUM_A009801
73	select SYS_FSL_ERRATUM_A009803 if !TFABOOT
74	select SYS_FSL_ERRATUM_A009942 if !TFABOOT
75	select SYS_FSL_ERRATUM_A010165 if !TFABOOT
76	select SYS_FSL_ERRATUM_A010539
77	select SYS_FSL_HAS_DDR4
78	select SYS_FSL_SRDS_2
79	select ARCH_EARLY_INIT_R
80	select BOARD_EARLY_INIT_F
81	select SYS_I2C_MXC
82	select SYS_I2C_MXC_I2C1
83	select SYS_I2C_MXC_I2C2
84	select SYS_I2C_MXC_I2C3
85	select SYS_I2C_MXC_I2C4
86	imply SCSI
87	imply SCSI_AHCI
88
89config ARCH_LS1088A
90	bool
91	select ARMV8_SET_SMPEN
92	select ARM_ERRATA_855873 if !TFABOOT
93	select FSL_LSCH3
94	select SYS_FSL_SRDS_1
95	select SYS_HAS_SERDES
96	select SYS_FSL_DDR
97	select SYS_FSL_DDR_LE
98	select SYS_FSL_DDR_VER_50
99	select SYS_FSL_EC1
100	select SYS_FSL_EC2
101	select SYS_FSL_ERRATUM_A009803 if !TFABOOT
102	select SYS_FSL_ERRATUM_A009942 if !TFABOOT
103	select SYS_FSL_ERRATUM_A010165 if !TFABOOT
104	select SYS_FSL_ERRATUM_A008511 if !TFABOOT
105	select SYS_FSL_ERRATUM_A008850 if !TFABOOT
106	select SYS_FSL_ERRATUM_A009007
107	select SYS_FSL_HAS_CCI400
108	select SYS_FSL_HAS_DDR4
109	select SYS_FSL_HAS_RGMII
110	select SYS_FSL_HAS_SEC
111	select SYS_FSL_SEC_COMPAT_5
112	select SYS_FSL_SEC_LE
113	select SYS_FSL_SRDS_1
114	select SYS_FSL_SRDS_2
115	select FSL_TZASC_1
116	select ARCH_EARLY_INIT_R
117	select BOARD_EARLY_INIT_F
118	select SYS_I2C_MXC
119	select SYS_I2C_MXC_I2C1
120	select SYS_I2C_MXC_I2C2
121	select SYS_I2C_MXC_I2C3
122	select SYS_I2C_MXC_I2C4
123	imply SCSI
124	imply PANIC_HANG
125
126config ARCH_LS2080A
127	bool
128	select ARMV8_SET_SMPEN
129	select ARM_ERRATA_826974
130	select ARM_ERRATA_828024
131	select ARM_ERRATA_829520
132	select ARM_ERRATA_833471
133	select FSL_LSCH3
134	select SYS_FSL_SRDS_1
135	select SYS_HAS_SERDES
136	select SYS_FSL_DDR
137	select SYS_FSL_DDR_LE
138	select SYS_FSL_DDR_VER_50
139	select SYS_FSL_HAS_CCN504
140	select SYS_FSL_HAS_DP_DDR
141	select SYS_FSL_HAS_SEC
142	select SYS_FSL_HAS_DDR4
143	select SYS_FSL_SEC_COMPAT_5
144	select SYS_FSL_SEC_LE
145	select SYS_FSL_SRDS_2
146	select FSL_TZASC_1
147	select FSL_TZASC_2
148	select SYS_FSL_ERRATUM_A008336 if !TFABOOT
149	select SYS_FSL_ERRATUM_A008511 if !TFABOOT
150	select SYS_FSL_ERRATUM_A008514 if !TFABOOT
151	select SYS_FSL_ERRATUM_A008585
152	select SYS_FSL_ERRATUM_A008997
153	select SYS_FSL_ERRATUM_A009007
154	select SYS_FSL_ERRATUM_A009008
155	select SYS_FSL_ERRATUM_A009635
156	select SYS_FSL_ERRATUM_A009663 if !TFABOOT
157	select SYS_FSL_ERRATUM_A009798
158	select SYS_FSL_ERRATUM_A009801
159	select SYS_FSL_ERRATUM_A009803 if !TFABOOT
160	select SYS_FSL_ERRATUM_A009942 if !TFABOOT
161	select SYS_FSL_ERRATUM_A010165 if !TFABOOT
162	select SYS_FSL_ERRATUM_A009203
163	select ARCH_EARLY_INIT_R
164	select BOARD_EARLY_INIT_F
165	select SYS_I2C_MXC
166	select SYS_I2C_MXC_I2C1
167	select SYS_I2C_MXC_I2C2
168	select SYS_I2C_MXC_I2C3
169	select SYS_I2C_MXC_I2C4
170	imply DISTRO_DEFAULTS
171	imply PANIC_HANG
172
173config ARCH_LX2160A
174	bool
175	select ARMV8_SET_SMPEN
176	select FSL_LSCH3
177	select NXP_LSCH3_2
178	select SYS_HAS_SERDES
179	select SYS_FSL_SRDS_1
180	select SYS_FSL_SRDS_2
181	select SYS_NXP_SRDS_3
182	select SYS_FSL_DDR
183	select SYS_FSL_DDR_LE
184	select SYS_FSL_DDR_VER_50
185	select SYS_FSL_EC1
186	select SYS_FSL_EC2
187	select SYS_FSL_HAS_RGMII
188	select SYS_FSL_HAS_SEC
189	select SYS_FSL_HAS_CCN508
190	select SYS_FSL_HAS_DDR4
191	select SYS_FSL_SEC_COMPAT_5
192	select SYS_FSL_SEC_LE
193	select ARCH_EARLY_INIT_R
194	select BOARD_EARLY_INIT_F
195	select SYS_I2C_MXC
196	select SYS_I2C_MXC_I2C1
197	select SYS_I2C_MXC_I2C2
198	select SYS_I2C_MXC_I2C3
199	select SYS_I2C_MXC_I2C4
200	select SYS_I2C_MXC_I2C5
201	select SYS_I2C_MXC_I2C6
202	select SYS_I2C_MXC_I2C7
203	select SYS_I2C_MXC_I2C8
204	imply DISTRO_DEFAULTS
205	imply PANIC_HANG
206	imply SCSI
207	imply SCSI_AHCI
208
209config FSL_LSCH2
210	bool
211	select SYS_FSL_HAS_CCI400
212	select SYS_FSL_HAS_SEC
213	select SYS_FSL_SEC_COMPAT_5
214	select SYS_FSL_SEC_BE
215
216config FSL_LSCH3
217	bool
218
219config NXP_LSCH3_2
220	bool
221
222config FSL_MC_ENET
223	bool "Management Complex network"
224	depends on ARCH_LS2080A || ARCH_LS1088A || ARCH_LX2160A
225	default y
226	select RESV_RAM
227	help
228	  Enable Management Complex (MC) network
229
230menu "Layerscape architecture"
231	depends on FSL_LSCH2 || FSL_LSCH3
232
233config FSL_PCIE_COMPAT
234	string "PCIe compatible of Kernel DT"
235	depends on PCIE_LAYERSCAPE
236	default "fsl,ls1012a-pcie" if ARCH_LS1012A
237	default "fsl,ls1043a-pcie" if ARCH_LS1043A
238	default "fsl,ls1046a-pcie" if ARCH_LS1046A
239	default "fsl,ls2080a-pcie" if ARCH_LS2080A
240	default "fsl,ls1088a-pcie" if ARCH_LS1088A
241	default "fsl,lx2160a-pcie" if ARCH_LX2160A
242	help
243	  This compatible is used to find pci controller node in Kernel DT
244	  to complete fixup.
245
246config HAS_FEATURE_GIC64K_ALIGN
247	bool
248	default y if ARCH_LS1043A
249
250config HAS_FEATURE_ENHANCED_MSI
251	bool
252	default y if ARCH_LS1043A
253
254menu "Layerscape PPA"
255config FSL_LS_PPA
256	bool "FSL Layerscape PPA firmware support"
257	depends on !ARMV8_PSCI
258	select ARMV8_SEC_FIRMWARE_SUPPORT
259	select SEC_FIRMWARE_ARMV8_PSCI
260	select ARMV8_SEC_FIRMWARE_ERET_ADDR_REVERT if FSL_LSCH2
261	help
262	  The FSL Primary Protected Application (PPA) is a software component
263	  which is loaded during boot stage, and then remains resident in RAM
264	  and runs in the TrustZone after boot.
265	  Say y to enable it.
266
267config SPL_FSL_LS_PPA
268	bool "FSL Layerscape PPA firmware support for SPL build"
269	depends on !ARMV8_PSCI
270	select SPL_ARMV8_SEC_FIRMWARE_SUPPORT
271	select SEC_FIRMWARE_ARMV8_PSCI
272	select ARMV8_SEC_FIRMWARE_ERET_ADDR_REVERT if FSL_LSCH2
273	help
274	  The FSL Primary Protected Application (PPA) is a software component
275	  which is loaded during boot stage, and then remains resident in RAM
276	  and runs in the TrustZone after boot. This is to load PPA during SPL
277	  stage instead of the RAM version of U-Boot. Once PPA is initialized,
278	  the rest of U-Boot (including RAM version) runs at EL2.
279choice
280	prompt "FSL Layerscape PPA firmware loading-media select"
281	depends on FSL_LS_PPA
282	default SYS_LS_PPA_FW_IN_MMC if SD_BOOT
283	default SYS_LS_PPA_FW_IN_NAND if NAND_BOOT
284	default SYS_LS_PPA_FW_IN_XIP
285
286config SYS_LS_PPA_FW_IN_XIP
287	bool "XIP"
288	help
289	  Say Y here if the PPA firmware locate at XIP flash, such
290	  as NOR or QSPI flash.
291
292config SYS_LS_PPA_FW_IN_MMC
293	bool "eMMC or SD Card"
294	help
295	  Say Y here if the PPA firmware locate at eMMC/SD card.
296
297config SYS_LS_PPA_FW_IN_NAND
298	bool "NAND"
299	help
300	  Say Y here if the PPA firmware locate at NAND flash.
301
302endchoice
303
304config LS_PPA_ESBC_HDR_SIZE
305	hex "Length of PPA ESBC header"
306	depends on FSL_LS_PPA && CHAIN_OF_TRUST && !SYS_LS_PPA_FW_IN_XIP
307	default 0x2000
308	help
309	  Length (in bytes) of PPA ESBC header to be copied from MMC/SD or
310	  NAND to memory to validate PPA image.
311
312endmenu
313
314config SYS_FSL_ERRATUM_A008997
315	bool "Workaround for USB PHY erratum A008997"
316
317config SYS_FSL_ERRATUM_A009007
318	bool
319	help
320	  Workaround for USB PHY erratum A009007
321
322config SYS_FSL_ERRATUM_A009008
323	bool "Workaround for USB PHY erratum A009008"
324
325config SYS_FSL_ERRATUM_A009798
326	bool "Workaround for USB PHY erratum A009798"
327
328config SYS_FSL_ERRATUM_A010315
329	bool "Workaround for PCIe erratum A010315"
330
331config SYS_FSL_ERRATUM_A010539
332	bool "Workaround for PIN MUX erratum A010539"
333
334config MAX_CPUS
335	int "Maximum number of CPUs permitted for Layerscape"
336	default 4 if ARCH_LS1043A
337	default 4 if ARCH_LS1046A
338	default 16 if ARCH_LS2080A
339	default 8 if ARCH_LS1088A
340	default 16 if ARCH_LX2160A
341	default 1
342	help
343	  Set this number to the maximum number of possible CPUs in the SoC.
344	  SoCs may have multiple clusters with each cluster may have multiple
345	  ports. If some ports are reserved but higher ports are used for
346	  cores, count the reserved ports. This will allocate enough memory
347	  in spin table to properly handle all cores.
348
349config EMC2305
350	bool "Fan controller"
351	help
352	 Enable the EMC2305 fan controller for configuration of fan
353	 speed.
354
355config SECURE_BOOT
356	bool "Secure Boot"
357	help
358		Enable Freescale Secure Boot feature
359
360config QSPI_AHB_INIT
361	bool "Init the QSPI AHB bus"
362	help
363	  The default setting for QSPI AHB bus just support 3bytes addressing.
364	  But some QSPI flash size up to 64MBytes, so initialize the QSPI AHB
365	  bus for those flashes to support the full QSPI flash size.
366
367config SYS_CCI400_OFFSET
368	hex "Offset for CCI400 base"
369	depends on SYS_FSL_HAS_CCI400
370	default 0x3090000 if ARCH_LS1088A
371	default 0x180000 if FSL_LSCH2
372	help
373	  Offset for CCI400 base
374	  CCI400 base addr = CCSRBAR + CCI400_OFFSET
375
376config SYS_FSL_IFC_BANK_COUNT
377	int "Maximum banks of Integrated flash controller"
378	depends on ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A || ARCH_LS1088A
379	default 4 if ARCH_LS1043A
380	default 4 if ARCH_LS1046A
381	default 8 if ARCH_LS2080A || ARCH_LS1088A
382
383config SYS_FSL_HAS_CCI400
384	bool
385
386config SYS_FSL_HAS_CCN504
387	bool
388
389config SYS_FSL_HAS_CCN508
390	bool
391
392config SYS_FSL_HAS_DP_DDR
393	bool
394
395config SYS_FSL_SRDS_1
396	bool
397
398config SYS_FSL_SRDS_2
399	bool
400
401config SYS_NXP_SRDS_3
402	bool
403
404config SYS_HAS_SERDES
405	bool
406
407config FSL_TZASC_1
408	bool
409
410config FSL_TZASC_2
411	bool
412
413endmenu
414
415menu "Layerscape clock tree configuration"
416	depends on FSL_LSCH2 || FSL_LSCH3
417
418config SYS_FSL_CLK
419	bool "Enable clock tree initialization"
420	default y
421
422config CLUSTER_CLK_FREQ
423	int "Reference clock of core cluster"
424	depends on ARCH_LS1012A
425	default 100000000
426	help
427	  This number is the reference clock frequency of core PLL.
428	  For most platforms, the core PLL and Platform PLL have the same
429	  reference clock, but for some platforms, LS1012A for instance,
430	  they are provided sepatately.
431
432config SYS_FSL_PCLK_DIV
433	int "Platform clock divider"
434	default 1 if ARCH_LS1043A
435	default 1 if ARCH_LS1046A
436	default 1 if ARCH_LS1088A
437	default 2
438	help
439	  This is the divider that is used to derive Platform clock from
440	  Platform PLL, in another word:
441		Platform_clk = Platform_PLL_freq / this_divider
442
443config SYS_FSL_DSPI_CLK_DIV
444	int "DSPI clock divider"
445	default 1 if ARCH_LS1043A
446	default 2
447	help
448	  This is the divider that is used to derive DSPI clock from Platform
449	  clock, in another word DSPI_clk = Platform_clk / this_divider.
450
451config SYS_FSL_DUART_CLK_DIV
452	int "DUART clock divider"
453	default 1 if ARCH_LS1043A
454	default 4 if ARCH_LX2160A
455	default 2
456	help
457	  This is the divider that is used to derive DUART clock from Platform
458	  clock, in another word DUART_clk = Platform_clk / this_divider.
459
460config SYS_FSL_I2C_CLK_DIV
461	int "I2C clock divider"
462	default 1 if ARCH_LS1043A
463	default 2
464	help
465	  This is the divider that is used to derive I2C clock from Platform
466	  clock, in another word I2C_clk = Platform_clk / this_divider.
467
468config SYS_FSL_IFC_CLK_DIV
469	int "IFC clock divider"
470	default 1 if ARCH_LS1043A
471	default 2
472	help
473	  This is the divider that is used to derive IFC clock from Platform
474	  clock, in another word IFC_clk = Platform_clk / this_divider.
475
476config SYS_FSL_LPUART_CLK_DIV
477	int "LPUART clock divider"
478	default 1 if ARCH_LS1043A
479	default 2
480	help
481	  This is the divider that is used to derive LPUART clock from Platform
482	  clock, in another word LPUART_clk = Platform_clk / this_divider.
483
484config SYS_FSL_SDHC_CLK_DIV
485	int "SDHC clock divider"
486	default 1 if ARCH_LS1043A
487	default 1 if ARCH_LS1012A
488	default 2
489	help
490	  This is the divider that is used to derive SDHC clock from Platform
491	  clock, in another word SDHC_clk = Platform_clk / this_divider.
492
493config SYS_FSL_QMAN_CLK_DIV
494	int "QMAN clock divider"
495	default 1 if ARCH_LS1043A
496	default 2
497	help
498	  This is the divider that is used to derive QMAN clock from Platform
499	  clock, in another word QMAN_clk = Platform_clk / this_divider.
500endmenu
501
502config RESV_RAM
503	bool
504	help
505	  Reserve memory from the top, tracked by gd->arch.resv_ram. This
506	  reserved RAM can be used by special driver that resides in memory
507	  after U-Boot exits. It's up to implementation to allocate and allow
508	  access to this reserved memory. For example, the reserved RAM can
509	  be at the high end of physical memory. The reserve RAM may be
510	  excluded from memory bank(s) passed to OS, or marked as reserved.
511
512config SYS_FSL_EC1
513	bool
514	help
515	  Ethernet controller 1, this is connected to
516	  MAC17 for LX2160A or to MAC3 for other SoCs
517	  Provides DPAA2 capabilities
518
519config SYS_FSL_EC2
520	bool
521	help
522	  Ethernet controller 2, this is connected to
523	  MAC18 for LX2160A or to MAC4 for other SoCs
524	  Provides DPAA2 capabilities
525
526config SYS_FSL_ERRATUM_A008336
527	bool
528
529config SYS_FSL_ERRATUM_A008514
530	bool
531
532config SYS_FSL_ERRATUM_A008585
533	bool
534
535config SYS_FSL_ERRATUM_A008850
536	bool
537
538config SYS_FSL_ERRATUM_A009203
539	bool
540
541config SYS_FSL_ERRATUM_A009635
542	bool
543
544config SYS_FSL_ERRATUM_A009660
545	bool
546
547config SYS_FSL_ERRATUM_A009929
548	bool
549
550
551config SYS_FSL_HAS_RGMII
552	bool
553	depends on SYS_FSL_EC1 || SYS_FSL_EC2
554
555
556config SYS_MC_RSV_MEM_ALIGN
557	hex "Management Complex reserved memory alignment"
558	depends on RESV_RAM
559	default 0x20000000 if ARCH_LS2080A || ARCH_LS1088A || ARCH_LX2160A
560	help
561	  Reserved memory needs to be aligned for MC to use. Default value
562	  is 512MB.
563
564config SPL_LDSCRIPT
565	default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A
566
567config HAS_FSL_XHCI_USB
568	bool
569	default y if ARCH_LS1043A || ARCH_LS1046A
570	help
571	  For some SoC(such as LS1043A and LS1046A), USB and QE-HDLC multiplex use
572	  pins, select it when the pins are assigned to USB.
573
574config TFABOOT
575       bool "Support for booting from TFA"
576       default n
577       help
578         Enabling this will make a U-Boot binary that is capable of being
579         booted via TFA.
580