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