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