xref: /rk3399_rockchip-uboot/arch/arm/Kconfig (revision e15c98ee20b8dd02519a58e16b25e68be6e7b08a)
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
349config ARM_SMP
350	bool "Enable ARM Symmetric Multiprocessing"
351	default n
352
353choice
354	prompt "Target select"
355	default TARGET_HIKEY
356
357config ARCH_AT91
358	bool "Atmel AT91"
359	select SPL_BOARD_INIT if SPL
360
361config TARGET_EDB93XX
362	bool "Support edb93xx"
363	select CPU_ARM920T
364
365config TARGET_ASPENITE
366	bool "Support aspenite"
367	select CPU_ARM926EJS
368
369config TARGET_GPLUGD
370	bool "Support gplugd"
371	select CPU_ARM926EJS
372
373config ARCH_DAVINCI
374	bool "TI DaVinci"
375	select CPU_ARM926EJS
376	imply CMD_SAVES
377	help
378	  Support for TI's DaVinci platform.
379
380config KIRKWOOD
381	bool "Marvell Kirkwood"
382	select CPU_ARM926EJS
383	select BOARD_EARLY_INIT_F
384	select ARCH_MISC_INIT
385
386config ARCH_MVEBU
387	bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
388	select OF_CONTROL
389	select OF_SEPARATE
390	select DM
391	select DM_ETH
392	select DM_SERIAL
393	select DM_SPI
394	select DM_SPI_FLASH
395	select SPI
396
397config TARGET_DEVKIT3250
398	bool "Support devkit3250"
399	select CPU_ARM926EJS
400	select SUPPORT_SPL
401
402config TARGET_WORK_92105
403	bool "Support work_92105"
404	select CPU_ARM926EJS
405	select SUPPORT_SPL
406
407config TARGET_MX25PDK
408	bool "Support mx25pdk"
409	select BOARD_LATE_INIT
410	select CPU_ARM926EJS
411	select BOARD_EARLY_INIT_F
412
413config TARGET_ZMX25
414	bool "Support zmx25"
415	select BOARD_LATE_INIT
416	select CPU_ARM926EJS
417
418config TARGET_APF27
419	bool "Support apf27"
420	select CPU_ARM926EJS
421	select SUPPORT_SPL
422
423config TARGET_APX4DEVKIT
424	bool "Support apx4devkit"
425	select CPU_ARM926EJS
426	select SUPPORT_SPL
427
428config TARGET_XFI3
429	bool "Support xfi3"
430	select CPU_ARM926EJS
431	select SUPPORT_SPL
432
433config TARGET_M28EVK
434	bool "Support m28evk"
435	select CPU_ARM926EJS
436	select SUPPORT_SPL
437
438config TARGET_MX23EVK
439	bool "Support mx23evk"
440	select CPU_ARM926EJS
441	select SUPPORT_SPL
442	select BOARD_EARLY_INIT_F
443
444config TARGET_MX28EVK
445	bool "Support mx28evk"
446	select CPU_ARM926EJS
447	select SUPPORT_SPL
448	select BOARD_EARLY_INIT_F
449
450config TARGET_MX23_OLINUXINO
451	bool "Support mx23_olinuxino"
452	select CPU_ARM926EJS
453	select SUPPORT_SPL
454	select BOARD_EARLY_INIT_F
455
456config TARGET_BG0900
457	bool "Support bg0900"
458	select CPU_ARM926EJS
459	select SUPPORT_SPL
460
461config TARGET_SANSA_FUZE_PLUS
462	bool "Support sansa_fuze_plus"
463	select CPU_ARM926EJS
464	select SUPPORT_SPL
465
466config TARGET_SC_SPS_1
467	bool "Support sc_sps_1"
468	select CPU_ARM926EJS
469	select SUPPORT_SPL
470
471config ORION5X
472	bool "Marvell Orion"
473	select CPU_ARM926EJS
474
475config TARGET_SPEAR300
476	bool "Support spear300"
477	select CPU_ARM926EJS
478	select BOARD_EARLY_INIT_F
479	imply CMD_SAVES
480
481config TARGET_SPEAR310
482	bool "Support spear310"
483	select CPU_ARM926EJS
484	select BOARD_EARLY_INIT_F
485	imply CMD_SAVES
486
487config TARGET_SPEAR320
488	bool "Support spear320"
489	select CPU_ARM926EJS
490	select BOARD_EARLY_INIT_F
491	imply CMD_SAVES
492
493config TARGET_SPEAR600
494	bool "Support spear600"
495	select CPU_ARM926EJS
496	select BOARD_EARLY_INIT_F
497	imply CMD_SAVES
498
499config TARGET_STV0991
500	bool "Support stv0991"
501	select CPU_V7
502	select DM
503	select DM_SERIAL
504	select DM_SPI
505	select DM_SPI_FLASH
506	select SPI
507	select SPI_FLASH
508
509config TARGET_X600
510	bool "Support x600"
511	select BOARD_LATE_INIT
512	select CPU_ARM926EJS
513	select SUPPORT_SPL
514
515config TARGET_IMX31_PHYCORE
516	bool "Support imx31_phycore_eet"
517	select CPU_ARM1136
518	select BOARD_EARLY_INIT_F
519
520config TARGET_IMX31_PHYCORE_EET
521	bool "Support imx31_phycore_eet"
522	select BOARD_LATE_INIT
523	select CPU_ARM1136
524	select BOARD_EARLY_INIT_F
525
526config TARGET_MX31ADS
527	bool "Support mx31ads"
528	select CPU_ARM1136
529	select BOARD_EARLY_INIT_F
530
531config TARGET_MX31PDK
532	bool "Support mx31pdk"
533	select BOARD_LATE_INIT
534	select CPU_ARM1136
535	select SUPPORT_SPL
536	select BOARD_EARLY_INIT_F
537
538config TARGET_WOODBURN
539	bool "Support woodburn"
540	select CPU_ARM1136
541
542config TARGET_WOODBURN_SD
543	bool "Support woodburn_sd"
544	select CPU_ARM1136
545	select SUPPORT_SPL
546
547config TARGET_FLEA3
548	bool "Support flea3"
549	select CPU_ARM1136
550
551config TARGET_MX35PDK
552	bool "Support mx35pdk"
553	select BOARD_LATE_INIT
554	select CPU_ARM1136
555
556config ARCH_BCM283X
557	bool "Broadcom BCM283X family"
558	select DM
559	select DM_SERIAL
560	select DM_GPIO
561	select OF_CONTROL
562	imply FAT_WRITE
563
564config TARGET_VEXPRESS_CA15_TC2
565	bool "Support vexpress_ca15_tc2"
566	select CPU_V7
567	select CPU_V7_HAS_NONSEC
568	select CPU_V7_HAS_VIRT
569
570config ARCH_BCMSTB
571	bool "Broadcom BCM7XXX family"
572	select CPU_V7A
573	select DM
574	select OF_CONTROL
575	select OF_PRIOR_STAGE
576	help
577	  This enables support for Broadcom ARM-based set-top box
578	  chipsets, including the 7445 family of chips.
579
580config TARGET_VEXPRESS_CA5X2
581	bool "Support vexpress_ca5x2"
582	select CPU_V7
583
584config TARGET_VEXPRESS_CA9X4
585	bool "Support vexpress_ca9x4"
586	select CPU_V7
587
588config TARGET_BCM23550_W1D
589	bool "Support bcm23550_w1d"
590	select CPU_V7
591	imply CRC32_VERIFY
592	imply FAT_WRITE
593
594config TARGET_BCM28155_AP
595	bool "Support bcm28155_ap"
596	select CPU_V7
597	imply CRC32_VERIFY
598	imply FAT_WRITE
599
600config TARGET_BCMCYGNUS
601	bool "Support bcmcygnus"
602	select CPU_V7
603	imply CRC32_VERIFY
604	imply CMD_HASH
605	imply FAT_WRITE
606	imply HASH_VERIFY
607	imply NETDEVICES
608	imply BCM_SF2_ETH
609	imply BCM_SF2_ETH_GMAC
610
611config TARGET_BCMNSP
612	bool "Support bcmnsp"
613	select CPU_V7
614
615config TARGET_BCMNS2
616	bool "Support Broadcom Northstar2"
617	select ARM64
618	help
619	  Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
620	  ARMv8 Cortex-A57 processors targeting a broad range of networking
621	  applications
622
623config ARCH_EXYNOS
624	bool "Samsung EXYNOS"
625	select DM
626	select DM_I2C
627	select DM_SPI_FLASH
628	select DM_SERIAL
629	select DM_SPI
630	select DM_GPIO
631	select DM_KEYBOARD
632	select SPI
633	imply FAT_WRITE
634
635config ARCH_S5PC1XX
636	bool "Samsung S5PC1XX"
637	select CPU_V7
638	select DM
639	select DM_SERIAL
640	select DM_GPIO
641	select DM_I2C
642
643config ARCH_HIGHBANK
644	bool "Calxeda Highbank"
645	select CPU_V7
646
647config ARCH_INTEGRATOR
648	bool "ARM Ltd. Integrator family"
649	select DM
650	select DM_SERIAL
651
652config ARCH_KEYSTONE
653	bool "TI Keystone"
654	select CPU_V7
655	select SUPPORT_SPL
656	select SYS_THUMB_BUILD
657	select CMD_POWEROFF
658	imply CMD_MTDPARTS
659	imply FIT
660	imply CMD_SAVES
661
662config ARCH_OMAP2PLUS
663	bool "TI OMAP2+"
664	select CPU_V7
665	select SPL_BOARD_INIT if SPL
666	select SUPPORT_SPL
667	imply FIT
668
669config ARCH_MESON
670	bool "Amlogic Meson"
671	help
672	  Support for the Meson SoC family developed by Amlogic Inc.,
673	  targeted at media players and tablet computers. We currently
674	  support the S905 (GXBaby) 64-bit SoC.
675
676config ARCH_MX7ULP
677        bool "NXP MX7ULP"
678        select CPU_V7
679	select ROM_UNIFIED_SECTIONS
680
681config ARCH_MX7
682	bool "Freescale MX7"
683	select CPU_V7
684	select SYS_FSL_HAS_SEC if SECURE_BOOT
685	select SYS_FSL_SEC_COMPAT_4
686	select SYS_FSL_SEC_LE
687	select BOARD_EARLY_INIT_F
688	select ARCH_MISC_INIT
689
690config ARCH_MX6
691	bool "Freescale MX6"
692	select CPU_V7
693	select SYS_FSL_HAS_SEC if SECURE_BOOT
694	select SYS_FSL_SEC_COMPAT_4
695	select SYS_FSL_SEC_LE
696	select SYS_THUMB_BUILD if SPL
697
698if ARCH_MX6
699config SPL_LDSCRIPT
700        default "arch/arm/mach-omap2/u-boot-spl.lds"
701endif
702
703config ARCH_MX5
704	bool "Freescale MX5"
705	select CPU_V7
706	select BOARD_EARLY_INIT_F
707
708config ARCH_RMOBILE
709	bool "Renesas ARM SoCs"
710	select DM
711	select DM_SERIAL
712	select BOARD_EARLY_INIT_F
713	imply FAT_WRITE
714	imply SYS_THUMB_BUILD
715
716config TARGET_S32V234EVB
717	bool "Support s32v234evb"
718	select ARM64
719	select SYS_FSL_ERRATUM_ESDHC111
720
721config ARCH_SNAPDRAGON
722	bool "Qualcomm Snapdragon SoCs"
723	select ARM64
724	select DM
725	select DM_GPIO
726	select DM_SERIAL
727	select SPMI
728	select OF_CONTROL
729	select OF_SEPARATE
730
731config ARCH_SOCFPGA
732	bool "Altera SOCFPGA family"
733	select CPU_V7
734	select SUPPORT_SPL
735	select OF_CONTROL
736	select SPL_OF_CONTROL
737	select DM
738	select DM_SPI_FLASH
739	select DM_SPI
740	select ENABLE_ARM_SOC_BOOT0_HOOK
741	select ARCH_EARLY_INIT_R
742	select ARCH_MISC_INIT
743	select SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
744	select SYS_THUMB_BUILD
745	imply CMD_MTDPARTS
746	imply CRC32_VERIFY
747	imply FAT_WRITE
748
749config ARCH_SUNXI
750	bool "Support sunxi (Allwinner) SoCs"
751	select BINMAN
752	select CMD_GPIO
753	select CMD_MMC if MMC
754	select CMD_USB if DISTRO_DEFAULTS
755	select DM
756	select DM_ETH
757	select DM_GPIO
758	select DM_KEYBOARD
759	select DM_SERIAL
760	select DM_USB if DISTRO_DEFAULTS
761	select OF_BOARD_SETUP
762	select OF_CONTROL
763	select OF_SEPARATE
764	select SPL_STACK_R if SPL
765	select SPL_SYS_MALLOC_SIMPLE if SPL
766	select SYS_NS16550
767	select SPL_SYS_THUMB_BUILD if !ARM64
768	select USB if DISTRO_DEFAULTS
769	select USB_STORAGE if DISTRO_DEFAULTS
770	select USB_KEYBOARD if DISTRO_DEFAULTS
771	select USE_TINY_PRINTF
772	imply CMD_FASTBOOT
773	imply FASTBOOT
774	imply FAT_WRITE
775	imply PRE_CONSOLE_BUFFER
776	imply SPL_GPIO_SUPPORT
777	imply SPL_LIBCOMMON_SUPPORT
778	imply SPL_LIBDISK_SUPPORT
779	imply SPL_LIBGENERIC_SUPPORT
780	imply SPL_MMC_SUPPORT if MMC
781	imply SPL_POWER_SUPPORT
782	imply SPL_SERIAL_SUPPORT
783	imply USB_FUNCTION_FASTBOOT
784
785config TARGET_TS4600
786	bool "Support TS4600"
787	select CPU_ARM926EJS
788	select SUPPORT_SPL
789
790config ARCH_VF610
791	bool "Freescale Vybrid"
792	select CPU_V7
793	select SYS_FSL_ERRATUM_ESDHC111
794	imply CMD_MTDPARTS
795	imply NAND
796
797config ARCH_ZYNQ
798	bool "Xilinx Zynq Platform"
799	select BOARD_LATE_INIT
800	select CPU_V7
801	select SUPPORT_SPL
802	select OF_CONTROL
803	select SPL_BOARD_INIT if SPL
804	select SPL_OF_CONTROL if SPL
805	select DM
806	select DM_ETH
807	select DM_GPIO
808	select SPL_DM if SPL
809	select DM_MMC
810	select DM_SPI
811	select DM_SERIAL
812	select DM_SPI_FLASH
813	select SPL_SEPARATE_BSS if SPL
814	select DM_USB if USB
815	select BLK
816	select CLK
817	select SPL_CLK
818	select CLK_ZYNQ
819	select SPI
820	imply CMD_CLK
821	imply FAT_WRITE
822	imply CMD_SPL
823
824config ARCH_ZYNQMP
825	bool "Support Xilinx ZynqMP Platform"
826	select ARM64
827	select BOARD_LATE_INIT
828	select DM
829	select OF_CONTROL
830	select DM_SERIAL
831	select SUPPORT_SPL
832	select CLK
833	select SPL_BOARD_INIT if SPL
834	select SPL_CLK
835	select DM_USB if USB
836	imply FAT_WRITE
837	imply DM_USB_GADGET
838
839config TEGRA
840	bool "NVIDIA Tegra"
841	imply FAT_WRITE
842
843config TARGET_VEXPRESS64_AEMV8A
844	bool "Support vexpress_aemv8a"
845	select ARM64
846
847config TARGET_VEXPRESS64_BASE_FVP
848	bool "Support Versatile Express ARMv8a FVP BASE model"
849	select ARM64
850	select SEMIHOSTING
851
852config TARGET_VEXPRESS64_BASE_FVP_DRAM
853	bool "Support Versatile Express ARMv8a FVP BASE model booting from DRAM"
854	select ARM64
855	help
856	  This target is derived from TARGET_VEXPRESS64_BASE_FVP and over-rides
857	  the default config to allow the user to load the images directly into
858	  DRAM using model parameters rather than by using semi-hosting to load
859	  the files from the host filesystem.
860
861config TARGET_VEXPRESS64_JUNO
862	bool "Support Versatile Express Juno Development Platform"
863	select ARM64
864
865config TARGET_LS2080A_EMU
866	bool "Support ls2080a_emu"
867	select ARCH_LS2080A
868	select ARM64
869	select ARMV8_MULTIENTRY
870	select ARCH_MISC_INIT
871	help
872	  Support for Freescale LS2080A_EMU platform
873	  The LS2080A Development System (EMULATOR) is a pre silicon
874	  development platform that supports the QorIQ LS2080A
875	  Layerscape Architecture processor.
876
877config TARGET_LS2080A_SIMU
878	bool "Support ls2080a_simu"
879	select ARCH_LS2080A
880	select ARM64
881	select ARMV8_MULTIENTRY
882	select ARCH_MISC_INIT
883	help
884	  Support for Freescale LS2080A_SIMU platform
885	  The LS2080A Development System (QDS) is a pre silicon
886	  development platform that supports the QorIQ LS2080A
887	  Layerscape Architecture processor.
888
889config TARGET_LS2080AQDS
890	bool "Support ls2080aqds"
891	select ARCH_LS2080A
892	select ARM64
893	select ARMV8_MULTIENTRY
894	select BOARD_LATE_INIT
895	select SUPPORT_SPL
896	select ARCH_MISC_INIT
897	imply SCSI
898	help
899	  Support for Freescale LS2080AQDS platform
900	  The LS2080A Development System (QDS) is a high-performance
901	  development platform that supports the QorIQ LS2080A
902	  Layerscape Architecture processor.
903
904config TARGET_LS2080ARDB
905	bool "Support ls2080ardb"
906	select ARCH_LS2080A
907	select ARM64
908	select ARMV8_MULTIENTRY
909	select BOARD_LATE_INIT
910	select SUPPORT_SPL
911	select ARCH_MISC_INIT
912	imply SCSI
913	help
914	  Support for Freescale LS2080ARDB platform.
915	  The LS2080A Reference design board (RDB) is a high-performance
916	  development platform that supports the QorIQ LS2080A
917	  Layerscape Architecture processor.
918
919config TARGET_LS2081ARDB
920	bool "Support ls2081ardb"
921	select ARCH_LS2080A
922	select ARM64
923	select ARMV8_MULTIENTRY
924	select BOARD_LATE_INIT
925	select SUPPORT_SPL
926	select ARCH_MISC_INIT
927	help
928	  Support for Freescale LS2081ARDB platform.
929	  The LS2081A Reference design board (RDB) is a high-performance
930	  development platform that supports the QorIQ LS2081A/LS2041A
931	  Layerscape Architecture processor.
932
933config TARGET_HIKEY
934	bool "Support HiKey 96boards Consumer Edition Platform"
935	select ARM64
936	select DM
937	select DM_GPIO
938	select DM_SERIAL
939	select OF_CONTROL
940	  help
941	  Support for HiKey 96boards platform. It features a HI6220
942	  SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
943
944config TARGET_POPLAR
945	bool "Support Poplar 96boards Enterprise Edition Platform"
946	select ARM64
947	select DM
948	select OF_CONTROL
949	select DM_SERIAL
950	select DM_USB
951	  help
952	  Support for Poplar 96boards EE platform. It features a HI3798cv200
953	  SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
954	  making it capable of running any commercial set-top solution based on
955	  Linux or Android.
956
957config TARGET_LS1012AQDS
958	bool "Support ls1012aqds"
959	select ARCH_LS1012A
960	select ARM64
961	select BOARD_LATE_INIT
962	help
963	  Support for Freescale LS1012AQDS platform.
964	  The LS1012A Development System (QDS) is a high-performance
965	  development platform that supports the QorIQ LS1012A
966	  Layerscape Architecture processor.
967
968config TARGET_LS1012ARDB
969	bool "Support ls1012ardb"
970	select ARCH_LS1012A
971	select ARM64
972	select BOARD_LATE_INIT
973	imply SCSI
974	help
975	  Support for Freescale LS1012ARDB platform.
976	  The LS1012A Reference design board (RDB) is a high-performance
977	  development platform that supports the QorIQ LS1012A
978	  Layerscape Architecture processor.
979
980config TARGET_LS1012AFRDM
981	bool "Support ls1012afrdm"
982	select ARCH_LS1012A
983	select ARM64
984	help
985	  Support for Freescale LS1012AFRDM platform.
986	  The LS1012A Freedom  board (FRDM) is a high-performance
987	  development platform that supports the QorIQ LS1012A
988	  Layerscape Architecture processor.
989
990config TARGET_LS1021AQDS
991	bool "Support ls1021aqds"
992	select BOARD_LATE_INIT
993	select CPU_V7
994	select CPU_V7_HAS_NONSEC
995	select CPU_V7_HAS_VIRT
996	select SUPPORT_SPL
997	select ARCH_LS1021A
998	select ARCH_SUPPORT_PSCI
999	select LS1_DEEP_SLEEP
1000	select SYS_FSL_DDR
1001	select BOARD_EARLY_INIT_F
1002	imply SCSI
1003
1004config TARGET_LS1021ATWR
1005	bool "Support ls1021atwr"
1006	select BOARD_LATE_INIT
1007	select CPU_V7
1008	select CPU_V7_HAS_NONSEC
1009	select CPU_V7_HAS_VIRT
1010	select SUPPORT_SPL
1011	select ARCH_LS1021A
1012	select ARCH_SUPPORT_PSCI
1013	select LS1_DEEP_SLEEP
1014	select BOARD_EARLY_INIT_F
1015	imply SCSI
1016
1017config TARGET_LS1021AIOT
1018	bool "Support ls1021aiot"
1019	select BOARD_LATE_INIT
1020	select CPU_V7
1021	select CPU_V7_HAS_NONSEC
1022	select CPU_V7_HAS_VIRT
1023	select SUPPORT_SPL
1024	select ARCH_LS1021A
1025	select ARCH_SUPPORT_PSCI
1026	imply SCSI
1027	help
1028	  Support for Freescale LS1021AIOT platform.
1029	  The LS1021A Freescale board (IOT) is a high-performance
1030	  development platform that supports the QorIQ LS1021A
1031	  Layerscape Architecture processor.
1032
1033config TARGET_LS1043AQDS
1034	bool "Support ls1043aqds"
1035	select ARCH_LS1043A
1036	select ARM64
1037	select ARMV8_MULTIENTRY
1038	select BOARD_LATE_INIT
1039	select SUPPORT_SPL
1040	select BOARD_EARLY_INIT_F
1041	imply SCSI
1042	help
1043	  Support for Freescale LS1043AQDS platform.
1044
1045config TARGET_LS1043ARDB
1046	bool "Support ls1043ardb"
1047	select ARCH_LS1043A
1048	select ARM64
1049	select ARMV8_MULTIENTRY
1050	select BOARD_LATE_INIT
1051	select SUPPORT_SPL
1052	select BOARD_EARLY_INIT_F
1053	imply SCSI
1054	help
1055	  Support for Freescale LS1043ARDB platform.
1056
1057config TARGET_LS1046AQDS
1058	bool "Support ls1046aqds"
1059	select ARCH_LS1046A
1060	select ARM64
1061	select ARMV8_MULTIENTRY
1062	select BOARD_LATE_INIT
1063	select SUPPORT_SPL
1064	select DM_SPI_FLASH if DM_SPI
1065	select BOARD_EARLY_INIT_F
1066	imply SCSI
1067	help
1068	  Support for Freescale LS1046AQDS platform.
1069	  The LS1046A Development System (QDS) is a high-performance
1070	  development platform that supports the QorIQ LS1046A
1071	  Layerscape Architecture processor.
1072
1073config TARGET_LS1046ARDB
1074	bool "Support ls1046ardb"
1075	select ARCH_LS1046A
1076	select ARM64
1077	select ARMV8_MULTIENTRY
1078	select BOARD_LATE_INIT
1079	select SUPPORT_SPL
1080	select DM_SPI_FLASH if DM_SPI
1081	select POWER_MC34VR500
1082	select BOARD_EARLY_INIT_F
1083	imply SCSI
1084	help
1085	  Support for Freescale LS1046ARDB platform.
1086	  The LS1046A Reference Design Board (RDB) is a high-performance
1087	  development platform that supports the QorIQ LS1046A
1088	  Layerscape Architecture processor.
1089
1090config TARGET_H2200
1091	bool "Support h2200"
1092	select CPU_PXA
1093
1094config TARGET_ZIPITZ2
1095	bool "Support zipitz2"
1096	select CPU_PXA
1097
1098config TARGET_COLIBRI_PXA270
1099	bool "Support colibri_pxa270"
1100	select CPU_PXA
1101
1102config ARCH_UNIPHIER
1103	bool "Socionext UniPhier SoCs"
1104	select BOARD_LATE_INIT
1105	select DM
1106	select DM_GPIO
1107	select DM_I2C
1108	select DM_MMC
1109	select DM_RESET
1110	select DM_SERIAL
1111	select DM_USB
1112	select OF_CONTROL
1113	select OF_LIBFDT
1114	select PINCTRL
1115	select SPL_BOARD_INIT if SPL
1116	select SPL_DM if SPL
1117	select SPL_LIBCOMMON_SUPPORT if SPL
1118	select SPL_LIBGENERIC_SUPPORT if SPL
1119	select SPL_OF_CONTROL if SPL
1120	select SPL_PINCTRL if SPL
1121	select SUPPORT_SPL
1122	imply FAT_WRITE
1123	help
1124	  Support for UniPhier SoC family developed by Socionext Inc.
1125	  (formerly, System LSI Business Division of Panasonic Corporation)
1126
1127config STM32
1128	bool "Support STM32"
1129	select CPU_V7M
1130	select DM
1131	select DM_SERIAL
1132	select SYS_THUMB_BUILD
1133
1134config ARCH_STI
1135	bool "Support STMicrolectronics SoCs"
1136	select CPU_V7
1137	select DM
1138	select DM_SERIAL
1139	select BLK
1140	select DM_MMC
1141	select DM_RESET
1142	help
1143	  Support for STMicroelectronics STiH407/10 SoC family.
1144	  This SoC is used on Linaro 96Board STiH410-B2260
1145
1146config ARCH_ROCKCHIP
1147	bool "Support Rockchip SoCs"
1148	select OF_CONTROL
1149	select BLK
1150	select DM
1151	select SPL_DM if SPL
1152	select SYS_MALLOC_F
1153	select SYS_THUMB_BUILD if !ARM64
1154	select SPL_SYS_MALLOC_SIMPLE if SPL
1155	imply DM_GPIO
1156	select DM_SERIAL
1157	select DM_SPI
1158	select DM_USB if USB
1159	select ENABLE_ARM_SOC_BOOT0_HOOK
1160	select SYS_NS16550
1161	select SPI
1162	select DEBUG_UART_BOARD_INIT
1163	select PANIC_HANG
1164	imply DM_SPI_FLASH
1165	imply SHA1
1166	imply SHA256
1167	imply DM_MMC
1168	imply DM_I2C
1169	imply DM_PWM
1170	imply DM_REGULATOR
1171	imply CMD_FASTBOOT
1172	imply CMD_ROCKUSB
1173	imply FASTBOOT
1174	imply FAT_WRITE
1175	imply USB_FUNCTION_FASTBOOT
1176	imply USB_FUNCTION_ROCKUSB
1177	imply SPL_SYSRESET
1178	imply TPL_SYSRESET
1179	imply ADC
1180	imply SARADC_ROCKCHIP
1181
1182config TARGET_THUNDERX_88XX
1183	bool "Support ThunderX 88xx"
1184	select ARM64
1185	select OF_CONTROL
1186	select SYS_CACHE_SHIFT_7
1187
1188config ARCH_ASPEED
1189	bool "Support Aspeed SoCs"
1190	select OF_CONTROL
1191	select DM
1192
1193endchoice
1194
1195source "arch/arm/mach-aspeed/Kconfig"
1196
1197source "arch/arm/mach-at91/Kconfig"
1198
1199source "arch/arm/mach-bcm283x/Kconfig"
1200
1201source "arch/arm/mach-bcmstb/Kconfig"
1202
1203source "arch/arm/mach-davinci/Kconfig"
1204
1205source "arch/arm/mach-exynos/Kconfig"
1206
1207source "arch/arm/mach-highbank/Kconfig"
1208
1209source "arch/arm/mach-integrator/Kconfig"
1210
1211source "arch/arm/mach-keystone/Kconfig"
1212
1213source "arch/arm/mach-kirkwood/Kconfig"
1214
1215source "arch/arm/mach-mvebu/Kconfig"
1216
1217source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1218
1219source "arch/arm/mach-imx/mx7ulp/Kconfig"
1220
1221source "arch/arm/mach-imx/mx7/Kconfig"
1222
1223source "arch/arm/mach-imx/mx6/Kconfig"
1224
1225source "arch/arm/mach-imx/mx5/Kconfig"
1226
1227source "arch/arm/mach-omap2/Kconfig"
1228
1229source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1230
1231source "arch/arm/mach-orion5x/Kconfig"
1232
1233source "arch/arm/mach-rmobile/Kconfig"
1234
1235source "arch/arm/mach-meson/Kconfig"
1236
1237source "arch/arm/mach-rockchip/Kconfig"
1238
1239source "arch/arm/mach-s5pc1xx/Kconfig"
1240
1241source "arch/arm/mach-snapdragon/Kconfig"
1242
1243source "arch/arm/mach-socfpga/Kconfig"
1244
1245source "arch/arm/mach-sti/Kconfig"
1246
1247source "arch/arm/mach-stm32/Kconfig"
1248
1249source "arch/arm/mach-sunxi/Kconfig"
1250
1251source "arch/arm/mach-tegra/Kconfig"
1252
1253source "arch/arm/mach-uniphier/Kconfig"
1254
1255source "arch/arm/cpu/armv7/vf610/Kconfig"
1256
1257source "arch/arm/mach-zynq/Kconfig"
1258
1259source "arch/arm/cpu/armv7/Kconfig"
1260
1261source "arch/arm/cpu/armv8/zynqmp/Kconfig"
1262
1263source "arch/arm/cpu/armv8/Kconfig"
1264
1265source "arch/arm/mach-imx/Kconfig"
1266
1267source "board/aries/m28evk/Kconfig"
1268source "board/bosch/shc/Kconfig"
1269source "board/CarMediaLab/flea3/Kconfig"
1270source "board/Marvell/aspenite/Kconfig"
1271source "board/Marvell/gplugd/Kconfig"
1272source "board/armadeus/apf27/Kconfig"
1273source "board/armltd/vexpress/Kconfig"
1274source "board/armltd/vexpress64/Kconfig"
1275source "board/bluegiga/apx4devkit/Kconfig"
1276source "board/broadcom/bcm23550_w1d/Kconfig"
1277source "board/broadcom/bcm28155_ap/Kconfig"
1278source "board/broadcom/bcmcygnus/Kconfig"
1279source "board/broadcom/bcmnsp/Kconfig"
1280source "board/broadcom/bcmns2/Kconfig"
1281source "board/cavium/thunderx/Kconfig"
1282source "board/cirrus/edb93xx/Kconfig"
1283source "board/creative/xfi3/Kconfig"
1284source "board/freescale/ls2080a/Kconfig"
1285source "board/freescale/ls2080aqds/Kconfig"
1286source "board/freescale/ls2080ardb/Kconfig"
1287source "board/freescale/ls1021aqds/Kconfig"
1288source "board/freescale/ls1043aqds/Kconfig"
1289source "board/freescale/ls1021atwr/Kconfig"
1290source "board/freescale/ls1021aiot/Kconfig"
1291source "board/freescale/ls1046aqds/Kconfig"
1292source "board/freescale/ls1043ardb/Kconfig"
1293source "board/freescale/ls1046ardb/Kconfig"
1294source "board/freescale/ls1012aqds/Kconfig"
1295source "board/freescale/ls1012ardb/Kconfig"
1296source "board/freescale/ls1012afrdm/Kconfig"
1297source "board/freescale/mx23evk/Kconfig"
1298source "board/freescale/mx25pdk/Kconfig"
1299source "board/freescale/mx28evk/Kconfig"
1300source "board/freescale/mx31ads/Kconfig"
1301source "board/freescale/mx31pdk/Kconfig"
1302source "board/freescale/mx35pdk/Kconfig"
1303source "board/freescale/s32v234evb/Kconfig"
1304source "board/gdsys/a38x/Kconfig"
1305source "board/grinn/chiliboard/Kconfig"
1306source "board/gumstix/pepper/Kconfig"
1307source "board/h2200/Kconfig"
1308source "board/hisilicon/hikey/Kconfig"
1309source "board/hisilicon/poplar/Kconfig"
1310source "board/imx31_phycore/Kconfig"
1311source "board/isee/igep003x/Kconfig"
1312source "board/olimex/mx23_olinuxino/Kconfig"
1313source "board/phytec/pcm051/Kconfig"
1314source "board/ppcag/bg0900/Kconfig"
1315source "board/sandisk/sansa_fuze_plus/Kconfig"
1316source "board/schulercontrol/sc_sps_1/Kconfig"
1317source "board/silica/pengwyn/Kconfig"
1318source "board/spear/spear300/Kconfig"
1319source "board/spear/spear310/Kconfig"
1320source "board/spear/spear320/Kconfig"
1321source "board/spear/spear600/Kconfig"
1322source "board/spear/x600/Kconfig"
1323source "board/st/stv0991/Kconfig"
1324source "board/syteco/zmx25/Kconfig"
1325source "board/tcl/sl50/Kconfig"
1326source "board/birdland/bav335x/Kconfig"
1327source "board/timll/devkit3250/Kconfig"
1328source "board/toradex/colibri_pxa270/Kconfig"
1329source "board/technologic/ts4600/Kconfig"
1330source "board/vscom/baltos/Kconfig"
1331source "board/woodburn/Kconfig"
1332source "board/work-microwave/work_92105/Kconfig"
1333source "board/zipitz2/Kconfig"
1334
1335source "arch/arm/Kconfig.debug"
1336
1337endmenu
1338
1339config SPL_LDSCRIPT
1340        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
1341        default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1342	default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1343
1344
1345