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