arm: v7R: Add support for MPU
[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
825 config ARCH_ZYNQMP
826         bool "Xilinx ZynqMP based platform"
827         select ARM64
828         select BOARD_LATE_INIT
829         select DM
830         select OF_CONTROL
831         select DM_SERIAL
832         select SUPPORT_SPL
833         select CLK
834         select SPL_BOARD_INIT if SPL
835         select SPL_CLK if SPL
836         select DM_USB if USB
837         imply FAT_WRITE
838
839 config TEGRA
840         bool "NVIDIA Tegra"
841         imply DISTRO_DEFAULTS
842         imply FAT_WRITE
843
844 config TARGET_VEXPRESS64_AEMV8A
845         bool "Support vexpress_aemv8a"
846         select ARM64
847         select PL01X_SERIAL
848
849 config TARGET_VEXPRESS64_BASE_FVP
850         bool "Support Versatile Express ARMv8a FVP BASE model"
851         select ARM64
852         select SEMIHOSTING
853         select PL01X_SERIAL
854
855 config TARGET_VEXPRESS64_BASE_FVP_DRAM
856         bool "Support Versatile Express ARMv8a FVP BASE model booting from DRAM"
857         select ARM64
858         select PL01X_SERIAL
859         help
860           This target is derived from TARGET_VEXPRESS64_BASE_FVP and over-rides
861           the default config to allow the user to load the images directly into
862           DRAM using model parameters rather than by using semi-hosting to load
863           the files from the host filesystem.
864
865 config TARGET_VEXPRESS64_JUNO
866         bool "Support Versatile Express Juno Development Platform"
867         select ARM64
868         select PL01X_SERIAL
869
870 config TARGET_LS2080A_EMU
871         bool "Support ls2080a_emu"
872         select ARCH_LS2080A
873         select ARM64
874         select ARMV8_MULTIENTRY
875         select ARCH_MISC_INIT
876         help
877           Support for Freescale LS2080A_EMU platform
878           The LS2080A Development System (EMULATOR) is a pre silicon
879           development platform that supports the QorIQ LS2080A
880           Layerscape Architecture processor.
881
882 config TARGET_LS2080A_SIMU
883         bool "Support ls2080a_simu"
884         select ARCH_LS2080A
885         select ARM64
886         select ARMV8_MULTIENTRY
887         select ARCH_MISC_INIT
888         help
889           Support for Freescale LS2080A_SIMU platform
890           The LS2080A Development System (QDS) is a pre silicon
891           development platform that supports the QorIQ LS2080A
892           Layerscape Architecture processor.
893
894 config TARGET_LS1088AQDS
895         bool "Support ls1088aqds"
896         select ARCH_LS1088A
897         select ARM64
898         select ARMV8_MULTIENTRY
899         select ARCH_MISC_INIT
900         select BOARD_LATE_INIT
901         select SUPPORT_SPL
902         help
903           Support for NXP LS1088AQDS platform
904           The LS1088A Development System (QDS) is a high-performance
905           development platform that supports the QorIQ LS1088A
906           Layerscape Architecture processor.
907
908 config TARGET_LS2080AQDS
909         bool "Support ls2080aqds"
910         select ARCH_LS2080A
911         select ARM64
912         select ARMV8_MULTIENTRY
913         select BOARD_LATE_INIT
914         select SUPPORT_SPL
915         select ARCH_MISC_INIT
916         imply SCSI
917         imply SCSI_AHCI
918         help
919           Support for Freescale LS2080AQDS platform
920           The LS2080A Development System (QDS) is a high-performance
921           development platform that supports the QorIQ LS2080A
922           Layerscape Architecture processor.
923
924 config TARGET_LS2080ARDB
925         bool "Support ls2080ardb"
926         select ARCH_LS2080A
927         select ARM64
928         select ARMV8_MULTIENTRY
929         select BOARD_LATE_INIT
930         select SUPPORT_SPL
931         select ARCH_MISC_INIT
932         imply SCSI
933         imply SCSI_AHCI
934         help
935           Support for Freescale LS2080ARDB platform.
936           The LS2080A Reference design board (RDB) is a high-performance
937           development platform that supports the QorIQ LS2080A
938           Layerscape Architecture processor.
939
940 config TARGET_LS2081ARDB
941         bool "Support ls2081ardb"
942         select ARCH_LS2080A
943         select ARM64
944         select ARMV8_MULTIENTRY
945         select BOARD_LATE_INIT
946         select SUPPORT_SPL
947         select ARCH_MISC_INIT
948         help
949           Support for Freescale LS2081ARDB platform.
950           The LS2081A Reference design board (RDB) is a high-performance
951           development platform that supports the QorIQ LS2081A/LS2041A
952           Layerscape Architecture processor.
953
954 config TARGET_HIKEY
955         bool "Support HiKey 96boards Consumer Edition Platform"
956         select ARM64
957         select DM
958         select DM_GPIO
959         select DM_SERIAL
960         select OF_CONTROL
961         select PL01X_SERIAL
962         select SPECIFY_CONSOLE_INDEX
963           help
964           Support for HiKey 96boards platform. It features a HI6220
965           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
966
967 config TARGET_POPLAR
968         bool "Support Poplar 96boards Enterprise Edition Platform"
969         select ARM64
970         select DM
971         select OF_CONTROL
972         select DM_SERIAL
973         select DM_USB
974         select PL01X_SERIAL
975           help
976           Support for Poplar 96boards EE platform. It features a HI3798cv200
977           SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
978           making it capable of running any commercial set-top solution based on
979           Linux or Android.
980
981 config TARGET_LS1012AQDS
982         bool "Support ls1012aqds"
983         select ARCH_LS1012A
984         select ARM64
985         select BOARD_LATE_INIT
986         help
987           Support for Freescale LS1012AQDS platform.
988           The LS1012A Development System (QDS) is a high-performance
989           development platform that supports the QorIQ LS1012A
990           Layerscape Architecture processor.
991
992 config TARGET_LS1012ARDB
993         bool "Support ls1012ardb"
994         select ARCH_LS1012A
995         select ARM64
996         select BOARD_LATE_INIT
997         imply SCSI
998         imply SCSI_AHCI
999         help
1000           Support for Freescale LS1012ARDB platform.
1001           The LS1012A Reference design board (RDB) is a high-performance
1002           development platform that supports the QorIQ LS1012A
1003           Layerscape Architecture processor.
1004
1005 config TARGET_LS1012A2G5RDB
1006         bool "Support ls1012a2g5rdb"
1007         select ARCH_LS1012A
1008         select ARM64
1009         select BOARD_LATE_INIT
1010         imply SCSI
1011         help
1012           Support for Freescale LS1012A2G5RDB platform.
1013           The LS1012A 2G5 Reference design board (RDB) is a high-performance
1014           development platform that supports the QorIQ LS1012A
1015           Layerscape Architecture processor.
1016
1017 config TARGET_LS1012AFRDM
1018         bool "Support ls1012afrdm"
1019         select ARCH_LS1012A
1020         select ARM64
1021         help
1022           Support for Freescale LS1012AFRDM platform.
1023           The LS1012A Freedom  board (FRDM) is a high-performance
1024           development platform that supports the QorIQ LS1012A
1025           Layerscape Architecture processor.
1026
1027 config TARGET_LS1088ARDB
1028         bool "Support ls1088ardb"
1029         select ARCH_LS1088A
1030         select ARM64
1031         select ARMV8_MULTIENTRY
1032         select ARCH_MISC_INIT
1033         select BOARD_LATE_INIT
1034         select SUPPORT_SPL
1035         help
1036           Support for NXP LS1088ARDB platform.
1037           The LS1088A Reference design board (RDB) is a high-performance
1038           development platform that supports the QorIQ LS1088A
1039           Layerscape Architecture processor.
1040
1041 config TARGET_LS1021AQDS
1042         bool "Support ls1021aqds"
1043         select BOARD_LATE_INIT
1044         select CPU_V7A
1045         select CPU_V7_HAS_NONSEC
1046         select CPU_V7_HAS_VIRT
1047         select SUPPORT_SPL
1048         select ARCH_LS1021A
1049         select ARCH_SUPPORT_PSCI
1050         select LS1_DEEP_SLEEP
1051         select SYS_FSL_DDR
1052         select BOARD_EARLY_INIT_F
1053         imply SCSI
1054
1055 config TARGET_LS1021ATWR
1056         bool "Support ls1021atwr"
1057         select BOARD_LATE_INIT
1058         select CPU_V7A
1059         select CPU_V7_HAS_NONSEC
1060         select CPU_V7_HAS_VIRT
1061         select SUPPORT_SPL
1062         select ARCH_LS1021A
1063         select ARCH_SUPPORT_PSCI
1064         select LS1_DEEP_SLEEP
1065         select BOARD_EARLY_INIT_F
1066         imply SCSI
1067
1068 config TARGET_LS1021AIOT
1069         bool "Support ls1021aiot"
1070         select BOARD_LATE_INIT
1071         select CPU_V7A
1072         select CPU_V7_HAS_NONSEC
1073         select CPU_V7_HAS_VIRT
1074         select SUPPORT_SPL
1075         select ARCH_LS1021A
1076         select ARCH_SUPPORT_PSCI
1077         imply SCSI
1078         help
1079           Support for Freescale LS1021AIOT platform.
1080           The LS1021A Freescale board (IOT) is a high-performance
1081           development platform that supports the QorIQ LS1021A
1082           Layerscape Architecture processor.
1083
1084 config TARGET_LS1043AQDS
1085         bool "Support ls1043aqds"
1086         select ARCH_LS1043A
1087         select ARM64
1088         select ARMV8_MULTIENTRY
1089         select BOARD_LATE_INIT
1090         select SUPPORT_SPL
1091         select BOARD_EARLY_INIT_F
1092         imply SCSI
1093         help
1094           Support for Freescale LS1043AQDS platform.
1095
1096 config TARGET_LS1043ARDB
1097         bool "Support ls1043ardb"
1098         select ARCH_LS1043A
1099         select ARM64
1100         select ARMV8_MULTIENTRY
1101         select BOARD_LATE_INIT
1102         select SUPPORT_SPL
1103         select BOARD_EARLY_INIT_F
1104         imply SCSI
1105         help
1106           Support for Freescale LS1043ARDB platform.
1107
1108 config TARGET_LS1046AQDS
1109         bool "Support ls1046aqds"
1110         select ARCH_LS1046A
1111         select ARM64
1112         select ARMV8_MULTIENTRY
1113         select BOARD_LATE_INIT
1114         select SUPPORT_SPL
1115         select DM_SPI_FLASH if DM_SPI
1116         select BOARD_EARLY_INIT_F
1117         imply SCSI
1118         help
1119           Support for Freescale LS1046AQDS platform.
1120           The LS1046A Development System (QDS) is a high-performance
1121           development platform that supports the QorIQ LS1046A
1122           Layerscape Architecture processor.
1123
1124 config TARGET_LS1046ARDB
1125         bool "Support ls1046ardb"
1126         select ARCH_LS1046A
1127         select ARM64
1128         select ARMV8_MULTIENTRY
1129         select BOARD_LATE_INIT
1130         select SUPPORT_SPL
1131         select DM_SPI_FLASH if DM_SPI
1132         select POWER_MC34VR500
1133         select BOARD_EARLY_INIT_F
1134         imply SCSI
1135         help
1136           Support for Freescale LS1046ARDB platform.
1137           The LS1046A Reference Design Board (RDB) is a high-performance
1138           development platform that supports the QorIQ LS1046A
1139           Layerscape Architecture processor.
1140
1141 config TARGET_H2200
1142         bool "Support h2200"
1143         select CPU_PXA
1144
1145 config TARGET_ZIPITZ2
1146         bool "Support zipitz2"
1147         select CPU_PXA
1148
1149 config TARGET_COLIBRI_PXA270
1150         bool "Support colibri_pxa270"
1151         select CPU_PXA
1152
1153 config ARCH_UNIPHIER
1154         bool "Socionext UniPhier SoCs"
1155         select BOARD_LATE_INIT
1156         select DM
1157         select DM_GPIO
1158         select DM_I2C
1159         select DM_MMC
1160         select DM_RESET
1161         select DM_SERIAL
1162         select DM_USB
1163         select OF_CONTROL
1164         select OF_LIBFDT
1165         select PINCTRL
1166         select SPL_BOARD_INIT if SPL
1167         select SPL_DM if SPL
1168         select SPL_LIBCOMMON_SUPPORT if SPL
1169         select SPL_LIBGENERIC_SUPPORT if SPL
1170         select SPL_OF_CONTROL if SPL
1171         select SPL_PINCTRL if SPL
1172         select SUPPORT_SPL
1173         imply FAT_WRITE
1174         help
1175           Support for UniPhier SoC family developed by Socionext Inc.
1176           (formerly, System LSI Business Division of Panasonic Corporation)
1177
1178 config STM32
1179         bool "Support STMicroelectronics STM32 MCU with cortex M"
1180         select CPU_V7M
1181         select DM
1182         select DM_SERIAL
1183         select SYS_THUMB_BUILD
1184
1185 config ARCH_STI
1186         bool "Support STMicrolectronics SoCs"
1187         select CPU_V7A
1188         select DM
1189         select DM_SERIAL
1190         select BLK
1191         select DM_MMC
1192         select DM_RESET
1193         help
1194           Support for STMicroelectronics STiH407/10 SoC family.
1195           This SoC is used on Linaro 96Board STiH410-B2260
1196
1197 config ARCH_STM32MP
1198         bool "Support STMicroelectronics STM32MP Socs with cortex A"
1199         select ARCH_MISC_INIT
1200         select BOARD_LATE_INIT
1201         select CLK
1202         select DM
1203         select DM_GPIO
1204         select DM_RESET
1205         select DM_SERIAL
1206         select OF_CONTROL
1207         select OF_LIBFDT
1208         select PINCTRL
1209         select REGMAP
1210         select SUPPORT_SPL
1211         select SYSCON
1212         select SYSRESET
1213         select SYS_THUMB_BUILD
1214         help
1215           Support for STM32MP SoC family developed by STMicroelectronics,
1216           MPUs based on ARM cortex A core
1217           U-BOOT is running in DDR and SPL support is the unsecure First Stage
1218           BootLoader (FSBL)
1219
1220 config ARCH_ROCKCHIP
1221         bool "Support Rockchip SoCs"
1222         select OF_CONTROL
1223         select BLK
1224         select DM
1225         select SPL_DM if SPL
1226         select SYS_MALLOC_F
1227         select SYS_THUMB_BUILD if !ARM64
1228         select SPL_SYS_MALLOC_SIMPLE if SPL
1229         select DM_GPIO
1230         select DM_I2C
1231         select DM_MMC
1232         select DM_SERIAL
1233         select DM_SPI
1234         select DM_SPI_FLASH
1235         select DM_USB if USB
1236         select DM_PWM
1237         select DM_REGULATOR
1238         select ENABLE_ARM_SOC_BOOT0_HOOK
1239         select SPI
1240         imply CMD_FASTBOOT
1241         imply DISTRO_DEFAULTS
1242         imply FASTBOOT
1243         imply FAT_WRITE
1244         imply USB_FUNCTION_FASTBOOT
1245         imply SPL_SYSRESET
1246         imply TPL_SYSRESET
1247         imply ADC
1248         imply SARADC_ROCKCHIP
1249         imply SYS_NS16550
1250
1251 config TARGET_THUNDERX_88XX
1252         bool "Support ThunderX 88xx"
1253         select ARM64
1254         select OF_CONTROL
1255         select SYS_CACHE_SHIFT_7
1256         select PL01X_SERIAL
1257
1258 config ARCH_ASPEED
1259         bool "Support Aspeed SoCs"
1260         select OF_CONTROL
1261         select DM
1262
1263 endchoice
1264
1265 config TI_SECURE_DEVICE
1266         bool "HS Device Type Support"
1267         depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS
1268         help
1269           If a high secure (HS) device type is being used, this config
1270           must be set. This option impacts various aspects of the
1271           build system (to create signed boot images that can be
1272           authenticated) and the code. See the doc/README.ti-secure
1273           file for further details.
1274
1275 source "arch/arm/mach-aspeed/Kconfig"
1276
1277 source "arch/arm/mach-at91/Kconfig"
1278
1279 source "arch/arm/mach-bcm283x/Kconfig"
1280
1281 source "arch/arm/mach-davinci/Kconfig"
1282
1283 source "arch/arm/mach-exynos/Kconfig"
1284
1285 source "arch/arm/mach-highbank/Kconfig"
1286
1287 source "arch/arm/mach-integrator/Kconfig"
1288
1289 source "arch/arm/mach-keystone/Kconfig"
1290
1291 source "arch/arm/mach-kirkwood/Kconfig"
1292
1293 source "arch/arm/mach-mvebu/Kconfig"
1294
1295 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1296
1297 source "arch/arm/mach-imx/mx2/Kconfig"
1298
1299 source "arch/arm/mach-imx/mx5/Kconfig"
1300
1301 source "arch/arm/mach-imx/mx6/Kconfig"
1302
1303 source "arch/arm/mach-imx/mx7/Kconfig"
1304
1305 source "arch/arm/mach-imx/mx7ulp/Kconfig"
1306
1307 source "arch/arm/mach-imx/mx8m/Kconfig"
1308
1309 source "arch/arm/mach-imx/mxs/Kconfig"
1310
1311 source "arch/arm/mach-omap2/Kconfig"
1312
1313 source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1314
1315 source "arch/arm/mach-orion5x/Kconfig"
1316
1317 source "arch/arm/mach-rmobile/Kconfig"
1318
1319 source "arch/arm/mach-meson/Kconfig"
1320
1321 source "arch/arm/mach-qemu/Kconfig"
1322
1323 source "arch/arm/mach-rockchip/Kconfig"
1324
1325 source "arch/arm/mach-s5pc1xx/Kconfig"
1326
1327 source "arch/arm/mach-snapdragon/Kconfig"
1328
1329 source "arch/arm/mach-socfpga/Kconfig"
1330
1331 source "arch/arm/mach-sti/Kconfig"
1332
1333 source "arch/arm/mach-stm32/Kconfig"
1334
1335 source "arch/arm/mach-stm32mp/Kconfig"
1336
1337 source "arch/arm/mach-sunxi/Kconfig"
1338
1339 source "arch/arm/mach-tegra/Kconfig"
1340
1341 source "arch/arm/mach-uniphier/Kconfig"
1342
1343 source "arch/arm/cpu/armv7/vf610/Kconfig"
1344
1345 source "arch/arm/mach-zynq/Kconfig"
1346
1347 source "arch/arm/cpu/armv7/Kconfig"
1348
1349 source "arch/arm/cpu/armv8/zynqmp/Kconfig"
1350
1351 source "arch/arm/cpu/armv8/Kconfig"
1352
1353 source "arch/arm/mach-imx/Kconfig"
1354
1355 source "board/bosch/shc/Kconfig"
1356 source "board/CarMediaLab/flea3/Kconfig"
1357 source "board/Marvell/aspenite/Kconfig"
1358 source "board/Marvell/gplugd/Kconfig"
1359 source "board/armadeus/apf27/Kconfig"
1360 source "board/armltd/vexpress/Kconfig"
1361 source "board/armltd/vexpress64/Kconfig"
1362 source "board/broadcom/bcm23550_w1d/Kconfig"
1363 source "board/broadcom/bcm28155_ap/Kconfig"
1364 source "board/broadcom/bcmcygnus/Kconfig"
1365 source "board/broadcom/bcmnsp/Kconfig"
1366 source "board/broadcom/bcmns2/Kconfig"
1367 source "board/cavium/thunderx/Kconfig"
1368 source "board/cirrus/edb93xx/Kconfig"
1369 source "board/eets/pdu001/Kconfig"
1370 source "board/freescale/ls2080a/Kconfig"
1371 source "board/freescale/ls2080aqds/Kconfig"
1372 source "board/freescale/ls2080ardb/Kconfig"
1373 source "board/freescale/ls1088a/Kconfig"
1374 source "board/freescale/ls1021aqds/Kconfig"
1375 source "board/freescale/ls1043aqds/Kconfig"
1376 source "board/freescale/ls1021atwr/Kconfig"
1377 source "board/freescale/ls1021aiot/Kconfig"
1378 source "board/freescale/ls1046aqds/Kconfig"
1379 source "board/freescale/ls1043ardb/Kconfig"
1380 source "board/freescale/ls1046ardb/Kconfig"
1381 source "board/freescale/ls1012aqds/Kconfig"
1382 source "board/freescale/ls1012ardb/Kconfig"
1383 source "board/freescale/ls1012afrdm/Kconfig"
1384 source "board/freescale/mx31pdk/Kconfig"
1385 source "board/freescale/mx35pdk/Kconfig"
1386 source "board/freescale/s32v234evb/Kconfig"
1387 source "board/gdsys/a38x/Kconfig"
1388 source "board/grinn/chiliboard/Kconfig"
1389 source "board/gumstix/pepper/Kconfig"
1390 source "board/h2200/Kconfig"
1391 source "board/hisilicon/hikey/Kconfig"
1392 source "board/hisilicon/poplar/Kconfig"
1393 source "board/isee/igep003x/Kconfig"
1394 source "board/phytec/pcm051/Kconfig"
1395 source "board/silica/pengwyn/Kconfig"
1396 source "board/spear/spear300/Kconfig"
1397 source "board/spear/spear310/Kconfig"
1398 source "board/spear/spear320/Kconfig"
1399 source "board/spear/spear600/Kconfig"
1400 source "board/spear/x600/Kconfig"
1401 source "board/st/stv0991/Kconfig"
1402 source "board/tcl/sl50/Kconfig"
1403 source "board/birdland/bav335x/Kconfig"
1404 source "board/timll/devkit3250/Kconfig"
1405 source "board/toradex/colibri_pxa270/Kconfig"
1406 source "board/vscom/baltos/Kconfig"
1407 source "board/woodburn/Kconfig"
1408 source "board/work-microwave/work_92105/Kconfig"
1409 source "board/xilinx/zynqmp/Kconfig"
1410 source "board/zipitz2/Kconfig"
1411
1412 source "arch/arm/Kconfig.debug"
1413
1414 endmenu
1415
1416 config SPL_LDSCRIPT
1417         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1418         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1419         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1420
1421