ARM: at91: Enable SPL_SEPARATE_BSS by default
[platform/kernel/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 choice
344         prompt "Select the ARM data write cache policy"
345         default SYS_ARM_CACHE_WRITETHROUGH if TARGET_BCMCYGNUS || \
346                                               TARGET_BCMNSP || CPU_PXA || RZA1
347         default SYS_ARM_CACHE_WRITEBACK
348
349 config SYS_ARM_CACHE_WRITEBACK
350         bool "Write-back (WB)"
351         help
352           A write updates the cache only and marks the cache line as dirty.
353           External memory is updated only when the line is evicted or explicitly
354           cleaned.
355
356 config SYS_ARM_CACHE_WRITETHROUGH
357         bool "Write-through (WT)"
358         help
359           A write updates both the cache and the external memory system.
360           This does not mark the cache line as dirty.
361
362 config SYS_ARM_CACHE_WRITEALLOC
363         bool "Write allocation (WA)"
364         help
365           A cache line is allocated on a write miss. This means that executing a
366           store instruction on the processor might cause a burst read to occur.
367           There is a linefill to obtain the data for the cache line, before the
368           write is performed.
369 endchoice
370
371 config ARCH_CPU_INIT
372         bool "Enable ARCH_CPU_INIT"
373         help
374           Some architectures require a call to arch_cpu_init().
375           Say Y here to enable it
376
377 config SYS_ARCH_TIMER
378         bool "ARM Generic Timer support"
379         depends on CPU_V7A || ARM64
380         default y if ARM64
381         help
382           The ARM Generic Timer (aka arch-timer) provides an architected
383           interface to a timer source on an SoC.
384           It is mandatory for ARMv8 implementation and widely available
385           on ARMv7 systems.
386
387 config ARM_SMCCC
388         bool "Support for ARM SMC Calling Convention (SMCCC)"
389         depends on CPU_V7A || ARM64
390         select ARM_PSCI_FW
391         help
392           Say Y here if you want to enable ARM SMC Calling Convention.
393           This should be enabled if U-Boot needs to communicate with system
394           firmware (for example, PSCI) according to SMCCC.
395
396 config SEMIHOSTING
397         bool "support boot from semihosting"
398         help
399           In emulated environments, semihosting is a way for
400           the hosted environment to call out to the emulator to
401           retrieve files from the host machine.
402
403 config SYS_THUMB_BUILD
404         bool "Build U-Boot using the Thumb instruction set"
405         depends on !ARM64
406         help
407            Use this flag to build U-Boot using the Thumb instruction set for
408            ARM architectures. Thumb instruction set provides better code
409            density. For ARM architectures that support Thumb2 this flag will
410            result in Thumb2 code generated by GCC.
411
412 config SPL_SYS_THUMB_BUILD
413         bool "Build SPL using the Thumb instruction set"
414         default y if SYS_THUMB_BUILD
415         depends on !ARM64 && SPL
416         help
417            Use this flag to build SPL using the Thumb instruction set for
418            ARM architectures. Thumb instruction set provides better code
419            density. For ARM architectures that support Thumb2 this flag will
420            result in Thumb2 code generated by GCC.
421
422 config TPL_SYS_THUMB_BUILD
423         bool "Build TPL using the Thumb instruction set"
424         default y if SYS_THUMB_BUILD
425         depends on TPL && !ARM64
426         help
427            Use this flag to build TPL using the Thumb instruction set for
428            ARM architectures. Thumb instruction set provides better code
429            density. For ARM architectures that support Thumb2 this flag will
430            result in Thumb2 code generated by GCC.
431
432
433 config SYS_L2CACHE_OFF
434         bool "L2cache off"
435         help
436           If SoC does not support L2CACHE or one does not want to enable
437           L2CACHE, choose this option.
438
439 config ENABLE_ARM_SOC_BOOT0_HOOK
440         bool "prepare BOOT0 header"
441         help
442           If the SoC's BOOT0 requires a header area filled with (magic)
443           values, then choose this option, and create a file included as
444           <asm/arch/boot0.h> which contains the required assembler code.
445
446 config ARM_CORTEX_CPU_IS_UP
447         bool
448         default n
449
450 config USE_ARCH_MEMCPY
451         bool "Use an assembly optimized implementation of memcpy"
452         default y
453         depends on !ARM64
454         help
455           Enable the generation of an optimized version of memcpy.
456           Such an implementation may be faster under some conditions
457           but may increase the binary size.
458
459 config SPL_USE_ARCH_MEMCPY
460         bool "Use an assembly optimized implementation of memcpy for SPL"
461         default y if USE_ARCH_MEMCPY
462         depends on !ARM64 && SPL
463         help
464           Enable the generation of an optimized version of memcpy.
465           Such an implementation may be faster under some conditions
466           but may increase the binary size.
467
468 config TPL_USE_ARCH_MEMCPY
469         bool "Use an assembly optimized implementation of memcpy for TPL"
470         default y if USE_ARCH_MEMCPY
471         depends on !ARM64 && TPL
472         help
473           Enable the generation of an optimized version of memcpy.
474           Such an implementation may be faster under some conditions
475           but may increase the binary size.
476
477 config USE_ARCH_MEMSET
478         bool "Use an assembly optimized implementation of memset"
479         default y
480         depends on !ARM64
481         help
482           Enable the generation of an optimized version of memset.
483           Such an implementation may be faster under some conditions
484           but may increase the binary size.
485
486 config SPL_USE_ARCH_MEMSET
487         bool "Use an assembly optimized implementation of memset for SPL"
488         default y if USE_ARCH_MEMSET
489         depends on !ARM64 && SPL
490         help
491           Enable the generation of an optimized version of memset.
492           Such an implementation may be faster under some conditions
493           but may increase the binary size.
494
495 config TPL_USE_ARCH_MEMSET
496         bool "Use an assembly optimized implementation of memset for TPL"
497         default y if USE_ARCH_MEMSET
498         depends on !ARM64 && TPL
499         help
500           Enable the generation of an optimized version of memset.
501           Such an implementation may be faster under some conditions
502           but may increase the binary size.
503
504 config SET_STACK_SIZE
505         bool "Enable an option to set max stack size that can be used"
506         default y if ARCH_VERSAL || ARCH_ZYNQMP || ARCH_ZYNQ
507         help
508           This will enable an option to set max stack size that can be
509           used by U-Boot.
510
511 config STACK_SIZE
512         hex "Define max stack size that can be used by U-Boot"
513         depends on SET_STACK_SIZE
514         default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP
515         default 0x1000000 if ARCH_ZYNQ
516         help
517           Define Max stack size that can be used by U-Boot so that the
518           initrd_high will be calculated as base stack pointer minus this
519           stack size.
520
521 config ARM64_SUPPORT_AARCH32
522         bool "ARM64 system support AArch32 execution state"
523         depends on ARM64
524         default y if !TARGET_THUNDERX_88XX
525         help
526           This ARM64 system supports AArch32 execution state.
527
528 choice
529         prompt "Target select"
530         default TARGET_HIKEY
531
532 config ARCH_AT91
533         bool "Atmel AT91"
534         select SPL_BOARD_INIT if SPL && !TARGET_SMARTWEB
535         select SPL_SEPARATE_BSS if SPL
536
537 config TARGET_EDB93XX
538         bool "Support edb93xx"
539         select CPU_ARM920T
540         select PL010_SERIAL
541
542 config TARGET_ASPENITE
543         bool "Support aspenite"
544         select CPU_ARM926EJS
545
546 config TARGET_GPLUGD
547         bool "Support gplugd"
548         select CPU_ARM926EJS
549
550 config ARCH_DAVINCI
551         bool "TI DaVinci"
552         select CPU_ARM926EJS
553         imply CMD_SAVES
554         help
555           Support for TI's DaVinci platform.
556
557 config ARCH_KIRKWOOD
558         bool "Marvell Kirkwood"
559         select ARCH_MISC_INIT
560         select BOARD_EARLY_INIT_F
561         select CPU_ARM926EJS
562
563 config ARCH_MVEBU
564         bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
565         select DM
566         select DM_ETH
567         select DM_SERIAL
568         select DM_SPI
569         select DM_SPI_FLASH
570         select OF_CONTROL
571         select OF_SEPARATE
572         select SPI
573         imply CMD_DM
574
575 config TARGET_APF27
576         bool "Support apf27"
577         select CPU_ARM926EJS
578         select SUPPORT_SPL
579
580 config ARCH_ORION5X
581         bool "Marvell Orion"
582         select CPU_ARM926EJS
583
584 config TARGET_SPEAR300
585         bool "Support spear300"
586         select BOARD_EARLY_INIT_F
587         select CPU_ARM926EJS
588         select PL011_SERIAL
589         imply CMD_SAVES
590
591 config TARGET_SPEAR310
592         bool "Support spear310"
593         select BOARD_EARLY_INIT_F
594         select CPU_ARM926EJS
595         select PL011_SERIAL
596         imply CMD_SAVES
597
598 config TARGET_SPEAR320
599         bool "Support spear320"
600         select BOARD_EARLY_INIT_F
601         select CPU_ARM926EJS
602         select PL011_SERIAL
603         imply CMD_SAVES
604
605 config TARGET_SPEAR600
606         bool "Support spear600"
607         select BOARD_EARLY_INIT_F
608         select CPU_ARM926EJS
609         select PL011_SERIAL
610         imply CMD_SAVES
611
612 config TARGET_STV0991
613         bool "Support stv0991"
614         select CPU_V7A
615         select DM
616         select DM_SERIAL
617         select DM_SPI
618         select DM_SPI_FLASH
619         select PL01X_SERIAL
620         select SPI
621         select SPI_FLASH
622         imply CMD_DM
623
624 config TARGET_X600
625         bool "Support x600"
626         select BOARD_LATE_INIT
627         select CPU_ARM926EJS
628         select PL011_SERIAL
629         select SUPPORT_SPL
630
631 config TARGET_FLEA3
632         bool "Support flea3"
633         select CPU_ARM1136
634
635 config TARGET_MX35PDK
636         bool "Support mx35pdk"
637         select BOARD_LATE_INIT
638         select CPU_ARM1136
639
640 config ARCH_BCM283X
641         bool "Broadcom BCM283X family"
642         select DM
643         select DM_GPIO
644         select DM_SERIAL
645         select OF_CONTROL
646         select PL01X_SERIAL
647         select SERIAL_SEARCH_ALL
648         imply CMD_DM
649         imply FAT_WRITE
650
651 config ARCH_BCM63158
652         bool "Broadcom BCM63158 family"
653         select DM
654         select OF_CONTROL
655         imply CMD_DM
656
657 config ARCH_BCM68360
658         bool "Broadcom BCM68360 family"
659         select DM
660         select OF_CONTROL
661         imply CMD_DM
662
663 config ARCH_BCM6858
664         bool "Broadcom BCM6858 family"
665         select DM
666         select OF_CONTROL
667         imply CMD_DM
668
669 config TARGET_VEXPRESS_CA15_TC2
670         bool "Support vexpress_ca15_tc2"
671         select CPU_V7A
672         select CPU_V7_HAS_NONSEC
673         select CPU_V7_HAS_VIRT
674         select PL011_SERIAL
675
676 config ARCH_BCMSTB
677         bool "Broadcom BCM7XXX family"
678         select CPU_V7A
679         select DM
680         select OF_CONTROL
681         select OF_PRIOR_STAGE
682         imply CMD_DM
683         help
684           This enables support for Broadcom ARM-based set-top box
685           chipsets, including the 7445 family of chips.
686
687 config TARGET_VEXPRESS_CA5X2
688         bool "Support vexpress_ca5x2"
689         select CPU_V7A
690         select PL011_SERIAL
691
692 config TARGET_VEXPRESS_CA9X4
693         bool "Support vexpress_ca9x4"
694         select CPU_V7A
695         select PL011_SERIAL
696
697 config TARGET_BCM23550_W1D
698         bool "Support bcm23550_w1d"
699         select CPU_V7A
700         imply CRC32_VERIFY
701         imply FAT_WRITE
702
703 config TARGET_BCM28155_AP
704         bool "Support bcm28155_ap"
705         select CPU_V7A
706         imply CRC32_VERIFY
707         imply FAT_WRITE
708
709 config TARGET_BCMCYGNUS
710         bool "Support bcmcygnus"
711         select CPU_V7A
712         imply BCM_SF2_ETH
713         imply BCM_SF2_ETH_GMAC
714         imply CMD_HASH
715         imply CRC32_VERIFY
716         imply FAT_WRITE
717         imply HASH_VERIFY
718         imply NETDEVICES
719
720 config TARGET_BCMNSP
721         bool "Support bcmnsp"
722         select CPU_V7A
723
724 config TARGET_BCMNS2
725         bool "Support Broadcom Northstar2"
726         select ARM64
727         help
728           Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
729           ARMv8 Cortex-A57 processors targeting a broad range of networking
730           applications.
731
732 config ARCH_EXYNOS
733         bool "Samsung EXYNOS"
734         select DM
735         select DM_GPIO
736         select DM_I2C
737         select DM_KEYBOARD
738         select DM_SERIAL
739         select DM_SPI
740         select DM_SPI_FLASH
741         select SPI
742         imply SYS_THUMB_BUILD
743         imply CMD_DM
744         imply FAT_WRITE
745
746 config ARCH_S5PC1XX
747         bool "Samsung S5PC1XX"
748         select CPU_V7A
749         select DM
750         select DM_GPIO
751         select DM_I2C
752         select DM_SERIAL
753         imply CMD_DM
754
755 config ARCH_HIGHBANK
756         bool "Calxeda Highbank"
757         select CPU_V7A
758         select PL011_SERIAL
759
760 config ARCH_INTEGRATOR
761         bool "ARM Ltd. Integrator family"
762         select DM
763         select DM_SERIAL
764         select PL01X_SERIAL
765         imply CMD_DM
766
767 config ARCH_KEYSTONE
768         bool "TI Keystone"
769         select CMD_POWEROFF
770         select CPU_V7A
771         select SUPPORT_SPL
772         select SYS_ARCH_TIMER
773         select SYS_THUMB_BUILD
774         imply CMD_MTDPARTS
775         imply CMD_SAVES
776         imply FIT
777
778 config ARCH_K3
779         bool "Texas Instruments' K3 Architecture"
780         select SPL
781         select SUPPORT_SPL
782         select FIT
783
784 config ARCH_OMAP2PLUS
785         bool "TI OMAP2+"
786         select CPU_V7A
787         select SPL_BOARD_INIT if SPL
788         select SPL_STACK_R if SPL
789         select SUPPORT_SPL
790         imply FIT
791
792 config ARCH_MESON
793         bool "Amlogic Meson"
794         imply DISTRO_DEFAULTS
795         imply DM_RNG
796         help
797           Support for the Meson SoC family developed by Amlogic Inc.,
798           targeted at media players and tablet computers. We currently
799           support the S905 (GXBaby) 64-bit SoC.
800
801 config ARCH_MEDIATEK
802         bool "MediaTek SoCs"
803         select DM
804         select OF_CONTROL
805         select SPL_DM if SPL
806         select SPL_LIBCOMMON_SUPPORT if SPL
807         select SPL_LIBGENERIC_SUPPORT if SPL
808         select SPL_OF_CONTROL if SPL
809         select SUPPORT_SPL
810         help
811           Support for the MediaTek SoCs family developed by MediaTek Inc.
812           Please refer to doc/README.mediatek for more information.
813
814 config ARCH_LPC32XX
815         bool "NXP LPC32xx platform"
816         select CPU_ARM926EJS
817         select DM
818         select DM_GPIO
819         select DM_SERIAL
820         select SPL_DM if SPL
821         select SUPPORT_SPL
822         imply CMD_DM
823
824 config ARCH_IMX8
825         bool "NXP i.MX8 platform"
826         select ARM64
827         select DM
828         select OF_CONTROL
829         select ENABLE_ARM_SOC_BOOT0_HOOK
830
831 config ARCH_IMX8M
832         bool "NXP i.MX8M platform"
833         select ARM64
834         select DM
835         select SUPPORT_SPL
836         imply CMD_DM
837
838 config ARCH_IMXRT
839         bool "NXP i.MXRT platform"
840         select CPU_V7M
841         select DM
842         select DM_SERIAL
843         select SUPPORT_SPL
844         imply CMD_DM
845
846 config ARCH_MX23
847         bool "NXP i.MX23 family"
848         select CPU_ARM926EJS
849         select PL011_SERIAL
850         select SUPPORT_SPL
851
852 config ARCH_MX25
853         bool "NXP MX25"
854         select CPU_ARM926EJS
855         imply MXC_GPIO
856
857 config ARCH_MX28
858         bool "NXP i.MX28 family"
859         select CPU_ARM926EJS
860         select PL011_SERIAL
861         select SUPPORT_SPL
862
863 config ARCH_MX31
864         bool "NXP i.MX31 family"
865         select CPU_ARM1136
866
867 config ARCH_MX7ULP
868         bool "NXP MX7ULP"
869         select CPU_V7A
870         select ROM_UNIFIED_SECTIONS
871         imply MXC_GPIO
872         imply SYS_THUMB_BUILD
873
874 config ARCH_MX7
875         bool "Freescale MX7"
876         select ARCH_MISC_INIT
877         select BOARD_EARLY_INIT_F
878         select CPU_V7A
879         select SYS_FSL_HAS_SEC if IMX_HAB
880         select SYS_FSL_SEC_COMPAT_4
881         select SYS_FSL_SEC_LE
882         imply MXC_GPIO
883         imply SYS_THUMB_BUILD
884
885 config ARCH_MX6
886         bool "Freescale MX6"
887         select CPU_V7A
888         select SYS_FSL_HAS_SEC if IMX_HAB
889         select SYS_FSL_SEC_COMPAT_4
890         select SYS_FSL_SEC_LE
891         imply MXC_GPIO
892         imply SYS_THUMB_BUILD
893
894 if ARCH_MX6
895 config SPL_LDSCRIPT
896         default "arch/arm/mach-omap2/u-boot-spl.lds"
897 endif
898
899 config ARCH_MX5
900         bool "Freescale MX5"
901         select BOARD_EARLY_INIT_F
902         select CPU_V7A
903         imply MXC_GPIO
904
905 config ARCH_OWL
906         bool "Actions Semi OWL SoCs"
907         select DM
908         select DM_SERIAL
909         select OWL_SERIAL
910         select CLK
911         select CLK_OWL
912         select OF_CONTROL
913         select SYS_RELOC_GD_ENV_ADDR
914         imply CMD_DM
915
916 config ARCH_QEMU
917         bool "QEMU Virtual Platform"
918         select ARCH_SUPPORT_TFABOOT
919         select DM
920         select DM_SERIAL
921         select OF_CONTROL
922         select PL01X_SERIAL
923         imply CMD_DM
924         imply DM_RTC
925         imply RTC_PL031
926
927 config ARCH_RMOBILE
928         bool "Renesas ARM SoCs"
929         select BOARD_EARLY_INIT_F if !RZA1
930         select DM
931         select DM_SERIAL
932         imply CMD_DM
933         imply FAT_WRITE
934         imply SYS_THUMB_BUILD
935         imply ARCH_MISC_INIT if DISPLAY_CPUINFO
936
937 config TARGET_S32V234EVB
938         bool "Support s32v234evb"
939         select ARM64
940         select SYS_FSL_ERRATUM_ESDHC111
941
942 config ARCH_SNAPDRAGON
943         bool "Qualcomm Snapdragon SoCs"
944         select ARM64
945         select DM
946         select DM_GPIO
947         select DM_SERIAL
948         select MSM_SMEM
949         select OF_CONTROL
950         select OF_SEPARATE
951         select SMEM
952         select SPMI
953         imply CMD_DM
954
955 config ARCH_SOCFPGA
956         bool "Altera SOCFPGA family"
957         select ARCH_EARLY_INIT_R
958         select ARCH_MISC_INIT if !TARGET_SOCFPGA_ARRIA10
959         select ARM64 if TARGET_SOCFPGA_STRATIX10 || TARGET_SOCFPGA_AGILEX
960         select CPU_V7A if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
961         select DM
962         select DM_SERIAL
963         select ENABLE_ARM_SOC_BOOT0_HOOK if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
964         select OF_CONTROL
965         select SPL_DM_RESET if DM_RESET
966         select SPL_DM_SERIAL
967         select SPL_LIBCOMMON_SUPPORT
968         select SPL_LIBGENERIC_SUPPORT
969         select SPL_NAND_SUPPORT if SPL_NAND_DENALI
970         select SPL_OF_CONTROL
971         select SPL_SEPARATE_BSS if TARGET_SOCFPGA_STRATIX10 || TARGET_SOCFPGA_AGILEX
972         select SPL_SERIAL_SUPPORT
973         select SPL_SYSRESET
974         select SPL_WATCHDOG_SUPPORT
975         select SUPPORT_SPL
976         select SYS_NS16550
977         select SYS_THUMB_BUILD if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
978         select SYSRESET
979         select SYSRESET_SOCFPGA if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
980         select SYSRESET_SOCFPGA_S10 if TARGET_SOCFPGA_STRATIX10
981         imply CMD_DM
982         imply CMD_MTDPARTS
983         imply CRC32_VERIFY
984         imply DM_SPI
985         imply DM_SPI_FLASH
986         imply FAT_WRITE
987         imply SPL
988         imply SPL_DM
989         imply SPL_LIBDISK_SUPPORT
990         imply SPL_MMC_SUPPORT
991         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
992         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
993         imply SPL_SPI_FLASH_SUPPORT
994         imply SPL_SPI_SUPPORT
995         imply L2X0_CACHE
996
997 config ARCH_SUNXI
998         bool "Support sunxi (Allwinner) SoCs"
999         select BINMAN
1000         select CMD_GPIO
1001         select CMD_MMC if MMC
1002         select CMD_USB if DISTRO_DEFAULTS
1003         select CLK
1004         select DM
1005         select DM_ETH
1006         select DM_GPIO
1007         select DM_KEYBOARD
1008         select DM_MMC if MMC
1009         select DM_SCSI if SCSI
1010         select DM_SERIAL
1011         select DM_USB if DISTRO_DEFAULTS
1012         select OF_BOARD_SETUP
1013         select OF_CONTROL
1014         select OF_SEPARATE
1015         select SPECIFY_CONSOLE_INDEX
1016         select SPL_STACK_R if SPL
1017         select SPL_SYS_MALLOC_SIMPLE if SPL
1018         select SPL_SYS_THUMB_BUILD if !ARM64
1019         select SUNXI_GPIO
1020         select SYS_NS16550
1021         select SYS_THUMB_BUILD if !ARM64
1022         select USB if DISTRO_DEFAULTS
1023         select USB_KEYBOARD if DISTRO_DEFAULTS
1024         select USB_STORAGE if DISTRO_DEFAULTS
1025         select SPL_USE_TINY_PRINTF
1026         select USE_PREBOOT
1027         select SYS_RELOC_GD_ENV_ADDR
1028         imply CMD_DM
1029         imply CMD_GPT
1030         imply CMD_UBI if MTD_RAW_NAND
1031         imply DISTRO_DEFAULTS
1032         imply FAT_WRITE
1033         imply FIT
1034         imply OF_LIBFDT_OVERLAY
1035         imply PRE_CONSOLE_BUFFER
1036         imply SPL_GPIO_SUPPORT
1037         imply SPL_LIBCOMMON_SUPPORT
1038         imply SPL_LIBGENERIC_SUPPORT
1039         imply SPL_MMC_SUPPORT if MMC
1040         imply SPL_POWER_SUPPORT
1041         imply SPL_SERIAL_SUPPORT
1042         imply USB_GADGET
1043
1044 config ARCH_U8500
1045         bool "ST-Ericsson U8500 Series"
1046         select CPU_V7A
1047         select DM
1048         select DM_GPIO
1049         select DM_MMC if MMC
1050         select DM_SERIAL
1051         select DM_USB if USB
1052         select OF_CONTROL
1053         select SYSRESET
1054         select TIMER
1055         imply ARM_PL180_MMCI
1056         imply DM_RTC
1057         imply NOMADIK_MTU_TIMER
1058         imply PL01X_SERIAL
1059         imply RTC_PL031
1060         imply SYSRESET_SYSCON
1061
1062 config ARCH_VERSAL
1063         bool "Support Xilinx Versal Platform"
1064         select ARM64
1065         select CLK
1066         select DM
1067         select DM_ETH if NET
1068         select DM_MMC if MMC
1069         select DM_SERIAL
1070         select OF_CONTROL
1071         imply BOARD_LATE_INIT
1072
1073 config ARCH_VF610
1074         bool "Freescale Vybrid"
1075         select CPU_V7A
1076         select SYS_FSL_ERRATUM_ESDHC111
1077         imply CMD_MTDPARTS
1078         imply MTD_RAW_NAND
1079
1080 config ARCH_ZYNQ
1081         bool "Xilinx Zynq based platform"
1082         select CLK
1083         select CLK_ZYNQ
1084         select CPU_V7A
1085         select DM
1086         select DM_ETH if NET
1087         select DM_MMC if MMC
1088         select DM_SERIAL
1089         select DM_SPI
1090         select DM_SPI_FLASH
1091         select DM_USB if USB
1092         select OF_CONTROL
1093         select SPI
1094         select SPL_BOARD_INIT if SPL
1095         select SPL_CLK if SPL
1096         select SPL_DM if SPL
1097         select SPL_OF_CONTROL if SPL
1098         select SPL_SEPARATE_BSS if SPL
1099         select SUPPORT_SPL
1100         imply ARCH_EARLY_INIT_R
1101         imply BOARD_LATE_INIT
1102         imply CMD_CLK
1103         imply CMD_DM
1104         imply CMD_SPL
1105         imply FAT_WRITE
1106
1107 config ARCH_ZYNQMP_R5
1108         bool "Xilinx ZynqMP R5 based platform"
1109         select CLK
1110         select CPU_V7R
1111         select DM
1112         select DM_ETH if NET
1113         select DM_MMC if MMC
1114         select DM_SERIAL
1115         select OF_CONTROL
1116         imply CMD_DM
1117         imply DM_USB_GADGET
1118
1119 config ARCH_ZYNQMP
1120         bool "Xilinx ZynqMP based platform"
1121         select ARM64
1122         select CLK
1123         select DM
1124         select DM_ETH if NET
1125         select DM_MAILBOX
1126         select DM_MMC if MMC
1127         select DM_SERIAL
1128         select DM_SPI if SPI
1129         select DM_SPI_FLASH if DM_SPI
1130         select DM_USB if USB
1131         select FIRMWARE
1132         select OF_CONTROL
1133         select SPL_BOARD_INIT if SPL
1134         select SPL_CLK if SPL
1135         select SPL_DM_MAILBOX if SPL
1136         select SPL_FIRMWARE if SPL
1137         select SPL_SEPARATE_BSS if SPL
1138         select SUPPORT_SPL
1139         select ZYNQMP_IPI
1140         imply BOARD_LATE_INIT
1141         imply CMD_DM
1142         imply FAT_WRITE
1143         imply MP
1144         imply DM_USB_GADGET
1145
1146 config ARCH_TEGRA
1147         bool "NVIDIA Tegra"
1148         imply DISTRO_DEFAULTS
1149         imply FAT_WRITE
1150
1151 config TARGET_VEXPRESS64_AEMV8A
1152         bool "Support vexpress_aemv8a"
1153         select ARM64
1154         select PL01X_SERIAL
1155
1156 config TARGET_VEXPRESS64_BASE_FVP
1157         bool "Support Versatile Express ARMv8a FVP BASE model"
1158         select ARM64
1159         select PL01X_SERIAL
1160         select SEMIHOSTING
1161
1162 config TARGET_VEXPRESS64_JUNO
1163         bool "Support Versatile Express Juno Development Platform"
1164         select ARM64
1165         select PL01X_SERIAL
1166         select DM
1167         select OF_CONTROL
1168         select OF_BOARD
1169         select CLK
1170         select DM_SERIAL
1171         select ARM_PSCI_FW
1172         select PSCI_RESET
1173         select DM
1174         select BLK
1175         select USB
1176         select DM_USB
1177
1178 config TARGET_LS2080A_EMU
1179         bool "Support ls2080a_emu"
1180         select ARCH_LS2080A
1181         select ARM64
1182         select ARMV8_MULTIENTRY
1183         select FSL_DDR_SYNC_REFRESH
1184         help
1185           Support for Freescale LS2080A_EMU platform.
1186           The LS2080A Development System (EMULATOR) is a pre-silicon
1187           development platform that supports the QorIQ LS2080A
1188           Layerscape Architecture processor.
1189
1190 config TARGET_LS2080A_SIMU
1191         bool "Support ls2080a_simu"
1192         select ARCH_LS2080A
1193         select ARM64
1194         select ARMV8_MULTIENTRY
1195         select BOARD_LATE_INIT
1196         help
1197           Support for Freescale LS2080A_SIMU platform.
1198           The LS2080A Development System (QDS) is a pre silicon
1199           development platform that supports the QorIQ LS2080A
1200           Layerscape Architecture processor.
1201
1202 config TARGET_LS1088AQDS
1203         bool "Support ls1088aqds"
1204         select ARCH_LS1088A
1205         select ARM64
1206         select ARMV8_MULTIENTRY
1207         select ARCH_SUPPORT_TFABOOT
1208         select BOARD_LATE_INIT
1209         select SUPPORT_SPL
1210         select FSL_DDR_INTERACTIVE if !SD_BOOT
1211         help
1212           Support for NXP LS1088AQDS platform.
1213           The LS1088A Development System (QDS) is a high-performance
1214           development platform that supports the QorIQ LS1088A
1215           Layerscape Architecture processor.
1216
1217 config TARGET_LS2080AQDS
1218         bool "Support ls2080aqds"
1219         select ARCH_LS2080A
1220         select ARM64
1221         select ARMV8_MULTIENTRY
1222         select ARCH_SUPPORT_TFABOOT
1223         select BOARD_LATE_INIT
1224         select SUPPORT_SPL
1225         imply SCSI
1226         imply SCSI_AHCI
1227         select FSL_DDR_BIST
1228         select FSL_DDR_INTERACTIVE if !SPL
1229         help
1230           Support for Freescale LS2080AQDS platform.
1231           The LS2080A Development System (QDS) is a high-performance
1232           development platform that supports the QorIQ LS2080A
1233           Layerscape Architecture processor.
1234
1235 config TARGET_LS2080ARDB
1236         bool "Support ls2080ardb"
1237         select ARCH_LS2080A
1238         select ARM64
1239         select ARMV8_MULTIENTRY
1240         select ARCH_SUPPORT_TFABOOT
1241         select BOARD_LATE_INIT
1242         select SUPPORT_SPL
1243         select FSL_DDR_BIST
1244         select FSL_DDR_INTERACTIVE if !SPL
1245         imply SCSI
1246         imply SCSI_AHCI
1247         help
1248           Support for Freescale LS2080ARDB platform.
1249           The LS2080A Reference design board (RDB) is a high-performance
1250           development platform that supports the QorIQ LS2080A
1251           Layerscape Architecture processor.
1252
1253 config TARGET_LS2081ARDB
1254         bool "Support ls2081ardb"
1255         select ARCH_LS2080A
1256         select ARM64
1257         select ARMV8_MULTIENTRY
1258         select BOARD_LATE_INIT
1259         select SUPPORT_SPL
1260         help
1261           Support for Freescale LS2081ARDB platform.
1262           The LS2081A Reference design board (RDB) is a high-performance
1263           development platform that supports the QorIQ LS2081A/LS2041A
1264           Layerscape Architecture processor.
1265
1266 config TARGET_LX2160ARDB
1267         bool "Support lx2160ardb"
1268         select ARCH_LX2160A
1269         select ARM64
1270         select ARMV8_MULTIENTRY
1271         select ARCH_SUPPORT_TFABOOT
1272         select BOARD_LATE_INIT
1273         help
1274           Support for NXP LX2160ARDB platform.
1275           The lx2160ardb (LX2160A Reference design board (RDB)
1276           is a high-performance development platform that supports the
1277           QorIQ LX2160A/LX2120A/LX2080A Layerscape Architecture processor.
1278
1279 config TARGET_LX2160AQDS
1280         bool "Support lx2160aqds"
1281         select ARCH_LX2160A
1282         select ARM64
1283         select ARMV8_MULTIENTRY
1284         select ARCH_SUPPORT_TFABOOT
1285         select BOARD_LATE_INIT
1286         help
1287           Support for NXP LX2160AQDS platform.
1288           The lx2160aqds (LX2160A QorIQ Development System (QDS)
1289           is a high-performance development platform that supports the
1290           QorIQ LX2160A/LX2120A/LX2080A Layerscape Architecture processor.
1291
1292 config TARGET_HIKEY
1293         bool "Support HiKey 96boards Consumer Edition Platform"
1294         select ARM64
1295         select DM
1296         select DM_GPIO
1297         select DM_SERIAL
1298         select OF_CONTROL
1299         select PL01X_SERIAL
1300         select SPECIFY_CONSOLE_INDEX
1301         imply CMD_DM
1302           help
1303           Support for HiKey 96boards platform. It features a HI6220
1304           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
1305
1306 config TARGET_HIKEY960
1307         bool "Support HiKey960 96boards Consumer Edition Platform"
1308         select ARM64
1309         select DM
1310         select DM_SERIAL
1311         select OF_CONTROL
1312         select PL01X_SERIAL
1313         imply CMD_DM
1314           help
1315           Support for HiKey960 96boards platform. It features a HI3660
1316           SoC, with 4xA73 CPU, 4xA53 CPU, MALI-G71 GPU, and 3GB RAM.
1317
1318 config TARGET_POPLAR
1319         bool "Support Poplar 96boards Enterprise Edition Platform"
1320         select ARM64
1321         select DM
1322         select DM_SERIAL
1323         select DM_USB
1324         select OF_CONTROL
1325         select PL01X_SERIAL
1326         imply CMD_DM
1327           help
1328           Support for Poplar 96boards EE platform. It features a HI3798cv200
1329           SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
1330           making it capable of running any commercial set-top solution based on
1331           Linux or Android.
1332
1333 config TARGET_LS1012AQDS
1334         bool "Support ls1012aqds"
1335         select ARCH_LS1012A
1336         select ARM64
1337         select ARCH_SUPPORT_TFABOOT
1338         select BOARD_LATE_INIT
1339         help
1340           Support for Freescale LS1012AQDS platform.
1341           The LS1012A Development System (QDS) is a high-performance
1342           development platform that supports the QorIQ LS1012A
1343           Layerscape Architecture processor.
1344
1345 config TARGET_LS1012ARDB
1346         bool "Support ls1012ardb"
1347         select ARCH_LS1012A
1348         select ARM64
1349         select ARCH_SUPPORT_TFABOOT
1350         select BOARD_LATE_INIT
1351         imply SCSI
1352         imply SCSI_AHCI
1353         help
1354           Support for Freescale LS1012ARDB platform.
1355           The LS1012A Reference design board (RDB) is a high-performance
1356           development platform that supports the QorIQ LS1012A
1357           Layerscape Architecture processor.
1358
1359 config TARGET_LS1012A2G5RDB
1360         bool "Support ls1012a2g5rdb"
1361         select ARCH_LS1012A
1362         select ARM64
1363         select ARCH_SUPPORT_TFABOOT
1364         select BOARD_LATE_INIT
1365         imply SCSI
1366         help
1367           Support for Freescale LS1012A2G5RDB platform.
1368           The LS1012A 2G5 Reference design board (RDB) is a high-performance
1369           development platform that supports the QorIQ LS1012A
1370           Layerscape Architecture processor.
1371
1372 config TARGET_LS1012AFRWY
1373         bool "Support ls1012afrwy"
1374         select ARCH_LS1012A
1375         select ARM64
1376         select ARCH_SUPPORT_TFABOOT
1377         select BOARD_LATE_INIT
1378         imply SCSI
1379         imply SCSI_AHCI
1380         help
1381          Support for Freescale LS1012AFRWY platform.
1382          The LS1012A FRWY board (FRWY) is a high-performance
1383          development platform that supports the QorIQ LS1012A
1384          Layerscape Architecture processor.
1385
1386 config TARGET_LS1012AFRDM
1387         bool "Support ls1012afrdm"
1388         select ARCH_LS1012A
1389         select ARM64
1390         select ARCH_SUPPORT_TFABOOT
1391         help
1392           Support for Freescale LS1012AFRDM platform.
1393           The LS1012A Freedom  board (FRDM) is a high-performance
1394           development platform that supports the QorIQ LS1012A
1395           Layerscape Architecture processor.
1396
1397 config TARGET_LS1028AQDS
1398         bool "Support ls1028aqds"
1399         select ARCH_LS1028A
1400         select ARM64
1401         select ARMV8_MULTIENTRY
1402         select ARCH_SUPPORT_TFABOOT
1403         select BOARD_LATE_INIT
1404         help
1405           Support for Freescale LS1028AQDS platform
1406           The LS1028A Development System (QDS) is a high-performance
1407           development platform that supports the QorIQ LS1028A
1408           Layerscape Architecture processor.
1409
1410 config TARGET_LS1028ARDB
1411         bool "Support ls1028ardb"
1412         select ARCH_LS1028A
1413         select ARM64
1414         select ARMV8_MULTIENTRY
1415         select ARCH_SUPPORT_TFABOOT
1416         select BOARD_LATE_INIT
1417         help
1418           Support for Freescale LS1028ARDB platform
1419           The LS1028A Development System (RDB) is a high-performance
1420           development platform that supports the QorIQ LS1028A
1421           Layerscape Architecture processor.
1422
1423 config TARGET_LS1088ARDB
1424         bool "Support ls1088ardb"
1425         select ARCH_LS1088A
1426         select ARM64
1427         select ARMV8_MULTIENTRY
1428         select ARCH_SUPPORT_TFABOOT
1429         select BOARD_LATE_INIT
1430         select SUPPORT_SPL
1431         select FSL_DDR_INTERACTIVE if !SD_BOOT
1432         help
1433           Support for NXP LS1088ARDB platform.
1434           The LS1088A Reference design board (RDB) is a high-performance
1435           development platform that supports the QorIQ LS1088A
1436           Layerscape Architecture processor.
1437
1438 config TARGET_LS1021AQDS
1439         bool "Support ls1021aqds"
1440         select ARCH_LS1021A
1441         select ARCH_SUPPORT_PSCI
1442         select BOARD_EARLY_INIT_F
1443         select BOARD_LATE_INIT
1444         select CPU_V7A
1445         select CPU_V7_HAS_NONSEC
1446         select CPU_V7_HAS_VIRT
1447         select LS1_DEEP_SLEEP
1448         select SUPPORT_SPL
1449         select SYS_FSL_DDR
1450         select FSL_DDR_INTERACTIVE
1451         imply SCSI
1452
1453 config TARGET_LS1021ATWR
1454         bool "Support ls1021atwr"
1455         select ARCH_LS1021A
1456         select ARCH_SUPPORT_PSCI
1457         select BOARD_EARLY_INIT_F
1458         select BOARD_LATE_INIT
1459         select CPU_V7A
1460         select CPU_V7_HAS_NONSEC
1461         select CPU_V7_HAS_VIRT
1462         select LS1_DEEP_SLEEP
1463         select SUPPORT_SPL
1464         imply SCSI
1465
1466 config TARGET_LS1021ATSN
1467         bool "Support ls1021atsn"
1468         select ARCH_LS1021A
1469         select ARCH_SUPPORT_PSCI
1470         select BOARD_EARLY_INIT_F
1471         select BOARD_LATE_INIT
1472         select CPU_V7A
1473         select CPU_V7_HAS_NONSEC
1474         select CPU_V7_HAS_VIRT
1475         select LS1_DEEP_SLEEP
1476         select SUPPORT_SPL
1477         imply SCSI
1478
1479 config TARGET_LS1021AIOT
1480         bool "Support ls1021aiot"
1481         select ARCH_LS1021A
1482         select ARCH_SUPPORT_PSCI
1483         select BOARD_LATE_INIT
1484         select CPU_V7A
1485         select CPU_V7_HAS_NONSEC
1486         select CPU_V7_HAS_VIRT
1487         select SUPPORT_SPL
1488         imply SCSI
1489         help
1490           Support for Freescale LS1021AIOT platform.
1491           The LS1021A Freescale board (IOT) is a high-performance
1492           development platform that supports the QorIQ LS1021A
1493           Layerscape Architecture processor.
1494
1495 config TARGET_LS1043AQDS
1496         bool "Support ls1043aqds"
1497         select ARCH_LS1043A
1498         select ARM64
1499         select ARMV8_MULTIENTRY
1500         select ARCH_SUPPORT_TFABOOT
1501         select BOARD_EARLY_INIT_F
1502         select BOARD_LATE_INIT
1503         select SUPPORT_SPL
1504         select FSL_DDR_INTERACTIVE if !SPL
1505         imply SCSI
1506         imply SCSI_AHCI
1507         help
1508           Support for Freescale LS1043AQDS platform.
1509
1510 config TARGET_LS1043ARDB
1511         bool "Support ls1043ardb"
1512         select ARCH_LS1043A
1513         select ARM64
1514         select ARMV8_MULTIENTRY
1515         select ARCH_SUPPORT_TFABOOT
1516         select BOARD_EARLY_INIT_F
1517         select BOARD_LATE_INIT
1518         select SUPPORT_SPL
1519         help
1520           Support for Freescale LS1043ARDB platform.
1521
1522 config TARGET_LS1046AQDS
1523         bool "Support ls1046aqds"
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         select SUPPORT_SPL
1532         select FSL_DDR_BIST if !SPL
1533         select FSL_DDR_INTERACTIVE  if !SPL
1534         select FSL_DDR_INTERACTIVE if !SPL
1535         imply SCSI
1536         help
1537           Support for Freescale LS1046AQDS platform.
1538           The LS1046A Development System (QDS) is a high-performance
1539           development platform that supports the QorIQ LS1046A
1540           Layerscape Architecture processor.
1541
1542 config TARGET_LS1046ARDB
1543         bool "Support ls1046ardb"
1544         select ARCH_LS1046A
1545         select ARM64
1546         select ARMV8_MULTIENTRY
1547         select ARCH_SUPPORT_TFABOOT
1548         select BOARD_EARLY_INIT_F
1549         select BOARD_LATE_INIT
1550         select DM_SPI_FLASH if DM_SPI
1551         select POWER_MC34VR500
1552         select SUPPORT_SPL
1553         select FSL_DDR_BIST
1554         select FSL_DDR_INTERACTIVE if !SPL
1555         imply SCSI
1556         help
1557           Support for Freescale LS1046ARDB platform.
1558           The LS1046A Reference Design Board (RDB) is a high-performance
1559           development platform that supports the QorIQ LS1046A
1560           Layerscape Architecture processor.
1561
1562 config TARGET_LS1046AFRWY
1563         bool "Support ls1046afrwy"
1564         select ARCH_LS1046A
1565         select ARM64
1566         select ARMV8_MULTIENTRY
1567         select ARCH_SUPPORT_TFABOOT
1568         select BOARD_EARLY_INIT_F
1569         select BOARD_LATE_INIT
1570         select DM_SPI_FLASH if DM_SPI
1571         imply SCSI
1572         help
1573           Support for Freescale LS1046AFRWY platform.
1574           The LS1046A Freeway Board (FRWY) is a high-performance
1575           development platform that supports the QorIQ LS1046A
1576           Layerscape Architecture processor.
1577
1578 config TARGET_COLIBRI_PXA270
1579         bool "Support colibri_pxa270"
1580         select CPU_PXA
1581
1582 config ARCH_UNIPHIER
1583         bool "Socionext UniPhier SoCs"
1584         select BOARD_LATE_INIT
1585         select DM
1586         select DM_ETH
1587         select DM_GPIO
1588         select DM_I2C
1589         select DM_MMC
1590         select DM_MTD
1591         select DM_RESET
1592         select DM_SERIAL
1593         select DM_USB
1594         select OF_BOARD_SETUP
1595         select OF_CONTROL
1596         select OF_LIBFDT
1597         select PINCTRL
1598         select SPL_BOARD_INIT if SPL
1599         select SPL_DM if SPL
1600         select SPL_LIBCOMMON_SUPPORT if SPL
1601         select SPL_LIBGENERIC_SUPPORT if SPL
1602         select SPL_OF_CONTROL if SPL
1603         select SPL_PINCTRL if SPL
1604         select SUPPORT_SPL
1605         imply CMD_DM
1606         imply DISTRO_DEFAULTS
1607         imply FAT_WRITE
1608         help
1609           Support for UniPhier SoC family developed by Socionext Inc.
1610           (formerly, System LSI Business Division of Panasonic Corporation)
1611
1612 config ARCH_STM32
1613         bool "Support STMicroelectronics STM32 MCU with cortex M"
1614         select CPU_V7M
1615         select DM
1616         select DM_SERIAL
1617         imply CMD_DM
1618
1619 config ARCH_STI
1620         bool "Support STMicrolectronics SoCs"
1621         select BLK
1622         select CPU_V7A
1623         select DM
1624         select DM_MMC
1625         select DM_RESET
1626         select DM_SERIAL
1627         imply CMD_DM
1628         help
1629           Support for STMicroelectronics STiH407/10 SoC family.
1630           This SoC is used on Linaro 96Board STiH410-B2260
1631
1632 config ARCH_STM32MP
1633         bool "Support STMicroelectronics STM32MP Socs with cortex A"
1634         select ARCH_MISC_INIT
1635         select ARCH_SUPPORT_TFABOOT
1636         select BOARD_LATE_INIT
1637         select CLK
1638         select DM
1639         select DM_GPIO
1640         select DM_RESET
1641         select DM_SERIAL
1642         select MISC
1643         select OF_CONTROL
1644         select OF_LIBFDT
1645         select OF_SYSTEM_SETUP
1646         select PINCTRL
1647         select REGMAP
1648         select SUPPORT_SPL
1649         select SYSCON
1650         select SYSRESET
1651         select SYS_THUMB_BUILD
1652         imply SPL_SYSRESET
1653         imply CMD_DM
1654         imply CMD_POWEROFF
1655         imply OF_LIBFDT_OVERLAY
1656         imply ENV_VARS_UBOOT_RUNTIME_CONFIG
1657         imply USE_PREBOOT
1658         help
1659           Support for STM32MP SoC family developed by STMicroelectronics,
1660           MPUs based on ARM cortex A core
1661           U-BOOT is running in DDR, loaded by the First Stage BootLoader (FSBL).
1662           FSBL can be TF-A: Trusted Firmware for Cortex A, for trusted boot
1663           chain.
1664           SPL is the unsecure FSBL for the basic boot chain.
1665
1666 config ARCH_ROCKCHIP
1667         bool "Support Rockchip SoCs"
1668         select BLK
1669         select BINMAN if !ARM64
1670         select DM
1671         select DM_GPIO
1672         select DM_I2C
1673         select DM_MMC
1674         select DM_PWM
1675         select DM_REGULATOR
1676         select DM_SERIAL
1677         select DM_SPI
1678         select DM_SPI_FLASH
1679         select DM_USB if USB
1680         select ENABLE_ARM_SOC_BOOT0_HOOK
1681         select OF_CONTROL
1682         select SPI
1683         select SPL_DM if SPL
1684         select SYS_MALLOC_F
1685         select SYS_THUMB_BUILD if !ARM64
1686         imply ADC
1687         imply CMD_DM
1688         imply DEBUG_UART_BOARD_INIT
1689         imply DISTRO_DEFAULTS
1690         imply FAT_WRITE
1691         imply SARADC_ROCKCHIP
1692         imply SPL_SYSRESET
1693         imply SPL_SYS_MALLOC_SIMPLE
1694         imply SYS_NS16550
1695         imply TPL_SYSRESET
1696         imply USB_FUNCTION_FASTBOOT
1697
1698 config TARGET_THUNDERX_88XX
1699         bool "Support ThunderX 88xx"
1700         select ARM64
1701         select OF_CONTROL
1702         select PL01X_SERIAL
1703         select SYS_CACHE_SHIFT_7
1704
1705 config ARCH_ASPEED
1706         bool "Support Aspeed SoCs"
1707         select DM
1708         select OF_CONTROL
1709         imply CMD_DM
1710
1711 config TARGET_DURIAN
1712         bool "Support Phytium Durian Platform"
1713         select ARM64
1714         help
1715           Support for durian platform.
1716           It has 2GB Sdram, uart and pcie.
1717
1718 config TARGET_PRESIDIO_ASIC
1719         bool "Support Cortina Presidio ASIC Platform"
1720         select ARM64
1721
1722 endchoice
1723
1724 config ARCH_SUPPORT_TFABOOT
1725         bool
1726
1727 config TFABOOT
1728         bool "Support for booting from TF-A"
1729         depends on ARCH_SUPPORT_TFABOOT
1730         default n
1731         help
1732           Enabling this will make a U-Boot binary that is capable of being
1733           booted via TF-A (Trusted Firmware for Cortex-A).
1734
1735 config TI_SECURE_DEVICE
1736         bool "HS Device Type Support"
1737         depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
1738         help
1739           If a high secure (HS) device type is being used, this config
1740           must be set. This option impacts various aspects of the
1741           build system (to create signed boot images that can be
1742           authenticated) and the code. See the doc/README.ti-secure
1743           file for further details.
1744
1745 if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
1746 config ISW_ENTRY_ADDR
1747         hex "Address in memory or XIP address of bootloader entry point"
1748         default 0x402F4000 if AM43XX
1749         default 0x402F0400 if AM33XX
1750         default 0x40301350 if OMAP54XX
1751         help
1752           After any reset, the boot ROM searches the boot media for a valid
1753           boot image. For non-XIP devices, the ROM then copies the image into
1754           internal memory. For all boot modes, after the ROM processes the
1755           boot image it eventually computes the entry point address depending
1756           on the device type (secure/non-secure), boot media (xip/non-xip) and
1757           image headers.
1758 endif
1759
1760 source "arch/arm/mach-aspeed/Kconfig"
1761
1762 source "arch/arm/mach-at91/Kconfig"
1763
1764 source "arch/arm/mach-bcm283x/Kconfig"
1765
1766 source "arch/arm/mach-bcmstb/Kconfig"
1767
1768 source "arch/arm/mach-davinci/Kconfig"
1769
1770 source "arch/arm/mach-exynos/Kconfig"
1771
1772 source "arch/arm/mach-highbank/Kconfig"
1773
1774 source "arch/arm/mach-integrator/Kconfig"
1775
1776 source "arch/arm/mach-k3/Kconfig"
1777
1778 source "arch/arm/mach-keystone/Kconfig"
1779
1780 source "arch/arm/mach-kirkwood/Kconfig"
1781
1782 source "arch/arm/mach-lpc32xx/Kconfig"
1783
1784 source "arch/arm/mach-mvebu/Kconfig"
1785
1786 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1787
1788 source "arch/arm/mach-imx/mx2/Kconfig"
1789
1790 source "arch/arm/mach-imx/mx3/Kconfig"
1791
1792 source "arch/arm/mach-imx/mx5/Kconfig"
1793
1794 source "arch/arm/mach-imx/mx6/Kconfig"
1795
1796 source "arch/arm/mach-imx/mx7/Kconfig"
1797
1798 source "arch/arm/mach-imx/mx7ulp/Kconfig"
1799
1800 source "arch/arm/mach-imx/imx8/Kconfig"
1801
1802 source "arch/arm/mach-imx/imx8m/Kconfig"
1803
1804 source "arch/arm/mach-imx/imxrt/Kconfig"
1805
1806 source "arch/arm/mach-imx/mxs/Kconfig"
1807
1808 source "arch/arm/mach-omap2/Kconfig"
1809
1810 source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1811
1812 source "arch/arm/mach-orion5x/Kconfig"
1813
1814 source "arch/arm/mach-owl/Kconfig"
1815
1816 source "arch/arm/mach-rmobile/Kconfig"
1817
1818 source "arch/arm/mach-meson/Kconfig"
1819
1820 source "arch/arm/mach-mediatek/Kconfig"
1821
1822 source "arch/arm/mach-qemu/Kconfig"
1823
1824 source "arch/arm/mach-rockchip/Kconfig"
1825
1826 source "arch/arm/mach-s5pc1xx/Kconfig"
1827
1828 source "arch/arm/mach-snapdragon/Kconfig"
1829
1830 source "arch/arm/mach-socfpga/Kconfig"
1831
1832 source "arch/arm/mach-sti/Kconfig"
1833
1834 source "arch/arm/mach-stm32/Kconfig"
1835
1836 source "arch/arm/mach-stm32mp/Kconfig"
1837
1838 source "arch/arm/mach-sunxi/Kconfig"
1839
1840 source "arch/arm/mach-tegra/Kconfig"
1841
1842 source "arch/arm/mach-u8500/Kconfig"
1843
1844 source "arch/arm/mach-uniphier/Kconfig"
1845
1846 source "arch/arm/cpu/armv7/vf610/Kconfig"
1847
1848 source "arch/arm/mach-zynq/Kconfig"
1849
1850 source "arch/arm/mach-zynqmp/Kconfig"
1851
1852 source "arch/arm/mach-versal/Kconfig"
1853
1854 source "arch/arm/mach-zynqmp-r5/Kconfig"
1855
1856 source "arch/arm/cpu/armv7/Kconfig"
1857
1858 source "arch/arm/cpu/armv8/Kconfig"
1859
1860 source "arch/arm/mach-imx/Kconfig"
1861
1862 source "board/bosch/shc/Kconfig"
1863 source "board/bosch/guardian/Kconfig"
1864 source "board/CarMediaLab/flea3/Kconfig"
1865 source "board/Marvell/aspenite/Kconfig"
1866 source "board/Marvell/gplugd/Kconfig"
1867 source "board/armadeus/apf27/Kconfig"
1868 source "board/armltd/vexpress/Kconfig"
1869 source "board/armltd/vexpress64/Kconfig"
1870 source "board/cortina/presidio-asic/Kconfig"
1871 source "board/broadcom/bcm23550_w1d/Kconfig"
1872 source "board/broadcom/bcm28155_ap/Kconfig"
1873 source "board/broadcom/bcm963158/Kconfig"
1874 source "board/broadcom/bcm968360bg/Kconfig"
1875 source "board/broadcom/bcm968580xref/Kconfig"
1876 source "board/broadcom/bcmcygnus/Kconfig"
1877 source "board/broadcom/bcmnsp/Kconfig"
1878 source "board/broadcom/bcmns2/Kconfig"
1879 source "board/cavium/thunderx/Kconfig"
1880 source "board/cirrus/edb93xx/Kconfig"
1881 source "board/eets/pdu001/Kconfig"
1882 source "board/emulation/qemu-arm/Kconfig"
1883 source "board/freescale/ls2080a/Kconfig"
1884 source "board/freescale/ls2080aqds/Kconfig"
1885 source "board/freescale/ls2080ardb/Kconfig"
1886 source "board/freescale/ls1088a/Kconfig"
1887 source "board/freescale/ls1028a/Kconfig"
1888 source "board/freescale/ls1021aqds/Kconfig"
1889 source "board/freescale/ls1043aqds/Kconfig"
1890 source "board/freescale/ls1021atwr/Kconfig"
1891 source "board/freescale/ls1021atsn/Kconfig"
1892 source "board/freescale/ls1021aiot/Kconfig"
1893 source "board/freescale/ls1046aqds/Kconfig"
1894 source "board/freescale/ls1043ardb/Kconfig"
1895 source "board/freescale/ls1046ardb/Kconfig"
1896 source "board/freescale/ls1046afrwy/Kconfig"
1897 source "board/freescale/ls1012aqds/Kconfig"
1898 source "board/freescale/ls1012ardb/Kconfig"
1899 source "board/freescale/ls1012afrdm/Kconfig"
1900 source "board/freescale/lx2160a/Kconfig"
1901 source "board/freescale/mx35pdk/Kconfig"
1902 source "board/freescale/s32v234evb/Kconfig"
1903 source "board/grinn/chiliboard/Kconfig"
1904 source "board/gumstix/pepper/Kconfig"
1905 source "board/hisilicon/hikey/Kconfig"
1906 source "board/hisilicon/hikey960/Kconfig"
1907 source "board/hisilicon/poplar/Kconfig"
1908 source "board/isee/igep003x/Kconfig"
1909 source "board/phytec/pcm051/Kconfig"
1910 source "board/silica/pengwyn/Kconfig"
1911 source "board/spear/spear300/Kconfig"
1912 source "board/spear/spear310/Kconfig"
1913 source "board/spear/spear320/Kconfig"
1914 source "board/spear/spear600/Kconfig"
1915 source "board/spear/x600/Kconfig"
1916 source "board/st/stv0991/Kconfig"
1917 source "board/tcl/sl50/Kconfig"
1918 source "board/birdland/bav335x/Kconfig"
1919 source "board/toradex/colibri_pxa270/Kconfig"
1920 source "board/variscite/dart_6ul/Kconfig"
1921 source "board/vscom/baltos/Kconfig"
1922 source "board/xilinx/Kconfig"
1923 source "board/xilinx/zynq/Kconfig"
1924 source "board/xilinx/zynqmp/Kconfig"
1925 source "board/phytium/durian/Kconfig"
1926
1927 source "arch/arm/Kconfig.debug"
1928
1929 endmenu
1930
1931 config SPL_LDSCRIPT
1932         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1933         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1934         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1935
1936