xref: /rk3399_rockchip-uboot/arch/arm/Kconfig (revision a8a4d6c05a2e5f52e75e5096f9470aa3d36fd000)
1menu "ARM architecture"
2	depends on ARM
3
4config SYS_ARCH
5	default "arm"
6
7config ARM64
8	bool
9	select PHYS_64BIT
10	select SYS_CACHE_SHIFT_6
11
12if ARM64
13config POSITION_INDEPENDENT
14	bool "Generate position-independent pre-relocation code"
15	help
16	  U-Boot expects to be linked to a specific hard-coded address, and to
17	  be loaded to and run from that address. This option lifts that
18	  restriction, thus allowing the code to be loaded to and executed
19	  from almost any address. This logic relies on the relocation
20	  information that is embedded into the binary to support U-Boot
21	  relocating itself to the top-of-RAM later during execution.
22endif
23
24config STATIC_RELA
25	bool
26	default y if ARM64 && !POSITION_INDEPENDENT
27
28config DMA_ADDR_T_64BIT
29	bool
30	default y if ARM64
31
32config HAS_VBAR
33	bool
34
35config HAS_THUMB2
36	bool
37
38# Used for compatibility with asm files copied from the kernel
39config ARM_ASM_UNIFIED
40	bool
41	default y
42
43# Used for compatibility with asm files copied from the kernel
44config THUMB2_KERNEL
45	bool
46
47# If set, the workarounds for these ARM errata are applied early during U-Boot
48# startup. Note that in general these options force the workarounds to be
49# applied; no CPU-type/version detection exists, unlike the similar options in
50# the Linux kernel. Do not set these options unless they apply!  Also note that
51# the following can be machine specific errata. These do have ability to
52# provide rudimentary version and machine specific checks, but expect no
53# product checks:
54# CONFIG_ARM_ERRATA_430973
55# CONFIG_ARM_ERRATA_454179
56# CONFIG_ARM_ERRATA_621766
57# CONFIG_ARM_ERRATA_798870
58# CONFIG_ARM_ERRATA_801819
59config ARM_ERRATA_430973
60	bool
61
62config ARM_ERRATA_454179
63	bool
64
65config ARM_ERRATA_621766
66	bool
67
68config ARM_ERRATA_716044
69	bool
70
71config ARM_ERRATA_725233
72	bool
73
74config ARM_ERRATA_742230
75	bool
76
77config ARM_ERRATA_743622
78	bool
79
80config ARM_ERRATA_751472
81	bool
82
83config ARM_ERRATA_761320
84	bool
85
86config ARM_ERRATA_773022
87	bool
88
89config ARM_ERRATA_774769
90	bool
91
92config ARM_ERRATA_794072
93	bool
94
95config ARM_ERRATA_798870
96	bool
97
98config ARM_ERRATA_801819
99	bool
100
101config ARM_ERRATA_814220
102	bool
103
104config ARM_ERRATA_826974
105	bool
106
107config ARM_ERRATA_828024
108	bool
109
110config ARM_ERRATA_829520
111	bool
112
113config ARM_ERRATA_833069
114	bool
115
116config ARM_ERRATA_833471
117	bool
118
119config ARM_ERRATA_845369
120       bool
121
122config ARM_ERRATA_852421
123	bool
124
125config ARM_ERRATA_852423
126	bool
127
128config ARM_ZERO_CNTVOFF
129	bool
130
131config CPU_ARM720T
132	bool
133	select SYS_CACHE_SHIFT_5
134
135config CPU_ARM920T
136	bool
137	select SYS_CACHE_SHIFT_5
138
139config CPU_ARM926EJS
140	bool
141	select SYS_CACHE_SHIFT_5
142
143config CPU_ARM946ES
144	bool
145	select SYS_CACHE_SHIFT_5
146
147config CPU_ARM1136
148	bool
149	select SYS_CACHE_SHIFT_5
150
151config CPU_ARM1176
152	bool
153	select HAS_VBAR
154	select SYS_CACHE_SHIFT_5
155
156config CPU_V7
157	bool
158	select HAS_VBAR
159	select HAS_THUMB2
160	select SYS_CACHE_SHIFT_6
161
162config CPU_V7M
163	bool
164	select HAS_THUMB2
165	select THUMB2_KERNEL
166	select SYS_CACHE_SHIFT_5
167
168config CPU_PXA
169	bool
170	select SYS_CACHE_SHIFT_5
171
172config CPU_SA1100
173	bool
174	select SYS_CACHE_SHIFT_5
175
176config SYS_CPU
177	default "arm720t" if CPU_ARM720T
178	default "arm920t" if CPU_ARM920T
179	default "arm926ejs" if CPU_ARM926EJS
180	default "arm946es" if CPU_ARM946ES
181	default "arm1136" if CPU_ARM1136
182	default "arm1176" if CPU_ARM1176
183	default "armv7" if CPU_V7
184	default "armv7m" if CPU_V7M
185	default "pxa" if CPU_PXA
186	default "sa1100" if CPU_SA1100
187	default "armv8" if ARM64
188
189config SYS_ARM_ARCH
190	int
191	default 4 if CPU_ARM720T
192	default 4 if CPU_ARM920T
193	default 5 if CPU_ARM926EJS
194	default 5 if CPU_ARM946ES
195	default 6 if CPU_ARM1136
196	default 6 if CPU_ARM1176
197	default 7 if CPU_V7
198	default 7 if CPU_V7M
199	default 5 if CPU_PXA
200	default 4 if CPU_SA1100
201	default 8 if ARM64
202
203config SYS_CACHE_SHIFT_5
204	bool
205
206config SYS_CACHE_SHIFT_6
207	bool
208
209config SYS_CACHE_SHIFT_7
210	bool
211
212config SYS_CACHELINE_SIZE
213	int
214	default 128 if SYS_CACHE_SHIFT_7
215	default 64 if SYS_CACHE_SHIFT_6
216	default 32 if SYS_CACHE_SHIFT_5
217
218config ARM_SMCCC
219	bool "Support for ARM SMC Calling Convention (SMCCC)"
220	depends on CPU_V7 || ARM64
221	select ARM_PSCI_FW
222	help
223	  Say Y here if you want to enable ARM SMC Calling Convention.
224	  This should be enabled if U-Boot needs to communicate with system
225	  firmware (for example, PSCI) according to SMCCC.
226
227config ARM_CPU_SUSPEND
228	bool "Support for ARM cpu suspend and resume"
229	depends on CPU_V7 || ARM64
230	help
231	  Say Y here if you want to enable ARM cpu suspend/resume which allows
232	  to poweroff cpu power supply.
233
234config SEMIHOSTING
235	bool "support boot from semihosting"
236	help
237	  In emulated environments, semihosting is a way for
238	  the hosted environment to call out to the emulator to
239	  retrieve files from the host machine.
240
241config SYS_THUMB_BUILD
242	bool "Build U-Boot using the Thumb instruction set"
243	depends on !ARM64
244	help
245	   Use this flag to build U-Boot using the Thumb instruction set for
246	   ARM architectures. Thumb instruction set provides better code
247	   density. For ARM architectures that support Thumb2 this flag will
248	   result in Thumb2 code generated by GCC.
249
250config SPL_SYS_THUMB_BUILD
251	bool "Build SPL using the Thumb instruction set"
252	default y if SYS_THUMB_BUILD
253	depends on !ARM64
254	help
255	   Use this flag to build SPL using the Thumb instruction set for
256	   ARM architectures. Thumb instruction set provides better code
257	   density. For ARM architectures that support Thumb2 this flag will
258	   result in Thumb2 code generated by GCC.
259
260config TPL_SYS_THUMB_BUILD
261	bool "Build TPL using the Thumb instruction set"
262	default y if SYS_THUMB_BUILD
263	depends on TPL && !ARM64
264	help
265	   Use this flag to build SPL using the Thumb instruction set for
266	   ARM architectures. Thumb instruction set provides better code
267	   density. For ARM architectures that support Thumb2 this flag will
268	   result in Thumb2 code generated by GCC.
269
270
271config SYS_L2CACHE_OFF
272	bool "L2cache off"
273	help
274	  If SoC does not support L2CACHE or one do not want to enable
275	  L2CACHE, choose this option.
276
277config ENABLE_ARM_SOC_BOOT0_HOOK
278	bool "prepare BOOT0 header"
279	help
280	  If the SoC's BOOT0 requires a header area filled with (magic)
281	  values, then choose this option, and create a define called
282	  ARM_SOC_BOOT0_HOOK which contains the required assembler
283	  preprocessor code.
284
285config ARM_CORTEX_CPU_IS_UP
286	bool
287	default n
288
289config USE_ARCH_MEMCPY
290	bool "Use an assembly optimized implementation of memcpy"
291	default y
292	depends on !ARM64
293	help
294	  Enable the generation of an optimized version of memcpy.
295	  Such implementation may be faster under some conditions
296	  but may increase the binary size.
297
298config SPL_USE_ARCH_MEMCPY
299	bool "Use an assembly optimized implementation of memcpy for SPL"
300	default y if USE_ARCH_MEMCPY
301	depends on !ARM64
302	help
303	  Enable the generation of an optimized version of memcpy.
304	  Such implementation may be faster under some conditions
305	  but may increase the binary size.
306
307config TPL_USE_ARCH_MEMCPY
308	bool "Use an assembly optimized implementation of memcpy for TPL"
309	default y if USE_ARCH_MEMCPY
310	depends on !ARM64
311	help
312	  Enable the generation of an optimized version of memcpy.
313	  Such implementation may be faster under some conditions
314	  but may increase the binary size.
315
316config USE_ARCH_MEMSET
317	bool "Use an assembly optimized implementation of memset"
318	default y
319	depends on !ARM64
320	help
321	  Enable the generation of an optimized version of memset.
322	  Such implementation may be faster under some conditions
323	  but may increase the binary size.
324
325config SPL_USE_ARCH_MEMSET
326	bool "Use an assembly optimized implementation of memset for SPL"
327	default y if USE_ARCH_MEMSET
328	depends on !ARM64
329	help
330	  Enable the generation of an optimized version of memset.
331	  Such implementation may be faster under some conditions
332	  but may increase the binary size.
333
334config TPL_USE_ARCH_MEMSET
335	bool "Use an assembly optimized implementation of memset for TPL"
336	default y if USE_ARCH_MEMSET
337	depends on !ARM64
338	help
339	  Enable the generation of an optimized version of memset.
340	  Such implementation may be faster under some conditions
341	  but may increase the binary size.
342
343config ARM64_SUPPORT_AARCH32
344	bool "ARM64 system support AArch32 execution state"
345	default y if ARM64 && !TARGET_THUNDERX_88XX
346	help
347	  This ARM64 system supports AArch32 execution state.
348
349choice
350	prompt "Target select"
351	default TARGET_HIKEY
352
353config ARCH_AT91
354	bool "Atmel AT91"
355	select SPL_BOARD_INIT if SPL
356
357config TARGET_EDB93XX
358	bool "Support edb93xx"
359	select CPU_ARM920T
360
361config TARGET_ASPENITE
362	bool "Support aspenite"
363	select CPU_ARM926EJS
364
365config TARGET_GPLUGD
366	bool "Support gplugd"
367	select CPU_ARM926EJS
368
369config ARCH_DAVINCI
370	bool "TI DaVinci"
371	select CPU_ARM926EJS
372	imply CMD_SAVES
373	help
374	  Support for TI's DaVinci platform.
375
376config KIRKWOOD
377	bool "Marvell Kirkwood"
378	select CPU_ARM926EJS
379	select BOARD_EARLY_INIT_F
380	select ARCH_MISC_INIT
381
382config ARCH_MVEBU
383	bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
384	select OF_CONTROL
385	select OF_SEPARATE
386	select DM
387	select DM_ETH
388	select DM_SERIAL
389	select DM_SPI
390	select DM_SPI_FLASH
391	select SPI
392
393config TARGET_DEVKIT3250
394	bool "Support devkit3250"
395	select CPU_ARM926EJS
396	select SUPPORT_SPL
397
398config TARGET_WORK_92105
399	bool "Support work_92105"
400	select CPU_ARM926EJS
401	select SUPPORT_SPL
402
403config TARGET_MX25PDK
404	bool "Support mx25pdk"
405	select BOARD_LATE_INIT
406	select CPU_ARM926EJS
407	select BOARD_EARLY_INIT_F
408
409config TARGET_ZMX25
410	bool "Support zmx25"
411	select BOARD_LATE_INIT
412	select CPU_ARM926EJS
413
414config TARGET_APF27
415	bool "Support apf27"
416	select CPU_ARM926EJS
417	select SUPPORT_SPL
418
419config TARGET_APX4DEVKIT
420	bool "Support apx4devkit"
421	select CPU_ARM926EJS
422	select SUPPORT_SPL
423
424config TARGET_XFI3
425	bool "Support xfi3"
426	select CPU_ARM926EJS
427	select SUPPORT_SPL
428
429config TARGET_M28EVK
430	bool "Support m28evk"
431	select CPU_ARM926EJS
432	select SUPPORT_SPL
433
434config TARGET_MX23EVK
435	bool "Support mx23evk"
436	select CPU_ARM926EJS
437	select SUPPORT_SPL
438	select BOARD_EARLY_INIT_F
439
440config TARGET_MX28EVK
441	bool "Support mx28evk"
442	select CPU_ARM926EJS
443	select SUPPORT_SPL
444	select BOARD_EARLY_INIT_F
445
446config TARGET_MX23_OLINUXINO
447	bool "Support mx23_olinuxino"
448	select CPU_ARM926EJS
449	select SUPPORT_SPL
450	select BOARD_EARLY_INIT_F
451
452config TARGET_BG0900
453	bool "Support bg0900"
454	select CPU_ARM926EJS
455	select SUPPORT_SPL
456
457config TARGET_SANSA_FUZE_PLUS
458	bool "Support sansa_fuze_plus"
459	select CPU_ARM926EJS
460	select SUPPORT_SPL
461
462config TARGET_SC_SPS_1
463	bool "Support sc_sps_1"
464	select CPU_ARM926EJS
465	select SUPPORT_SPL
466
467config ORION5X
468	bool "Marvell Orion"
469	select CPU_ARM926EJS
470
471config TARGET_SPEAR300
472	bool "Support spear300"
473	select CPU_ARM926EJS
474	select BOARD_EARLY_INIT_F
475	imply CMD_SAVES
476
477config TARGET_SPEAR310
478	bool "Support spear310"
479	select CPU_ARM926EJS
480	select BOARD_EARLY_INIT_F
481	imply CMD_SAVES
482
483config TARGET_SPEAR320
484	bool "Support spear320"
485	select CPU_ARM926EJS
486	select BOARD_EARLY_INIT_F
487	imply CMD_SAVES
488
489config TARGET_SPEAR600
490	bool "Support spear600"
491	select CPU_ARM926EJS
492	select BOARD_EARLY_INIT_F
493	imply CMD_SAVES
494
495config TARGET_STV0991
496	bool "Support stv0991"
497	select CPU_V7
498	select DM
499	select DM_SERIAL
500	select DM_SPI
501	select DM_SPI_FLASH
502	select SPI
503	select SPI_FLASH
504
505config TARGET_X600
506	bool "Support x600"
507	select BOARD_LATE_INIT
508	select CPU_ARM926EJS
509	select SUPPORT_SPL
510
511config TARGET_IMX31_PHYCORE
512	bool "Support imx31_phycore_eet"
513	select CPU_ARM1136
514	select BOARD_EARLY_INIT_F
515
516config TARGET_IMX31_PHYCORE_EET
517	bool "Support imx31_phycore_eet"
518	select BOARD_LATE_INIT
519	select CPU_ARM1136
520	select BOARD_EARLY_INIT_F
521
522config TARGET_MX31ADS
523	bool "Support mx31ads"
524	select CPU_ARM1136
525	select BOARD_EARLY_INIT_F
526
527config TARGET_MX31PDK
528	bool "Support mx31pdk"
529	select BOARD_LATE_INIT
530	select CPU_ARM1136
531	select SUPPORT_SPL
532	select BOARD_EARLY_INIT_F
533
534config TARGET_WOODBURN
535	bool "Support woodburn"
536	select CPU_ARM1136
537
538config TARGET_WOODBURN_SD
539	bool "Support woodburn_sd"
540	select CPU_ARM1136
541	select SUPPORT_SPL
542
543config TARGET_FLEA3
544	bool "Support flea3"
545	select CPU_ARM1136
546
547config TARGET_MX35PDK
548	bool "Support mx35pdk"
549	select BOARD_LATE_INIT
550	select CPU_ARM1136
551
552config ARCH_BCM283X
553	bool "Broadcom BCM283X family"
554	select DM
555	select DM_SERIAL
556	select DM_GPIO
557	select OF_CONTROL
558	imply FAT_WRITE
559
560config TARGET_VEXPRESS_CA15_TC2
561	bool "Support vexpress_ca15_tc2"
562	select CPU_V7
563	select CPU_V7_HAS_NONSEC
564	select CPU_V7_HAS_VIRT
565
566config ARCH_BCMSTB
567	bool "Broadcom BCM7XXX family"
568	select CPU_V7A
569	select DM
570	select OF_CONTROL
571	select OF_PRIOR_STAGE
572	help
573	  This enables support for Broadcom ARM-based set-top box
574	  chipsets, including the 7445 family of chips.
575
576config TARGET_VEXPRESS_CA5X2
577	bool "Support vexpress_ca5x2"
578	select CPU_V7
579
580config TARGET_VEXPRESS_CA9X4
581	bool "Support vexpress_ca9x4"
582	select CPU_V7
583
584config TARGET_BCM23550_W1D
585	bool "Support bcm23550_w1d"
586	select CPU_V7
587	imply CRC32_VERIFY
588	imply FAT_WRITE
589
590config TARGET_BCM28155_AP
591	bool "Support bcm28155_ap"
592	select CPU_V7
593	imply CRC32_VERIFY
594	imply FAT_WRITE
595
596config TARGET_BCMCYGNUS
597	bool "Support bcmcygnus"
598	select CPU_V7
599	imply CRC32_VERIFY
600	imply CMD_HASH
601	imply FAT_WRITE
602	imply HASH_VERIFY
603	imply NETDEVICES
604	imply BCM_SF2_ETH
605	imply BCM_SF2_ETH_GMAC
606
607config TARGET_BCMNSP
608	bool "Support bcmnsp"
609	select CPU_V7
610
611config TARGET_BCMNS2
612	bool "Support Broadcom Northstar2"
613	select ARM64
614	help
615	  Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
616	  ARMv8 Cortex-A57 processors targeting a broad range of networking
617	  applications
618
619config ARCH_EXYNOS
620	bool "Samsung EXYNOS"
621	select DM
622	select DM_I2C
623	select DM_SPI_FLASH
624	select DM_SERIAL
625	select DM_SPI
626	select DM_GPIO
627	select DM_KEYBOARD
628	select SPI
629	imply FAT_WRITE
630
631config ARCH_S5PC1XX
632	bool "Samsung S5PC1XX"
633	select CPU_V7
634	select DM
635	select DM_SERIAL
636	select DM_GPIO
637	select DM_I2C
638
639config ARCH_HIGHBANK
640	bool "Calxeda Highbank"
641	select CPU_V7
642
643config ARCH_INTEGRATOR
644	bool "ARM Ltd. Integrator family"
645	select DM
646	select DM_SERIAL
647
648config ARCH_KEYSTONE
649	bool "TI Keystone"
650	select CPU_V7
651	select SUPPORT_SPL
652	select SYS_THUMB_BUILD
653	select CMD_POWEROFF
654	imply CMD_MTDPARTS
655	imply FIT
656	imply CMD_SAVES
657
658config ARCH_OMAP2PLUS
659	bool "TI OMAP2+"
660	select CPU_V7
661	select SPL_BOARD_INIT if SPL
662	select SUPPORT_SPL
663	imply FIT
664
665config ARCH_MESON
666	bool "Amlogic Meson"
667	help
668	  Support for the Meson SoC family developed by Amlogic Inc.,
669	  targeted at media players and tablet computers. We currently
670	  support the S905 (GXBaby) 64-bit SoC.
671
672config ARCH_MX7ULP
673        bool "NXP MX7ULP"
674        select CPU_V7
675	select ROM_UNIFIED_SECTIONS
676
677config ARCH_MX7
678	bool "Freescale MX7"
679	select CPU_V7
680	select SYS_FSL_HAS_SEC if SECURE_BOOT
681	select SYS_FSL_SEC_COMPAT_4
682	select SYS_FSL_SEC_LE
683	select BOARD_EARLY_INIT_F
684	select ARCH_MISC_INIT
685
686config ARCH_MX6
687	bool "Freescale MX6"
688	select CPU_V7
689	select SYS_FSL_HAS_SEC if SECURE_BOOT
690	select SYS_FSL_SEC_COMPAT_4
691	select SYS_FSL_SEC_LE
692	select SYS_THUMB_BUILD if SPL
693
694if ARCH_MX6
695config SPL_LDSCRIPT
696        default "arch/arm/mach-omap2/u-boot-spl.lds"
697endif
698
699config ARCH_MX5
700	bool "Freescale MX5"
701	select CPU_V7
702	select BOARD_EARLY_INIT_F
703
704config ARCH_RMOBILE
705	bool "Renesas ARM SoCs"
706	select DM
707	select DM_SERIAL
708	select BOARD_EARLY_INIT_F
709	imply FAT_WRITE
710	imply SYS_THUMB_BUILD
711
712config TARGET_S32V234EVB
713	bool "Support s32v234evb"
714	select ARM64
715	select SYS_FSL_ERRATUM_ESDHC111
716
717config ARCH_SNAPDRAGON
718	bool "Qualcomm Snapdragon SoCs"
719	select ARM64
720	select DM
721	select DM_GPIO
722	select DM_SERIAL
723	select SPMI
724	select OF_CONTROL
725	select OF_SEPARATE
726
727config ARCH_SOCFPGA
728	bool "Altera SOCFPGA family"
729	select CPU_V7
730	select SUPPORT_SPL
731	select OF_CONTROL
732	select SPL_OF_CONTROL
733	select DM
734	select DM_SPI_FLASH
735	select DM_SPI
736	select ENABLE_ARM_SOC_BOOT0_HOOK
737	select ARCH_EARLY_INIT_R
738	select ARCH_MISC_INIT
739	select SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
740	select SYS_THUMB_BUILD
741	imply CMD_MTDPARTS
742	imply CRC32_VERIFY
743	imply FAT_WRITE
744
745config ARCH_SUNXI
746	bool "Support sunxi (Allwinner) SoCs"
747	select BINMAN
748	select CMD_GPIO
749	select CMD_MMC if MMC
750	select CMD_USB if DISTRO_DEFAULTS
751	select DM
752	select DM_ETH
753	select DM_GPIO
754	select DM_KEYBOARD
755	select DM_SERIAL
756	select DM_USB if DISTRO_DEFAULTS
757	select OF_BOARD_SETUP
758	select OF_CONTROL
759	select OF_SEPARATE
760	select SPL_STACK_R if SPL
761	select SPL_SYS_MALLOC_SIMPLE if SPL
762	select SYS_NS16550
763	select SPL_SYS_THUMB_BUILD if !ARM64
764	select USB if DISTRO_DEFAULTS
765	select USB_STORAGE if DISTRO_DEFAULTS
766	select USB_KEYBOARD if DISTRO_DEFAULTS
767	select USE_TINY_PRINTF
768	imply CMD_FASTBOOT
769	imply FASTBOOT
770	imply FAT_WRITE
771	imply PRE_CONSOLE_BUFFER
772	imply SPL_GPIO_SUPPORT
773	imply SPL_LIBCOMMON_SUPPORT
774	imply SPL_LIBDISK_SUPPORT
775	imply SPL_LIBGENERIC_SUPPORT
776	imply SPL_MMC_SUPPORT if MMC
777	imply SPL_POWER_SUPPORT
778	imply SPL_SERIAL_SUPPORT
779	imply USB_FUNCTION_FASTBOOT
780
781config TARGET_TS4600
782	bool "Support TS4600"
783	select CPU_ARM926EJS
784	select SUPPORT_SPL
785
786config ARCH_VF610
787	bool "Freescale Vybrid"
788	select CPU_V7
789	select SYS_FSL_ERRATUM_ESDHC111
790	imply CMD_MTDPARTS
791	imply NAND
792
793config ARCH_ZYNQ
794	bool "Xilinx Zynq Platform"
795	select BOARD_LATE_INIT
796	select CPU_V7
797	select SUPPORT_SPL
798	select OF_CONTROL
799	select SPL_BOARD_INIT if SPL
800	select SPL_OF_CONTROL if SPL
801	select DM
802	select DM_ETH
803	select DM_GPIO
804	select SPL_DM if SPL
805	select DM_MMC
806	select DM_SPI
807	select DM_SERIAL
808	select DM_SPI_FLASH
809	select SPL_SEPARATE_BSS if SPL
810	select DM_USB if USB
811	select BLK
812	select CLK
813	select SPL_CLK
814	select CLK_ZYNQ
815	select SPI
816	imply CMD_CLK
817	imply FAT_WRITE
818	imply CMD_SPL
819
820config ARCH_ZYNQMP
821	bool "Support Xilinx ZynqMP Platform"
822	select ARM64
823	select BOARD_LATE_INIT
824	select DM
825	select OF_CONTROL
826	select DM_SERIAL
827	select SUPPORT_SPL
828	select CLK
829	select SPL_BOARD_INIT if SPL
830	select SPL_CLK
831	select DM_USB if USB
832	imply FAT_WRITE
833	imply DM_USB_GADGET
834
835config TEGRA
836	bool "NVIDIA Tegra"
837	imply FAT_WRITE
838
839config TARGET_VEXPRESS64_AEMV8A
840	bool "Support vexpress_aemv8a"
841	select ARM64
842
843config TARGET_VEXPRESS64_BASE_FVP
844	bool "Support Versatile Express ARMv8a FVP BASE model"
845	select ARM64
846	select SEMIHOSTING
847
848config TARGET_VEXPRESS64_BASE_FVP_DRAM
849	bool "Support Versatile Express ARMv8a FVP BASE model booting from DRAM"
850	select ARM64
851	help
852	  This target is derived from TARGET_VEXPRESS64_BASE_FVP and over-rides
853	  the default config to allow the user to load the images directly into
854	  DRAM using model parameters rather than by using semi-hosting to load
855	  the files from the host filesystem.
856
857config TARGET_VEXPRESS64_JUNO
858	bool "Support Versatile Express Juno Development Platform"
859	select ARM64
860
861config TARGET_LS2080A_EMU
862	bool "Support ls2080a_emu"
863	select ARCH_LS2080A
864	select ARM64
865	select ARMV8_MULTIENTRY
866	select ARCH_MISC_INIT
867	help
868	  Support for Freescale LS2080A_EMU platform
869	  The LS2080A Development System (EMULATOR) is a pre silicon
870	  development platform that supports the QorIQ LS2080A
871	  Layerscape Architecture processor.
872
873config TARGET_LS2080A_SIMU
874	bool "Support ls2080a_simu"
875	select ARCH_LS2080A
876	select ARM64
877	select ARMV8_MULTIENTRY
878	select ARCH_MISC_INIT
879	help
880	  Support for Freescale LS2080A_SIMU platform
881	  The LS2080A Development System (QDS) is a pre silicon
882	  development platform that supports the QorIQ LS2080A
883	  Layerscape Architecture processor.
884
885config TARGET_LS2080AQDS
886	bool "Support ls2080aqds"
887	select ARCH_LS2080A
888	select ARM64
889	select ARMV8_MULTIENTRY
890	select BOARD_LATE_INIT
891	select SUPPORT_SPL
892	select ARCH_MISC_INIT
893	imply SCSI
894	help
895	  Support for Freescale LS2080AQDS platform
896	  The LS2080A Development System (QDS) is a high-performance
897	  development platform that supports the QorIQ LS2080A
898	  Layerscape Architecture processor.
899
900config TARGET_LS2080ARDB
901	bool "Support ls2080ardb"
902	select ARCH_LS2080A
903	select ARM64
904	select ARMV8_MULTIENTRY
905	select BOARD_LATE_INIT
906	select SUPPORT_SPL
907	select ARCH_MISC_INIT
908	imply SCSI
909	help
910	  Support for Freescale LS2080ARDB platform.
911	  The LS2080A Reference design board (RDB) is a high-performance
912	  development platform that supports the QorIQ LS2080A
913	  Layerscape Architecture processor.
914
915config TARGET_LS2081ARDB
916	bool "Support ls2081ardb"
917	select ARCH_LS2080A
918	select ARM64
919	select ARMV8_MULTIENTRY
920	select BOARD_LATE_INIT
921	select SUPPORT_SPL
922	select ARCH_MISC_INIT
923	help
924	  Support for Freescale LS2081ARDB platform.
925	  The LS2081A Reference design board (RDB) is a high-performance
926	  development platform that supports the QorIQ LS2081A/LS2041A
927	  Layerscape Architecture processor.
928
929config TARGET_HIKEY
930	bool "Support HiKey 96boards Consumer Edition Platform"
931	select ARM64
932	select DM
933	select DM_GPIO
934	select DM_SERIAL
935	select OF_CONTROL
936	  help
937	  Support for HiKey 96boards platform. It features a HI6220
938	  SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
939
940config TARGET_POPLAR
941	bool "Support Poplar 96boards Enterprise Edition Platform"
942	select ARM64
943	select DM
944	select OF_CONTROL
945	select DM_SERIAL
946	select DM_USB
947	  help
948	  Support for Poplar 96boards EE platform. It features a HI3798cv200
949	  SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
950	  making it capable of running any commercial set-top solution based on
951	  Linux or Android.
952
953config TARGET_LS1012AQDS
954	bool "Support ls1012aqds"
955	select ARCH_LS1012A
956	select ARM64
957	select BOARD_LATE_INIT
958	help
959	  Support for Freescale LS1012AQDS platform.
960	  The LS1012A Development System (QDS) is a high-performance
961	  development platform that supports the QorIQ LS1012A
962	  Layerscape Architecture processor.
963
964config TARGET_LS1012ARDB
965	bool "Support ls1012ardb"
966	select ARCH_LS1012A
967	select ARM64
968	select BOARD_LATE_INIT
969	imply SCSI
970	help
971	  Support for Freescale LS1012ARDB platform.
972	  The LS1012A Reference design board (RDB) is a high-performance
973	  development platform that supports the QorIQ LS1012A
974	  Layerscape Architecture processor.
975
976config TARGET_LS1012AFRDM
977	bool "Support ls1012afrdm"
978	select ARCH_LS1012A
979	select ARM64
980	help
981	  Support for Freescale LS1012AFRDM platform.
982	  The LS1012A Freedom  board (FRDM) is a high-performance
983	  development platform that supports the QorIQ LS1012A
984	  Layerscape Architecture processor.
985
986config TARGET_LS1021AQDS
987	bool "Support ls1021aqds"
988	select BOARD_LATE_INIT
989	select CPU_V7
990	select CPU_V7_HAS_NONSEC
991	select CPU_V7_HAS_VIRT
992	select SUPPORT_SPL
993	select ARCH_LS1021A
994	select ARCH_SUPPORT_PSCI
995	select LS1_DEEP_SLEEP
996	select SYS_FSL_DDR
997	select BOARD_EARLY_INIT_F
998	imply SCSI
999
1000config TARGET_LS1021ATWR
1001	bool "Support ls1021atwr"
1002	select BOARD_LATE_INIT
1003	select CPU_V7
1004	select CPU_V7_HAS_NONSEC
1005	select CPU_V7_HAS_VIRT
1006	select SUPPORT_SPL
1007	select ARCH_LS1021A
1008	select ARCH_SUPPORT_PSCI
1009	select LS1_DEEP_SLEEP
1010	select BOARD_EARLY_INIT_F
1011	imply SCSI
1012
1013config TARGET_LS1021AIOT
1014	bool "Support ls1021aiot"
1015	select BOARD_LATE_INIT
1016	select CPU_V7
1017	select CPU_V7_HAS_NONSEC
1018	select CPU_V7_HAS_VIRT
1019	select SUPPORT_SPL
1020	select ARCH_LS1021A
1021	select ARCH_SUPPORT_PSCI
1022	imply SCSI
1023	help
1024	  Support for Freescale LS1021AIOT platform.
1025	  The LS1021A Freescale board (IOT) is a high-performance
1026	  development platform that supports the QorIQ LS1021A
1027	  Layerscape Architecture processor.
1028
1029config TARGET_LS1043AQDS
1030	bool "Support ls1043aqds"
1031	select ARCH_LS1043A
1032	select ARM64
1033	select ARMV8_MULTIENTRY
1034	select BOARD_LATE_INIT
1035	select SUPPORT_SPL
1036	select BOARD_EARLY_INIT_F
1037	imply SCSI
1038	help
1039	  Support for Freescale LS1043AQDS platform.
1040
1041config TARGET_LS1043ARDB
1042	bool "Support ls1043ardb"
1043	select ARCH_LS1043A
1044	select ARM64
1045	select ARMV8_MULTIENTRY
1046	select BOARD_LATE_INIT
1047	select SUPPORT_SPL
1048	select BOARD_EARLY_INIT_F
1049	imply SCSI
1050	help
1051	  Support for Freescale LS1043ARDB platform.
1052
1053config TARGET_LS1046AQDS
1054	bool "Support ls1046aqds"
1055	select ARCH_LS1046A
1056	select ARM64
1057	select ARMV8_MULTIENTRY
1058	select BOARD_LATE_INIT
1059	select SUPPORT_SPL
1060	select DM_SPI_FLASH if DM_SPI
1061	select BOARD_EARLY_INIT_F
1062	imply SCSI
1063	help
1064	  Support for Freescale LS1046AQDS platform.
1065	  The LS1046A Development System (QDS) is a high-performance
1066	  development platform that supports the QorIQ LS1046A
1067	  Layerscape Architecture processor.
1068
1069config TARGET_LS1046ARDB
1070	bool "Support ls1046ardb"
1071	select ARCH_LS1046A
1072	select ARM64
1073	select ARMV8_MULTIENTRY
1074	select BOARD_LATE_INIT
1075	select SUPPORT_SPL
1076	select DM_SPI_FLASH if DM_SPI
1077	select POWER_MC34VR500
1078	select BOARD_EARLY_INIT_F
1079	imply SCSI
1080	help
1081	  Support for Freescale LS1046ARDB platform.
1082	  The LS1046A Reference Design Board (RDB) is a high-performance
1083	  development platform that supports the QorIQ LS1046A
1084	  Layerscape Architecture processor.
1085
1086config TARGET_H2200
1087	bool "Support h2200"
1088	select CPU_PXA
1089
1090config TARGET_ZIPITZ2
1091	bool "Support zipitz2"
1092	select CPU_PXA
1093
1094config TARGET_COLIBRI_PXA270
1095	bool "Support colibri_pxa270"
1096	select CPU_PXA
1097
1098config ARCH_UNIPHIER
1099	bool "Socionext UniPhier SoCs"
1100	select BOARD_LATE_INIT
1101	select DM
1102	select DM_GPIO
1103	select DM_I2C
1104	select DM_MMC
1105	select DM_RESET
1106	select DM_SERIAL
1107	select DM_USB
1108	select OF_CONTROL
1109	select OF_LIBFDT
1110	select PINCTRL
1111	select SPL_BOARD_INIT if SPL
1112	select SPL_DM if SPL
1113	select SPL_LIBCOMMON_SUPPORT if SPL
1114	select SPL_LIBGENERIC_SUPPORT if SPL
1115	select SPL_OF_CONTROL if SPL
1116	select SPL_PINCTRL if SPL
1117	select SUPPORT_SPL
1118	imply FAT_WRITE
1119	help
1120	  Support for UniPhier SoC family developed by Socionext Inc.
1121	  (formerly, System LSI Business Division of Panasonic Corporation)
1122
1123config STM32
1124	bool "Support STM32"
1125	select CPU_V7M
1126	select DM
1127	select DM_SERIAL
1128	select SYS_THUMB_BUILD
1129
1130config ARCH_STI
1131	bool "Support STMicrolectronics SoCs"
1132	select CPU_V7
1133	select DM
1134	select DM_SERIAL
1135	select BLK
1136	select DM_MMC
1137	select DM_RESET
1138	help
1139	  Support for STMicroelectronics STiH407/10 SoC family.
1140	  This SoC is used on Linaro 96Board STiH410-B2260
1141
1142config ARCH_ROCKCHIP
1143	bool "Support Rockchip SoCs"
1144	select OF_CONTROL
1145	select BLK
1146	select DM
1147	select SPL_DM if SPL
1148	select SYS_MALLOC_F
1149	select SYS_THUMB_BUILD if !ARM64
1150	select SPL_SYS_MALLOC_SIMPLE if SPL
1151	imply DM_GPIO
1152	select DM_SERIAL
1153	select DM_SPI
1154	select DM_USB if USB
1155	select ENABLE_ARM_SOC_BOOT0_HOOK
1156	select SYS_NS16550
1157	select SPI
1158	select DEBUG_UART_BOARD_INIT
1159	select PANIC_HANG
1160	imply DM_SPI_FLASH
1161	imply SHA1
1162	imply SHA256
1163	imply DM_MMC
1164	imply DM_I2C
1165	imply DM_PWM
1166	imply DM_REGULATOR
1167	imply CMD_FASTBOOT
1168	imply CMD_ROCKUSB
1169	imply FASTBOOT
1170	imply FAT_WRITE
1171	imply USB_FUNCTION_FASTBOOT
1172	imply USB_FUNCTION_ROCKUSB
1173	imply SPL_SYSRESET
1174	imply TPL_SYSRESET
1175	imply ADC
1176	imply SARADC_ROCKCHIP
1177
1178config TARGET_THUNDERX_88XX
1179	bool "Support ThunderX 88xx"
1180	select ARM64
1181	select OF_CONTROL
1182	select SYS_CACHE_SHIFT_7
1183
1184config ARCH_ASPEED
1185	bool "Support Aspeed SoCs"
1186	select OF_CONTROL
1187	select DM
1188
1189endchoice
1190
1191source "arch/arm/mach-aspeed/Kconfig"
1192
1193source "arch/arm/mach-at91/Kconfig"
1194
1195source "arch/arm/mach-bcm283x/Kconfig"
1196
1197source "arch/arm/mach-bcmstb/Kconfig"
1198
1199source "arch/arm/mach-davinci/Kconfig"
1200
1201source "arch/arm/mach-exynos/Kconfig"
1202
1203source "arch/arm/mach-highbank/Kconfig"
1204
1205source "arch/arm/mach-integrator/Kconfig"
1206
1207source "arch/arm/mach-keystone/Kconfig"
1208
1209source "arch/arm/mach-kirkwood/Kconfig"
1210
1211source "arch/arm/mach-mvebu/Kconfig"
1212
1213source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1214
1215source "arch/arm/mach-imx/mx7ulp/Kconfig"
1216
1217source "arch/arm/mach-imx/mx7/Kconfig"
1218
1219source "arch/arm/mach-imx/mx6/Kconfig"
1220
1221source "arch/arm/mach-imx/mx5/Kconfig"
1222
1223source "arch/arm/mach-omap2/Kconfig"
1224
1225source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1226
1227source "arch/arm/mach-orion5x/Kconfig"
1228
1229source "arch/arm/mach-rmobile/Kconfig"
1230
1231source "arch/arm/mach-meson/Kconfig"
1232
1233source "arch/arm/mach-rockchip/Kconfig"
1234
1235source "arch/arm/mach-s5pc1xx/Kconfig"
1236
1237source "arch/arm/mach-snapdragon/Kconfig"
1238
1239source "arch/arm/mach-socfpga/Kconfig"
1240
1241source "arch/arm/mach-sti/Kconfig"
1242
1243source "arch/arm/mach-stm32/Kconfig"
1244
1245source "arch/arm/mach-sunxi/Kconfig"
1246
1247source "arch/arm/mach-tegra/Kconfig"
1248
1249source "arch/arm/mach-uniphier/Kconfig"
1250
1251source "arch/arm/cpu/armv7/vf610/Kconfig"
1252
1253source "arch/arm/mach-zynq/Kconfig"
1254
1255source "arch/arm/cpu/armv7/Kconfig"
1256
1257source "arch/arm/cpu/armv8/zynqmp/Kconfig"
1258
1259source "arch/arm/cpu/armv8/Kconfig"
1260
1261source "arch/arm/mach-imx/Kconfig"
1262
1263source "board/aries/m28evk/Kconfig"
1264source "board/bosch/shc/Kconfig"
1265source "board/CarMediaLab/flea3/Kconfig"
1266source "board/Marvell/aspenite/Kconfig"
1267source "board/Marvell/gplugd/Kconfig"
1268source "board/armadeus/apf27/Kconfig"
1269source "board/armltd/vexpress/Kconfig"
1270source "board/armltd/vexpress64/Kconfig"
1271source "board/bluegiga/apx4devkit/Kconfig"
1272source "board/broadcom/bcm23550_w1d/Kconfig"
1273source "board/broadcom/bcm28155_ap/Kconfig"
1274source "board/broadcom/bcmcygnus/Kconfig"
1275source "board/broadcom/bcmnsp/Kconfig"
1276source "board/broadcom/bcmns2/Kconfig"
1277source "board/cavium/thunderx/Kconfig"
1278source "board/cirrus/edb93xx/Kconfig"
1279source "board/creative/xfi3/Kconfig"
1280source "board/freescale/ls2080a/Kconfig"
1281source "board/freescale/ls2080aqds/Kconfig"
1282source "board/freescale/ls2080ardb/Kconfig"
1283source "board/freescale/ls1021aqds/Kconfig"
1284source "board/freescale/ls1043aqds/Kconfig"
1285source "board/freescale/ls1021atwr/Kconfig"
1286source "board/freescale/ls1021aiot/Kconfig"
1287source "board/freescale/ls1046aqds/Kconfig"
1288source "board/freescale/ls1043ardb/Kconfig"
1289source "board/freescale/ls1046ardb/Kconfig"
1290source "board/freescale/ls1012aqds/Kconfig"
1291source "board/freescale/ls1012ardb/Kconfig"
1292source "board/freescale/ls1012afrdm/Kconfig"
1293source "board/freescale/mx23evk/Kconfig"
1294source "board/freescale/mx25pdk/Kconfig"
1295source "board/freescale/mx28evk/Kconfig"
1296source "board/freescale/mx31ads/Kconfig"
1297source "board/freescale/mx31pdk/Kconfig"
1298source "board/freescale/mx35pdk/Kconfig"
1299source "board/freescale/s32v234evb/Kconfig"
1300source "board/gdsys/a38x/Kconfig"
1301source "board/grinn/chiliboard/Kconfig"
1302source "board/gumstix/pepper/Kconfig"
1303source "board/h2200/Kconfig"
1304source "board/hisilicon/hikey/Kconfig"
1305source "board/hisilicon/poplar/Kconfig"
1306source "board/imx31_phycore/Kconfig"
1307source "board/isee/igep003x/Kconfig"
1308source "board/olimex/mx23_olinuxino/Kconfig"
1309source "board/phytec/pcm051/Kconfig"
1310source "board/ppcag/bg0900/Kconfig"
1311source "board/sandisk/sansa_fuze_plus/Kconfig"
1312source "board/schulercontrol/sc_sps_1/Kconfig"
1313source "board/silica/pengwyn/Kconfig"
1314source "board/spear/spear300/Kconfig"
1315source "board/spear/spear310/Kconfig"
1316source "board/spear/spear320/Kconfig"
1317source "board/spear/spear600/Kconfig"
1318source "board/spear/x600/Kconfig"
1319source "board/st/stv0991/Kconfig"
1320source "board/syteco/zmx25/Kconfig"
1321source "board/tcl/sl50/Kconfig"
1322source "board/birdland/bav335x/Kconfig"
1323source "board/timll/devkit3250/Kconfig"
1324source "board/toradex/colibri_pxa270/Kconfig"
1325source "board/technologic/ts4600/Kconfig"
1326source "board/vscom/baltos/Kconfig"
1327source "board/woodburn/Kconfig"
1328source "board/work-microwave/work_92105/Kconfig"
1329source "board/zipitz2/Kconfig"
1330
1331source "arch/arm/Kconfig.debug"
1332
1333endmenu
1334
1335config SPL_LDSCRIPT
1336        default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if TARGET_APX4DEVKIT || TARGET_BG0900 || TARGET_M28EVK || TARGET_MX23_OLINUXINO || TARGET_MX23EVK || TARGET_MX28EVK || TARGET_SANSA_FUZE_PLUS || TARGET_SC_SPS_1 || TARGET_TS4600 || TARGET_XFI3
1337        default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1338	default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1339
1340
1341