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