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