board: ns3: add support for Broadcom Northstar 3
[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 TARGET_BCMNS3
736         bool "Support Broadcom NS3"
737         select ARM64
738         select BOARD_LATE_INIT
739         help
740           Support for Broadcom Northstar 3 SoCs. NS3 is a octo-core 64-bit
741           ARMv8 Cortex-A72 processors targeting a broad range of networking
742           applications.
743
744 config ARCH_EXYNOS
745         bool "Samsung EXYNOS"
746         select DM
747         select DM_GPIO
748         select DM_I2C
749         select DM_KEYBOARD
750         select DM_SERIAL
751         select DM_SPI
752         select DM_SPI_FLASH
753         select SPI
754         imply SYS_THUMB_BUILD
755         imply CMD_DM
756         imply FAT_WRITE
757
758 config ARCH_S5PC1XX
759         bool "Samsung S5PC1XX"
760         select CPU_V7A
761         select DM
762         select DM_GPIO
763         select DM_I2C
764         select DM_SERIAL
765         imply CMD_DM
766
767 config ARCH_HIGHBANK
768         bool "Calxeda Highbank"
769         select CPU_V7A
770         select PL011_SERIAL
771
772 config ARCH_INTEGRATOR
773         bool "ARM Ltd. Integrator family"
774         select DM
775         select DM_SERIAL
776         select PL01X_SERIAL
777         imply CMD_DM
778
779 config ARCH_IPQ40XX
780         bool "Qualcomm IPQ40xx SoCs"
781         select CPU_V7A
782         select DM
783         select DM_GPIO
784         select DM_SERIAL
785         select PINCTRL
786         select CLK
787         select OF_CONTROL
788         imply CMD_DM
789
790 config ARCH_KEYSTONE
791         bool "TI Keystone"
792         select CMD_POWEROFF
793         select CPU_V7A
794         select SUPPORT_SPL
795         select SYS_ARCH_TIMER
796         select SYS_THUMB_BUILD
797         imply CMD_MTDPARTS
798         imply CMD_SAVES
799         imply FIT
800
801 config ARCH_K3
802         bool "Texas Instruments' K3 Architecture"
803         select SPL
804         select SUPPORT_SPL
805         select FIT
806
807 config ARCH_OMAP2PLUS
808         bool "TI OMAP2+"
809         select CPU_V7A
810         select SPL_BOARD_INIT if SPL
811         select SPL_STACK_R if SPL
812         select SUPPORT_SPL
813         imply FIT
814
815 config ARCH_MESON
816         bool "Amlogic Meson"
817         imply DISTRO_DEFAULTS
818         imply DM_RNG
819         help
820           Support for the Meson SoC family developed by Amlogic Inc.,
821           targeted at media players and tablet computers. We currently
822           support the S905 (GXBaby) 64-bit SoC.
823
824 config ARCH_MEDIATEK
825         bool "MediaTek SoCs"
826         select DM
827         select OF_CONTROL
828         select SPL_DM if SPL
829         select SPL_LIBCOMMON_SUPPORT if SPL
830         select SPL_LIBGENERIC_SUPPORT if SPL
831         select SPL_OF_CONTROL if SPL
832         select SUPPORT_SPL
833         help
834           Support for the MediaTek SoCs family developed by MediaTek Inc.
835           Please refer to doc/README.mediatek for more information.
836
837 config ARCH_LPC32XX
838         bool "NXP LPC32xx platform"
839         select CPU_ARM926EJS
840         select DM
841         select DM_GPIO
842         select DM_SERIAL
843         select SPL_DM if SPL
844         select SUPPORT_SPL
845         imply CMD_DM
846
847 config ARCH_IMX8
848         bool "NXP i.MX8 platform"
849         select ARM64
850         select DM
851         select OF_CONTROL
852         select ENABLE_ARM_SOC_BOOT0_HOOK
853
854 config ARCH_IMX8M
855         bool "NXP i.MX8M platform"
856         select ARM64
857         select DM
858         select SUPPORT_SPL
859         imply CMD_DM
860
861 config ARCH_IMXRT
862         bool "NXP i.MXRT platform"
863         select CPU_V7M
864         select DM
865         select DM_SERIAL
866         select SUPPORT_SPL
867         imply CMD_DM
868
869 config ARCH_MX23
870         bool "NXP i.MX23 family"
871         select CPU_ARM926EJS
872         select PL011_SERIAL
873         select SUPPORT_SPL
874
875 config ARCH_MX25
876         bool "NXP MX25"
877         select CPU_ARM926EJS
878         imply MXC_GPIO
879
880 config ARCH_MX28
881         bool "NXP i.MX28 family"
882         select CPU_ARM926EJS
883         select PL011_SERIAL
884         select SUPPORT_SPL
885
886 config ARCH_MX31
887         bool "NXP i.MX31 family"
888         select CPU_ARM1136
889
890 config ARCH_MX7ULP
891         bool "NXP MX7ULP"
892         select CPU_V7A
893         select ROM_UNIFIED_SECTIONS
894         imply MXC_GPIO
895         imply SYS_THUMB_BUILD
896
897 config ARCH_MX7
898         bool "Freescale MX7"
899         select ARCH_MISC_INIT
900         select CPU_V7A
901         select SYS_FSL_HAS_SEC if IMX_HAB
902         select SYS_FSL_SEC_COMPAT_4
903         select SYS_FSL_SEC_LE
904         imply BOARD_EARLY_INIT_F
905         imply MXC_GPIO
906         imply SYS_THUMB_BUILD
907
908 config ARCH_MX6
909         bool "Freescale MX6"
910         select CPU_V7A
911         select SYS_FSL_HAS_SEC
912         select SYS_FSL_SEC_COMPAT_4
913         select SYS_FSL_SEC_LE
914         imply MXC_GPIO
915         imply SYS_THUMB_BUILD
916
917 if ARCH_MX6
918 config SPL_LDSCRIPT
919         default "arch/arm/mach-omap2/u-boot-spl.lds"
920 endif
921
922 config ARCH_MX5
923         bool "Freescale MX5"
924         select BOARD_EARLY_INIT_F
925         select CPU_V7A
926         imply MXC_GPIO
927
928 config ARCH_NEXELL
929         bool "Nexell S5P4418/S5P6818 SoC"
930         select ENABLE_ARM_SOC_BOOT0_HOOK
931         select DM
932
933 config ARCH_OWL
934         bool "Actions Semi OWL SoCs"
935         select DM
936         select DM_ETH
937         select DM_SERIAL
938         select OWL_SERIAL
939         select CLK
940         select CLK_OWL
941         select OF_CONTROL
942         select SYS_RELOC_GD_ENV_ADDR
943         imply CMD_DM
944
945 config ARCH_QEMU
946         bool "QEMU Virtual Platform"
947         select ARCH_SUPPORT_TFABOOT
948         select DM
949         select DM_SERIAL
950         select OF_CONTROL
951         select PL01X_SERIAL
952         imply CMD_DM
953         imply DM_RTC
954         imply RTC_PL031
955
956 config ARCH_RMOBILE
957         bool "Renesas ARM SoCs"
958         select BOARD_EARLY_INIT_F if !RZA1
959         select DM
960         select DM_SERIAL
961         imply CMD_DM
962         imply FAT_WRITE
963         imply SYS_THUMB_BUILD
964         imply ARCH_MISC_INIT if DISPLAY_CPUINFO
965
966 config TARGET_S32V234EVB
967         bool "Support s32v234evb"
968         select ARM64
969         select SYS_FSL_ERRATUM_ESDHC111
970
971 config ARCH_SNAPDRAGON
972         bool "Qualcomm Snapdragon SoCs"
973         select ARM64
974         select DM
975         select DM_GPIO
976         select DM_SERIAL
977         select MSM_SMEM
978         select OF_CONTROL
979         select OF_SEPARATE
980         select SMEM
981         select SPMI
982         imply CMD_DM
983
984 config ARCH_SOCFPGA
985         bool "Altera SOCFPGA family"
986         select ARCH_EARLY_INIT_R
987         select ARCH_MISC_INIT if !TARGET_SOCFPGA_ARRIA10
988         select ARM64 if TARGET_SOCFPGA_STRATIX10 || TARGET_SOCFPGA_AGILEX
989         select CPU_V7A if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
990         select DM
991         select DM_SERIAL
992         select ENABLE_ARM_SOC_BOOT0_HOOK if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
993         select OF_CONTROL
994         select SPL_DM_RESET if DM_RESET
995         select SPL_DM_SERIAL
996         select SPL_LIBCOMMON_SUPPORT
997         select SPL_LIBGENERIC_SUPPORT
998         select SPL_NAND_SUPPORT if SPL_NAND_DENALI
999         select SPL_OF_CONTROL
1000         select SPL_SEPARATE_BSS if TARGET_SOCFPGA_STRATIX10 || TARGET_SOCFPGA_AGILEX
1001         select SPL_SERIAL_SUPPORT
1002         select SPL_SYSRESET
1003         select SPL_WATCHDOG_SUPPORT
1004         select SUPPORT_SPL
1005         select SYS_NS16550
1006         select SYS_THUMB_BUILD if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
1007         select SYSRESET
1008         select SYSRESET_SOCFPGA if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
1009         select SYSRESET_SOCFPGA_S10 if TARGET_SOCFPGA_STRATIX10
1010         imply CMD_DM
1011         imply CMD_MTDPARTS
1012         imply CRC32_VERIFY
1013         imply DM_SPI
1014         imply DM_SPI_FLASH
1015         imply FAT_WRITE
1016         imply SPL
1017         imply SPL_DM
1018         imply SPL_DM_SPI
1019         imply SPL_DM_SPI_FLASH
1020         imply SPL_LIBDISK_SUPPORT
1021         imply SPL_MMC_SUPPORT
1022         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
1023         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
1024         imply SPL_SPI_FLASH_SUPPORT
1025         imply SPL_SPI_SUPPORT
1026         imply L2X0_CACHE
1027
1028 config ARCH_SUNXI
1029         bool "Support sunxi (Allwinner) SoCs"
1030         select BINMAN
1031         select CMD_GPIO
1032         select CMD_MMC if MMC
1033         select CMD_USB if DISTRO_DEFAULTS
1034         select CLK
1035         select DM
1036         select DM_ETH
1037         select DM_GPIO
1038         select DM_KEYBOARD
1039         select DM_MMC if MMC
1040         select DM_SCSI if SCSI
1041         select DM_SERIAL
1042         select DM_USB if DISTRO_DEFAULTS
1043         select OF_BOARD_SETUP
1044         select OF_CONTROL
1045         select OF_SEPARATE
1046         select SPECIFY_CONSOLE_INDEX
1047         select SPL_STACK_R if SPL
1048         select SPL_SYS_MALLOC_SIMPLE if SPL
1049         select SPL_SYS_THUMB_BUILD if !ARM64
1050         select SUNXI_GPIO
1051         select SYS_NS16550
1052         select SYS_THUMB_BUILD if !ARM64
1053         select USB if DISTRO_DEFAULTS
1054         select USB_KEYBOARD if DISTRO_DEFAULTS
1055         select USB_STORAGE if DISTRO_DEFAULTS
1056         select SPL_USE_TINY_PRINTF
1057         select USE_PREBOOT
1058         select SYS_RELOC_GD_ENV_ADDR
1059         imply CMD_DM
1060         imply CMD_GPT
1061         imply CMD_UBI if MTD_RAW_NAND
1062         imply DISTRO_DEFAULTS
1063         imply FAT_WRITE
1064         imply FIT
1065         imply OF_LIBFDT_OVERLAY
1066         imply PRE_CONSOLE_BUFFER
1067         imply SPL_GPIO_SUPPORT
1068         imply SPL_LIBCOMMON_SUPPORT
1069         imply SPL_LIBGENERIC_SUPPORT
1070         imply SPL_MMC_SUPPORT if MMC
1071         imply SPL_POWER_SUPPORT
1072         imply SPL_SERIAL_SUPPORT
1073         imply USB_GADGET
1074
1075 config ARCH_U8500
1076         bool "ST-Ericsson U8500 Series"
1077         select CPU_V7A
1078         select DM
1079         select DM_GPIO
1080         select DM_MMC if MMC
1081         select DM_SERIAL
1082         select DM_USB if USB
1083         select OF_CONTROL
1084         select SYSRESET
1085         select TIMER
1086         imply ARM_PL180_MMCI
1087         imply DM_RTC
1088         imply NOMADIK_MTU_TIMER
1089         imply PL01X_SERIAL
1090         imply RTC_PL031
1091         imply SYSRESET_SYSCON
1092
1093 config ARCH_VERSAL
1094         bool "Support Xilinx Versal Platform"
1095         select ARM64
1096         select CLK
1097         select DM
1098         select DM_ETH if NET
1099         select DM_MMC if MMC
1100         select DM_SERIAL
1101         select OF_CONTROL
1102         imply BOARD_LATE_INIT
1103
1104 config ARCH_VF610
1105         bool "Freescale Vybrid"
1106         select CPU_V7A
1107         select SYS_FSL_ERRATUM_ESDHC111
1108         imply CMD_MTDPARTS
1109         imply MTD_RAW_NAND
1110
1111 config ARCH_ZYNQ
1112         bool "Xilinx Zynq based platform"
1113         select CLK
1114         select CLK_ZYNQ
1115         select CPU_V7A
1116         select DM
1117         select DM_ETH if NET
1118         select DM_MMC if MMC
1119         select DM_SERIAL
1120         select DM_SPI
1121         select DM_SPI_FLASH
1122         select DM_USB if USB
1123         select OF_CONTROL
1124         select SPI
1125         select SPL_BOARD_INIT if SPL
1126         select SPL_CLK if SPL
1127         select SPL_DM if SPL
1128         select SPL_DM_SPI if SPL
1129         select SPL_DM_SPI_FLASH if SPL
1130         select SPL_OF_CONTROL if SPL
1131         select SPL_SEPARATE_BSS if SPL
1132         select SUPPORT_SPL
1133         imply ARCH_EARLY_INIT_R
1134         imply BOARD_LATE_INIT
1135         imply CMD_CLK
1136         imply CMD_DM
1137         imply CMD_SPL
1138         imply FAT_WRITE
1139
1140 config ARCH_ZYNQMP_R5
1141         bool "Xilinx ZynqMP R5 based platform"
1142         select CLK
1143         select CPU_V7R
1144         select DM
1145         select DM_ETH if NET
1146         select DM_MMC if MMC
1147         select DM_SERIAL
1148         select OF_CONTROL
1149         imply CMD_DM
1150         imply DM_USB_GADGET
1151
1152 config ARCH_ZYNQMP
1153         bool "Xilinx ZynqMP based platform"
1154         select ARM64
1155         select CLK
1156         select DM
1157         select DM_ETH if NET
1158         select DM_MAILBOX
1159         select DM_MMC if MMC
1160         select DM_SERIAL
1161         select DM_SPI if SPI
1162         select DM_SPI_FLASH if DM_SPI
1163         select DM_USB if USB
1164         select FIRMWARE
1165         select OF_CONTROL
1166         select SPL_BOARD_INIT if SPL
1167         select SPL_CLK if SPL
1168         select SPL_DM_SPI if SPI
1169         select SPL_DM_SPI_FLASH if SPL_DM_SPI
1170         select SPL_DM_MAILBOX if SPL
1171         select SPL_FIRMWARE if SPL
1172         select SPL_SEPARATE_BSS if SPL
1173         select SUPPORT_SPL
1174         select ZYNQMP_IPI
1175         imply BOARD_LATE_INIT
1176         imply CMD_DM
1177         imply FAT_WRITE
1178         imply MP
1179         imply DM_USB_GADGET
1180
1181 config ARCH_TEGRA
1182         bool "NVIDIA Tegra"
1183         imply DISTRO_DEFAULTS
1184         imply FAT_WRITE
1185
1186 config TARGET_VEXPRESS64_AEMV8A
1187         bool "Support vexpress_aemv8a"
1188         select ARM64
1189         select PL01X_SERIAL
1190
1191 config TARGET_VEXPRESS64_BASE_FVP
1192         bool "Support Versatile Express ARMv8a FVP BASE model"
1193         select ARM64
1194         select PL01X_SERIAL
1195         select SEMIHOSTING
1196
1197 config TARGET_VEXPRESS64_JUNO
1198         bool "Support Versatile Express Juno Development Platform"
1199         select ARM64
1200         select PL01X_SERIAL
1201         select DM
1202         select OF_CONTROL
1203         select OF_BOARD
1204         select CLK
1205         select DM_SERIAL
1206         select ARM_PSCI_FW
1207         select PSCI_RESET
1208         select DM_ETH
1209         select BLK
1210         select USB
1211         select DM_USB
1212
1213 config TARGET_LS2080A_EMU
1214         bool "Support ls2080a_emu"
1215         select ARCH_LS2080A
1216         select ARM64
1217         select ARMV8_MULTIENTRY
1218         select FSL_DDR_SYNC_REFRESH
1219         help
1220           Support for Freescale LS2080A_EMU platform.
1221           The LS2080A Development System (EMULATOR) is a pre-silicon
1222           development platform that supports the QorIQ LS2080A
1223           Layerscape Architecture processor.
1224
1225 config TARGET_LS2080A_SIMU
1226         bool "Support ls2080a_simu"
1227         select ARCH_LS2080A
1228         select ARM64
1229         select ARMV8_MULTIENTRY
1230         select BOARD_LATE_INIT
1231         help
1232           Support for Freescale LS2080A_SIMU platform.
1233           The LS2080A Development System (QDS) is a pre silicon
1234           development platform that supports the QorIQ LS2080A
1235           Layerscape Architecture processor.
1236
1237 config TARGET_LS1088AQDS
1238         bool "Support ls1088aqds"
1239         select ARCH_LS1088A
1240         select ARM64
1241         select ARMV8_MULTIENTRY
1242         select ARCH_SUPPORT_TFABOOT
1243         select BOARD_LATE_INIT
1244         select SUPPORT_SPL
1245         select FSL_DDR_INTERACTIVE if !SD_BOOT
1246         help
1247           Support for NXP LS1088AQDS platform.
1248           The LS1088A Development System (QDS) is a high-performance
1249           development platform that supports the QorIQ LS1088A
1250           Layerscape Architecture processor.
1251
1252 config TARGET_LS2080AQDS
1253         bool "Support ls2080aqds"
1254         select ARCH_LS2080A
1255         select ARM64
1256         select ARMV8_MULTIENTRY
1257         select ARCH_SUPPORT_TFABOOT
1258         select BOARD_LATE_INIT
1259         select SUPPORT_SPL
1260         imply SCSI
1261         imply SCSI_AHCI
1262         select FSL_DDR_BIST
1263         select FSL_DDR_INTERACTIVE if !SPL
1264         help
1265           Support for Freescale LS2080AQDS platform.
1266           The LS2080A Development System (QDS) is a high-performance
1267           development platform that supports the QorIQ LS2080A
1268           Layerscape Architecture processor.
1269
1270 config TARGET_LS2080ARDB
1271         bool "Support ls2080ardb"
1272         select ARCH_LS2080A
1273         select ARM64
1274         select ARMV8_MULTIENTRY
1275         select ARCH_SUPPORT_TFABOOT
1276         select BOARD_LATE_INIT
1277         select SUPPORT_SPL
1278         select FSL_DDR_BIST
1279         select FSL_DDR_INTERACTIVE if !SPL
1280         imply SCSI
1281         imply SCSI_AHCI
1282         help
1283           Support for Freescale LS2080ARDB platform.
1284           The LS2080A Reference design board (RDB) is a high-performance
1285           development platform that supports the QorIQ LS2080A
1286           Layerscape Architecture processor.
1287
1288 config TARGET_LS2081ARDB
1289         bool "Support ls2081ardb"
1290         select ARCH_LS2080A
1291         select ARM64
1292         select ARMV8_MULTIENTRY
1293         select BOARD_LATE_INIT
1294         select SUPPORT_SPL
1295         help
1296           Support for Freescale LS2081ARDB platform.
1297           The LS2081A Reference design board (RDB) is a high-performance
1298           development platform that supports the QorIQ LS2081A/LS2041A
1299           Layerscape Architecture processor.
1300
1301 config TARGET_LX2160ARDB
1302         bool "Support lx2160ardb"
1303         select ARCH_LX2160A
1304         select ARM64
1305         select ARMV8_MULTIENTRY
1306         select ARCH_SUPPORT_TFABOOT
1307         select BOARD_LATE_INIT
1308         help
1309           Support for NXP LX2160ARDB platform.
1310           The lx2160ardb (LX2160A Reference design board (RDB)
1311           is a high-performance development platform that supports the
1312           QorIQ LX2160A/LX2120A/LX2080A Layerscape Architecture processor.
1313
1314 config TARGET_LX2160AQDS
1315         bool "Support lx2160aqds"
1316         select ARCH_LX2160A
1317         select ARM64
1318         select ARMV8_MULTIENTRY
1319         select ARCH_SUPPORT_TFABOOT
1320         select BOARD_LATE_INIT
1321         help
1322           Support for NXP LX2160AQDS platform.
1323           The lx2160aqds (LX2160A QorIQ Development System (QDS)
1324           is a high-performance development platform that supports the
1325           QorIQ LX2160A/LX2120A/LX2080A Layerscape Architecture processor.
1326
1327 config TARGET_HIKEY
1328         bool "Support HiKey 96boards Consumer Edition Platform"
1329         select ARM64
1330         select DM
1331         select DM_GPIO
1332         select DM_SERIAL
1333         select OF_CONTROL
1334         select PL01X_SERIAL
1335         select SPECIFY_CONSOLE_INDEX
1336         imply CMD_DM
1337           help
1338           Support for HiKey 96boards platform. It features a HI6220
1339           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
1340
1341 config TARGET_HIKEY960
1342         bool "Support HiKey960 96boards Consumer Edition Platform"
1343         select ARM64
1344         select DM
1345         select DM_SERIAL
1346         select OF_CONTROL
1347         select PL01X_SERIAL
1348         imply CMD_DM
1349           help
1350           Support for HiKey960 96boards platform. It features a HI3660
1351           SoC, with 4xA73 CPU, 4xA53 CPU, MALI-G71 GPU, and 3GB RAM.
1352
1353 config TARGET_POPLAR
1354         bool "Support Poplar 96boards Enterprise Edition Platform"
1355         select ARM64
1356         select DM
1357         select DM_SERIAL
1358         select DM_USB
1359         select OF_CONTROL
1360         select PL01X_SERIAL
1361         imply CMD_DM
1362           help
1363           Support for Poplar 96boards EE platform. It features a HI3798cv200
1364           SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
1365           making it capable of running any commercial set-top solution based on
1366           Linux or Android.
1367
1368 config TARGET_LS1012AQDS
1369         bool "Support ls1012aqds"
1370         select ARCH_LS1012A
1371         select ARM64
1372         select ARCH_SUPPORT_TFABOOT
1373         select BOARD_LATE_INIT
1374         help
1375           Support for Freescale LS1012AQDS platform.
1376           The LS1012A Development System (QDS) is a high-performance
1377           development platform that supports the QorIQ LS1012A
1378           Layerscape Architecture processor.
1379
1380 config TARGET_LS1012ARDB
1381         bool "Support ls1012ardb"
1382         select ARCH_LS1012A
1383         select ARM64
1384         select ARCH_SUPPORT_TFABOOT
1385         select BOARD_LATE_INIT
1386         imply SCSI
1387         imply SCSI_AHCI
1388         help
1389           Support for Freescale LS1012ARDB platform.
1390           The LS1012A Reference design board (RDB) is a high-performance
1391           development platform that supports the QorIQ LS1012A
1392           Layerscape Architecture processor.
1393
1394 config TARGET_LS1012A2G5RDB
1395         bool "Support ls1012a2g5rdb"
1396         select ARCH_LS1012A
1397         select ARM64
1398         select ARCH_SUPPORT_TFABOOT
1399         select BOARD_LATE_INIT
1400         imply SCSI
1401         help
1402           Support for Freescale LS1012A2G5RDB platform.
1403           The LS1012A 2G5 Reference design board (RDB) is a high-performance
1404           development platform that supports the QorIQ LS1012A
1405           Layerscape Architecture processor.
1406
1407 config TARGET_LS1012AFRWY
1408         bool "Support ls1012afrwy"
1409         select ARCH_LS1012A
1410         select ARM64
1411         select ARCH_SUPPORT_TFABOOT
1412         select BOARD_LATE_INIT
1413         imply SCSI
1414         imply SCSI_AHCI
1415         help
1416          Support for Freescale LS1012AFRWY platform.
1417          The LS1012A FRWY board (FRWY) is a high-performance
1418          development platform that supports the QorIQ LS1012A
1419          Layerscape Architecture processor.
1420
1421 config TARGET_LS1012AFRDM
1422         bool "Support ls1012afrdm"
1423         select ARCH_LS1012A
1424         select ARM64
1425         select ARCH_SUPPORT_TFABOOT
1426         help
1427           Support for Freescale LS1012AFRDM platform.
1428           The LS1012A Freedom  board (FRDM) is a high-performance
1429           development platform that supports the QorIQ LS1012A
1430           Layerscape Architecture processor.
1431
1432 config TARGET_LS1028AQDS
1433         bool "Support ls1028aqds"
1434         select ARCH_LS1028A
1435         select ARM64
1436         select ARMV8_MULTIENTRY
1437         select ARCH_SUPPORT_TFABOOT
1438         select BOARD_LATE_INIT
1439         help
1440           Support for Freescale LS1028AQDS platform
1441           The LS1028A Development System (QDS) is a high-performance
1442           development platform that supports the QorIQ LS1028A
1443           Layerscape Architecture processor.
1444
1445 config TARGET_LS1028ARDB
1446         bool "Support ls1028ardb"
1447         select ARCH_LS1028A
1448         select ARM64
1449         select ARMV8_MULTIENTRY
1450         select ARCH_SUPPORT_TFABOOT
1451         select BOARD_LATE_INIT
1452         help
1453           Support for Freescale LS1028ARDB platform
1454           The LS1028A Development System (RDB) is a high-performance
1455           development platform that supports the QorIQ LS1028A
1456           Layerscape Architecture processor.
1457
1458 config TARGET_LS1088ARDB
1459         bool "Support ls1088ardb"
1460         select ARCH_LS1088A
1461         select ARM64
1462         select ARMV8_MULTIENTRY
1463         select ARCH_SUPPORT_TFABOOT
1464         select BOARD_LATE_INIT
1465         select SUPPORT_SPL
1466         select FSL_DDR_INTERACTIVE if !SD_BOOT
1467         help
1468           Support for NXP LS1088ARDB platform.
1469           The LS1088A Reference design board (RDB) is a high-performance
1470           development platform that supports the QorIQ LS1088A
1471           Layerscape Architecture processor.
1472
1473 config TARGET_LS1021AQDS
1474         bool "Support ls1021aqds"
1475         select ARCH_LS1021A
1476         select ARCH_SUPPORT_PSCI
1477         select BOARD_EARLY_INIT_F
1478         select BOARD_LATE_INIT
1479         select CPU_V7A
1480         select CPU_V7_HAS_NONSEC
1481         select CPU_V7_HAS_VIRT
1482         select LS1_DEEP_SLEEP
1483         select SUPPORT_SPL
1484         select SYS_FSL_DDR
1485         select FSL_DDR_INTERACTIVE
1486         select DM_SPI_FLASH if FSL_DSPI || FSL_QSPI
1487         select SPI_FLASH_DATAFLASH if FSL_DSPI || FSL_QSPI
1488         imply SCSI
1489
1490 config TARGET_LS1021ATWR
1491         bool "Support ls1021atwr"
1492         select ARCH_LS1021A
1493         select ARCH_SUPPORT_PSCI
1494         select BOARD_EARLY_INIT_F
1495         select BOARD_LATE_INIT
1496         select CPU_V7A
1497         select CPU_V7_HAS_NONSEC
1498         select CPU_V7_HAS_VIRT
1499         select LS1_DEEP_SLEEP
1500         select SUPPORT_SPL
1501         select DM_SPI_FLASH if FSL_DSPI || FSL_QSPI
1502         imply SCSI
1503
1504 config TARGET_LS1021ATSN
1505         bool "Support ls1021atsn"
1506         select ARCH_LS1021A
1507         select ARCH_SUPPORT_PSCI
1508         select BOARD_EARLY_INIT_F
1509         select BOARD_LATE_INIT
1510         select CPU_V7A
1511         select CPU_V7_HAS_NONSEC
1512         select CPU_V7_HAS_VIRT
1513         select LS1_DEEP_SLEEP
1514         select SUPPORT_SPL
1515         imply SCSI
1516
1517 config TARGET_LS1021AIOT
1518         bool "Support ls1021aiot"
1519         select ARCH_LS1021A
1520         select ARCH_SUPPORT_PSCI
1521         select BOARD_LATE_INIT
1522         select CPU_V7A
1523         select CPU_V7_HAS_NONSEC
1524         select CPU_V7_HAS_VIRT
1525         select SUPPORT_SPL
1526         select DM_SPI_FLASH if FSL_DSPI || FSL_QSPI
1527         imply SCSI
1528         help
1529           Support for Freescale LS1021AIOT platform.
1530           The LS1021A Freescale board (IOT) is a high-performance
1531           development platform that supports the QorIQ LS1021A
1532           Layerscape Architecture processor.
1533
1534 config TARGET_LS1043AQDS
1535         bool "Support ls1043aqds"
1536         select ARCH_LS1043A
1537         select ARM64
1538         select ARMV8_MULTIENTRY
1539         select ARCH_SUPPORT_TFABOOT
1540         select BOARD_EARLY_INIT_F
1541         select BOARD_LATE_INIT
1542         select SUPPORT_SPL
1543         select FSL_DDR_INTERACTIVE if !SPL
1544         select FSL_DSPI if !SPL_NO_DSPI
1545         select DM_SPI_FLASH if FSL_DSPI
1546         imply SCSI
1547         imply SCSI_AHCI
1548         help
1549           Support for Freescale LS1043AQDS platform.
1550
1551 config TARGET_LS1043ARDB
1552         bool "Support ls1043ardb"
1553         select ARCH_LS1043A
1554         select ARM64
1555         select ARMV8_MULTIENTRY
1556         select ARCH_SUPPORT_TFABOOT
1557         select BOARD_EARLY_INIT_F
1558         select BOARD_LATE_INIT
1559         select SUPPORT_SPL
1560         select FSL_DSPI if !SPL_NO_DSPI
1561         select DM_SPI_FLASH if FSL_DSPI
1562         help
1563           Support for Freescale LS1043ARDB platform.
1564
1565 config TARGET_LS1046AQDS
1566         bool "Support ls1046aqds"
1567         select ARCH_LS1046A
1568         select ARM64
1569         select ARMV8_MULTIENTRY
1570         select ARCH_SUPPORT_TFABOOT
1571         select BOARD_EARLY_INIT_F
1572         select BOARD_LATE_INIT
1573         select DM_SPI_FLASH if DM_SPI
1574         select SUPPORT_SPL
1575         select FSL_DDR_BIST if !SPL
1576         select FSL_DDR_INTERACTIVE  if !SPL
1577         select FSL_DDR_INTERACTIVE if !SPL
1578         imply SCSI
1579         help
1580           Support for Freescale LS1046AQDS platform.
1581           The LS1046A Development System (QDS) is a high-performance
1582           development platform that supports the QorIQ LS1046A
1583           Layerscape Architecture processor.
1584
1585 config TARGET_LS1046ARDB
1586         bool "Support ls1046ardb"
1587         select ARCH_LS1046A
1588         select ARM64
1589         select ARMV8_MULTIENTRY
1590         select ARCH_SUPPORT_TFABOOT
1591         select BOARD_EARLY_INIT_F
1592         select BOARD_LATE_INIT
1593         select DM_SPI_FLASH if DM_SPI
1594         select POWER_MC34VR500
1595         select SUPPORT_SPL
1596         select FSL_DDR_BIST
1597         select FSL_DDR_INTERACTIVE if !SPL
1598         imply SCSI
1599         help
1600           Support for Freescale LS1046ARDB platform.
1601           The LS1046A Reference Design Board (RDB) is a high-performance
1602           development platform that supports the QorIQ LS1046A
1603           Layerscape Architecture processor.
1604
1605 config TARGET_LS1046AFRWY
1606         bool "Support ls1046afrwy"
1607         select ARCH_LS1046A
1608         select ARM64
1609         select ARMV8_MULTIENTRY
1610         select ARCH_SUPPORT_TFABOOT
1611         select BOARD_EARLY_INIT_F
1612         select BOARD_LATE_INIT
1613         select DM_SPI_FLASH if DM_SPI
1614         imply SCSI
1615         help
1616           Support for Freescale LS1046AFRWY platform.
1617           The LS1046A Freeway Board (FRWY) is a high-performance
1618           development platform that supports the QorIQ LS1046A
1619           Layerscape Architecture processor.
1620
1621 config TARGET_COLIBRI_PXA270
1622         bool "Support colibri_pxa270"
1623         select CPU_PXA
1624
1625 config ARCH_UNIPHIER
1626         bool "Socionext UniPhier SoCs"
1627         select BOARD_LATE_INIT
1628         select DM
1629         select DM_ETH
1630         select DM_GPIO
1631         select DM_I2C
1632         select DM_MMC
1633         select DM_MTD
1634         select DM_RESET
1635         select DM_SERIAL
1636         select DM_USB
1637         select OF_BOARD_SETUP
1638         select OF_CONTROL
1639         select OF_LIBFDT
1640         select PINCTRL
1641         select SPL_BOARD_INIT if SPL
1642         select SPL_DM if SPL
1643         select SPL_LIBCOMMON_SUPPORT if SPL
1644         select SPL_LIBGENERIC_SUPPORT if SPL
1645         select SPL_OF_CONTROL if SPL
1646         select SPL_PINCTRL if SPL
1647         select SUPPORT_SPL
1648         imply CMD_DM
1649         imply DISTRO_DEFAULTS
1650         imply FAT_WRITE
1651         help
1652           Support for UniPhier SoC family developed by Socionext Inc.
1653           (formerly, System LSI Business Division of Panasonic Corporation)
1654
1655 config ARCH_STM32
1656         bool "Support STMicroelectronics STM32 MCU with cortex M"
1657         select CPU_V7M
1658         select DM
1659         select DM_SERIAL
1660         imply CMD_DM
1661
1662 config ARCH_STI
1663         bool "Support STMicrolectronics SoCs"
1664         select BLK
1665         select CPU_V7A
1666         select DM
1667         select DM_MMC
1668         select DM_RESET
1669         select DM_SERIAL
1670         imply CMD_DM
1671         help
1672           Support for STMicroelectronics STiH407/10 SoC family.
1673           This SoC is used on Linaro 96Board STiH410-B2260
1674
1675 config ARCH_STM32MP
1676         bool "Support STMicroelectronics STM32MP Socs with cortex A"
1677         select ARCH_MISC_INIT
1678         select ARCH_SUPPORT_TFABOOT
1679         select BOARD_LATE_INIT
1680         select CLK
1681         select DM
1682         select DM_GPIO
1683         select DM_RESET
1684         select DM_SERIAL
1685         select MISC
1686         select OF_CONTROL
1687         select OF_LIBFDT
1688         select OF_SYSTEM_SETUP
1689         select PINCTRL
1690         select REGMAP
1691         select SUPPORT_SPL
1692         select SYSCON
1693         select SYSRESET
1694         select SYS_THUMB_BUILD
1695         imply SPL_SYSRESET
1696         imply CMD_DM
1697         imply CMD_POWEROFF
1698         imply OF_LIBFDT_OVERLAY
1699         imply ENV_VARS_UBOOT_RUNTIME_CONFIG
1700         imply USE_PREBOOT
1701         help
1702           Support for STM32MP SoC family developed by STMicroelectronics,
1703           MPUs based on ARM cortex A core
1704           U-BOOT is running in DDR, loaded by the First Stage BootLoader (FSBL).
1705           FSBL can be TF-A: Trusted Firmware for Cortex A, for trusted boot
1706           chain.
1707           SPL is the unsecure FSBL for the basic boot chain.
1708
1709 config ARCH_ROCKCHIP
1710         bool "Support Rockchip SoCs"
1711         select BLK
1712         select BINMAN if !ARM64
1713         select DM
1714         select DM_GPIO
1715         select DM_I2C
1716         select DM_MMC
1717         select DM_PWM
1718         select DM_REGULATOR
1719         select DM_SERIAL
1720         select DM_SPI
1721         select DM_SPI_FLASH
1722         select DM_USB if USB
1723         select ENABLE_ARM_SOC_BOOT0_HOOK
1724         select OF_CONTROL
1725         select SPI
1726         select SPL_DM if SPL
1727         select SPL_DM_SPI if SPL
1728         select SPL_DM_SPI_FLASH if SPL
1729         select SYS_MALLOC_F
1730         select SYS_THUMB_BUILD if !ARM64
1731         imply ADC
1732         imply CMD_DM
1733         imply DEBUG_UART_BOARD_INIT
1734         imply DISTRO_DEFAULTS
1735         imply FAT_WRITE
1736         imply SARADC_ROCKCHIP
1737         imply SPL_SYSRESET
1738         imply SPL_SYS_MALLOC_SIMPLE
1739         imply SYS_NS16550
1740         imply TPL_SYSRESET
1741         imply USB_FUNCTION_FASTBOOT
1742
1743 config TARGET_THUNDERX_88XX
1744         bool "Support ThunderX 88xx"
1745         select ARM64
1746         select OF_CONTROL
1747         select PL01X_SERIAL
1748         select SYS_CACHE_SHIFT_7
1749
1750 config ARCH_ASPEED
1751         bool "Support Aspeed SoCs"
1752         select DM
1753         select OF_CONTROL
1754         imply CMD_DM
1755
1756 config TARGET_DURIAN
1757         bool "Support Phytium Durian Platform"
1758         select ARM64
1759         help
1760           Support for durian platform.
1761           It has 2GB Sdram, uart and pcie.
1762
1763 config TARGET_PRESIDIO_ASIC
1764         bool "Support Cortina Presidio ASIC Platform"
1765         select ARM64
1766
1767 endchoice
1768
1769 config ARCH_SUPPORT_TFABOOT
1770         bool
1771
1772 config TFABOOT
1773         bool "Support for booting from TF-A"
1774         depends on ARCH_SUPPORT_TFABOOT
1775         default n
1776         help
1777           Enabling this will make a U-Boot binary that is capable of being
1778           booted via TF-A (Trusted Firmware for Cortex-A).
1779
1780 config TI_SECURE_DEVICE
1781         bool "HS Device Type Support"
1782         depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
1783         help
1784           If a high secure (HS) device type is being used, this config
1785           must be set. This option impacts various aspects of the
1786           build system (to create signed boot images that can be
1787           authenticated) and the code. See the doc/README.ti-secure
1788           file for further details.
1789
1790 if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
1791 config ISW_ENTRY_ADDR
1792         hex "Address in memory or XIP address of bootloader entry point"
1793         default 0x402F4000 if AM43XX
1794         default 0x402F0400 if AM33XX
1795         default 0x40301350 if OMAP54XX
1796         help
1797           After any reset, the boot ROM searches the boot media for a valid
1798           boot image. For non-XIP devices, the ROM then copies the image into
1799           internal memory. For all boot modes, after the ROM processes the
1800           boot image it eventually computes the entry point address depending
1801           on the device type (secure/non-secure), boot media (xip/non-xip) and
1802           image headers.
1803 endif
1804
1805 source "arch/arm/mach-aspeed/Kconfig"
1806
1807 source "arch/arm/mach-at91/Kconfig"
1808
1809 source "arch/arm/mach-bcm283x/Kconfig"
1810
1811 source "arch/arm/mach-bcmstb/Kconfig"
1812
1813 source "arch/arm/mach-davinci/Kconfig"
1814
1815 source "arch/arm/mach-exynos/Kconfig"
1816
1817 source "arch/arm/mach-highbank/Kconfig"
1818
1819 source "arch/arm/mach-integrator/Kconfig"
1820
1821 source "arch/arm/mach-ipq40xx/Kconfig"
1822
1823 source "arch/arm/mach-k3/Kconfig"
1824
1825 source "arch/arm/mach-keystone/Kconfig"
1826
1827 source "arch/arm/mach-kirkwood/Kconfig"
1828
1829 source "arch/arm/mach-lpc32xx/Kconfig"
1830
1831 source "arch/arm/mach-mvebu/Kconfig"
1832
1833 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1834
1835 source "arch/arm/mach-imx/mx2/Kconfig"
1836
1837 source "arch/arm/mach-imx/mx3/Kconfig"
1838
1839 source "arch/arm/mach-imx/mx5/Kconfig"
1840
1841 source "arch/arm/mach-imx/mx6/Kconfig"
1842
1843 source "arch/arm/mach-imx/mx7/Kconfig"
1844
1845 source "arch/arm/mach-imx/mx7ulp/Kconfig"
1846
1847 source "arch/arm/mach-imx/imx8/Kconfig"
1848
1849 source "arch/arm/mach-imx/imx8m/Kconfig"
1850
1851 source "arch/arm/mach-imx/imxrt/Kconfig"
1852
1853 source "arch/arm/mach-imx/mxs/Kconfig"
1854
1855 source "arch/arm/mach-omap2/Kconfig"
1856
1857 source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1858
1859 source "arch/arm/mach-orion5x/Kconfig"
1860
1861 source "arch/arm/mach-owl/Kconfig"
1862
1863 source "arch/arm/mach-rmobile/Kconfig"
1864
1865 source "arch/arm/mach-meson/Kconfig"
1866
1867 source "arch/arm/mach-mediatek/Kconfig"
1868
1869 source "arch/arm/mach-qemu/Kconfig"
1870
1871 source "arch/arm/mach-rockchip/Kconfig"
1872
1873 source "arch/arm/mach-s5pc1xx/Kconfig"
1874
1875 source "arch/arm/mach-snapdragon/Kconfig"
1876
1877 source "arch/arm/mach-socfpga/Kconfig"
1878
1879 source "arch/arm/mach-sti/Kconfig"
1880
1881 source "arch/arm/mach-stm32/Kconfig"
1882
1883 source "arch/arm/mach-stm32mp/Kconfig"
1884
1885 source "arch/arm/mach-sunxi/Kconfig"
1886
1887 source "arch/arm/mach-tegra/Kconfig"
1888
1889 source "arch/arm/mach-u8500/Kconfig"
1890
1891 source "arch/arm/mach-uniphier/Kconfig"
1892
1893 source "arch/arm/cpu/armv7/vf610/Kconfig"
1894
1895 source "arch/arm/mach-zynq/Kconfig"
1896
1897 source "arch/arm/mach-zynqmp/Kconfig"
1898
1899 source "arch/arm/mach-versal/Kconfig"
1900
1901 source "arch/arm/mach-zynqmp-r5/Kconfig"
1902
1903 source "arch/arm/cpu/armv7/Kconfig"
1904
1905 source "arch/arm/cpu/armv8/Kconfig"
1906
1907 source "arch/arm/mach-imx/Kconfig"
1908
1909 source "arch/arm/mach-nexell/Kconfig"
1910
1911 source "board/bosch/shc/Kconfig"
1912 source "board/bosch/guardian/Kconfig"
1913 source "board/CarMediaLab/flea3/Kconfig"
1914 source "board/Marvell/aspenite/Kconfig"
1915 source "board/Marvell/gplugd/Kconfig"
1916 source "board/armadeus/apf27/Kconfig"
1917 source "board/armltd/vexpress/Kconfig"
1918 source "board/armltd/vexpress64/Kconfig"
1919 source "board/cortina/presidio-asic/Kconfig"
1920 source "board/broadcom/bcm23550_w1d/Kconfig"
1921 source "board/broadcom/bcm28155_ap/Kconfig"
1922 source "board/broadcom/bcm963158/Kconfig"
1923 source "board/broadcom/bcm968360bg/Kconfig"
1924 source "board/broadcom/bcm968580xref/Kconfig"
1925 source "board/broadcom/bcmcygnus/Kconfig"
1926 source "board/broadcom/bcmnsp/Kconfig"
1927 source "board/broadcom/bcmns2/Kconfig"
1928 source "board/broadcom/bcmns3/Kconfig"
1929 source "board/cavium/thunderx/Kconfig"
1930 source "board/cirrus/edb93xx/Kconfig"
1931 source "board/eets/pdu001/Kconfig"
1932 source "board/emulation/qemu-arm/Kconfig"
1933 source "board/freescale/ls2080a/Kconfig"
1934 source "board/freescale/ls2080aqds/Kconfig"
1935 source "board/freescale/ls2080ardb/Kconfig"
1936 source "board/freescale/ls1088a/Kconfig"
1937 source "board/freescale/ls1028a/Kconfig"
1938 source "board/freescale/ls1021aqds/Kconfig"
1939 source "board/freescale/ls1043aqds/Kconfig"
1940 source "board/freescale/ls1021atwr/Kconfig"
1941 source "board/freescale/ls1021atsn/Kconfig"
1942 source "board/freescale/ls1021aiot/Kconfig"
1943 source "board/freescale/ls1046aqds/Kconfig"
1944 source "board/freescale/ls1043ardb/Kconfig"
1945 source "board/freescale/ls1046ardb/Kconfig"
1946 source "board/freescale/ls1046afrwy/Kconfig"
1947 source "board/freescale/ls1012aqds/Kconfig"
1948 source "board/freescale/ls1012ardb/Kconfig"
1949 source "board/freescale/ls1012afrdm/Kconfig"
1950 source "board/freescale/lx2160a/Kconfig"
1951 source "board/freescale/mx35pdk/Kconfig"
1952 source "board/freescale/s32v234evb/Kconfig"
1953 source "board/grinn/chiliboard/Kconfig"
1954 source "board/hisilicon/hikey/Kconfig"
1955 source "board/hisilicon/hikey960/Kconfig"
1956 source "board/hisilicon/poplar/Kconfig"
1957 source "board/isee/igep003x/Kconfig"
1958 source "board/spear/spear300/Kconfig"
1959 source "board/spear/spear310/Kconfig"
1960 source "board/spear/spear320/Kconfig"
1961 source "board/spear/spear600/Kconfig"
1962 source "board/spear/x600/Kconfig"
1963 source "board/st/stv0991/Kconfig"
1964 source "board/tcl/sl50/Kconfig"
1965 source "board/toradex/colibri_pxa270/Kconfig"
1966 source "board/variscite/dart_6ul/Kconfig"
1967 source "board/vscom/baltos/Kconfig"
1968 source "board/xilinx/Kconfig"
1969 source "board/xilinx/zynq/Kconfig"
1970 source "board/xilinx/zynqmp/Kconfig"
1971 source "board/phytium/durian/Kconfig"
1972
1973 source "arch/arm/Kconfig.debug"
1974
1975 endmenu
1976
1977 config SPL_LDSCRIPT
1978         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1979         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1980         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64