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