arm: zynqmp: Add ZynqMP minimal R5 support
[oweals/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         help
16           U-Boot expects to be linked to a specific hard-coded address, and to
17           be loaded to and run from that address. This option lifts that
18           restriction, thus allowing the code to be loaded to and executed
19           from almost any address. This logic relies on the relocation
20           information that is embedded into the binary to support U-Boot
21           relocating itself to the top-of-RAM later during execution.
22
23 config SYS_INIT_SP_BSS_OFFSET
24         int
25         help
26           U-Boot typically uses a hard-coded value for the stack pointer
27           before relocation. Define this option to instead calculate the
28           initial SP at run-time. This is useful to avoid hard-coding addresses
29           into U-Boot, so that can be loaded and executed at arbitrary
30           addresses and thus avoid using arbitrary addresses at runtime. This
31           option's value is the offset added to &_bss_start in order to
32           calculate the stack pointer. This offset should be large enough so
33           that the early malloc region, global data (gd), and early stack usage
34           do not overlap any appended DTB.
35
36 config LINUX_KERNEL_IMAGE_HEADER
37         bool
38         help
39           Place a Linux kernel image header at the start of the U-Boot binary.
40           The format of the header is described in the Linux kernel source at
41           Documentation/arm64/booting.txt. This feature is useful since the
42           image header reports the amount of memory (BSS and similar) that
43           U-Boot needs to use, but which isn't part of the binary.
44
45 if LINUX_KERNEL_IMAGE_HEADER
46 config LNX_KRNL_IMG_TEXT_OFFSET_BASE
47         hex
48         help
49           The value subtracted from CONFIG_SYS_TEXT_BASE to calculate the
50           TEXT_OFFSET value written in to the Linux kernel image header.
51 endif
52 endif
53
54 config STATIC_RELA
55         bool
56         default y if ARM64 && !POSITION_INDEPENDENT
57
58 config DMA_ADDR_T_64BIT
59         bool
60         default y if ARM64
61
62 config HAS_VBAR
63         bool
64
65 config HAS_THUMB2
66         bool
67
68 # Used for compatibility with asm files copied from the kernel
69 config ARM_ASM_UNIFIED
70         bool
71         default y
72
73 # Used for compatibility with asm files copied from the kernel
74 config THUMB2_KERNEL
75         bool
76
77 config SYS_ARM_CACHE_CP15
78         bool "CP15 based cache enabling support"
79         help
80           Select this if your processor suports enabling caches by using
81           CP15 registers.
82
83 config SYS_ARM_MMU
84         bool "MMU-based Paged Memory Management Support"
85         select SYS_ARM_CACHE_CP15
86         help
87           Select if you want MMU-based virtualised addressing space
88           support by paged memory management.
89
90 config SYS_ARM_MPU
91         bool 'Use the ARM v7 PMSA Compliant MPU'
92         help
93           Some ARM systems without an MMU have instead a Memory Protection
94           Unit (MPU) that defines the type and permissions for regions of
95           memory.
96           If your CPU has an MPU then you should choose 'y' here unless you
97           know that you do not want to use the MPU.
98
99 # If set, the workarounds for these ARM errata are applied early during U-Boot
100 # startup. Note that in general these options force the workarounds to be
101 # applied; no CPU-type/version detection exists, unlike the similar options in
102 # the Linux kernel. Do not set these options unless they apply!  Also note that
103 # the following can be machine specific errata. These do have ability to
104 # provide rudimentary version and machine specific checks, but expect no
105 # product checks:
106 # CONFIG_ARM_ERRATA_430973
107 # CONFIG_ARM_ERRATA_454179
108 # CONFIG_ARM_ERRATA_621766
109 # CONFIG_ARM_ERRATA_798870
110 # CONFIG_ARM_ERRATA_801819
111 config ARM_ERRATA_430973
112         bool
113
114 config ARM_ERRATA_454179
115         bool
116
117 config ARM_ERRATA_621766
118         bool
119
120 config ARM_ERRATA_716044
121         bool
122
123 config ARM_ERRATA_725233
124         bool
125
126 config ARM_ERRATA_742230
127         bool
128
129 config ARM_ERRATA_743622
130         bool
131
132 config ARM_ERRATA_751472
133         bool
134
135 config ARM_ERRATA_761320
136         bool
137
138 config ARM_ERRATA_773022
139         bool
140
141 config ARM_ERRATA_774769
142         bool
143
144 config ARM_ERRATA_794072
145         bool
146
147 config ARM_ERRATA_798870
148         bool
149
150 config ARM_ERRATA_801819
151         bool
152
153 config ARM_ERRATA_826974
154         bool
155
156 config ARM_ERRATA_828024
157         bool
158
159 config ARM_ERRATA_829520
160         bool
161
162 config ARM_ERRATA_833069
163         bool
164
165 config ARM_ERRATA_833471
166         bool
167
168 config ARM_ERRATA_845369
169        bool
170
171 config ARM_ERRATA_852421
172         bool
173
174 config ARM_ERRATA_852423
175         bool
176
177 config ARM_ERRATA_855873
178         bool
179
180 config CPU_ARM720T
181         bool
182         select SYS_CACHE_SHIFT_5
183         imply SYS_ARM_MMU
184
185 config CPU_ARM920T
186         bool
187         select SYS_CACHE_SHIFT_5
188         imply SYS_ARM_MMU
189
190 config CPU_ARM926EJS
191         bool
192         select SYS_CACHE_SHIFT_5
193         imply SYS_ARM_MMU
194
195 config CPU_ARM946ES
196         bool
197         select SYS_CACHE_SHIFT_5
198         imply SYS_ARM_MMU
199
200 config CPU_ARM1136
201         bool
202         select SYS_CACHE_SHIFT_5
203         imply SYS_ARM_MMU
204
205 config CPU_ARM1176
206         bool
207         select HAS_VBAR
208         select SYS_CACHE_SHIFT_5
209         imply SYS_ARM_MMU
210
211 config CPU_V7A
212         bool
213         select HAS_VBAR
214         select HAS_THUMB2
215         select SYS_CACHE_SHIFT_6
216         imply SYS_ARM_MMU
217
218 config CPU_V7M
219         bool
220         select HAS_THUMB2
221         select THUMB2_KERNEL
222         select SYS_CACHE_SHIFT_5
223         select SYS_ARM_MPU
224
225 config CPU_V7R
226         bool
227         select HAS_THUMB2
228         select SYS_CACHE_SHIFT_6
229         select SYS_ARM_MPU
230         select SYS_ARM_CACHE_CP15
231
232 config CPU_PXA
233         bool
234         select SYS_CACHE_SHIFT_5
235         imply SYS_ARM_MMU
236
237 config CPU_SA1100
238         bool
239         select SYS_CACHE_SHIFT_5
240         imply SYS_ARM_MMU
241
242 config SYS_CPU
243         default "arm720t" if CPU_ARM720T
244         default "arm920t" if CPU_ARM920T
245         default "arm926ejs" if CPU_ARM926EJS
246         default "arm946es" if CPU_ARM946ES
247         default "arm1136" if CPU_ARM1136
248         default "arm1176" if CPU_ARM1176
249         default "armv7" if CPU_V7A
250         default "armv7" if CPU_V7R
251         default "armv7m" if CPU_V7M
252         default "pxa" if CPU_PXA
253         default "sa1100" if CPU_SA1100
254         default "armv8" if ARM64
255
256 config SYS_ARM_ARCH
257         int
258         default 4 if CPU_ARM720T
259         default 4 if CPU_ARM920T
260         default 5 if CPU_ARM926EJS
261         default 5 if CPU_ARM946ES
262         default 6 if CPU_ARM1136
263         default 6 if CPU_ARM1176
264         default 7 if CPU_V7A
265         default 7 if CPU_V7M
266         default 7 if CPU_V7R
267         default 5 if CPU_PXA
268         default 4 if CPU_SA1100
269         default 8 if ARM64
270
271 config SYS_CACHE_SHIFT_5
272         bool
273
274 config SYS_CACHE_SHIFT_6
275         bool
276
277 config SYS_CACHE_SHIFT_7
278         bool
279
280 config SYS_CACHELINE_SIZE
281         int
282         default 128 if SYS_CACHE_SHIFT_7
283         default 64 if SYS_CACHE_SHIFT_6
284         default 32 if SYS_CACHE_SHIFT_5
285
286 config SYS_ARCH_TIMER
287         bool "ARM Generic Timer support"
288         depends on CPU_V7A || ARM64
289         default y if ARM64
290         help
291           The ARM Generic Timer (aka arch-timer) provides an architected
292           interface to a timer source on an SoC.
293           It is mandantory for ARMv8 implementation and widely available
294           on ARMv7 systems.
295
296 config ARM_SMCCC
297         bool "Support for ARM SMC Calling Convention (SMCCC)"
298         depends on CPU_V7A || ARM64
299         select ARM_PSCI_FW
300         help
301           Say Y here if you want to enable ARM SMC Calling Convention.
302           This should be enabled if U-Boot needs to communicate with system
303           firmware (for example, PSCI) according to SMCCC.
304
305 config SEMIHOSTING
306         bool "support boot from semihosting"
307         help
308           In emulated environments, semihosting is a way for
309           the hosted environment to call out to the emulator to
310           retrieve files from the host machine.
311
312 config SYS_THUMB_BUILD
313         bool "Build U-Boot using the Thumb instruction set"
314         depends on !ARM64
315         help
316            Use this flag to build U-Boot using the Thumb instruction set for
317            ARM architectures. Thumb instruction set provides better code
318            density. For ARM architectures that support Thumb2 this flag will
319            result in Thumb2 code generated by GCC.
320
321 config SPL_SYS_THUMB_BUILD
322         bool "Build SPL using the Thumb instruction set"
323         default y if SYS_THUMB_BUILD
324         depends on !ARM64
325         help
326            Use this flag to build SPL using the Thumb instruction set for
327            ARM architectures. Thumb instruction set provides better code
328            density. For ARM architectures that support Thumb2 this flag will
329            result in Thumb2 code generated by GCC.
330
331 config SYS_L2CACHE_OFF
332         bool "L2cache off"
333         help
334           If SoC does not support L2CACHE or one do not want to enable
335           L2CACHE, choose this option.
336
337 config ENABLE_ARM_SOC_BOOT0_HOOK
338         bool "prepare BOOT0 header"
339         help
340           If the SoC's BOOT0 requires a header area filled with (magic)
341           values, then choose this option, and create a file included as
342           <asm/arch/boot0.h> which contains the required assembler code.
343
344 config ARM_CORTEX_CPU_IS_UP
345         bool
346         default n
347
348 config USE_ARCH_MEMCPY
349         bool "Use an assembly optimized implementation of memcpy"
350         default y
351         depends on !ARM64
352         help
353           Enable the generation of an optimized version of memcpy.
354           Such implementation may be faster under some conditions
355           but may increase the binary size.
356
357 config SPL_USE_ARCH_MEMCPY
358         bool "Use an assembly optimized implementation of memcpy for SPL"
359         default y if USE_ARCH_MEMCPY
360         depends on !ARM64
361         help
362           Enable the generation of an optimized version of memcpy.
363           Such implementation may be faster under some conditions
364           but may increase the binary size.
365
366 config USE_ARCH_MEMSET
367         bool "Use an assembly optimized implementation of memset"
368         default y
369         depends on !ARM64
370         help
371           Enable the generation of an optimized version of memset.
372           Such implementation may be faster under some conditions
373           but may increase the binary size.
374
375 config SPL_USE_ARCH_MEMSET
376         bool "Use an assembly optimized implementation of memset for SPL"
377         default y if USE_ARCH_MEMSET
378         depends on !ARM64
379         help
380           Enable the generation of an optimized version of memset.
381           Such implementation may be faster under some conditions
382           but may increase the binary size.
383
384 config ARM64_SUPPORT_AARCH32
385         bool "ARM64 system support AArch32 execution state"
386         default y if ARM64 && !TARGET_THUNDERX_88XX
387         help
388           This ARM64 system supports AArch32 execution state.
389
390 choice
391         prompt "Target select"
392         default TARGET_HIKEY
393
394 config ARCH_AT91
395         bool "Atmel AT91"
396         select SPL_BOARD_INIT if SPL
397
398 config TARGET_EDB93XX
399         bool "Support edb93xx"
400         select CPU_ARM920T
401         select PL010_SERIAL
402
403 config TARGET_ASPENITE
404         bool "Support aspenite"
405         select CPU_ARM926EJS
406
407 config TARGET_GPLUGD
408         bool "Support gplugd"
409         select CPU_ARM926EJS
410
411 config ARCH_DAVINCI
412         bool "TI DaVinci"
413         select CPU_ARM926EJS
414         imply CMD_SAVES
415         help
416           Support for TI's DaVinci platform.
417
418 config KIRKWOOD
419         bool "Marvell Kirkwood"
420         select CPU_ARM926EJS
421         select BOARD_EARLY_INIT_F
422         select ARCH_MISC_INIT
423
424 config ARCH_MVEBU
425         bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
426         select OF_CONTROL
427         select OF_SEPARATE
428         select DM
429         select DM_ETH
430         select DM_SERIAL
431         select DM_SPI
432         select DM_SPI_FLASH
433         select SPI
434
435 config TARGET_DEVKIT3250
436         bool "Support devkit3250"
437         select CPU_ARM926EJS
438         select SUPPORT_SPL
439
440 config TARGET_WORK_92105
441         bool "Support work_92105"
442         select CPU_ARM926EJS
443         select SUPPORT_SPL
444
445 config TARGET_APF27
446         bool "Support apf27"
447         select CPU_ARM926EJS
448         select SUPPORT_SPL
449
450 config ORION5X
451         bool "Marvell Orion"
452         select CPU_ARM926EJS
453
454 config TARGET_SPEAR300
455         bool "Support spear300"
456         select CPU_ARM926EJS
457         select BOARD_EARLY_INIT_F
458         imply CMD_SAVES
459         select PL011_SERIAL
460
461 config TARGET_SPEAR310
462         bool "Support spear310"
463         select CPU_ARM926EJS
464         select BOARD_EARLY_INIT_F
465         imply CMD_SAVES
466         select PL011_SERIAL
467
468 config TARGET_SPEAR320
469         bool "Support spear320"
470         select CPU_ARM926EJS
471         select BOARD_EARLY_INIT_F
472         imply CMD_SAVES
473         select PL011_SERIAL
474
475 config TARGET_SPEAR600
476         bool "Support spear600"
477         select CPU_ARM926EJS
478         select BOARD_EARLY_INIT_F
479         imply CMD_SAVES
480         select PL011_SERIAL
481
482 config TARGET_STV0991
483         bool "Support stv0991"
484         select CPU_V7A
485         select DM
486         select DM_SERIAL
487         select DM_SPI
488         select DM_SPI_FLASH
489         select SPI
490         select SPI_FLASH
491         select PL01X_SERIAL
492
493 config TARGET_X600
494         bool "Support x600"
495         select BOARD_LATE_INIT
496         select CPU_ARM926EJS
497         select SUPPORT_SPL
498         select PL011_SERIAL
499
500 config TARGET_MX31PDK
501         bool "Support mx31pdk"
502         select BOARD_LATE_INIT
503         select CPU_ARM1136
504         select SUPPORT_SPL
505         select BOARD_EARLY_INIT_F
506
507 config TARGET_WOODBURN
508         bool "Support woodburn"
509         select CPU_ARM1136
510
511 config TARGET_WOODBURN_SD
512         bool "Support woodburn_sd"
513         select CPU_ARM1136
514         select SUPPORT_SPL
515
516 config TARGET_FLEA3
517         bool "Support flea3"
518         select CPU_ARM1136
519
520 config TARGET_MX35PDK
521         bool "Support mx35pdk"
522         select BOARD_LATE_INIT
523         select CPU_ARM1136
524
525 config ARCH_BCM283X
526         bool "Broadcom BCM283X family"
527         select DM
528         select DM_SERIAL
529         select DM_GPIO
530         select OF_CONTROL
531         select PL01X_SERIAL
532         select SERIAL_SEARCH_ALL
533         imply FAT_WRITE
534
535 config TARGET_VEXPRESS_CA15_TC2
536         bool "Support vexpress_ca15_tc2"
537         select CPU_V7A
538         select CPU_V7_HAS_NONSEC
539         select CPU_V7_HAS_VIRT
540         select PL011_SERIAL
541
542 config TARGET_VEXPRESS_CA5X2
543         bool "Support vexpress_ca5x2"
544         select CPU_V7A
545         select PL011_SERIAL
546
547 config TARGET_VEXPRESS_CA9X4
548         bool "Support vexpress_ca9x4"
549         select CPU_V7A
550         select PL011_SERIAL
551
552 config TARGET_BCM23550_W1D
553         bool "Support bcm23550_w1d"
554         select CPU_V7A
555         imply CRC32_VERIFY
556         imply FAT_WRITE
557
558 config TARGET_BCM28155_AP
559         bool "Support bcm28155_ap"
560         select CPU_V7A
561         imply CRC32_VERIFY
562         imply FAT_WRITE
563
564 config TARGET_BCMCYGNUS
565         bool "Support bcmcygnus"
566         select CPU_V7A
567         imply CRC32_VERIFY
568         imply CMD_HASH
569         imply FAT_WRITE
570         imply HASH_VERIFY
571         imply NETDEVICES
572         imply BCM_SF2_ETH
573         imply BCM_SF2_ETH_GMAC
574
575 config TARGET_BCMNSP
576         bool "Support bcmnsp"
577         select CPU_V7A
578
579 config TARGET_BCMNS2
580         bool "Support Broadcom Northstar2"
581         select ARM64
582         help
583           Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
584           ARMv8 Cortex-A57 processors targeting a broad range of networking
585           applications
586
587 config ARCH_EXYNOS
588         bool "Samsung EXYNOS"
589         select DM
590         select DM_I2C
591         select DM_SPI_FLASH
592         select DM_SERIAL
593         select DM_SPI
594         select DM_GPIO
595         select DM_KEYBOARD
596         select SPI
597         imply FAT_WRITE
598
599 config ARCH_S5PC1XX
600         bool "Samsung S5PC1XX"
601         select CPU_V7A
602         select DM
603         select DM_SERIAL
604         select DM_GPIO
605         select DM_I2C
606
607 config ARCH_HIGHBANK
608         bool "Calxeda Highbank"
609         select CPU_V7A
610         select PL011_SERIAL
611
612 config ARCH_INTEGRATOR
613         bool "ARM Ltd. Integrator family"
614         select DM
615         select DM_SERIAL
616         select PL01X_SERIAL
617
618 config ARCH_KEYSTONE
619         bool "TI Keystone"
620         select CPU_V7A
621         select SUPPORT_SPL
622         select SYS_THUMB_BUILD
623         select CMD_POWEROFF
624         select SYS_ARCH_TIMER
625         imply CMD_MTDPARTS
626         imply FIT
627         imply CMD_SAVES
628
629 config ARCH_OMAP2PLUS
630         bool "TI OMAP2+"
631         select CPU_V7A
632         select SPL_BOARD_INIT if SPL
633         select SPL_STACK_R if SPL
634         select SUPPORT_SPL
635         imply FIT
636
637 config ARCH_MESON
638         bool "Amlogic Meson"
639         imply DISTRO_DEFAULTS
640         help
641           Support for the Meson SoC family developed by Amlogic Inc.,
642           targeted at media players and tablet computers. We currently
643           support the S905 (GXBaby) 64-bit SoC.
644
645 config ARCH_MX8M
646         bool "NXP i.MX8M platform"
647         select ARM64
648         select DM
649         select SUPPORT_SPL
650
651 config ARCH_MX23
652         bool "NXP i.MX23 family"
653         select CPU_ARM926EJS
654         select PL011_SERIAL
655         select SUPPORT_SPL
656
657 config ARCH_MX25
658         bool "NXP MX25"
659         select CPU_ARM926EJS
660         imply MXC_GPIO
661
662 config ARCH_MX28
663         bool "NXP i.MX28 family"
664         select CPU_ARM926EJS
665         select PL011_SERIAL
666         select SUPPORT_SPL
667
668 config ARCH_MX7ULP
669         bool "NXP MX7ULP"
670         select CPU_V7A
671         select ROM_UNIFIED_SECTIONS
672         imply MXC_GPIO
673
674 config ARCH_MX7
675         bool "Freescale MX7"
676         select CPU_V7A
677         select SYS_FSL_HAS_SEC if SECURE_BOOT
678         select SYS_FSL_SEC_COMPAT_4
679         select SYS_FSL_SEC_LE
680         select BOARD_EARLY_INIT_F
681         select ARCH_MISC_INIT
682         imply MXC_GPIO
683
684 config ARCH_MX6
685         bool "Freescale MX6"
686         select CPU_V7A
687         select SYS_FSL_HAS_SEC if SECURE_BOOT
688         select SYS_FSL_SEC_COMPAT_4
689         select SYS_FSL_SEC_LE
690         select SYS_THUMB_BUILD if SPL
691         imply MXC_GPIO
692
693 if ARCH_MX6
694 config SPL_LDSCRIPT
695         default "arch/arm/mach-omap2/u-boot-spl.lds"
696 endif
697
698 config ARCH_MX5
699         bool "Freescale MX5"
700         select CPU_V7A
701         select BOARD_EARLY_INIT_F
702         imply MXC_GPIO
703
704 config ARCH_QEMU
705         bool "QEMU Virtual Platform"
706         select DM
707         select DM_SERIAL
708         select OF_CONTROL
709         select PL01X_SERIAL
710
711 config ARCH_RMOBILE
712         bool "Renesas ARM SoCs"
713         select DM
714         select DM_SERIAL
715         select BOARD_EARLY_INIT_F
716         imply FAT_WRITE
717         imply SYS_THUMB_BUILD
718
719 config TARGET_S32V234EVB
720         bool "Support s32v234evb"
721         select ARM64
722         select SYS_FSL_ERRATUM_ESDHC111
723
724 config ARCH_SNAPDRAGON
725         bool "Qualcomm Snapdragon SoCs"
726         select ARM64
727         select DM
728         select DM_GPIO
729         select DM_SERIAL
730         select SPMI
731         select OF_CONTROL
732         select OF_SEPARATE
733
734 config ARCH_SOCFPGA
735         bool "Altera SOCFPGA family"
736         select CPU_V7A
737         select SUPPORT_SPL
738         select OF_CONTROL
739         select SPL_OF_CONTROL
740         select DM
741         select ENABLE_ARM_SOC_BOOT0_HOOK
742         select ARCH_EARLY_INIT_R
743         select ARCH_MISC_INIT
744         select SYS_THUMB_BUILD
745         imply CMD_MTDPARTS
746         imply CRC32_VERIFY
747         imply DM_SPI
748         imply DM_SPI_FLASH
749         imply FAT_WRITE
750         imply HW_WATCHDOG
751         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
752
753 config ARCH_SUNXI
754         bool "Support sunxi (Allwinner) SoCs"
755         select BINMAN
756         select CMD_GPIO
757         select CMD_MMC if MMC
758         select CMD_USB if DISTRO_DEFAULTS
759         select DM
760         select DM_ETH
761         select DM_GPIO
762         select DM_KEYBOARD
763         select DM_SERIAL
764         select DM_USB if DISTRO_DEFAULTS
765         select OF_BOARD_SETUP
766         select OF_CONTROL
767         select OF_SEPARATE
768         select SPECIFY_CONSOLE_INDEX
769         select SPL_STACK_R if SPL
770         select SPL_SYS_MALLOC_SIMPLE if SPL
771         select SYS_NS16550
772         select SPL_SYS_THUMB_BUILD if !ARM64
773         select SYS_THUMB_BUILD if !ARM64
774         select USB if DISTRO_DEFAULTS
775         select USB_STORAGE if DISTRO_DEFAULTS
776         select USB_KEYBOARD if DISTRO_DEFAULTS
777         select USE_TINY_PRINTF
778         imply CMD_GPT
779         imply DISTRO_DEFAULTS
780         imply FAT_WRITE
781         imply OF_LIBFDT_OVERLAY
782         imply PRE_CONSOLE_BUFFER
783         imply SPL_GPIO_SUPPORT
784         imply SPL_LIBCOMMON_SUPPORT
785         imply SPL_LIBDISK_SUPPORT
786         imply SPL_LIBGENERIC_SUPPORT
787         imply SPL_MMC_SUPPORT if MMC
788         imply SPL_POWER_SUPPORT
789         imply SPL_SERIAL_SUPPORT
790         imply USB_GADGET
791
792 config ARCH_VF610
793         bool "Freescale Vybrid"
794         select CPU_V7A
795         select SYS_FSL_ERRATUM_ESDHC111
796         imply CMD_MTDPARTS
797         imply NAND
798
799 config ARCH_ZYNQ
800         bool "Xilinx Zynq based platform"
801         select BOARD_LATE_INIT
802         select CPU_V7A
803         select SUPPORT_SPL
804         select OF_CONTROL
805         select SPL_BOARD_INIT if SPL
806         select BOARD_EARLY_INIT_F if WDT
807         select SPL_OF_CONTROL if SPL
808         select DM
809         select DM_ETH if NET
810         select SPL_DM if SPL
811         select DM_MMC if MMC
812         select DM_SPI
813         select DM_SERIAL
814         select DM_SPI_FLASH
815         select SPL_SEPARATE_BSS if SPL
816         select DM_USB if USB
817         select CLK
818         select SPL_CLK if SPL
819         select CLK_ZYNQ
820         select SPI
821         imply CMD_CLK
822         imply FAT_WRITE
823         imply CMD_SPL
824         imply ARCH_EARLY_INIT_R
825
826 config ARCH_ZYNQMP_R5
827         bool "Xilinx ZynqMP R5 based platform"
828         select CPU_V7R
829         select OF_CONTROL
830         select DM
831         select DM_SERIAL
832         select CLK
833
834 config ARCH_ZYNQMP
835         bool "Xilinx ZynqMP based platform"
836         select ARM64
837         select BOARD_LATE_INIT
838         select DM
839         select OF_CONTROL
840         select DM_SERIAL
841         select SUPPORT_SPL
842         select CLK
843         select SPL_BOARD_INIT if SPL
844         select SPL_CLK if SPL
845         select DM_USB if USB
846         imply FAT_WRITE
847
848 config TEGRA
849         bool "NVIDIA Tegra"
850         imply DISTRO_DEFAULTS
851         imply FAT_WRITE
852
853 config TARGET_VEXPRESS64_AEMV8A
854         bool "Support vexpress_aemv8a"
855         select ARM64
856         select PL01X_SERIAL
857
858 config TARGET_VEXPRESS64_BASE_FVP
859         bool "Support Versatile Express ARMv8a FVP BASE model"
860         select ARM64
861         select SEMIHOSTING
862         select PL01X_SERIAL
863
864 config TARGET_VEXPRESS64_BASE_FVP_DRAM
865         bool "Support Versatile Express ARMv8a FVP BASE model booting from DRAM"
866         select ARM64
867         select PL01X_SERIAL
868         help
869           This target is derived from TARGET_VEXPRESS64_BASE_FVP and over-rides
870           the default config to allow the user to load the images directly into
871           DRAM using model parameters rather than by using semi-hosting to load
872           the files from the host filesystem.
873
874 config TARGET_VEXPRESS64_JUNO
875         bool "Support Versatile Express Juno Development Platform"
876         select ARM64
877         select PL01X_SERIAL
878
879 config TARGET_LS2080A_EMU
880         bool "Support ls2080a_emu"
881         select ARCH_LS2080A
882         select ARM64
883         select ARMV8_MULTIENTRY
884         select ARCH_MISC_INIT
885         help
886           Support for Freescale LS2080A_EMU platform
887           The LS2080A Development System (EMULATOR) is a pre silicon
888           development platform that supports the QorIQ LS2080A
889           Layerscape Architecture processor.
890
891 config TARGET_LS2080A_SIMU
892         bool "Support ls2080a_simu"
893         select ARCH_LS2080A
894         select ARM64
895         select ARMV8_MULTIENTRY
896         select ARCH_MISC_INIT
897         help
898           Support for Freescale LS2080A_SIMU platform
899           The LS2080A Development System (QDS) is a pre silicon
900           development platform that supports the QorIQ LS2080A
901           Layerscape Architecture processor.
902
903 config TARGET_LS1088AQDS
904         bool "Support ls1088aqds"
905         select ARCH_LS1088A
906         select ARM64
907         select ARMV8_MULTIENTRY
908         select ARCH_MISC_INIT
909         select BOARD_LATE_INIT
910         select SUPPORT_SPL
911         help
912           Support for NXP LS1088AQDS platform
913           The LS1088A Development System (QDS) is a high-performance
914           development platform that supports the QorIQ LS1088A
915           Layerscape Architecture processor.
916
917 config TARGET_LS2080AQDS
918         bool "Support ls2080aqds"
919         select ARCH_LS2080A
920         select ARM64
921         select ARMV8_MULTIENTRY
922         select BOARD_LATE_INIT
923         select SUPPORT_SPL
924         select ARCH_MISC_INIT
925         imply SCSI
926         imply SCSI_AHCI
927         help
928           Support for Freescale LS2080AQDS platform
929           The LS2080A Development System (QDS) is a high-performance
930           development platform that supports the QorIQ LS2080A
931           Layerscape Architecture processor.
932
933 config TARGET_LS2080ARDB
934         bool "Support ls2080ardb"
935         select ARCH_LS2080A
936         select ARM64
937         select ARMV8_MULTIENTRY
938         select BOARD_LATE_INIT
939         select SUPPORT_SPL
940         select ARCH_MISC_INIT
941         imply SCSI
942         imply SCSI_AHCI
943         help
944           Support for Freescale LS2080ARDB platform.
945           The LS2080A Reference design board (RDB) is a high-performance
946           development platform that supports the QorIQ LS2080A
947           Layerscape Architecture processor.
948
949 config TARGET_LS2081ARDB
950         bool "Support ls2081ardb"
951         select ARCH_LS2080A
952         select ARM64
953         select ARMV8_MULTIENTRY
954         select BOARD_LATE_INIT
955         select SUPPORT_SPL
956         select ARCH_MISC_INIT
957         help
958           Support for Freescale LS2081ARDB platform.
959           The LS2081A Reference design board (RDB) is a high-performance
960           development platform that supports the QorIQ LS2081A/LS2041A
961           Layerscape Architecture processor.
962
963 config TARGET_HIKEY
964         bool "Support HiKey 96boards Consumer Edition Platform"
965         select ARM64
966         select DM
967         select DM_GPIO
968         select DM_SERIAL
969         select OF_CONTROL
970         select PL01X_SERIAL
971         select SPECIFY_CONSOLE_INDEX
972           help
973           Support for HiKey 96boards platform. It features a HI6220
974           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
975
976 config TARGET_POPLAR
977         bool "Support Poplar 96boards Enterprise Edition Platform"
978         select ARM64
979         select DM
980         select OF_CONTROL
981         select DM_SERIAL
982         select DM_USB
983         select PL01X_SERIAL
984           help
985           Support for Poplar 96boards EE platform. It features a HI3798cv200
986           SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
987           making it capable of running any commercial set-top solution based on
988           Linux or Android.
989
990 config TARGET_LS1012AQDS
991         bool "Support ls1012aqds"
992         select ARCH_LS1012A
993         select ARM64
994         select BOARD_LATE_INIT
995         help
996           Support for Freescale LS1012AQDS platform.
997           The LS1012A Development System (QDS) is a high-performance
998           development platform that supports the QorIQ LS1012A
999           Layerscape Architecture processor.
1000
1001 config TARGET_LS1012ARDB
1002         bool "Support ls1012ardb"
1003         select ARCH_LS1012A
1004         select ARM64
1005         select BOARD_LATE_INIT
1006         imply SCSI
1007         imply SCSI_AHCI
1008         help
1009           Support for Freescale LS1012ARDB platform.
1010           The LS1012A Reference design board (RDB) is a high-performance
1011           development platform that supports the QorIQ LS1012A
1012           Layerscape Architecture processor.
1013
1014 config TARGET_LS1012A2G5RDB
1015         bool "Support ls1012a2g5rdb"
1016         select ARCH_LS1012A
1017         select ARM64
1018         select BOARD_LATE_INIT
1019         imply SCSI
1020         help
1021           Support for Freescale LS1012A2G5RDB platform.
1022           The LS1012A 2G5 Reference design board (RDB) is a high-performance
1023           development platform that supports the QorIQ LS1012A
1024           Layerscape Architecture processor.
1025
1026 config TARGET_LS1012AFRDM
1027         bool "Support ls1012afrdm"
1028         select ARCH_LS1012A
1029         select ARM64
1030         help
1031           Support for Freescale LS1012AFRDM platform.
1032           The LS1012A Freedom  board (FRDM) is a high-performance
1033           development platform that supports the QorIQ LS1012A
1034           Layerscape Architecture processor.
1035
1036 config TARGET_LS1088ARDB
1037         bool "Support ls1088ardb"
1038         select ARCH_LS1088A
1039         select ARM64
1040         select ARMV8_MULTIENTRY
1041         select ARCH_MISC_INIT
1042         select BOARD_LATE_INIT
1043         select SUPPORT_SPL
1044         help
1045           Support for NXP LS1088ARDB platform.
1046           The LS1088A Reference design board (RDB) is a high-performance
1047           development platform that supports the QorIQ LS1088A
1048           Layerscape Architecture processor.
1049
1050 config TARGET_LS1021AQDS
1051         bool "Support ls1021aqds"
1052         select BOARD_LATE_INIT
1053         select CPU_V7A
1054         select CPU_V7_HAS_NONSEC
1055         select CPU_V7_HAS_VIRT
1056         select SUPPORT_SPL
1057         select ARCH_LS1021A
1058         select ARCH_SUPPORT_PSCI
1059         select LS1_DEEP_SLEEP
1060         select SYS_FSL_DDR
1061         select BOARD_EARLY_INIT_F
1062         imply SCSI
1063
1064 config TARGET_LS1021ATWR
1065         bool "Support ls1021atwr"
1066         select BOARD_LATE_INIT
1067         select CPU_V7A
1068         select CPU_V7_HAS_NONSEC
1069         select CPU_V7_HAS_VIRT
1070         select SUPPORT_SPL
1071         select ARCH_LS1021A
1072         select ARCH_SUPPORT_PSCI
1073         select LS1_DEEP_SLEEP
1074         select BOARD_EARLY_INIT_F
1075         imply SCSI
1076
1077 config TARGET_LS1021AIOT
1078         bool "Support ls1021aiot"
1079         select BOARD_LATE_INIT
1080         select CPU_V7A
1081         select CPU_V7_HAS_NONSEC
1082         select CPU_V7_HAS_VIRT
1083         select SUPPORT_SPL
1084         select ARCH_LS1021A
1085         select ARCH_SUPPORT_PSCI
1086         imply SCSI
1087         help
1088           Support for Freescale LS1021AIOT platform.
1089           The LS1021A Freescale board (IOT) is a high-performance
1090           development platform that supports the QorIQ LS1021A
1091           Layerscape Architecture processor.
1092
1093 config TARGET_LS1043AQDS
1094         bool "Support ls1043aqds"
1095         select ARCH_LS1043A
1096         select ARM64
1097         select ARMV8_MULTIENTRY
1098         select BOARD_LATE_INIT
1099         select SUPPORT_SPL
1100         select BOARD_EARLY_INIT_F
1101         imply SCSI
1102         help
1103           Support for Freescale LS1043AQDS platform.
1104
1105 config TARGET_LS1043ARDB
1106         bool "Support ls1043ardb"
1107         select ARCH_LS1043A
1108         select ARM64
1109         select ARMV8_MULTIENTRY
1110         select BOARD_LATE_INIT
1111         select SUPPORT_SPL
1112         select BOARD_EARLY_INIT_F
1113         imply SCSI
1114         help
1115           Support for Freescale LS1043ARDB platform.
1116
1117 config TARGET_LS1046AQDS
1118         bool "Support ls1046aqds"
1119         select ARCH_LS1046A
1120         select ARM64
1121         select ARMV8_MULTIENTRY
1122         select BOARD_LATE_INIT
1123         select SUPPORT_SPL
1124         select DM_SPI_FLASH if DM_SPI
1125         select BOARD_EARLY_INIT_F
1126         imply SCSI
1127         help
1128           Support for Freescale LS1046AQDS platform.
1129           The LS1046A Development System (QDS) is a high-performance
1130           development platform that supports the QorIQ LS1046A
1131           Layerscape Architecture processor.
1132
1133 config TARGET_LS1046ARDB
1134         bool "Support ls1046ardb"
1135         select ARCH_LS1046A
1136         select ARM64
1137         select ARMV8_MULTIENTRY
1138         select BOARD_LATE_INIT
1139         select SUPPORT_SPL
1140         select DM_SPI_FLASH if DM_SPI
1141         select POWER_MC34VR500
1142         select BOARD_EARLY_INIT_F
1143         imply SCSI
1144         help
1145           Support for Freescale LS1046ARDB platform.
1146           The LS1046A Reference Design Board (RDB) is a high-performance
1147           development platform that supports the QorIQ LS1046A
1148           Layerscape Architecture processor.
1149
1150 config TARGET_H2200
1151         bool "Support h2200"
1152         select CPU_PXA
1153
1154 config TARGET_ZIPITZ2
1155         bool "Support zipitz2"
1156         select CPU_PXA
1157
1158 config TARGET_COLIBRI_PXA270
1159         bool "Support colibri_pxa270"
1160         select CPU_PXA
1161
1162 config ARCH_UNIPHIER
1163         bool "Socionext UniPhier SoCs"
1164         select BOARD_LATE_INIT
1165         select DM
1166         select DM_GPIO
1167         select DM_I2C
1168         select DM_MMC
1169         select DM_RESET
1170         select DM_SERIAL
1171         select DM_USB
1172         select OF_CONTROL
1173         select OF_LIBFDT
1174         select PINCTRL
1175         select SPL_BOARD_INIT if SPL
1176         select SPL_DM if SPL
1177         select SPL_LIBCOMMON_SUPPORT if SPL
1178         select SPL_LIBGENERIC_SUPPORT if SPL
1179         select SPL_OF_CONTROL if SPL
1180         select SPL_PINCTRL if SPL
1181         select SUPPORT_SPL
1182         imply FAT_WRITE
1183         help
1184           Support for UniPhier SoC family developed by Socionext Inc.
1185           (formerly, System LSI Business Division of Panasonic Corporation)
1186
1187 config STM32
1188         bool "Support STMicroelectronics STM32 MCU with cortex M"
1189         select CPU_V7M
1190         select DM
1191         select DM_SERIAL
1192         select SYS_THUMB_BUILD
1193
1194 config ARCH_STI
1195         bool "Support STMicrolectronics SoCs"
1196         select CPU_V7A
1197         select DM
1198         select DM_SERIAL
1199         select BLK
1200         select DM_MMC
1201         select DM_RESET
1202         help
1203           Support for STMicroelectronics STiH407/10 SoC family.
1204           This SoC is used on Linaro 96Board STiH410-B2260
1205
1206 config ARCH_STM32MP
1207         bool "Support STMicroelectronics STM32MP Socs with cortex A"
1208         select ARCH_MISC_INIT
1209         select BOARD_LATE_INIT
1210         select CLK
1211         select DM
1212         select DM_GPIO
1213         select DM_RESET
1214         select DM_SERIAL
1215         select OF_CONTROL
1216         select OF_LIBFDT
1217         select PINCTRL
1218         select REGMAP
1219         select SUPPORT_SPL
1220         select SYSCON
1221         select SYSRESET
1222         select SYS_THUMB_BUILD
1223         help
1224           Support for STM32MP SoC family developed by STMicroelectronics,
1225           MPUs based on ARM cortex A core
1226           U-BOOT is running in DDR and SPL support is the unsecure First Stage
1227           BootLoader (FSBL)
1228
1229 config ARCH_ROCKCHIP
1230         bool "Support Rockchip SoCs"
1231         select OF_CONTROL
1232         select BLK
1233         select DM
1234         select SPL_DM if SPL
1235         select SYS_MALLOC_F
1236         select SYS_THUMB_BUILD if !ARM64
1237         select SPL_SYS_MALLOC_SIMPLE if SPL
1238         select DM_GPIO
1239         select DM_I2C
1240         select DM_MMC
1241         select DM_SERIAL
1242         select DM_SPI
1243         select DM_SPI_FLASH
1244         select DM_USB if USB
1245         select DM_PWM
1246         select DM_REGULATOR
1247         select ENABLE_ARM_SOC_BOOT0_HOOK
1248         select SPI
1249         imply CMD_FASTBOOT
1250         imply DISTRO_DEFAULTS
1251         imply FASTBOOT
1252         imply FAT_WRITE
1253         imply USB_FUNCTION_FASTBOOT
1254         imply SPL_SYSRESET
1255         imply TPL_SYSRESET
1256         imply ADC
1257         imply SARADC_ROCKCHIP
1258         imply SYS_NS16550
1259
1260 config TARGET_THUNDERX_88XX
1261         bool "Support ThunderX 88xx"
1262         select ARM64
1263         select OF_CONTROL
1264         select SYS_CACHE_SHIFT_7
1265         select PL01X_SERIAL
1266
1267 config ARCH_ASPEED
1268         bool "Support Aspeed SoCs"
1269         select OF_CONTROL
1270         select DM
1271
1272 endchoice
1273
1274 config TI_SECURE_DEVICE
1275         bool "HS Device Type Support"
1276         depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS
1277         help
1278           If a high secure (HS) device type is being used, this config
1279           must be set. This option impacts various aspects of the
1280           build system (to create signed boot images that can be
1281           authenticated) and the code. See the doc/README.ti-secure
1282           file for further details.
1283
1284 source "arch/arm/mach-aspeed/Kconfig"
1285
1286 source "arch/arm/mach-at91/Kconfig"
1287
1288 source "arch/arm/mach-bcm283x/Kconfig"
1289
1290 source "arch/arm/mach-davinci/Kconfig"
1291
1292 source "arch/arm/mach-exynos/Kconfig"
1293
1294 source "arch/arm/mach-highbank/Kconfig"
1295
1296 source "arch/arm/mach-integrator/Kconfig"
1297
1298 source "arch/arm/mach-keystone/Kconfig"
1299
1300 source "arch/arm/mach-kirkwood/Kconfig"
1301
1302 source "arch/arm/mach-mvebu/Kconfig"
1303
1304 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1305
1306 source "arch/arm/mach-imx/mx2/Kconfig"
1307
1308 source "arch/arm/mach-imx/mx5/Kconfig"
1309
1310 source "arch/arm/mach-imx/mx6/Kconfig"
1311
1312 source "arch/arm/mach-imx/mx7/Kconfig"
1313
1314 source "arch/arm/mach-imx/mx7ulp/Kconfig"
1315
1316 source "arch/arm/mach-imx/mx8m/Kconfig"
1317
1318 source "arch/arm/mach-imx/mxs/Kconfig"
1319
1320 source "arch/arm/mach-omap2/Kconfig"
1321
1322 source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1323
1324 source "arch/arm/mach-orion5x/Kconfig"
1325
1326 source "arch/arm/mach-rmobile/Kconfig"
1327
1328 source "arch/arm/mach-meson/Kconfig"
1329
1330 source "arch/arm/mach-qemu/Kconfig"
1331
1332 source "arch/arm/mach-rockchip/Kconfig"
1333
1334 source "arch/arm/mach-s5pc1xx/Kconfig"
1335
1336 source "arch/arm/mach-snapdragon/Kconfig"
1337
1338 source "arch/arm/mach-socfpga/Kconfig"
1339
1340 source "arch/arm/mach-sti/Kconfig"
1341
1342 source "arch/arm/mach-stm32/Kconfig"
1343
1344 source "arch/arm/mach-stm32mp/Kconfig"
1345
1346 source "arch/arm/mach-sunxi/Kconfig"
1347
1348 source "arch/arm/mach-tegra/Kconfig"
1349
1350 source "arch/arm/mach-uniphier/Kconfig"
1351
1352 source "arch/arm/cpu/armv7/vf610/Kconfig"
1353
1354 source "arch/arm/mach-zynq/Kconfig"
1355
1356 source "arch/arm/mach-zynqmp-r5/Kconfig"
1357
1358 source "arch/arm/cpu/armv7/Kconfig"
1359
1360 source "arch/arm/cpu/armv8/zynqmp/Kconfig"
1361
1362 source "arch/arm/cpu/armv8/Kconfig"
1363
1364 source "arch/arm/mach-imx/Kconfig"
1365
1366 source "board/bosch/shc/Kconfig"
1367 source "board/CarMediaLab/flea3/Kconfig"
1368 source "board/Marvell/aspenite/Kconfig"
1369 source "board/Marvell/gplugd/Kconfig"
1370 source "board/armadeus/apf27/Kconfig"
1371 source "board/armltd/vexpress/Kconfig"
1372 source "board/armltd/vexpress64/Kconfig"
1373 source "board/broadcom/bcm23550_w1d/Kconfig"
1374 source "board/broadcom/bcm28155_ap/Kconfig"
1375 source "board/broadcom/bcmcygnus/Kconfig"
1376 source "board/broadcom/bcmnsp/Kconfig"
1377 source "board/broadcom/bcmns2/Kconfig"
1378 source "board/cavium/thunderx/Kconfig"
1379 source "board/cirrus/edb93xx/Kconfig"
1380 source "board/eets/pdu001/Kconfig"
1381 source "board/freescale/ls2080a/Kconfig"
1382 source "board/freescale/ls2080aqds/Kconfig"
1383 source "board/freescale/ls2080ardb/Kconfig"
1384 source "board/freescale/ls1088a/Kconfig"
1385 source "board/freescale/ls1021aqds/Kconfig"
1386 source "board/freescale/ls1043aqds/Kconfig"
1387 source "board/freescale/ls1021atwr/Kconfig"
1388 source "board/freescale/ls1021aiot/Kconfig"
1389 source "board/freescale/ls1046aqds/Kconfig"
1390 source "board/freescale/ls1043ardb/Kconfig"
1391 source "board/freescale/ls1046ardb/Kconfig"
1392 source "board/freescale/ls1012aqds/Kconfig"
1393 source "board/freescale/ls1012ardb/Kconfig"
1394 source "board/freescale/ls1012afrdm/Kconfig"
1395 source "board/freescale/mx31pdk/Kconfig"
1396 source "board/freescale/mx35pdk/Kconfig"
1397 source "board/freescale/s32v234evb/Kconfig"
1398 source "board/gdsys/a38x/Kconfig"
1399 source "board/grinn/chiliboard/Kconfig"
1400 source "board/gumstix/pepper/Kconfig"
1401 source "board/h2200/Kconfig"
1402 source "board/hisilicon/hikey/Kconfig"
1403 source "board/hisilicon/poplar/Kconfig"
1404 source "board/isee/igep003x/Kconfig"
1405 source "board/phytec/pcm051/Kconfig"
1406 source "board/silica/pengwyn/Kconfig"
1407 source "board/spear/spear300/Kconfig"
1408 source "board/spear/spear310/Kconfig"
1409 source "board/spear/spear320/Kconfig"
1410 source "board/spear/spear600/Kconfig"
1411 source "board/spear/x600/Kconfig"
1412 source "board/st/stv0991/Kconfig"
1413 source "board/tcl/sl50/Kconfig"
1414 source "board/birdland/bav335x/Kconfig"
1415 source "board/timll/devkit3250/Kconfig"
1416 source "board/toradex/colibri_pxa270/Kconfig"
1417 source "board/vscom/baltos/Kconfig"
1418 source "board/woodburn/Kconfig"
1419 source "board/work-microwave/work_92105/Kconfig"
1420 source "board/xilinx/zynqmp/Kconfig"
1421 source "board/zipitz2/Kconfig"
1422
1423 source "arch/arm/Kconfig.debug"
1424
1425 endmenu
1426
1427 config SPL_LDSCRIPT
1428         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1429         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1430         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1431
1432