]> git.sur5r.net Git - u-boot/blob - arch/arm/Kconfig
Merge git://git.denx.de/u-boot-imx
[u-boot] / 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_WOODBURN
501         bool "Support woodburn"
502         select CPU_ARM1136
503
504 config TARGET_WOODBURN_SD
505         bool "Support woodburn_sd"
506         select CPU_ARM1136
507         select SUPPORT_SPL
508
509 config TARGET_FLEA3
510         bool "Support flea3"
511         select CPU_ARM1136
512
513 config TARGET_MX35PDK
514         bool "Support mx35pdk"
515         select BOARD_LATE_INIT
516         select CPU_ARM1136
517
518 config ARCH_BCM283X
519         bool "Broadcom BCM283X family"
520         select DM
521         select DM_SERIAL
522         select DM_GPIO
523         select OF_CONTROL
524         select PL01X_SERIAL
525         select SERIAL_SEARCH_ALL
526         imply FAT_WRITE
527
528 config TARGET_VEXPRESS_CA15_TC2
529         bool "Support vexpress_ca15_tc2"
530         select CPU_V7A
531         select CPU_V7_HAS_NONSEC
532         select CPU_V7_HAS_VIRT
533         select PL011_SERIAL
534
535 config TARGET_VEXPRESS_CA5X2
536         bool "Support vexpress_ca5x2"
537         select CPU_V7A
538         select PL011_SERIAL
539
540 config TARGET_VEXPRESS_CA9X4
541         bool "Support vexpress_ca9x4"
542         select CPU_V7A
543         select PL011_SERIAL
544
545 config TARGET_BCM23550_W1D
546         bool "Support bcm23550_w1d"
547         select CPU_V7A
548         imply CRC32_VERIFY
549         imply FAT_WRITE
550
551 config TARGET_BCM28155_AP
552         bool "Support bcm28155_ap"
553         select CPU_V7A
554         imply CRC32_VERIFY
555         imply FAT_WRITE
556
557 config TARGET_BCMCYGNUS
558         bool "Support bcmcygnus"
559         select CPU_V7A
560         imply CRC32_VERIFY
561         imply CMD_HASH
562         imply FAT_WRITE
563         imply HASH_VERIFY
564         imply NETDEVICES
565         imply BCM_SF2_ETH
566         imply BCM_SF2_ETH_GMAC
567
568 config TARGET_BCMNSP
569         bool "Support bcmnsp"
570         select CPU_V7A
571
572 config TARGET_BCMNS2
573         bool "Support Broadcom Northstar2"
574         select ARM64
575         help
576           Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
577           ARMv8 Cortex-A57 processors targeting a broad range of networking
578           applications
579
580 config ARCH_EXYNOS
581         bool "Samsung EXYNOS"
582         select DM
583         select DM_I2C
584         select DM_SPI_FLASH
585         select DM_SERIAL
586         select DM_SPI
587         select DM_GPIO
588         select DM_KEYBOARD
589         select SPI
590         imply FAT_WRITE
591
592 config ARCH_S5PC1XX
593         bool "Samsung S5PC1XX"
594         select CPU_V7A
595         select DM
596         select DM_SERIAL
597         select DM_GPIO
598         select DM_I2C
599
600 config ARCH_HIGHBANK
601         bool "Calxeda Highbank"
602         select CPU_V7A
603         select PL011_SERIAL
604
605 config ARCH_INTEGRATOR
606         bool "ARM Ltd. Integrator family"
607         select DM
608         select DM_SERIAL
609         select PL01X_SERIAL
610
611 config ARCH_KEYSTONE
612         bool "TI Keystone"
613         select CPU_V7A
614         select SUPPORT_SPL
615         select SYS_THUMB_BUILD
616         select CMD_POWEROFF
617         select SYS_ARCH_TIMER
618         imply CMD_MTDPARTS
619         imply FIT
620         imply CMD_SAVES
621
622 config ARCH_OMAP2PLUS
623         bool "TI OMAP2+"
624         select CPU_V7A
625         select SPL_BOARD_INIT if SPL
626         select SPL_STACK_R if SPL
627         select SUPPORT_SPL
628         imply FIT
629
630 config ARCH_MESON
631         bool "Amlogic Meson"
632         imply DISTRO_DEFAULTS
633         help
634           Support for the Meson SoC family developed by Amlogic Inc.,
635           targeted at media players and tablet computers. We currently
636           support the S905 (GXBaby) 64-bit SoC.
637
638 config ARCH_MX8M
639         bool "NXP i.MX8M platform"
640         select ARM64
641         select DM
642         select SUPPORT_SPL
643
644 config ARCH_MX23
645         bool "NXP i.MX23 family"
646         select CPU_ARM926EJS
647         select PL011_SERIAL
648         select SUPPORT_SPL
649
650 config ARCH_MX25
651         bool "NXP MX25"
652         select CPU_ARM926EJS
653         imply MXC_GPIO
654
655 config ARCH_MX28
656         bool "NXP i.MX28 family"
657         select CPU_ARM926EJS
658         select PL011_SERIAL
659         select SUPPORT_SPL
660
661 config ARCH_MX31
662         bool "NXP i.MX31 family"
663         select CPU_ARM1136
664
665 config ARCH_MX7ULP
666         bool "NXP MX7ULP"
667         select CPU_V7A
668         select ROM_UNIFIED_SECTIONS
669         imply MXC_GPIO
670
671 config ARCH_MX7
672         bool "Freescale MX7"
673         select CPU_V7A
674         select SYS_FSL_HAS_SEC if SECURE_BOOT
675         select SYS_FSL_SEC_COMPAT_4
676         select SYS_FSL_SEC_LE
677         select BOARD_EARLY_INIT_F
678         select ARCH_MISC_INIT
679         imply MXC_GPIO
680
681 config ARCH_MX6
682         bool "Freescale MX6"
683         select CPU_V7A
684         select SYS_FSL_HAS_SEC if SECURE_BOOT
685         select SYS_FSL_SEC_COMPAT_4
686         select SYS_FSL_SEC_LE
687         select SYS_THUMB_BUILD if SPL
688         imply MXC_GPIO
689
690 if ARCH_MX6
691 config SPL_LDSCRIPT
692         default "arch/arm/mach-omap2/u-boot-spl.lds"
693 endif
694
695 config ARCH_MX5
696         bool "Freescale MX5"
697         select CPU_V7A
698         select BOARD_EARLY_INIT_F
699         imply MXC_GPIO
700
701 config ARCH_QEMU
702         bool "QEMU Virtual Platform"
703         select DM
704         select DM_SERIAL
705         select OF_CONTROL
706         select PL01X_SERIAL
707
708 config ARCH_RMOBILE
709         bool "Renesas ARM SoCs"
710         select DM
711         select DM_SERIAL
712         select BOARD_EARLY_INIT_F
713         imply FAT_WRITE
714         imply SYS_THUMB_BUILD
715
716 config TARGET_S32V234EVB
717         bool "Support s32v234evb"
718         select ARM64
719         select SYS_FSL_ERRATUM_ESDHC111
720
721 config ARCH_SNAPDRAGON
722         bool "Qualcomm Snapdragon SoCs"
723         select ARM64
724         select DM
725         select DM_GPIO
726         select DM_SERIAL
727         select SPMI
728         select OF_CONTROL
729         select OF_SEPARATE
730
731 config ARCH_SOCFPGA
732         bool "Altera SOCFPGA family"
733         select CPU_V7A
734         select SUPPORT_SPL
735         select OF_CONTROL
736         select SPL_OF_CONTROL
737         select DM
738         select ENABLE_ARM_SOC_BOOT0_HOOK
739         select ARCH_EARLY_INIT_R
740         select ARCH_MISC_INIT
741         select SYS_THUMB_BUILD
742         imply CMD_MTDPARTS
743         imply CRC32_VERIFY
744         imply DM_SPI
745         imply DM_SPI_FLASH
746         imply FAT_WRITE
747         imply HW_WATCHDOG
748         imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
749
750 config ARCH_SUNXI
751         bool "Support sunxi (Allwinner) SoCs"
752         select BINMAN
753         select CMD_GPIO
754         select CMD_MMC if MMC
755         select CMD_USB if DISTRO_DEFAULTS
756         select DM
757         select DM_ETH
758         select DM_GPIO
759         select DM_KEYBOARD
760         select DM_SERIAL
761         select DM_USB if DISTRO_DEFAULTS
762         select OF_BOARD_SETUP
763         select OF_CONTROL
764         select OF_SEPARATE
765         select SPECIFY_CONSOLE_INDEX
766         select SPL_STACK_R if SPL
767         select SPL_SYS_MALLOC_SIMPLE if SPL
768         select SYS_NS16550
769         select SPL_SYS_THUMB_BUILD if !ARM64
770         select SYS_THUMB_BUILD if !ARM64
771         select USB if DISTRO_DEFAULTS
772         select USB_STORAGE if DISTRO_DEFAULTS
773         select USB_KEYBOARD if DISTRO_DEFAULTS
774         select USE_TINY_PRINTF
775         imply CMD_GPT
776         imply DISTRO_DEFAULTS
777         imply FAT_WRITE
778         imply OF_LIBFDT_OVERLAY
779         imply PRE_CONSOLE_BUFFER
780         imply SPL_GPIO_SUPPORT
781         imply SPL_LIBCOMMON_SUPPORT
782         imply SPL_LIBDISK_SUPPORT
783         imply SPL_LIBGENERIC_SUPPORT
784         imply SPL_MMC_SUPPORT if MMC
785         imply SPL_POWER_SUPPORT
786         imply SPL_SERIAL_SUPPORT
787         imply USB_GADGET
788
789 config ARCH_VF610
790         bool "Freescale Vybrid"
791         select CPU_V7A
792         select SYS_FSL_ERRATUM_ESDHC111
793         imply CMD_MTDPARTS
794         imply NAND
795
796 config ARCH_ZYNQ
797         bool "Xilinx Zynq based platform"
798         select BOARD_LATE_INIT
799         select CPU_V7A
800         select SUPPORT_SPL
801         select OF_CONTROL
802         select SPL_BOARD_INIT if SPL
803         select BOARD_EARLY_INIT_F if WDT
804         select SPL_OF_CONTROL if SPL
805         select DM
806         select DM_ETH if NET
807         select SPL_DM if SPL
808         select DM_MMC if MMC
809         select DM_SPI
810         select DM_SERIAL
811         select DM_SPI_FLASH
812         select SPL_SEPARATE_BSS if SPL
813         select DM_USB if USB
814         select CLK
815         select SPL_CLK if SPL
816         select CLK_ZYNQ
817         select SPI
818         imply CMD_CLK
819         imply FAT_WRITE
820         imply CMD_SPL
821         imply ARCH_EARLY_INIT_R
822
823 config ARCH_ZYNQMP_R5
824         bool "Xilinx ZynqMP R5 based platform"
825         select CPU_V7R
826         select OF_CONTROL
827         select DM
828         select DM_SERIAL
829         select CLK
830
831 config ARCH_ZYNQMP
832         bool "Xilinx ZynqMP based platform"
833         select ARM64
834         select BOARD_LATE_INIT
835         select DM
836         select OF_CONTROL
837         select DM_SERIAL
838         select SUPPORT_SPL
839         select CLK
840         select SPL_BOARD_INIT if SPL
841         select SPL_CLK if SPL
842         select DM_USB if USB
843         imply FAT_WRITE
844
845 config TEGRA
846         bool "NVIDIA Tegra"
847         imply DISTRO_DEFAULTS
848         imply FAT_WRITE
849
850 config TARGET_VEXPRESS64_AEMV8A
851         bool "Support vexpress_aemv8a"
852         select ARM64
853         select PL01X_SERIAL
854
855 config TARGET_VEXPRESS64_BASE_FVP
856         bool "Support Versatile Express ARMv8a FVP BASE model"
857         select ARM64
858         select SEMIHOSTING
859         select PL01X_SERIAL
860
861 config TARGET_VEXPRESS64_BASE_FVP_DRAM
862         bool "Support Versatile Express ARMv8a FVP BASE model booting from DRAM"
863         select ARM64
864         select PL01X_SERIAL
865         help
866           This target is derived from TARGET_VEXPRESS64_BASE_FVP and over-rides
867           the default config to allow the user to load the images directly into
868           DRAM using model parameters rather than by using semi-hosting to load
869           the files from the host filesystem.
870
871 config TARGET_VEXPRESS64_JUNO
872         bool "Support Versatile Express Juno Development Platform"
873         select ARM64
874         select PL01X_SERIAL
875
876 config TARGET_LS2080A_EMU
877         bool "Support ls2080a_emu"
878         select ARCH_LS2080A
879         select ARM64
880         select ARMV8_MULTIENTRY
881         select ARCH_MISC_INIT
882         help
883           Support for Freescale LS2080A_EMU platform
884           The LS2080A Development System (EMULATOR) is a pre silicon
885           development platform that supports the QorIQ LS2080A
886           Layerscape Architecture processor.
887
888 config TARGET_LS2080A_SIMU
889         bool "Support ls2080a_simu"
890         select ARCH_LS2080A
891         select ARM64
892         select ARMV8_MULTIENTRY
893         select ARCH_MISC_INIT
894         help
895           Support for Freescale LS2080A_SIMU platform
896           The LS2080A Development System (QDS) is a pre silicon
897           development platform that supports the QorIQ LS2080A
898           Layerscape Architecture processor.
899
900 config TARGET_LS1088AQDS
901         bool "Support ls1088aqds"
902         select ARCH_LS1088A
903         select ARM64
904         select ARMV8_MULTIENTRY
905         select ARCH_MISC_INIT
906         select BOARD_LATE_INIT
907         select SUPPORT_SPL
908         help
909           Support for NXP LS1088AQDS platform
910           The LS1088A Development System (QDS) is a high-performance
911           development platform that supports the QorIQ LS1088A
912           Layerscape Architecture processor.
913
914 config TARGET_LS2080AQDS
915         bool "Support ls2080aqds"
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         imply SCSI
923         imply SCSI_AHCI
924         help
925           Support for Freescale LS2080AQDS platform
926           The LS2080A Development System (QDS) is a high-performance
927           development platform that supports the QorIQ LS2080A
928           Layerscape Architecture processor.
929
930 config TARGET_LS2080ARDB
931         bool "Support ls2080ardb"
932         select ARCH_LS2080A
933         select ARM64
934         select ARMV8_MULTIENTRY
935         select BOARD_LATE_INIT
936         select SUPPORT_SPL
937         select ARCH_MISC_INIT
938         imply SCSI
939         imply SCSI_AHCI
940         help
941           Support for Freescale LS2080ARDB platform.
942           The LS2080A Reference design board (RDB) is a high-performance
943           development platform that supports the QorIQ LS2080A
944           Layerscape Architecture processor.
945
946 config TARGET_LS2081ARDB
947         bool "Support ls2081ardb"
948         select ARCH_LS2080A
949         select ARM64
950         select ARMV8_MULTIENTRY
951         select BOARD_LATE_INIT
952         select SUPPORT_SPL
953         select ARCH_MISC_INIT
954         help
955           Support for Freescale LS2081ARDB platform.
956           The LS2081A Reference design board (RDB) is a high-performance
957           development platform that supports the QorIQ LS2081A/LS2041A
958           Layerscape Architecture processor.
959
960 config TARGET_HIKEY
961         bool "Support HiKey 96boards Consumer Edition Platform"
962         select ARM64
963         select DM
964         select DM_GPIO
965         select DM_SERIAL
966         select OF_CONTROL
967         select PL01X_SERIAL
968         select SPECIFY_CONSOLE_INDEX
969           help
970           Support for HiKey 96boards platform. It features a HI6220
971           SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
972
973 config TARGET_POPLAR
974         bool "Support Poplar 96boards Enterprise Edition Platform"
975         select ARM64
976         select DM
977         select OF_CONTROL
978         select DM_SERIAL
979         select DM_USB
980         select PL01X_SERIAL
981           help
982           Support for Poplar 96boards EE platform. It features a HI3798cv200
983           SoC, with 4xA53 CPU, 1GB RAM and the high performance Mali T720 GPU
984           making it capable of running any commercial set-top solution based on
985           Linux or Android.
986
987 config TARGET_LS1012AQDS
988         bool "Support ls1012aqds"
989         select ARCH_LS1012A
990         select ARM64
991         select BOARD_LATE_INIT
992         help
993           Support for Freescale LS1012AQDS platform.
994           The LS1012A Development System (QDS) is a high-performance
995           development platform that supports the QorIQ LS1012A
996           Layerscape Architecture processor.
997
998 config TARGET_LS1012ARDB
999         bool "Support ls1012ardb"
1000         select ARCH_LS1012A
1001         select ARM64
1002         select BOARD_LATE_INIT
1003         imply SCSI
1004         imply SCSI_AHCI
1005         help
1006           Support for Freescale LS1012ARDB platform.
1007           The LS1012A Reference design board (RDB) is a high-performance
1008           development platform that supports the QorIQ LS1012A
1009           Layerscape Architecture processor.
1010
1011 config TARGET_LS1012A2G5RDB
1012         bool "Support ls1012a2g5rdb"
1013         select ARCH_LS1012A
1014         select ARM64
1015         select BOARD_LATE_INIT
1016         imply SCSI
1017         help
1018           Support for Freescale LS1012A2G5RDB platform.
1019           The LS1012A 2G5 Reference design board (RDB) is a high-performance
1020           development platform that supports the QorIQ LS1012A
1021           Layerscape Architecture processor.
1022
1023 config TARGET_LS1012AFRDM
1024         bool "Support ls1012afrdm"
1025         select ARCH_LS1012A
1026         select ARM64
1027         help
1028           Support for Freescale LS1012AFRDM platform.
1029           The LS1012A Freedom  board (FRDM) is a high-performance
1030           development platform that supports the QorIQ LS1012A
1031           Layerscape Architecture processor.
1032
1033 config TARGET_LS1088ARDB
1034         bool "Support ls1088ardb"
1035         select ARCH_LS1088A
1036         select ARM64
1037         select ARMV8_MULTIENTRY
1038         select ARCH_MISC_INIT
1039         select BOARD_LATE_INIT
1040         select SUPPORT_SPL
1041         help
1042           Support for NXP LS1088ARDB platform.
1043           The LS1088A Reference design board (RDB) is a high-performance
1044           development platform that supports the QorIQ LS1088A
1045           Layerscape Architecture processor.
1046
1047 config TARGET_LS1021AQDS
1048         bool "Support ls1021aqds"
1049         select BOARD_LATE_INIT
1050         select CPU_V7A
1051         select CPU_V7_HAS_NONSEC
1052         select CPU_V7_HAS_VIRT
1053         select SUPPORT_SPL
1054         select ARCH_LS1021A
1055         select ARCH_SUPPORT_PSCI
1056         select LS1_DEEP_SLEEP
1057         select SYS_FSL_DDR
1058         select BOARD_EARLY_INIT_F
1059         imply SCSI
1060
1061 config TARGET_LS1021ATWR
1062         bool "Support ls1021atwr"
1063         select BOARD_LATE_INIT
1064         select CPU_V7A
1065         select CPU_V7_HAS_NONSEC
1066         select CPU_V7_HAS_VIRT
1067         select SUPPORT_SPL
1068         select ARCH_LS1021A
1069         select ARCH_SUPPORT_PSCI
1070         select LS1_DEEP_SLEEP
1071         select BOARD_EARLY_INIT_F
1072         imply SCSI
1073
1074 config TARGET_LS1021AIOT
1075         bool "Support ls1021aiot"
1076         select BOARD_LATE_INIT
1077         select CPU_V7A
1078         select CPU_V7_HAS_NONSEC
1079         select CPU_V7_HAS_VIRT
1080         select SUPPORT_SPL
1081         select ARCH_LS1021A
1082         select ARCH_SUPPORT_PSCI
1083         imply SCSI
1084         help
1085           Support for Freescale LS1021AIOT platform.
1086           The LS1021A Freescale board (IOT) is a high-performance
1087           development platform that supports the QorIQ LS1021A
1088           Layerscape Architecture processor.
1089
1090 config TARGET_LS1043AQDS
1091         bool "Support ls1043aqds"
1092         select ARCH_LS1043A
1093         select ARM64
1094         select ARMV8_MULTIENTRY
1095         select BOARD_LATE_INIT
1096         select SUPPORT_SPL
1097         select BOARD_EARLY_INIT_F
1098         imply SCSI
1099         help
1100           Support for Freescale LS1043AQDS platform.
1101
1102 config TARGET_LS1043ARDB
1103         bool "Support ls1043ardb"
1104         select ARCH_LS1043A
1105         select ARM64
1106         select ARMV8_MULTIENTRY
1107         select BOARD_LATE_INIT
1108         select SUPPORT_SPL
1109         select BOARD_EARLY_INIT_F
1110         imply SCSI
1111         help
1112           Support for Freescale LS1043ARDB platform.
1113
1114 config TARGET_LS1046AQDS
1115         bool "Support ls1046aqds"
1116         select ARCH_LS1046A
1117         select ARM64
1118         select ARMV8_MULTIENTRY
1119         select BOARD_LATE_INIT
1120         select SUPPORT_SPL
1121         select DM_SPI_FLASH if DM_SPI
1122         select BOARD_EARLY_INIT_F
1123         imply SCSI
1124         help
1125           Support for Freescale LS1046AQDS platform.
1126           The LS1046A Development System (QDS) is a high-performance
1127           development platform that supports the QorIQ LS1046A
1128           Layerscape Architecture processor.
1129
1130 config TARGET_LS1046ARDB
1131         bool "Support ls1046ardb"
1132         select ARCH_LS1046A
1133         select ARM64
1134         select ARMV8_MULTIENTRY
1135         select BOARD_LATE_INIT
1136         select SUPPORT_SPL
1137         select DM_SPI_FLASH if DM_SPI
1138         select POWER_MC34VR500
1139         select BOARD_EARLY_INIT_F
1140         imply SCSI
1141         help
1142           Support for Freescale LS1046ARDB platform.
1143           The LS1046A Reference Design Board (RDB) is a high-performance
1144           development platform that supports the QorIQ LS1046A
1145           Layerscape Architecture processor.
1146
1147 config TARGET_H2200
1148         bool "Support h2200"
1149         select CPU_PXA
1150
1151 config TARGET_ZIPITZ2
1152         bool "Support zipitz2"
1153         select CPU_PXA
1154
1155 config TARGET_COLIBRI_PXA270
1156         bool "Support colibri_pxa270"
1157         select CPU_PXA
1158
1159 config ARCH_UNIPHIER
1160         bool "Socionext UniPhier SoCs"
1161         select BOARD_LATE_INIT
1162         select DM
1163         select DM_GPIO
1164         select DM_I2C
1165         select DM_MMC
1166         select DM_RESET
1167         select DM_SERIAL
1168         select DM_USB
1169         select OF_CONTROL
1170         select OF_LIBFDT
1171         select PINCTRL
1172         select SPL_BOARD_INIT if SPL
1173         select SPL_DM if SPL
1174         select SPL_LIBCOMMON_SUPPORT if SPL
1175         select SPL_LIBGENERIC_SUPPORT if SPL
1176         select SPL_OF_CONTROL if SPL
1177         select SPL_PINCTRL if SPL
1178         select SUPPORT_SPL
1179         imply FAT_WRITE
1180         help
1181           Support for UniPhier SoC family developed by Socionext Inc.
1182           (formerly, System LSI Business Division of Panasonic Corporation)
1183
1184 config STM32
1185         bool "Support STMicroelectronics STM32 MCU with cortex M"
1186         select CPU_V7M
1187         select DM
1188         select DM_SERIAL
1189         select SYS_THUMB_BUILD
1190
1191 config ARCH_STI
1192         bool "Support STMicrolectronics SoCs"
1193         select CPU_V7A
1194         select DM
1195         select DM_SERIAL
1196         select BLK
1197         select DM_MMC
1198         select DM_RESET
1199         help
1200           Support for STMicroelectronics STiH407/10 SoC family.
1201           This SoC is used on Linaro 96Board STiH410-B2260
1202
1203 config ARCH_STM32MP
1204         bool "Support STMicroelectronics STM32MP Socs with cortex A"
1205         select ARCH_MISC_INIT
1206         select BOARD_LATE_INIT
1207         select CLK
1208         select DM
1209         select DM_GPIO
1210         select DM_RESET
1211         select DM_SERIAL
1212         select OF_CONTROL
1213         select OF_LIBFDT
1214         select PINCTRL
1215         select REGMAP
1216         select SUPPORT_SPL
1217         select SYSCON
1218         select SYSRESET
1219         select SYS_THUMB_BUILD
1220         help
1221           Support for STM32MP SoC family developed by STMicroelectronics,
1222           MPUs based on ARM cortex A core
1223           U-BOOT is running in DDR and SPL support is the unsecure First Stage
1224           BootLoader (FSBL)
1225
1226 config ARCH_ROCKCHIP
1227         bool "Support Rockchip SoCs"
1228         select OF_CONTROL
1229         select BLK
1230         select DM
1231         select SPL_DM if SPL
1232         select SYS_MALLOC_F
1233         select SYS_THUMB_BUILD if !ARM64
1234         select SPL_SYS_MALLOC_SIMPLE if SPL
1235         select DM_GPIO
1236         select DM_I2C
1237         select DM_MMC
1238         select DM_SERIAL
1239         select DM_SPI
1240         select DM_SPI_FLASH
1241         select DM_USB if USB
1242         select DM_PWM
1243         select DM_REGULATOR
1244         select ENABLE_ARM_SOC_BOOT0_HOOK
1245         select SPI
1246         imply CMD_FASTBOOT
1247         imply DISTRO_DEFAULTS
1248         imply FASTBOOT
1249         imply FAT_WRITE
1250         imply USB_FUNCTION_FASTBOOT
1251         imply SPL_SYSRESET
1252         imply TPL_SYSRESET
1253         imply ADC
1254         imply SARADC_ROCKCHIP
1255         imply SYS_NS16550
1256
1257 config TARGET_THUNDERX_88XX
1258         bool "Support ThunderX 88xx"
1259         select ARM64
1260         select OF_CONTROL
1261         select SYS_CACHE_SHIFT_7
1262         select PL01X_SERIAL
1263
1264 config ARCH_ASPEED
1265         bool "Support Aspeed SoCs"
1266         select OF_CONTROL
1267         select DM
1268
1269 endchoice
1270
1271 config TI_SECURE_DEVICE
1272         bool "HS Device Type Support"
1273         depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS
1274         help
1275           If a high secure (HS) device type is being used, this config
1276           must be set. This option impacts various aspects of the
1277           build system (to create signed boot images that can be
1278           authenticated) and the code. See the doc/README.ti-secure
1279           file for further details.
1280
1281 source "arch/arm/mach-aspeed/Kconfig"
1282
1283 source "arch/arm/mach-at91/Kconfig"
1284
1285 source "arch/arm/mach-bcm283x/Kconfig"
1286
1287 source "arch/arm/mach-davinci/Kconfig"
1288
1289 source "arch/arm/mach-exynos/Kconfig"
1290
1291 source "arch/arm/mach-highbank/Kconfig"
1292
1293 source "arch/arm/mach-integrator/Kconfig"
1294
1295 source "arch/arm/mach-keystone/Kconfig"
1296
1297 source "arch/arm/mach-kirkwood/Kconfig"
1298
1299 source "arch/arm/mach-mvebu/Kconfig"
1300
1301 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
1302
1303 source "arch/arm/mach-imx/mx2/Kconfig"
1304
1305 source "arch/arm/mach-imx/mx3/Kconfig"
1306
1307 source "arch/arm/mach-imx/mx5/Kconfig"
1308
1309 source "arch/arm/mach-imx/mx6/Kconfig"
1310
1311 source "arch/arm/mach-imx/mx7/Kconfig"
1312
1313 source "arch/arm/mach-imx/mx7ulp/Kconfig"
1314
1315 source "arch/arm/mach-imx/mx8m/Kconfig"
1316
1317 source "arch/arm/mach-imx/mxs/Kconfig"
1318
1319 source "arch/arm/mach-omap2/Kconfig"
1320
1321 source "arch/arm/cpu/armv8/fsl-layerscape/Kconfig"
1322
1323 source "arch/arm/mach-orion5x/Kconfig"
1324
1325 source "arch/arm/mach-rmobile/Kconfig"
1326
1327 source "arch/arm/mach-meson/Kconfig"
1328
1329 source "arch/arm/mach-qemu/Kconfig"
1330
1331 source "arch/arm/mach-rockchip/Kconfig"
1332
1333 source "arch/arm/mach-s5pc1xx/Kconfig"
1334
1335 source "arch/arm/mach-snapdragon/Kconfig"
1336
1337 source "arch/arm/mach-socfpga/Kconfig"
1338
1339 source "arch/arm/mach-sti/Kconfig"
1340
1341 source "arch/arm/mach-stm32/Kconfig"
1342
1343 source "arch/arm/mach-stm32mp/Kconfig"
1344
1345 source "arch/arm/mach-sunxi/Kconfig"
1346
1347 source "arch/arm/mach-tegra/Kconfig"
1348
1349 source "arch/arm/mach-uniphier/Kconfig"
1350
1351 source "arch/arm/cpu/armv7/vf610/Kconfig"
1352
1353 source "arch/arm/mach-zynq/Kconfig"
1354
1355 source "arch/arm/mach-zynqmp-r5/Kconfig"
1356
1357 source "arch/arm/cpu/armv7/Kconfig"
1358
1359 source "arch/arm/cpu/armv8/zynqmp/Kconfig"
1360
1361 source "arch/arm/cpu/armv8/Kconfig"
1362
1363 source "arch/arm/mach-imx/Kconfig"
1364
1365 source "board/bosch/shc/Kconfig"
1366 source "board/CarMediaLab/flea3/Kconfig"
1367 source "board/Marvell/aspenite/Kconfig"
1368 source "board/Marvell/gplugd/Kconfig"
1369 source "board/armadeus/apf27/Kconfig"
1370 source "board/armltd/vexpress/Kconfig"
1371 source "board/armltd/vexpress64/Kconfig"
1372 source "board/broadcom/bcm23550_w1d/Kconfig"
1373 source "board/broadcom/bcm28155_ap/Kconfig"
1374 source "board/broadcom/bcmcygnus/Kconfig"
1375 source "board/broadcom/bcmnsp/Kconfig"
1376 source "board/broadcom/bcmns2/Kconfig"
1377 source "board/cavium/thunderx/Kconfig"
1378 source "board/cirrus/edb93xx/Kconfig"
1379 source "board/eets/pdu001/Kconfig"
1380 source "board/freescale/ls2080a/Kconfig"
1381 source "board/freescale/ls2080aqds/Kconfig"
1382 source "board/freescale/ls2080ardb/Kconfig"
1383 source "board/freescale/ls1088a/Kconfig"
1384 source "board/freescale/ls1021aqds/Kconfig"
1385 source "board/freescale/ls1043aqds/Kconfig"
1386 source "board/freescale/ls1021atwr/Kconfig"
1387 source "board/freescale/ls1021aiot/Kconfig"
1388 source "board/freescale/ls1046aqds/Kconfig"
1389 source "board/freescale/ls1043ardb/Kconfig"
1390 source "board/freescale/ls1046ardb/Kconfig"
1391 source "board/freescale/ls1012aqds/Kconfig"
1392 source "board/freescale/ls1012ardb/Kconfig"
1393 source "board/freescale/ls1012afrdm/Kconfig"
1394 source "board/freescale/mx35pdk/Kconfig"
1395 source "board/freescale/s32v234evb/Kconfig"
1396 source "board/gdsys/a38x/Kconfig"
1397 source "board/grinn/chiliboard/Kconfig"
1398 source "board/gumstix/pepper/Kconfig"
1399 source "board/h2200/Kconfig"
1400 source "board/hisilicon/hikey/Kconfig"
1401 source "board/hisilicon/poplar/Kconfig"
1402 source "board/isee/igep003x/Kconfig"
1403 source "board/phytec/pcm051/Kconfig"
1404 source "board/silica/pengwyn/Kconfig"
1405 source "board/spear/spear300/Kconfig"
1406 source "board/spear/spear310/Kconfig"
1407 source "board/spear/spear320/Kconfig"
1408 source "board/spear/spear600/Kconfig"
1409 source "board/spear/x600/Kconfig"
1410 source "board/st/stv0991/Kconfig"
1411 source "board/tcl/sl50/Kconfig"
1412 source "board/birdland/bav335x/Kconfig"
1413 source "board/timll/devkit3250/Kconfig"
1414 source "board/toradex/colibri_pxa270/Kconfig"
1415 source "board/vscom/baltos/Kconfig"
1416 source "board/woodburn/Kconfig"
1417 source "board/work-microwave/work_92105/Kconfig"
1418 source "board/xilinx/zynqmp/Kconfig"
1419 source "board/zipitz2/Kconfig"
1420
1421 source "arch/arm/Kconfig.debug"
1422
1423 endmenu
1424
1425 config SPL_LDSCRIPT
1426         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1427         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
1428         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1429
1430