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