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