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