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