Merge tag 'efi-2020-07-rc2' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git] / arch / arm / Kconfig
1 menu "ARM architecture"
2         depends on ARM
3
4 config SYS_ARCH
5         default "arm"
6
7 config ARM64
8         bool
9         select PHYS_64BIT
10         select SYS_CACHE_SHIFT_6
11
12 if ARM64
13 config POSITION_INDEPENDENT
14         bool "Generate position-independent pre-relocation code"
15         select INIT_SP_RELATIVE
16         help
17           U-Boot expects to be linked to a specific hard-coded address, and to
18           be loaded to and run from that address. This option lifts that
19           restriction, thus allowing the code to be loaded to and executed
20           from almost any address. This logic relies on the relocation
21           information that is embedded in the binary to support U-Boot
22           relocating itself to the top-of-RAM later during execution.
23
24 config INIT_SP_RELATIVE
25         bool "Specify the early stack pointer relative to the .bss section"
26         help
27           U-Boot typically uses a hard-coded value for the stack pointer
28           before relocation. Enable this option to instead calculate the
29           initial SP at run-time. This is useful to avoid hard-coding addresses
30           into U-Boot, so that it can be loaded and executed at arbitrary
31           addresses and thus avoid using arbitrary addresses at runtime.
32
33           If this option is enabled, the early stack pointer is set to
34           &_bss_start with a offset value added. The offset is specified by
35           SYS_INIT_SP_BSS_OFFSET.
36
37 config SYS_INIT_SP_BSS_OFFSET
38         int "Early stack offset from the .bss base address"
39         depends on INIT_SP_RELATIVE
40         default 524288
41         help
42           This option's value is the offset added to &_bss_start in order to
43           calculate the stack pointer. This offset should be large enough so
44           that the early malloc region, global data (gd), and early stack usage
45           do not overlap any appended DTB.
46
47 config LINUX_KERNEL_IMAGE_HEADER
48         bool
49         help
50           Place a Linux kernel image header at the start of the U-Boot binary.
51           The format of the header is described in the Linux kernel source at
52           Documentation/arm64/booting.txt. This feature is useful since the
53           image header reports the amount of memory (BSS and similar) that
54           U-Boot needs to use, but which isn't part of the binary.
55
56 if LINUX_KERNEL_IMAGE_HEADER
57 config LNX_KRNL_IMG_TEXT_OFFSET_BASE
58         hex
59         help
60           The value subtracted from CONFIG_SYS_TEXT_BASE to calculate the
61           TEXT_OFFSET value written to the Linux kernel image header.
62 endif
63 endif
64
65 config GIC_V3_ITS
66         bool "ARM GICV3 ITS"
67         help
68           ARM GICV3 Interrupt translation service (ITS).
69           Basic support for programming locality specific peripheral
70           interrupts (LPI) configuration tables and enable LPI tables.
71           LPI configuration table can be used by u-boot or Linux.
72           ARM GICV3 has limitation, once the LPI table is enabled, LPI
73           configuration table can not be re-programmed, unless GICV3 reset.
74
75 config STATIC_RELA
76         bool
77         default y if ARM64 && !POSITION_INDEPENDENT
78
79 config DMA_ADDR_T_64BIT
80         bool
81         default y if ARM64
82
83 config HAS_VBAR
84         bool
85
86 config HAS_THUMB2
87         bool
88
89 # Used for compatibility with asm files copied from the kernel
90 config ARM_ASM_UNIFIED
91         bool
92         default y
93
94 # Used for compatibility with asm files copied from the kernel
95 config THUMB2_KERNEL
96         bool
97
98 config SYS_ICACHE_OFF
99         bool "Do not enable icache"
100         default n
101         help
102           Do not enable instruction cache in U-Boot.
103
104 config SPL_SYS_ICACHE_OFF
105         bool "Do not enable icache in SPL"
106         depends on SPL
107         default SYS_ICACHE_OFF
108         help
109           Do not enable instruction cache in SPL.
110
111 config SYS_DCACHE_OFF
112         bool "Do not enable dcache"
113         default n
114         help
115           Do not enable data cache in U-Boot.
116
117 config SPL_SYS_DCACHE_OFF
118         bool "Do not enable dcache in SPL"
119         depends on SPL
120         default SYS_DCACHE_OFF
121         help
122           Do not enable data cache in SPL.
123
124 config SYS_ARM_CACHE_CP15
125         bool "CP15 based cache enabling support"
126         help
127           Select this if your processor suports enabling caches by using
128           CP15 registers.
129
130 config SYS_ARM_MMU
131         bool "MMU-based Paged Memory Management Support"
132         select SYS_ARM_CACHE_CP15
133         help
134           Select if you want MMU-based virtualised addressing space
135           support via paged memory management.
136
137 config SYS_ARM_MPU
138         bool 'Use the ARM v7 PMSA Compliant MPU'
139         help
140           Some ARM systems without an MMU have instead a Memory Protection
141           Unit (MPU) that defines the type and permissions for regions of
142           memory.
143           If your CPU has an MPU then you should choose 'y' here unless you
144           know that you do not want to use the MPU.
145
146 # If set, the workarounds for these ARM errata are applied early during U-Boot
147 # startup. Note that in general these options force the workarounds to be
148 # applied; no CPU-type/version detection exists, unlike the similar options in
149 # the Linux kernel. Do not set these options unless they apply!  Also note that
150 # the following can be machine-specific errata. These do have ability to
151 # provide rudimentary version and machine-specific checks, but expect no
152 # product checks:
153 # CONFIG_ARM_ERRATA_430973
154 # CONFIG_ARM_ERRATA_454179
155 # CONFIG_ARM_ERRATA_621766
156 # CONFIG_ARM_ERRATA_798870
157 # CONFIG_ARM_ERRATA_801819
158 # CONFIG_ARM_CORTEX_A8_CVE_2017_5715
159 # CONFIG_ARM_CORTEX_A15_CVE_2017_5715
160
161 config ARM_ERRATA_430973
162         bool
163
164 config ARM_ERRATA_454179
165         bool
166
167 config ARM_ERRATA_621766
168         bool
169
170 config ARM_ERRATA_716044
171         bool
172
173 config ARM_ERRATA_725233
174         bool
175
176 config ARM_ERRATA_742230
177         bool
178
179 config ARM_ERRATA_743622
180         bool
181
182 config ARM_ERRATA_751472
183         bool
184
185 config ARM_ERRATA_761320
186         bool
187
188 config ARM_ERRATA_773022
189         bool
190
191 config ARM_ERRATA_774769
192         bool
193
194 config ARM_ERRATA_794072
195         bool
196
197 config ARM_ERRATA_798870
198         bool
199
200 config ARM_ERRATA_801819
201         bool
202
203 config ARM_ERRATA_826974
204         bool
205
206 config ARM_ERRATA_828024
207         bool
208
209 config ARM_ERRATA_829520
210         bool
211
212 config ARM_ERRATA_833069
213         bool
214
215 config ARM_ERRATA_833471
216         bool
217
218 config ARM_ERRATA_845369
219         bool
220
221 config ARM_ERRATA_852421
222         bool
223
224 config ARM_ERRATA_852423
225         bool
226
227 config ARM_ERRATA_855873
228         bool
229
230 config ARM_CORTEX_A8_CVE_2017_5715
231         bool
232
233 config ARM_CORTEX_A15_CVE_2017_5715
234         bool
235
236 config CPU_ARM720T
237         bool
238         select SYS_CACHE_SHIFT_5
239         imply SYS_ARM_MMU
240
241 config CPU_ARM920T
242         bool
243         select SYS_CACHE_SHIFT_5
244         imply SYS_ARM_MMU
245
246 config CPU_ARM926EJS
247         bool
248         select SYS_CACHE_SHIFT_5
249         imply SYS_ARM_MMU
250
251 config CPU_ARM946ES
252         bool
253         select SYS_CACHE_SHIFT_5
254         imply SYS_ARM_MMU
255
256 config CPU_ARM1136
257         bool
258         select SYS_CACHE_SHIFT_5
259         imply SYS_ARM_MMU
260
261 config CPU_ARM1176
262         bool
263         select HAS_VBAR
264         select SYS_CACHE_SHIFT_5
265         imply SYS_ARM_MMU
266
267 config CPU_V7A
268         bool
269         select HAS_THUMB2
270         select HAS_VBAR
271         select SYS_CACHE_SHIFT_6
272         imply SYS_ARM_MMU
273
274 config CPU_V7M
275         bool
276         select HAS_THUMB2
277         select SYS_ARM_MPU
278         select SYS_CACHE_SHIFT_5
279         select SYS_THUMB_BUILD
280         select THUMB2_KERNEL
281
282 config CPU_V7R
283         bool
284         select HAS_THUMB2
285         select SYS_ARM_CACHE_CP15
286         select SYS_ARM_MPU
287         select SYS_CACHE_SHIFT_6
288
289 config CPU_PXA
290         bool
291         select SYS_CACHE_SHIFT_5
292         imply SYS_ARM_MMU
293
294 config CPU_SA1100
295         bool
296         select SYS_CACHE_SHIFT_5
297         imply SYS_ARM_MMU
298
299 config SYS_CPU
300         default "arm720t" if CPU_ARM720T
301         default "arm920t" if CPU_ARM920T
302         default "arm926ejs" if CPU_ARM926EJS
303         default "arm946es" if CPU_ARM946ES
304         default "arm1136" if CPU_ARM1136
305         default "arm1176" if CPU_ARM1176
306         default "armv7" if CPU_V7A
307         default "armv7" if CPU_V7R
308         default "armv7m" if CPU_V7M
309         default "pxa" if CPU_PXA
310         default "sa1100" if CPU_SA1100
311         default "armv8" if ARM64
312
313 config SYS_ARM_ARCH
314         int
315         default 4 if CPU_ARM720T
316         default 4 if CPU_ARM920T
317         default 5 if CPU_ARM926EJS
318         default 5 if CPU_ARM946ES
319         default 6 if CPU_ARM1136
320         default 6 if CPU_ARM1176
321         default 7 if CPU_V7A
322         default 7 if CPU_V7M
323         default 7 if CPU_V7R
324         default 5 if CPU_PXA
325         default 4 if CPU_SA1100
326         default 8 if ARM64
327
328 config SYS_CACHE_SHIFT_5
329         bool
330
331 config SYS_CACHE_SHIFT_6
332         bool
333
334 config SYS_CACHE_SHIFT_7
335         bool
336
337 config SYS_CACHELINE_SIZE
338         int
339         default 128 if SYS_CACHE_SHIFT_7
340         default 64 if SYS_CACHE_SHIFT_6
341         default 32 if SYS_CACHE_SHIFT_5
342
343 config ARCH_CPU_INIT
344         bool "Enable ARCH_CPU_INIT"
345         help
346           Some architectures require a call to arch_cpu_init().
347           Say Y here to enable it
348
349 config SYS_ARCH_TIMER
350         bool "ARM Generic Timer support"
351         depends on CPU_V7A || ARM64
352         default y if ARM64
353         help
354           The ARM Generic Timer (aka arch-timer) provides an architected
355           interface to a timer source on an SoC.
356           It is mandatory for ARMv8 implementation and widely available
357           on ARMv7 systems.
358
359 config ARM_SMCCC
360         bool "Support for ARM SMC Calling Convention (SMCCC)"
361         depends on CPU_V7A || ARM64
362         select ARM_PSCI_FW
363         help
364           Say Y here if you want to enable ARM SMC Calling Convention.
365           This should be enabled if U-Boot needs to communicate with system
366           firmware (for example, PSCI) according to SMCCC.
367
368 config SEMIHOSTING
369         bool "support boot from semihosting"
370         help
371           In emulated environments, semihosting is a way for
372           the hosted environment to call out to the emulator to
373           retrieve files from the host machine.
374
375 config SYS_THUMB_BUILD
376         bool "Build U-Boot using the Thumb instruction set"
377         depends on !ARM64
378         help
379            Use this flag to build U-Boot using the Thumb instruction set for
380            ARM architectures. Thumb instruction set provides better code
381            density. For ARM architectures that support Thumb2 this flag will
382            result in Thumb2 code generated by GCC.
383
384 config SPL_SYS_THUMB_BUILD
385         bool "Build SPL using the Thumb instruction set"
386         default y if SYS_THUMB_BUILD
387         depends on !ARM64 && SPL
388         help
389            Use this flag to build SPL using the Thumb instruction set for
390            ARM architectures. Thumb instruction set provides better code
391            density. For ARM architectures that support Thumb2 this flag will
392            result in Thumb2 code generated by GCC.
393
394 config TPL_SYS_THUMB_BUILD
395         bool "Build TPL using the Thumb instruction set"
396         default y if SYS_THUMB_BUILD
397         depends on TPL && !ARM64
398         help
399            Use this flag to build TPL using the Thumb instruction set for
400            ARM architectures. Thumb instruction set provides better code
401            density. For ARM architectures that support Thumb2 this flag will
402            result in Thumb2 code generated by GCC.
403
404
405 config SYS_L2CACHE_OFF
406         bool "L2cache off"
407         help
408           If SoC does not support L2CACHE or one does not want to enable
409           L2CACHE, choose this option.
410
411 config ENABLE_ARM_SOC_BOOT0_HOOK
412         bool "prepare BOOT0 header"
413         help
414           If the SoC's BOOT0 requires a header area filled with (magic)
415           values, then choose this option, and create a file included as
416           <asm/arch/boot0.h> which contains the required assembler code.
417
418 config ARM_CORTEX_CPU_IS_UP
419         bool
420         default n
421
422 config USE_ARCH_MEMCPY
423         bool "Use an assembly optimized implementation of memcpy"
424         default y
425         depends on !ARM64
426         help
427           Enable the generation of an optimized version of memcpy.
428           Such an implementation may be faster under some conditions
429           but may increase the binary size.
430
431 config SPL_USE_ARCH_MEMCPY
432         bool "Use an assembly optimized implementation of memcpy for SPL"
433         default y if USE_ARCH_MEMCPY
434         depends on !ARM64 && SPL
435         help
436           Enable the generation of an optimized version of memcpy.
437           Such an implementation may be faster under some conditions
438           but may increase the binary size.
439
440 config TPL_USE_ARCH_MEMCPY
441         bool "Use an assembly optimized implementation of memcpy for TPL"
442         default y if USE_ARCH_MEMCPY
443         depends on !ARM64 && TPL
444         help
445           Enable the generation of an optimized version of memcpy.
446           Such an implementation may be faster under some conditions
447           but may increase the binary size.
448
449 config USE_ARCH_MEMSET
450         bool "Use an assembly optimized implementation of memset"
451         default y
452         depends on !ARM64
453         help
454           Enable the generation of an optimized version of memset.
455           Such an implementation may be faster under some conditions
456           but may increase the binary size.
457
458 config SPL_USE_ARCH_MEMSET
459         bool "Use an assembly optimized implementation of memset for SPL"
460         default y if USE_ARCH_MEMSET
461         depends on !ARM64 && SPL
462         help
463           Enable the generation of an optimized version of memset.
464           Such an implementation may be faster under some conditions
465           but may increase the binary size.
466
467 config TPL_USE_ARCH_MEMSET
468         bool "Use an assembly optimized implementation of memset for TPL"
469         default y if USE_ARCH_MEMSET
470         depends on !ARM64 && TPL
471         help
472           Enable the generation of an optimized version of memset.
473           Such an implementation may be faster under some conditions
474           but may increase the binary size.
475
476 config SET_STACK_SIZE
477         bool "Enable an option to set max stack size that can be used"
478         default y if ARCH_VERSAL || ARCH_ZYNQMP || ARCH_ZYNQ
479         help
480           This will enable an option to set max stack size that can be
481           used by U-Boot.
482
483 config STACK_SIZE
484         hex "Define max stack size that can be used by U-Boot"
485         depends on SET_STACK_SIZE
486         default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP
487         default 0x1000000 if ARCH_ZYNQ
488         help
489           Define Max stack size that can be used by U-Boot so that the
490           initrd_high will be calculated as base stack pointer minus this
491           stack size.
492
493 config ARM64_SUPPORT_AARCH32
494         bool "ARM64 system support AArch32 execution state"
495         depends on ARM64
496         default y if !TARGET_THUNDERX_88XX
497         help
498           This ARM64 system supports AArch32 execution state.
499
500 choice
501         prompt "Target select"
502         default TARGET_HIKEY
503
504 config ARCH_AT91
505         bool "Atmel AT91"
506         select SPL_BOARD_INIT if SPL && !TARGET_SMARTWEB
507
508 config TARGET_EDB93XX
509         bool "Support edb93xx"
510         select CPU_ARM920T
511         select PL010_SERIAL
512
513 config TARGET_ASPENITE
514         bool "Support aspenite"
515         select CPU_ARM926EJS
516
517 config TARGET_GPLUGD
518         bool "Support gplugd"
519         select CPU_ARM926EJS
520
521 config ARCH_DAVINCI
522         bool "TI DaVinci"
523         select CPU_ARM926EJS
524         imply CMD_SAVES
525         help
526           Support for TI's DaVinci platform.
527
528 config KIRKWOOD
529         bool "Marvell Kirkwood"
530         select ARCH_MISC_INIT
531         select BOARD_EARLY_INIT_F
532         select CPU_ARM926EJS
533
534 config ARCH_MVEBU
535         bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
536         select DM
537         select DM_ETH
538         select DM_SERIAL
539         select DM_SPI
540         select DM_SPI_FLASH
541         select OF_CONTROL
542         select OF_SEPARATE
543         select SPI
544         imply CMD_DM
545
546 config TARGET_APF27
547         bool "Support apf27"
548         select CPU_ARM926EJS
549         select SUPPORT_SPL
550
551 config ORION5X
552         bool "Marvell Orion"
553         select CPU_ARM926EJS
554
555 config TARGET_SPEAR300
556         bool "Support spear300"
557         select BOARD_EARLY_INIT_F
558         select CPU_ARM926EJS
559         select PL011_SERIAL
560         imply CMD_SAVES
561
562 config TARGET_SPEAR310
563         bool "Support spear310"
564         select BOARD_EARLY_INIT_F
565         select CPU_ARM926EJS
566         select PL011_SERIAL
567         imply CMD_SAVES
568
569 config TARGET_SPEAR320
570         bool "Support spear320"
571         select BOARD_EARLY_INIT_F
572         select CPU_ARM926EJS
573         select PL011_SERIAL
574         imply CMD_SAVES
575
576 config TARGET_SPEAR600
577         bool "Support spear600"
578         select BOARD_EARLY_INIT_F
579         select CPU_ARM926EJS
580         select PL011_SERIAL
581         imply CMD_SAVES
582
583 config TARGET_STV0991
584         bool "Support stv0991"
585         select CPU_V7A
586         select DM
587         select DM_SERIAL
588         select DM_SPI
589         select DM_SPI_FLASH
590         select PL01X_SERIAL
591         select SPI
592         select SPI_FLASH
593         imply CMD_DM
594
595 config TARGET_X600
596         bool "Support x600"
597         select BOARD_LATE_INIT
598         select CPU_ARM926EJS
599         select PL011_SERIAL
600         select SUPPORT_SPL
601
602 config TARGET_FLEA3
603         bool "Support flea3"
604         select CPU_ARM1136
605
606 config TARGET_MX35PDK
607         bool "Support mx35pdk"
608         select BOARD_LATE_INIT
609         select CPU_ARM1136
610
611 config ARCH_BCM283X
612         bool "Broadcom BCM283X family"
613         select DM
614         select DM_GPIO
615         select DM_SERIAL
616         select OF_CONTROL
617         select PL01X_SERIAL
618         select SERIAL_SEARCH_ALL
619         imply CMD_DM
620         imply FAT_WRITE
621
622 config ARCH_BCM63158
623         bool "Broadcom BCM63158 family"
624         select DM
625         select OF_CONTROL
626         imply CMD_DM
627
628 config ARCH_BCM68360
629         bool "Broadcom BCM68360 family"
630         select DM
631         select OF_CONTROL
632         imply CMD_DM
633
634 config ARCH_BCM6858
635         bool "Broadcom BCM6858 family"
636         select DM
637         select OF_CONTROL
638         imply CMD_DM
639
640 config TARGET_VEXPRESS_CA15_TC2
641         bool "Support vexpress_ca15_tc2"
642         select CPU_V7A
643         select CPU_V7_HAS_NONSEC
644         select CPU_V7_HAS_VIRT
645         select PL011_SERIAL
646
647 config ARCH_BCMSTB
648         bool "Broadcom BCM7XXX family"
649         select CPU_V7A
650         select DM
651         select OF_CONTROL
652         select OF_PRIOR_STAGE
653         imply CMD_DM
654         help
655           This enables support for Broadcom ARM-based set-top box
656           chipsets, including the 7445 family of chips.
657
658 config TARGET_VEXPRESS_CA5X2
659         bool "Support vexpress_ca5x2"
660         select CPU_V7A
661         select PL011_SERIAL
662
663 config TARGET_VEXPRESS_CA9X4
664         bool "Support vexpress_ca9x4"
665         select CPU_V7A
666         select PL011_SERIAL
667
668 config TARGET_BCM23550_W1D
669         bool "Support bcm23550_w1d"
670         select CPU_V7A
671         imply CRC32_VERIFY
672         imply FAT_WRITE
673
674 config TARGET_BCM28155_AP
675         bool "Support bcm28155_ap"
676         select CPU_V7A
677         imply CRC32_VERIFY
678         imply FAT_WRITE
679
680 config TARGET_BCMCYGNUS
681         bool "Support bcmcygnus"
682         select CPU_V7A
683         imply BCM_SF2_ETH
684         imply BCM_SF2_ETH_GMAC
685         imply CMD_HASH
686         imply CRC32_VERIFY
687         imply FAT_WRITE
688         imply HASH_VERIFY
689         imply NETDEVICES
690
691 config TARGET_BCMNSP
692         bool "Support bcmnsp"
693         select CPU_V7A
694
695 config TARGET_BCMNS2
696         bool "Support Broadcom Northstar2"
697         select ARM64
698         help
699           Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
700           ARMv8 Cortex-A57 processors targeting a broad range of networking
701           applications.
702
703 config ARCH_EXYNOS
704         bool "Samsung EXYNOS"
705         select DM
706         select DM_GPIO
707         select DM_I2C
708         select DM_KEYBOARD
709         select DM_SERIAL
710         select DM_SPI
711         select DM_SPI_FLASH
712         select SPI
713         imply SYS_THUMB_BUILD
714         imply CMD_DM
715         imply FAT_WRITE
716
717 config ARCH_S5PC1XX
718         bool "Samsung S5PC1XX"
719         select CPU_V7A
720         select DM
721         select DM_GPIO
722         select DM_I2C
723         select DM_SERIAL
724         imply CMD_DM
725
726 config ARCH_HIGHBANK
727         bool "Calxeda Highbank"
728         select CPU_V7A
729         select PL011_SERIAL
730
731 config ARCH_INTEGRATOR
732         bool "ARM Ltd. Integrator family"
733         select DM
734         select DM_SERIAL
735         select PL01X_SERIAL
736         imply CMD_DM
737
738 config ARCH_KEYSTONE
739         bool "TI Keystone"
740         select CMD_POWEROFF
741         select CPU_V7A
742         select SUPPORT_SPL
743         select SYS_ARCH_TIMER
744         select SYS_THUMB_BUILD
745         imply CMD_MTDPARTS
746         imply CMD_SAVES
747         imply FIT
748
749 config ARCH_K3
750         bool "Texas Instruments' K3 Architecture"
751         select SPL
752         select SUPPORT_SPL
753         select FIT
754
755 config ARCH_OMAP2PLUS
756         bool "TI OMAP2+"
757         select CPU_V7A
758         select SPL_BOARD_INIT if SPL
759         select SPL_STACK_R if SPL
760         select SUPPORT_SPL
761         imply FIT
762
763 config ARCH_MESON
764         bool "Amlogic Meson"
765         imply DISTRO_DEFAULTS
766         imply DM_RNG
767         help
768           Support for the Meson SoC family developed by Amlogic Inc.,
769           targeted at media players and tablet computers. We currently
770           support the S905 (GXBaby) 64-bit SoC.
771
772 config ARCH_MEDIATEK
773         bool "MediaTek SoCs"
774         select DM
775         select OF_CONTROL
776         select SPL_DM if SPL
777         select SPL_LIBCOMMON_SUPPORT if SPL
778         select SPL_LIBGENERIC_SUPPORT if SPL
779         select SPL_OF_CONTROL if SPL
780         select SUPPORT_SPL
781         help
782           Support for the MediaTek SoCs family developed by MediaTek Inc.
783           Please refer to doc/README.mediatek for more information.
784
785 config ARCH_LPC32XX
786         bool "NXP LPC32xx platform"
787         select CPU_ARM926EJS
788         select DM
789         select DM_GPIO
790         select DM_SERIAL
791         select SPL_DM if SPL
792         select SUPPORT_SPL
793         imply CMD_DM
794
795 config ARCH_IMX8
796         bool "NXP i.MX8 platform"
797         select ARM64
798         select DM
799         select OF_CONTROL
800         select ENABLE_ARM_SOC_BOOT0_HOOK
801
802 config ARCH_IMX8M
803         bool "NXP i.MX8M platform"
804         select ARM64
805         select DM
806         select SUPPORT_SPL
807         imply CMD_DM
808
809 config ARCH_IMXRT
810         bool "NXP i.MXRT platform"
811         select CPU_V7M
812         select DM
813         select DM_SERIAL
814         select SUPPORT_SPL
815         imply CMD_DM
816
817 config ARCH_MX23
818         bool "NXP i.MX23 family"
819         select CPU_ARM926EJS
820         select PL011_SERIAL
821         select SUPPORT_SPL
822
823 config ARCH_MX25
824         bool "NXP MX25"
825         select CPU_ARM926EJS
826         imply MXC_GPIO
827
828 config ARCH_MX28
829         bool "NXP i.MX28 family"
830         select CPU_ARM926EJS
831         select PL011_SERIAL
832         select SUPPORT_SPL
833
834 config ARCH_MX31
835         bool "NXP i.MX31 family"
836         select CPU_ARM1136
837
838 config ARCH_MX7ULP
839         bool "NXP MX7ULP"
840         select CPU_V7A
841         select ROM_UNIFIED_SECTIONS
842         imply MXC_GPIO
843         imply SYS_THUMB_BUILD
844
845 config ARCH_MX7
846         bool "Freescale MX7"
847         select ARCH_MISC_INIT
848         select BOARD_EARLY_INIT_F
849         select CPU_V7A
850         select SYS_FSL_HAS_SEC if IMX_HAB
851         select SYS_FSL_SEC_COMPAT_4
852         select SYS_FSL_SEC_LE
853         imply MXC_GPIO
854         imply SYS_THUMB_BUILD
855
856 config ARCH_MX6
857         bool "Freescale MX6"
858         select CPU_V7A
859         select SYS_FSL_HAS_SEC if IMX_HAB
860         select SYS_FSL_SEC_COMPAT_4
861         select SYS_FSL_SEC_LE
862         imply MXC_GPIO
863         imply SYS_THUMB_BUILD
864
865 if ARCH_MX6
866 config SPL_LDSCRIPT
867         default "arch/arm/mach-omap2/u-boot-spl.lds"
868 endif
869
870 config ARCH_MX5
871         bool "Freescale MX5"
872         select BOARD_EARLY_INIT_F
873         select CPU_V7A
874         imply MXC_GPIO
875
876 config ARCH_OWL
877         bool "Actions Semi OWL SoCs"
878         select DM
879         select DM_SERIAL
880         select OWL_SERIAL
881         select CLK
882         select CLK_OWL
883         select OF_CONTROL
884         select CONFIG_SYS_RELOC_GD_ENV_ADDR
885         imply CMD_DM
886
887 config ARCH_QEMU
888         bool "QEMU Virtual Platform"
889         select ARCH_SUPPORT_TFABOOT
890         select DM
891         select DM_SERIAL
892         select OF_CONTROL
893         select PL01X_SERIAL
894         imply CMD_DM
895         imply DM_RTC
896         imply RTC_PL031
897
898 config ARCH_RMOBILE
899         bool "Renesas ARM SoCs"
900         select BOARD_EARLY_INIT_F if !RZA1
901         select DM
902         select DM_SERIAL
903         imply CMD_DM
904         imply FAT_WRITE
905         imply SYS_THUMB_BUILD
906         imply ARCH_MISC_INIT if DISPLAY_CPUINFO
907
908 config TARGET_S32V234EVB
909         bool "Support s32v234evb"
910         select ARM64
911         select SYS_FSL_ERRATUM_ESDHC111
912
913 config ARCH_SNAPDRAGON
914         bool "Qualcomm Snapdragon SoCs"
915         select ARM64
916         select DM
917         select DM_GPIO
918         select DM_SERIAL
919         select MSM_SMEM
920         select OF_CONTROL
921         select OF_SEPARATE
922         select SMEM
923         select SPMI
924         imply CMD_DM
925
926 config ARCH_SOCFPGA
927         bool "Altera SOCFPGA family"
928         select ARCH_EARLY_INIT_R
929         select ARCH_MISC_INIT if !TARGET_SOCFPGA_ARRIA10
930         select ARM64 if TARGET_SOCFPGA_STRATIX10 || TARGET_SOCFPGA_AGILEX
931         select CPU_V7A if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
932         select DM
933         select DM_SERIAL
934         select ENABLE_ARM_SOC_BOOT0_HOOK if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
935         select OF_CONTROL
936         select SPL_DM_RESET if DM_RESET
937         select SPL_DM_SERIAL
938         select SPL_LIBCOMMON_SUPPORT
939         select SPL_LIBGENERIC_SUPPORT
940         select SPL_NAND_SUPPORT if SPL_NAND_DENALI
941         select SPL_OF_CONTROL
942         select SPL_SEPARATE_BSS if TARGET_SOCFPGA_STRATIX10 || TARGET_SOCFPGA_AGILEX
943         select SPL_SERIAL_SUPPORT
944         select SPL_SYSRESET
945         select SPL_WATCHDOG_SUPPORT
946         select SUPPORT_SPL
947         select SYS_NS16550
948         select SYS_THUMB_BUILD if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
949         select SYSRESET
950         select SYSRESET_SOCFPGA if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
951         select SYSRESET_SOCFPGA_S10 if TARGET_SOCFPGA_STRATIX10
952         imply CMD_DM
953         imply CMD_MTDPARTS
954         imply CRC32_VERIFY
955         imply DM_SPI
956         imply DM_SPI_FLASH
957         imply FAT_WRITE
958         imply SPL
959         imply SPL_DM
960         imply SPL_LIBDISK_SUPPORT
961         imply SPL_MMC_SUPPORT
962         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
963         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
964         imply SPL_SPI_FLASH_SUPPORT
965         imply SPL_SPI_SUPPORT
966         imply L2X0_CACHE
967
968 config ARCH_SUNXI
969         bool "Support sunxi (Allwinner) SoCs"
970         select BINMAN
971         select CMD_GPIO
972         select CMD_MMC if MMC
973         select CMD_USB if DISTRO_DEFAULTS
974         select CLK
975         select DM
976         select DM_ETH
977         select DM_GPIO
978         select DM_KEYBOARD
979         select DM_MMC if MMC
980         select DM_SCSI if SCSI
981         select DM_SERIAL
982         select DM_USB if DISTRO_DEFAULTS
983         select OF_BOARD_SETUP
984         select OF_CONTROL
985         select OF_SEPARATE
986         select SPECIFY_CONSOLE_INDEX
987         select SPL_STACK_R if SPL
988         select SPL_SYS_MALLOC_SIMPLE if SPL
989         select SPL_SYS_THUMB_BUILD if !ARM64
990         select SUNXI_GPIO
991         select SYS_NS16550
992         select SYS_THUMB_BUILD if !ARM64
993         select USB if DISTRO_DEFAULTS
994         select USB_KEYBOARD if DISTRO_DEFAULTS
995         select USB_STORAGE if DISTRO_DEFAULTS
996         select SPL_USE_TINY_PRINTF
997         select USE_PREBOOT
998         select SYS_RELOC_GD_ENV_ADDR
999         imply CMD_DM
1000         imply CMD_GPT
1001         imply CMD_UBI if MTD_RAW_NAND
1002         imply DISTRO_DEFAULTS
1003         imply FAT_WRITE
1004         imply FIT
1005         imply OF_LIBFDT_OVERLAY
1006         imply PRE_CONSOLE_BUFFER
1007         imply SPL_GPIO_SUPPORT
1008         imply SPL_LIBCOMMON_SUPPORT
1009         imply SPL_LIBGENERIC_SUPPORT
1010         imply SPL_MMC_SUPPORT if MMC
1011         imply SPL_POWER_SUPPORT
1012         imply SPL_SERIAL_SUPPORT
1013         imply USB_GADGET
1014
1015 config ARCH_U8500
1016         bool "ST-Ericsson U8500 Series"
1017         select CPU_V7A
1018         select DM
1019         select DM_GPIO
1020         select DM_MMC if MMC
1021         select DM_SERIAL
1022         select DM_USB if USB
1023         select OF_CONTROL
1024         select SYSRESET
1025         select TIMER
1026         imply ARM_PL180_MMCI
1027         imply DM_RTC
1028         imply NOMADIK_MTU_TIMER
1029         imply PL01X_SERIAL
1030         imply RTC_PL031
1031         imply SYSRESET_SYSCON
1032
1033 config ARCH_VERSAL
1034         bool "Support Xilinx Versal Platform"
1035         select ARM64
1036         select CLK
1037         select DM
1038         select DM_ETH if NET
1039         select DM_MMC if MMC
1040         select DM_SERIAL
1041         select OF_CONTROL
1042         imply BOARD_LATE_INIT
1043
1044 config ARCH_VF610
1045         bool "Freescale Vybrid"
1046         select CPU_V7A
1047         select SYS_FSL_ERRATUM_ESDHC111
1048         imply CMD_MTDPARTS
1049         imply MTD_RAW_NAND
1050
1051 config ARCH_ZYNQ
1052         bool "Xilinx Zynq based platform"
1053         select CLK
1054         select CLK_ZYNQ
1055         select CPU_V7A
1056         select DM
1057         select DM_ETH if NET
1058         select DM_MMC if MMC
1059         select DM_SERIAL
1060         select DM_SPI
1061         select DM_SPI_FLASH
1062         select DM_USB if USB
1063         select OF_CONTROL
1064         select SPI
1065         select SPL_BOARD_INIT if SPL
1066         select SPL_CLK if SPL
1067         select SPL_DM if SPL
1068         select SPL_OF_CONTROL if SPL
1069         select SPL_SEPARATE_BSS if SPL
1070         select SUPPORT_SPL
1071         imply ARCH_EARLY_INIT_R
1072         imply BOARD_LATE_INIT
1073         imply CMD_CLK
1074         imply CMD_DM
1075         imply CMD_SPL
1076         imply FAT_WRITE
1077
1078 config ARCH_ZYNQMP_R5
1079         bool "Xilinx ZynqMP R5 based platform"
1080         select CLK
1081         select CPU_V7R
1082         select DM
1083         select DM_ETH if NET
1084         select DM_MMC if MMC
1085         select DM_SERIAL
1086         select OF_CONTROL
1087         imply CMD_DM
1088         imply DM_USB_GADGET
1089
1090 config ARCH_ZYNQMP
1091         bool "Xilinx ZynqMP based platform"
1092         select ARM64
1093         select CLK
1094         select DM
1095         select DM_ETH if NET
1096         select DM_MAILBOX
1097         select DM_MMC if MMC
1098         select DM_SERIAL
1099         select DM_SPI if SPI
1100         select DM_SPI_FLASH if DM_SPI
1101         select DM_USB if USB
1102         select FIRMWARE
1103         select OF_CONTROL
1104         select SPL_BOARD_INIT if SPL
1105         select SPL_CLK if SPL
1106         select SPL_DM_MAILBOX if SPL
1107         select SPL_FIRMWARE if SPL
1108         select SPL_SEPARATE_BSS if SPL
1109         select SUPPORT_SPL
1110         select ZYNQMP_IPI
1111         imply BOARD_LATE_INIT
1112         imply CMD_DM
1113         imply FAT_WRITE
1114         imply MP
1115         imply DM_USB_GADGET
1116
1117 config TEGRA
1118         bool "NVIDIA Tegra"
1119         imply DISTRO_DEFAULTS
1120         imply FAT_WRITE
1121
1122 config TARGET_VEXPRESS64_AEMV8A
1123         bool "Support vexpress_aemv8a"
1124         select ARM64
1125         select PL01X_SERIAL
1126
1127 config TARGET_VEXPRESS64_BASE_FVP
1128         bool "Support Versatile Express ARMv8a FVP BASE model"
1129         select ARM64
1130         select PL01X_SERIAL
1131         select SEMIHOSTING
1132
1133 config TARGET_VEXPRESS64_JUNO
1134         bool "Support Versatile Express Juno Development Platform"
1135         select ARM64
1136         select PL01X_SERIAL
1137
1138 config TARGET_LS2080A_EMU
1139         bool "Support ls2080a_emu"
1140         select ARCH_LS2080A
1141         select ARM64
1142         select ARMV8_MULTIENTRY
1143         select FSL_DDR_SYNC_REFRESH
1144         help
1145           Support for Freescale LS2080A_EMU platform.
1146           The LS2080A Development System (EMULATOR) is a pre-silicon
1147           development platform that supports the QorIQ LS2080A
1148           Layerscape Architecture processor.
1149
1150 config TARGET_LS2080A_SIMU
1151         bool "Support ls2080a_simu"
1152         select ARCH_LS2080A
1153         select ARM64
1154         select ARMV8_MULTIENTRY
1155         select BOARD_LATE_INIT
1156         help
1157           Support for Freescale LS2080A_SIMU platform.
1158           The LS2080A Development System (QDS) is a pre silicon
1159           development platform that supports the QorIQ LS2080A
1160           Layerscape Architecture processor.
1161
1162 config TARGET_LS1088AQDS
1163         bool "Support ls1088aqds"
1164         select ARCH_LS1088A
1165         select ARM64
1166         select ARMV8_MULTIENTRY
1167         select ARCH_SUPPORT_TFABOOT
1168         select BOARD_LATE_INIT
1169         select SUPPORT_SPL
1170         select FSL_DDR_INTERACTIVE if !SD_BOOT
1171         help
1172           Support for NXP LS1088AQDS platform.
1173           The LS1088A Development System (QDS) is a high-performance
1174           development platform that supports the QorIQ LS1088A
1175           Layerscape Architecture processor.
1176
1177 config TARGET_LS2080AQDS
1178         bool "Support ls2080aqds"
1179         select ARCH_LS2080A
1180         select ARM64
1181         select ARMV8_MULTIENTRY
1182         select ARCH_SUPPORT_TFABOOT
1183         select BOARD_LATE_INIT
1184         select SUPPORT_SPL
1185         imply SCSI
1186         imply SCSI_AHCI
1187         select FSL_DDR_BIST
1188         select FSL_DDR_INTERACTIVE if !SPL
1189         help
1190           Support for Freescale LS2080AQDS platform.
1191           The LS2080A Development System (QDS) is a high-performance
1192           development platform that supports the QorIQ LS2080A
1193           Layerscape Architecture processor.
1194
1195 config TARGET_LS2080ARDB
1196         bool "Support ls2080ardb"
1197         select ARCH_LS2080A
1198         select ARM64
1199         select ARMV8_MULTIENTRY
1200         select ARCH_SUPPORT_TFABOOT
1201         select BOARD_LATE_INIT
1202         select SUPPORT_SPL
1203         select FSL_DDR_BIST
1204         select FSL_DDR_INTERACTIVE if !SPL
1205         imply SCSI
1206         imply SCSI_AHCI
1207         help
1208           Support for Freescale LS2080ARDB platform.
1209           The LS2080A Reference design board (RDB) is a high-performance
1210           development platform that supports the QorIQ LS2080A
1211           Layerscape Architecture processor.
1212
1213 config TARGET_LS2081ARDB
1214         bool "Support ls2081ardb"
1215         select ARCH_LS2080A
1216         select ARM64
1217         select ARMV8_MULTIENTRY
1218         select BOARD_LATE_INIT
1219         select SUPPORT_SPL
1220         help
1221           Support for Freescale LS2081ARDB platform.
1222           The LS2081A Reference design board (RDB) is a high-performance
1223           development platform that supports the QorIQ LS2081A/LS2041A
1224           Layerscape Architecture processor.
1225
1226 config TARGET_LX2160ARDB
1227         bool "Support lx2160ardb"
1228         select ARCH_LX2160A
1229         select ARM64
1230         select ARMV8_MULTIENTRY
1231         select ARCH_SUPPORT_TFABOOT
1232         select BOARD_LATE_INIT
1233         help
1234           Support for NXP LX2160ARDB platform.
1235           The lx2160ardb (LX2160A Reference design board (RDB)
1236           is a high-performance development platform that supports the
1237           QorIQ LX2160A/LX2120A/LX2080A Layerscape Architecture processor.
1238
1239 config TARGET_LX2160AQDS
1240         bool "Support lx2160aqds"
1241         select ARCH_LX2160A
1242         select ARM64
1243         select ARMV8_MULTIENTRY
1244         select ARCH_SUPPORT_TFABOOT
1245         select BOARD_LATE_INIT
1246         help
1247           Support for NXP LX2160AQDS platform.
1248           The lx2160aqds (LX2160A QorIQ Development System (QDS)
1249           is a high-performance development platform that supports the
1250           QorIQ LX2160A/LX2120A/LX2080A Layerscape Architecture processor.
1251
1252 config TARGET_HIKEY
1253         bool "Support HiKey 96boards Consumer Edition Platform"
1254         select ARM64
1255         select DM
1256         select DM_GPIO
1257         select DM_SERIAL
1258         select OF_CONTROL
1259         select PL01X_SERIAL
1260         select SPECIFY_CONSOLE_INDEX
1261         imply CMD_DM
1262           help
1263           Support for HiKey 96boards platform. It features a HI6220
1264           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
1265
1266 config TARGET_HIKEY960
1267         bool "Support HiKey960 96boards Consumer Edition Platform"
1268         select ARM64
1269         select DM
1270         select DM_SERIAL
1271         select OF_CONTROL
1272         select PL01X_SERIAL
1273         imply CMD_DM
1274           help
1275           Support for HiKey960 96boards platform. It features a HI3660
1276           SoC, with 4xA73 CPU, 4xA53 CPU, MALI-G71 GPU, and 3GB RAM.
1277
1278 config TARGET_POPLAR
1279         bool "Support Poplar 96boards Enterprise Edition Platform"
1280         select ARM64
1281         select DM
1282         select DM_SERIAL
1283         select DM_USB
1284         select OF_CONTROL
1285         select PL01X_SERIAL
1286         imply CMD_DM
1287           help
1288           Support for Poplar 96boards EE platform. It features a HI3798cv200
1289           SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
1290           making it capable of running any commercial set-top solution based on
1291           Linux or Android.
1292
1293 config TARGET_LS1012AQDS
1294         bool "Support ls1012aqds"
1295         select ARCH_LS1012A
1296         select ARM64
1297         select ARCH_SUPPORT_TFABOOT
1298         select BOARD_LATE_INIT
1299         help
1300           Support for Freescale LS1012AQDS platform.
1301           The LS1012A Development System (QDS) is a high-performance
1302           development platform that supports the QorIQ LS1012A
1303           Layerscape Architecture processor.
1304
1305 config TARGET_LS1012ARDB
1306         bool "Support ls1012ardb"
1307         select ARCH_LS1012A
1308         select ARM64
1309         select ARCH_SUPPORT_TFABOOT
1310         select BOARD_LATE_INIT
1311         imply SCSI
1312         imply SCSI_AHCI
1313         help
1314           Support for Freescale LS1012ARDB platform.
1315           The LS1012A Reference design board (RDB) is a high-performance
1316           development platform that supports the QorIQ LS1012A
1317           Layerscape Architecture processor.
1318
1319 config TARGET_LS1012A2G5RDB
1320         bool "Support ls1012a2g5rdb"
1321         select ARCH_LS1012A
1322         select ARM64
1323         select ARCH_SUPPORT_TFABOOT
1324         select BOARD_LATE_INIT
1325         imply SCSI
1326         help
1327           Support for Freescale LS1012A2G5RDB platform.
1328           The LS1012A 2G5 Reference design board (RDB) is a high-performance
1329           development platform that supports the QorIQ LS1012A
1330           Layerscape Architecture processor.
1331
1332 config TARGET_LS1012AFRWY
1333         bool "Support ls1012afrwy"
1334         select ARCH_LS1012A
1335         select ARM64
1336         select ARCH_SUPPORT_TFABOOT
1337         select BOARD_LATE_INIT
1338         imply SCSI
1339         imply SCSI_AHCI
1340         help
1341          Support for Freescale LS1012AFRWY platform.
1342          The LS1012A FRWY board (FRWY) is a high-performance
1343          development platform that supports the QorIQ LS1012A
1344          Layerscape Architecture processor.
1345
1346 config TARGET_LS1012AFRDM
1347         bool "Support ls1012afrdm"
1348         select ARCH_LS1012A
1349         select ARM64
1350         select ARCH_SUPPORT_TFABOOT
1351         help
1352           Support for Freescale LS1012AFRDM platform.
1353           The LS1012A Freedom  board (FRDM) is a high-performance
1354           development platform that supports the QorIQ LS1012A
1355           Layerscape Architecture processor.
1356
1357 config TARGET_LS1028AQDS
1358         bool "Support ls1028aqds"
1359         select ARCH_LS1028A
1360         select ARM64
1361         select ARMV8_MULTIENTRY
1362         select ARCH_SUPPORT_TFABOOT
1363         select BOARD_LATE_INIT
1364         help
1365           Support for Freescale LS1028AQDS platform
1366           The LS1028A Development System (QDS) is a high-performance
1367           development platform that supports the QorIQ LS1028A
1368           Layerscape Architecture processor.
1369
1370 config TARGET_LS1028ARDB
1371         bool "Support ls1028ardb"
1372         select ARCH_LS1028A
1373         select ARM64
1374         select ARMV8_MULTIENTRY
1375         select ARCH_SUPPORT_TFABOOT
1376         select BOARD_LATE_INIT
1377         help
1378           Support for Freescale LS1028ARDB platform
1379           The LS1028A Development System (RDB) is a high-performance
1380           development platform that supports the QorIQ LS1028A
1381           Layerscape Architecture processor.
1382
1383 config TARGET_LS1088ARDB
1384         bool "Support ls1088ardb"
1385         select ARCH_LS1088A
1386         select ARM64
1387         select ARMV8_MULTIENTRY
1388         select ARCH_SUPPORT_TFABOOT
1389         select BOARD_LATE_INIT
1390         select SUPPORT_SPL
1391         select FSL_DDR_INTERACTIVE if !SD_BOOT
1392         help
1393           Support for NXP LS1088ARDB platform.
1394           The LS1088A Reference design board (RDB) is a high-performance
1395           development platform that supports the QorIQ LS1088A
1396           Layerscape Architecture processor.
1397
1398 config TARGET_LS1021AQDS
1399         bool "Support ls1021aqds"
1400         select ARCH_LS1021A
1401         select ARCH_SUPPORT_PSCI
1402         select BOARD_EARLY_INIT_F
1403         select BOARD_LATE_INIT
1404         select CPU_V7A
1405         select CPU_V7_HAS_NONSEC
1406         select CPU_V7_HAS_VIRT
1407         select LS1_DEEP_SLEEP
1408         select SUPPORT_SPL
1409         select SYS_FSL_DDR
1410         select FSL_DDR_INTERACTIVE
1411         imply SCSI
1412
1413 config TARGET_LS1021ATWR
1414         bool "Support ls1021atwr"
1415         select ARCH_LS1021A
1416         select ARCH_SUPPORT_PSCI
1417         select BOARD_EARLY_INIT_F
1418         select BOARD_LATE_INIT
1419         select CPU_V7A
1420         select CPU_V7_HAS_NONSEC
1421         select CPU_V7_HAS_VIRT
1422         select LS1_DEEP_SLEEP
1423         select SUPPORT_SPL
1424         imply SCSI
1425
1426 config TARGET_LS1021ATSN
1427         bool "Support ls1021atsn"
1428         select ARCH_LS1021A
1429         select ARCH_SUPPORT_PSCI
1430         select BOARD_EARLY_INIT_F
1431         select BOARD_LATE_INIT
1432         select CPU_V7A
1433         select CPU_V7_HAS_NONSEC
1434         select CPU_V7_HAS_VIRT
1435         select LS1_DEEP_SLEEP
1436         select SUPPORT_SPL
1437         imply SCSI
1438
1439 config TARGET_LS1021AIOT
1440         bool "Support ls1021aiot"
1441         select ARCH_LS1021A
1442         select ARCH_SUPPORT_PSCI
1443         select BOARD_LATE_INIT
1444         select CPU_V7A
1445         select CPU_V7_HAS_NONSEC
1446         select CPU_V7_HAS_VIRT
1447         select SUPPORT_SPL
1448         imply SCSI
1449         help
1450           Support for Freescale LS1021AIOT platform.
1451           The LS1021A Freescale board (IOT) is a high-performance
1452           development platform that supports the QorIQ LS1021A
1453           Layerscape Architecture processor.
1454
1455 config TARGET_LS1043AQDS
1456         bool "Support ls1043aqds"
1457         select ARCH_LS1043A
1458         select ARM64
1459         select ARMV8_MULTIENTRY
1460         select ARCH_SUPPORT_TFABOOT
1461         select BOARD_EARLY_INIT_F
1462         select BOARD_LATE_INIT
1463         select SUPPORT_SPL
1464         select FSL_DDR_INTERACTIVE if !SPL
1465         imply SCSI
1466         imply SCSI_AHCI
1467         help
1468           Support for Freescale LS1043AQDS platform.
1469
1470 config TARGET_LS1043ARDB
1471         bool "Support ls1043ardb"
1472         select ARCH_LS1043A
1473         select ARM64
1474         select ARMV8_MULTIENTRY
1475         select ARCH_SUPPORT_TFABOOT
1476         select BOARD_EARLY_INIT_F
1477         select BOARD_LATE_INIT
1478         select SUPPORT_SPL
1479         help
1480           Support for Freescale LS1043ARDB platform.
1481
1482 config TARGET_LS1046AQDS
1483         bool "Support ls1046aqds"
1484         select ARCH_LS1046A
1485         select ARM64
1486         select ARMV8_MULTIENTRY
1487         select ARCH_SUPPORT_TFABOOT
1488         select BOARD_EARLY_INIT_F
1489         select BOARD_LATE_INIT
1490         select DM_SPI_FLASH if DM_SPI
1491         select SUPPORT_SPL
1492         select FSL_DDR_BIST if !SPL
1493         select FSL_DDR_INTERACTIVE  if !SPL
1494         select FSL_DDR_INTERACTIVE if !SPL
1495         imply SCSI
1496         help
1497           Support for Freescale LS1046AQDS platform.
1498           The LS1046A Development System (QDS) is a high-performance
1499           development platform that supports the QorIQ LS1046A
1500           Layerscape Architecture processor.
1501
1502 config TARGET_LS1046ARDB
1503         bool "Support ls1046ardb"
1504         select ARCH_LS1046A
1505         select ARM64
1506         select ARMV8_MULTIENTRY
1507         select ARCH_SUPPORT_TFABOOT
1508         select BOARD_EARLY_INIT_F
1509         select BOARD_LATE_INIT
1510         select DM_SPI_FLASH if DM_SPI
1511         select POWER_MC34VR500
1512         select SUPPORT_SPL
1513         select FSL_DDR_BIST
1514         select FSL_DDR_INTERACTIVE if !SPL
1515         imply SCSI
1516         help
1517           Support for Freescale LS1046ARDB platform.
1518           The LS1046A Reference Design Board (RDB) is a high-performance
1519           development platform that supports the QorIQ LS1046A
1520           Layerscape Architecture processor.
1521
1522 config TARGET_LS1046AFRWY
1523         bool "Support ls1046afrwy"
1524         select ARCH_LS1046A
1525         select ARM64
1526         select ARMV8_MULTIENTRY
1527         select ARCH_SUPPORT_TFABOOT
1528         select BOARD_EARLY_INIT_F
1529         select BOARD_LATE_INIT
1530         select DM_SPI_FLASH if DM_SPI
1531         imply SCSI
1532         help
1533           Support for Freescale LS1046AFRWY platform.
1534           The LS1046A Freeway Board (FRWY) is a high-performance
1535           development platform that supports the QorIQ LS1046A
1536           Layerscape Architecture processor.
1537
1538 config TARGET_COLIBRI_PXA270
1539         bool "Support colibri_pxa270"
1540         select CPU_PXA
1541
1542 config ARCH_UNIPHIER
1543         bool "Socionext UniPhier SoCs"
1544         select BOARD_LATE_INIT
1545         select DM
1546         select DM_GPIO
1547         select DM_I2C
1548         select DM_MMC
1549         select DM_MTD
1550         select DM_RESET
1551         select DM_SERIAL
1552         select DM_USB
1553         select OF_BOARD_SETUP
1554         select OF_CONTROL
1555         select OF_LIBFDT
1556         select PINCTRL
1557         select SPL_BOARD_INIT if SPL
1558         select SPL_DM if SPL
1559         select SPL_LIBCOMMON_SUPPORT if SPL
1560         select SPL_LIBGENERIC_SUPPORT if SPL
1561         select SPL_OF_CONTROL if SPL
1562         select SPL_PINCTRL if SPL
1563         select SUPPORT_SPL
1564         imply CMD_DM
1565         imply DISTRO_DEFAULTS
1566         imply FAT_WRITE
1567         help
1568           Support for UniPhier SoC family developed by Socionext Inc.
1569           (formerly, System LSI Business Division of Panasonic Corporation)
1570
1571 config STM32
1572         bool "Support STMicroelectronics STM32 MCU with cortex M"
1573         select CPU_V7M
1574         select DM
1575         select DM_SERIAL
1576         imply CMD_DM
1577
1578 config ARCH_STI
1579         bool "Support STMicrolectronics SoCs"
1580         select BLK
1581         select CPU_V7A
1582         select DM
1583         select DM_MMC
1584         select DM_RESET
1585         select DM_SERIAL
1586         imply CMD_DM
1587         help
1588           Support for STMicroelectronics STiH407/10 SoC family.
1589           This SoC is used on Linaro 96Board STiH410-B2260
1590
1591 config ARCH_STM32MP
1592         bool "Support STMicroelectronics STM32MP Socs with cortex A"
1593         select ARCH_MISC_INIT
1594         select ARCH_SUPPORT_TFABOOT
1595         select BOARD_LATE_INIT
1596         select CLK
1597         select DM
1598         select DM_GPIO
1599         select DM_RESET
1600         select DM_SERIAL
1601         select MISC
1602         select OF_CONTROL
1603         select OF_LIBFDT
1604         select OF_SYSTEM_SETUP
1605         select PINCTRL
1606         select REGMAP
1607         select SUPPORT_SPL
1608         select SYSCON
1609         select SYSRESET
1610         select SYS_THUMB_BUILD
1611         imply SPL_SYSRESET
1612         imply CMD_DM
1613         imply CMD_POWEROFF
1614         imply OF_LIBFDT_OVERLAY
1615         imply ENV_VARS_UBOOT_RUNTIME_CONFIG
1616         imply USE_PREBOOT
1617         help
1618           Support for STM32MP SoC family developed by STMicroelectronics,
1619           MPUs based on ARM cortex A core
1620           U-BOOT is running in DDR, loaded by the First Stage BootLoader (FSBL).
1621           FSBL can be TF-A: Trusted Firmware for Cortex A, for trusted boot
1622           chain.
1623           SPL is the unsecure FSBL for the basic boot chain.
1624
1625 config ARCH_ROCKCHIP
1626         bool "Support Rockchip SoCs"
1627         select BLK
1628         select BINMAN if !ARM64
1629         select DM
1630         select DM_GPIO
1631         select DM_I2C
1632         select DM_MMC
1633         select DM_PWM
1634         select DM_REGULATOR
1635         select DM_SERIAL
1636         select DM_SPI
1637         select DM_SPI_FLASH
1638         select DM_USB if USB
1639         select ENABLE_ARM_SOC_BOOT0_HOOK
1640         select OF_CONTROL
1641         select SPI
1642         select SPL_DM if SPL
1643         select SYS_MALLOC_F
1644         select SYS_THUMB_BUILD if !ARM64
1645         imply ADC
1646         imply CMD_DM
1647         imply DEBUG_UART_BOARD_INIT
1648         imply DISTRO_DEFAULTS
1649         imply FAT_WRITE
1650         imply SARADC_ROCKCHIP
1651         imply SPL_SYSRESET
1652         imply SPL_SYS_MALLOC_SIMPLE
1653         imply SYS_NS16550
1654         imply TPL_SYSRESET
1655         imply USB_FUNCTION_FASTBOOT
1656
1657 config TARGET_THUNDERX_88XX
1658         bool "Support ThunderX 88xx"
1659         select ARM64
1660         select OF_CONTROL
1661         select PL01X_SERIAL
1662         select SYS_CACHE_SHIFT_7
1663
1664 config ARCH_ASPEED
1665         bool "Support Aspeed SoCs"
1666         select DM
1667         select OF_CONTROL
1668         imply CMD_DM
1669
1670 config TARGET_DURIAN
1671         bool "Support Phytium Durian Platform"
1672         select ARM64
1673         help
1674           Support for durian platform.
1675           It has 2GB Sdram, uart and pcie.
1676
1677 config TARGET_PRESIDIO_ASIC
1678         bool "Support Cortina Presidio ASIC Platform"
1679         select ARM64
1680
1681 endchoice
1682
1683 config ARCH_SUPPORT_TFABOOT
1684         bool
1685
1686 config TFABOOT
1687         bool "Support for booting from TF-A"
1688         depends on ARCH_SUPPORT_TFABOOT
1689         default n
1690         help
1691           Enabling this will make a U-Boot binary that is capable of being
1692           booted via TF-A (Trusted Firmware for Cortex-A).
1693
1694 config TI_SECURE_DEVICE
1695         bool "HS Device Type Support"
1696         depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
1697         help
1698           If a high secure (HS) device type is being used, this config
1699           must be set. This option impacts various aspects of the
1700           build system (to create signed boot images that can be
1701           authenticated) and the code. See the doc/README.ti-secure
1702           file for further details.
1703
1704 if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
1705 config ISW_ENTRY_ADDR
1706         hex "Address in memory or XIP address of bootloader entry point"
1707         default 0x402F4000 if AM43XX
1708         default 0x402F0400 if AM33XX
1709         default 0x40301350 if OMAP54XX
1710         help
1711           After any reset, the boot ROM searches the boot media for a valid
1712           boot image. For non-XIP devices, the ROM then copies the image into
1713           internal memory. For all boot modes, after the ROM processes the
1714           boot image it eventually computes the entry point address depending
1715           on the device type (secure/non-secure), boot media (xip/non-xip) and
1716           image headers.
1717 endif
1718
1719 source "arch/arm/mach-aspeed/Kconfig"
1720
1721 source "arch/arm/mach-at91/Kconfig"
1722
1723 source "arch/arm/mach-bcm283x/Kconfig"
1724
1725 source "arch/arm/mach-bcmstb/Kconfig"
1726
1727 source "arch/arm/mach-davinci/Kconfig"
1728
1729 source "arch/arm/mach-exynos/Kconfig"
1730
1731 source "arch/arm/mach-highbank/Kconfig"
1732
1733 source "arch/arm/mach-integrator/Kconfig"
1734
1735 source "arch/arm/mach-k3/Kconfig"
1736
1737 source "arch/arm/mach-keystone/Kconfig"
1738
1739 source "arch/arm/mach-kirkwood/Kconfig"
1740
1741 source "arch/arm/cpu/arm926ejs/lpc32xx/Kconfig"
1742
1743 source "arch/arm/mach-mvebu/Kconfig"
1744
1745 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1746
1747 source "arch/arm/mach-imx/mx2/Kconfig"
1748
1749 source "arch/arm/mach-imx/mx3/Kconfig"
1750
1751 source "arch/arm/mach-imx/mx5/Kconfig"
1752
1753 source "arch/arm/mach-imx/mx6/Kconfig"
1754
1755 source "arch/arm/mach-imx/mx7/Kconfig"
1756
1757 source "arch/arm/mach-imx/mx7ulp/Kconfig"
1758
1759 source "arch/arm/mach-imx/imx8/Kconfig"
1760
1761 source "arch/arm/mach-imx/imx8m/Kconfig"
1762
1763 source "arch/arm/mach-imx/imxrt/Kconfig"
1764
1765 source "arch/arm/mach-imx/mxs/Kconfig"
1766
1767 source "arch/arm/mach-omap2/Kconfig"
1768
1769 source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1770
1771 source "arch/arm/mach-orion5x/Kconfig"
1772
1773 source "arch/arm/mach-owl/Kconfig"
1774
1775 source "arch/arm/mach-rmobile/Kconfig"
1776
1777 source "arch/arm/mach-meson/Kconfig"
1778
1779 source "arch/arm/mach-mediatek/Kconfig"
1780
1781 source "arch/arm/mach-qemu/Kconfig"
1782
1783 source "arch/arm/mach-rockchip/Kconfig"
1784
1785 source "arch/arm/mach-s5pc1xx/Kconfig"
1786
1787 source "arch/arm/mach-snapdragon/Kconfig"
1788
1789 source "arch/arm/mach-socfpga/Kconfig"
1790
1791 source "arch/arm/mach-sti/Kconfig"
1792
1793 source "arch/arm/mach-stm32/Kconfig"
1794
1795 source "arch/arm/mach-stm32mp/Kconfig"
1796
1797 source "arch/arm/mach-sunxi/Kconfig"
1798
1799 source "arch/arm/mach-tegra/Kconfig"
1800
1801 source "arch/arm/mach-u8500/Kconfig"
1802
1803 source "arch/arm/mach-uniphier/Kconfig"
1804
1805 source "arch/arm/cpu/armv7/vf610/Kconfig"
1806
1807 source "arch/arm/mach-zynq/Kconfig"
1808
1809 source "arch/arm/mach-zynqmp/Kconfig"
1810
1811 source "arch/arm/mach-versal/Kconfig"
1812
1813 source "arch/arm/mach-zynqmp-r5/Kconfig"
1814
1815 source "arch/arm/cpu/armv7/Kconfig"
1816
1817 source "arch/arm/cpu/armv8/Kconfig"
1818
1819 source "arch/arm/mach-imx/Kconfig"
1820
1821 source "board/bosch/shc/Kconfig"
1822 source "board/bosch/guardian/Kconfig"
1823 source "board/CarMediaLab/flea3/Kconfig"
1824 source "board/Marvell/aspenite/Kconfig"
1825 source "board/Marvell/gplugd/Kconfig"
1826 source "board/armadeus/apf27/Kconfig"
1827 source "board/armltd/vexpress/Kconfig"
1828 source "board/armltd/vexpress64/Kconfig"
1829 source "board/cortina/presidio-asic/Kconfig"
1830 source "board/broadcom/bcm23550_w1d/Kconfig"
1831 source "board/broadcom/bcm28155_ap/Kconfig"
1832 source "board/broadcom/bcm963158/Kconfig"
1833 source "board/broadcom/bcm968360bg/Kconfig"
1834 source "board/broadcom/bcm968580xref/Kconfig"
1835 source "board/broadcom/bcmcygnus/Kconfig"
1836 source "board/broadcom/bcmnsp/Kconfig"
1837 source "board/broadcom/bcmns2/Kconfig"
1838 source "board/cavium/thunderx/Kconfig"
1839 source "board/cirrus/edb93xx/Kconfig"
1840 source "board/eets/pdu001/Kconfig"
1841 source "board/emulation/qemu-arm/Kconfig"
1842 source "board/freescale/ls2080a/Kconfig"
1843 source "board/freescale/ls2080aqds/Kconfig"
1844 source "board/freescale/ls2080ardb/Kconfig"
1845 source "board/freescale/ls1088a/Kconfig"
1846 source "board/freescale/ls1028a/Kconfig"
1847 source "board/freescale/ls1021aqds/Kconfig"
1848 source "board/freescale/ls1043aqds/Kconfig"
1849 source "board/freescale/ls1021atwr/Kconfig"
1850 source "board/freescale/ls1021atsn/Kconfig"
1851 source "board/freescale/ls1021aiot/Kconfig"
1852 source "board/freescale/ls1046aqds/Kconfig"
1853 source "board/freescale/ls1043ardb/Kconfig"
1854 source "board/freescale/ls1046ardb/Kconfig"
1855 source "board/freescale/ls1046afrwy/Kconfig"
1856 source "board/freescale/ls1012aqds/Kconfig"
1857 source "board/freescale/ls1012ardb/Kconfig"
1858 source "board/freescale/ls1012afrdm/Kconfig"
1859 source "board/freescale/lx2160a/Kconfig"
1860 source "board/freescale/mx35pdk/Kconfig"
1861 source "board/freescale/s32v234evb/Kconfig"
1862 source "board/grinn/chiliboard/Kconfig"
1863 source "board/gumstix/pepper/Kconfig"
1864 source "board/hisilicon/hikey/Kconfig"
1865 source "board/hisilicon/hikey960/Kconfig"
1866 source "board/hisilicon/poplar/Kconfig"
1867 source "board/isee/igep003x/Kconfig"
1868 source "board/phytec/pcm051/Kconfig"
1869 source "board/silica/pengwyn/Kconfig"
1870 source "board/spear/spear300/Kconfig"
1871 source "board/spear/spear310/Kconfig"
1872 source "board/spear/spear320/Kconfig"
1873 source "board/spear/spear600/Kconfig"
1874 source "board/spear/x600/Kconfig"
1875 source "board/st/stv0991/Kconfig"
1876 source "board/tcl/sl50/Kconfig"
1877 source "board/birdland/bav335x/Kconfig"
1878 source "board/toradex/colibri_pxa270/Kconfig"
1879 source "board/variscite/dart_6ul/Kconfig"
1880 source "board/vscom/baltos/Kconfig"
1881 source "board/xilinx/Kconfig"
1882 source "board/xilinx/zynq/Kconfig"
1883 source "board/xilinx/zynqmp/Kconfig"
1884 source "board/phytium/durian/Kconfig"
1885
1886 source "arch/arm/Kconfig.debug"
1887
1888 endmenu
1889
1890 config SPL_LDSCRIPT
1891         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1892         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1893         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1894
1895