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