sunxi: Kconfig: use SoC-wide values for some symbols
[platform/kernel/u-boot.git] / common / spl / Kconfig
1 config SUPPORT_SPL
2         bool
3
4 config SUPPORT_TPL
5         bool
6
7 config SUPPORT_VPL
8         bool
9
10 config SPL_DFU_NO_RESET
11         bool
12
13 config SPL
14         bool "Enable SPL"
15         depends on SUPPORT_SPL
16         help
17           If you want to build SPL as well as the normal image, say Y.
18
19 menu "SPL configuration options"
20         depends on SPL
21
22 config SPL_FRAMEWORK
23         bool "Support SPL based upon the common SPL framework"
24         default y
25         help
26           Enable the SPL framework under common/spl/.  This framework
27           supports MMC, NAND and YMODEM and other methods loading of U-Boot
28           and the Linux Kernel.  If unsure, say Y.
29
30 config SPL_FRAMEWORK_BOARD_INIT_F
31         bool "Define a generic function board_init_f"
32         depends on SPL_FRAMEWORK
33         help
34           Define a generic function board_init_f that:
35           - initialize the spl (spl_early_init)
36           - initialize the serial (preloader_console_init)
37           Unless you want to provide your own board_init_f, you should say Y.
38
39 config SPL_SIZE_LIMIT
40         hex "Maximum size of SPL image"
41         default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB
42         default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
43         default 0x30000 if ARCH_MVEBU && ARMADA_32BIT
44         default 0x0
45         help
46           Specifies the maximum length of the U-Boot SPL image.
47           If this value is zero, it is ignored.
48
49 config SPL_SIZE_LIMIT_SUBTRACT_GD
50         bool "SPL image size check: provide space for global data"
51         depends on SPL_SIZE_LIMIT > 0
52         help
53           If enabled, aligned size of global data is reserved in
54           SPL_SIZE_LIMIT check to ensure such an image does not overflow SRAM
55           if SPL_SIZE_LIMIT describes the size of SRAM available for SPL when
56           pre-reloc global data is put into this SRAM, too.
57
58 config SPL_SIZE_LIMIT_SUBTRACT_MALLOC
59         bool "SPL image size check: provide space for malloc() pool before relocation"
60         depends on SPL_SIZE_LIMIT > 0
61         help
62           If enabled, SPL_SYS_MALLOC_F_LEN is reserved in SPL_SIZE_LIMIT check
63           to ensure such an image does not overflow SRAM if SPL_SIZE_LIMIT
64           describes the size of SRAM available for SPL when pre-reloc malloc
65           pool is put into this SRAM, too.
66
67 config SPL_SIZE_LIMIT_PROVIDE_STACK
68         hex "SPL image size check: provide stack space before relocation"
69         depends on SPL_SIZE_LIMIT > 0
70         default 0
71         help
72           If set, this size is reserved in SPL_SIZE_LIMIT check to ensure such
73           an image does not overflow SRAM if SPL_SIZE_LIMIT describes the size
74           of SRAM available for SPL when the stack required before reolcation
75           uses this SRAM, too.
76
77 config SPL_MAX_SIZE
78         hex "Maximum size of the SPL image, excluding BSS"
79         default 0x30000 if ARCH_MX6 && MX6_OCRAM_256KB
80         default 0x1b000 if AM33XX && !TI_SECURE_DEVICE
81         default 0x10000 if ARCH_MX6 && !MX6_OCRAM_256KB
82         default 0x7fa0 if SUNXI_SRAM_ADDRESS = 0x10000
83         default 0x7fa0 if SUNXI_SRAM_ADDRESS = 0x20000 && !MACH_SUN50I_H616
84         default 0xbfa0 if MACH_SUN50I_H616
85         default 0x7000 if RCAR_GEN3
86         default 0x5fa0 if SUNXI_SRAM_ADDRESS = 0x0
87         default 0x10000 if ASPEED_AST2600
88         default 0x27000 if IMX8MM && SPL_TEXT_BASE = 0x7E1000
89         default 0x0
90         help
91           Maximum size of the SPL image (text, data, rodata, and linker lists
92           sections), BSS excluded.  When defined, the linker checks that the
93           actual size does not exceed it.
94
95 config SPL_PAD_TO
96         hex "Offset to which the SPL should be padded before appending the SPL payload"
97         default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
98         default 0x11000 if ARCH_MX7 || (ARCH_MX6 && !MX6_OCRAM_256KB)
99         default 0x10000 if ARCH_KEYSTONE
100         default 0x8000 if ARCH_SUNXI && !MACH_SUN50I_H616
101         default TPL_MAX_SIZE if TPL_MAX_SIZE > SPL_MAX_SIZE
102         default SPL_MAX_SIZE
103         help
104           Image offset to which the SPL should be padded before appending the
105           SPL payload. By default, this is defined as CONFIG_SPL_MAX_SIZE, or 0 if
106           CONFIG_SPL_MAX_SIZE is undefined.  CONFIG_SPL_PAD_TO must be either
107           0, meaning to append the SPL payload without any padding, or >=
108           CONFIG_SPL_MAX_SIZE.
109
110 config SPL_HAS_BSS_LINKER_SECTION
111         depends on SPL_FRAMEWORK
112         bool "Use a specific address for the BSS via the linker script"
113         default y if ARCH_SUNXI || ARCH_MX6 || ARCH_OMAP2PLUS || MIPS || RISCV || ARCH_ZYNQMP
114
115 config SPL_BSS_START_ADDR
116         hex "Link address for the BSS within the SPL binary"
117         depends on SPL_HAS_BSS_LINKER_SECTION
118         default 0x88200000 if (ARCH_MX6 && (MX6SX || MX6SL || MX6UL || MX6ULL)) || ARCH_MX7
119         default 0x18200000 if ARCH_MX6 && !(MX6SX || MX6SL || MX6UL || MX6ULL)
120         default 0x80a00000 if ARCH_OMAP2PLUS
121         default 0x81f80000 if ARCH_SUNXI && MACH_SUNIV
122         default 0x4ff80000 if ARCH_SUNXI && !(MACH_SUN9I || MACH_SUNIV)
123         default 0x2ff80000 if ARCH_SUNXI && MACH_SUN9I
124         default 0x1000 if ARCH_ZYNQMP
125
126 choice
127         prompt "Enforce SPL BSS limit"
128         depends on !PPC
129         default SPL_BSS_LIMIT
130         help
131           In some platforms we only want to enforce a limit on the size of the
132           BSS in memory.  On other platforms we need to enforce a limit on the
133           whole of the memory allocation as we're strictly limited to a small
134           typically non-DRAM location.  Finally, other platforms do not enforce
135           a memory limit within SPL.
136
137 config SPL_NO_BSS_LIMIT
138         bool "Do not enforce a build time limit on the size of the BSS"
139
140 config SPL_BSS_LIMIT
141         bool "Enforce a limit on the size of the BSS only"
142
143 config SPL_FOOTPRINT_LIMIT
144         bool "Enforce a limit on the whole of memory allocated to SPL, BSS included"
145
146 endchoice
147
148 config SPL_BSS_MAX_SIZE
149         hex "Maximum size in memory allocated to the SPL BSS"
150         depends on SPL_BSS_LIMIT
151         default 0x100000 if ARCH_MX6 || RISCV
152         default 0x80000 if ARCH_OMAP2PLUS || ARCH_SUNXI
153         help
154           When non-zero, the linker checks that the actual memory used by SPL
155           from __bss_start to __bss_end does not exceed it.
156
157 config SPL_MAX_FOOTPRINT
158         hex "Maximum size in memory allocated to the SPL, BSS included"
159         depends on SPL_FOOTPRINT_LIMIT
160         help
161           When non-zero, the linker checks that the actual memory used by SPL
162           from _start to __bss_end does not exceed it.
163
164 config SPL_SYS_STACK_F_CHECK_BYTE
165         hex
166         default 0xaa
167         help
168           Constant used to check the stack
169
170 config SPL_SYS_REPORT_STACK_F_USAGE
171         depends on SPL_SIZE_LIMIT_PROVIDE_STACK != 0
172         bool "Check and report stack usage in SPL before relocation"
173         help
174           If this option is enabled, the initial SPL stack is filled with 0xaa
175           very early, up to the size configured with
176           SPL_SIZE_LIMIT_PROVIDE_STACK.
177           Later when SPL is done using this initial stack and switches to a
178           stack in DRAM, the actually used size of this initial stack is
179           reported by examining the memory and searching for the lowest
180           occurrence of non 0xaa bytes.
181           This default implementation works for stacks growing down only.
182
183 config SPL_SHOW_ERRORS
184         bool "Show more information when something goes wrong"
185         help
186           This enabled more verbose error messages and checking when something
187           goes wrong in SPL. For example, it shows the error code when U-Boot
188           cannot be located. This can help to diagnose the problem and figure
189           out a fix, particularly during development.
190
191           This adds a small amount to SPL code size, perhaps 100 bytes.
192
193 config SPL_BINMAN_SYMBOLS
194         bool "Declare binman symbols in SPL"
195         depends on SPL_FRAMEWORK && BINMAN
196         default y
197         help
198           This enables use of symbols in SPL which refer to other entries in
199           the same binman image as the SPL. These can be declared with the
200           binman_sym_declare(type, entry, prop) macro and accessed by the
201           binman_sym(type, entry, prop) macro defined in binman_sym.h.
202
203           See tools/binman/binman.rst for a detailed explanation.
204
205 config SPL_BINMAN_UBOOT_SYMBOLS
206         bool "Declare binman symbols for U-Boot phases in SPL"
207         depends on SPL_BINMAN_SYMBOLS
208         default n if ARCH_IMX8M
209         default y
210         help
211           This enables use of symbols in SPL which refer to U-Boot phases,
212           enabling SPL to obtain the location and size of its next phase simply
213           by calling spl_get_image_pos() and spl_get_image_size().
214
215           For this to work, you must have all U-Boot phases in the same binman
216           image, so binman can update SPL with the locations of everything.
217
218 source "common/spl/Kconfig.nxp"
219
220 config HANDOFF
221         bool "Pass hand-off information from SPL to U-Boot proper"
222         depends on BLOBLIST
223         help
224           It is useful to be able to pass information from SPL to U-Boot
225           proper to preserve state that is known in SPL and is needed in U-Boot.
226           Enable this to locate the handoff information in U-Boot proper, early
227           in boot. It is available in gd->handoff. The state state is set up
228           in SPL (or TPL if that is being used).
229
230 config SPL_HANDOFF
231         bool "Pass hand-off information from SPL to U-Boot proper"
232         depends on HANDOFF && SPL_BLOBLIST
233         default y
234         help
235           This option enables SPL to write handoff information. This can be
236           used to pass information like the size of SDRAM from SPL to U-Boot
237           proper. Also SPL can receive information from TPL in the same place
238           if that is enabled.
239
240 config SPL_LDSCRIPT
241         string "Linker script for the SPL stage"
242         default "arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds" if MACH_SUNIV
243         default "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds" if ARCH_SUNXI && !MACH_SUNIV && !ARM64
244         default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
245         default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
246         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A
247         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
248         default "arch/arm/mach-at91/arm926ejs/u-boot-spl.lds" if ARCH_AT91 && CPU_ARM926EJS
249         default "arch/arm/mach-at91/armv7/u-boot-spl.lds" if ARCH_AT91 && CPU_V7A
250         default "arch/arm/mach-omap2/u-boot-spl.lds" if ARCH_MX6 || ARCH_OMAP2PLUS || (ARCH_K3 && !ARM64)
251         default "arch/arm/mach-zynq/u-boot-spl.lds" if ARCH_ZYNQ
252         default "board/samsung/common/exynos-uboot-spl.lds" if ARCH_EXYNOS5 || ARCH_EXYNOS4
253         default "board/davinci/da8xxevm/u-boot-spl-da850evm.lds" if ARCH_DAVINCI
254         default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
255         help
256           The SPL stage will usually require a different linker-script
257           (as it runs from a different memory region) than the regular
258           U-Boot stage.  Set this to the path of the linker-script to
259           be used for SPL.
260
261 config SPL_TEXT_BASE
262         hex "SPL Text Base"
263         default 0x402F4000 if AM43XX
264         default 0x402F0400 if AM33XX
265         default 0x40301350 if OMAP54XX
266         default 0x10060 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN9I
267         default 0x20060 if SUN50I_GEN_H6
268         default 0x00060 if ARCH_SUNXI
269         default 0xfffc0000 if ARCH_ZYNQMP
270         default 0x0
271         help
272           The address in memory that SPL will be running from.
273
274 config SPL_BOARD_INIT
275         bool "Call board-specific initialization in SPL"
276         help
277           If this option is enabled, U-Boot will call the function
278           spl_board_init() from board_init_r(). This function should be
279           provided by the board.
280
281 config SPL_BOOTROM_SUPPORT
282         bool "Support returning to the BOOTROM"
283         help
284           Some platforms (e.g. the Rockchip RK3368) provide support in their
285           ROM for loading the next boot-stage after performing basic setup
286           from the SPL stage.
287
288           Enable this option, to return to the BOOTROM through the
289           BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
290           boot device list, if not implemented for a given board)
291
292 config SPL_BOOTCOUNT_LIMIT
293         bool "Support bootcount in SPL"
294         depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
295         help
296           On some boards, which use 'falcon' mode, it is necessary to check
297           and increment the number of boot attempts. Such boards do not
298           use proper U-Boot for normal boot flow and hence needs those
299           adjustments to be done in the SPL.
300
301 config SPL_RAW_IMAGE_SUPPORT
302         bool "Support SPL loading and booting of RAW images"
303         default n if ARCH_MVEBU
304         default n if (ARCH_MX6 && (SPL_MMC || SPL_SATA))
305         default y
306         depends on !TI_SECURE_DEVICE
307         help
308           SPL will support loading and booting a RAW image when this option
309           is y. If this is not set, SPL will move on to other available
310           boot media to find a suitable image.
311
312 config SPL_LEGACY_IMAGE_FORMAT
313         bool "Support SPL loading and booting of Legacy images"
314         default n if ARCH_MVEBU
315         default y if !SPL_LOAD_FIT
316         depends on !TI_SECURE_DEVICE
317         help
318           SPL will support loading and booting Legacy images when this option
319           is y. If this is not set, SPL will move on to other available
320           boot media to find a suitable image.
321
322 config SPL_LEGACY_IMAGE_CRC_CHECK
323         bool "Check CRC of Legacy images"
324         depends on SPL_LEGACY_IMAGE_FORMAT
325         select SPL_CRC32
326         help
327           Enable this to check the CRC of Legacy images. While this increases
328           reliability, it affects both code size and boot duration.
329           If disabled, Legacy images are booted if the image magic and size
330           are correct, without further integrity checks.
331
332 config SPL_SYS_MALLOC_SIMPLE
333         bool "Only use malloc_simple functions in the SPL"
334         help
335           Say Y here to only use the *_simple malloc functions from
336           malloc_simple.c, rather then using the versions from dlmalloc.c;
337           this will make the SPL binary smaller at the cost of more heap
338           usage as the *_simple malloc functions do not re-use free-ed mem.
339
340 config SPL_SHARES_INIT_SP_ADDR
341         bool "SPL and U-Boot use the same initial stack pointer location"
342         depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
343         default n if ARCH_SUNXI || ARCH_MX6 || ARCH_MX7
344         default y
345         help
346           In many cases, we can use the same initial stack pointer address for
347           both SPL and U-Boot itself.  If you need to specify a different address
348           however, say N here and then set a different value in CONFIG_SPL_STACK.
349
350 config SPL_STACK
351         hex "Initial stack pointer location"
352         depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
353         depends on !SPL_SHARES_INIT_SP_ADDR
354         default 0x946bb8 if ARCH_MX7
355         default 0x93ffb8 if ARCH_MX6 && MX6_OCRAM_256KB
356         default 0x91ffb8 if ARCH_MX6 && !MX6_OCRAM_256KB
357         default 0x118000 if MACH_SUN50I_H6
358         default 0x58000 if MACH_SUN50I_H616
359         default 0x54000 if MACH_SUN50I || MACH_SUN50I_H5
360         default 0x18000 if MACH_SUN9I
361         default 0x8000 if ARCH_SUNXI
362         help
363           Address of the start of the stack SPL will use before SDRAM is
364           initialized.
365
366 config SPL_STACK_R
367         bool "Enable SDRAM location for SPL stack"
368         help
369           SPL starts off execution in SRAM and thus typically has only a small
370           stack available. Since SPL sets up DRAM while in its board_init_f()
371           function, it is possible for the stack to move there before
372           board_init_r() is reached. This option enables a special SDRAM
373           location for the SPL stack. U-Boot SPL switches to this after
374           board_init_f() completes, and before board_init_r() starts.
375
376 config SPL_STACK_R_ADDR
377         depends on SPL_STACK_R
378         hex "SDRAM location for SPL stack"
379         default 0x82000000 if ARCH_OMAP2PLUS
380         help
381           Specify the address in SDRAM for the SPL stack. This will be set up
382           before board_init_r() is called.
383
384 config SPL_STACK_R_MALLOC_SIMPLE_LEN
385         depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
386         hex "Size of malloc_simple heap after switching to DRAM SPL stack"
387         default 0x100000
388         help
389           Specify the amount of the stack to use as memory pool for
390           malloc_simple after switching the stack to DRAM. This may be set
391           to give board_init_r() a larger heap then the initial heap in
392           SRAM which is limited to SYS_MALLOC_F_LEN bytes.
393
394 config SPL_SEPARATE_BSS
395         bool "BSS section is in a different memory region from text"
396         help
397           Some platforms need a large BSS region in SPL and can provide this
398           because RAM is already set up. In this case BSS can be moved to RAM.
399           This option should then be enabled so that the correct device tree
400           location is used. Normally we put the device tree at the end of BSS
401           but with this option enabled, it goes at _image_binary_end.
402
403 config SYS_SPL_MALLOC
404         bool "Enable malloc pool in SPL"
405         depends on SPL_FRAMEWORK
406
407 config HAS_CUSTOM_SPL_MALLOC_START
408         bool "For the SPL malloc pool, define a custom starting address"
409         depends on SYS_SPL_MALLOC
410
411 config CUSTOM_SYS_SPL_MALLOC_ADDR
412         hex "SPL malloc addr"
413         depends on HAS_CUSTOM_SPL_MALLOC_START
414
415 config SYS_SPL_MALLOC_SIZE
416         hex "Size of the SPL malloc pool"
417         depends on SYS_SPL_MALLOC
418         default 0x100000
419
420 config SPL_READ_ONLY
421         bool
422         depends on SPL_OF_PLATDATA
423         # Bind cannot be supported because the udevice structs are in read-only
424         # memory so we cannot update the linked lists.
425         select SPL_OF_PLATDATA_NO_BIND
426         select SPL_OF_PLATDATA_RT
427         help
428           Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
429           section of memory. This means that of-platdata must make a copy (in
430           writeable memory) of anything it wants to modify, such as
431           device-private data.
432
433 config SPL_BANNER_PRINT
434         bool "Enable output of the SPL banner 'U-Boot SPL ...'"
435         default y
436         help
437           If this option is enabled, SPL will print the banner with version
438           info. Disabling this option could be useful to reduce SPL boot time
439           (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
440
441 config SPL_EARLY_BSS
442         depends on ARM && !ARM64
443         bool "Allows initializing BSS early before entering board_init_f"
444         help
445           On some platform we have sufficient memory available early on to
446           allow setting up and using a basic BSS prior to entering
447           board_init_f. Activating this option will also de-activate the
448           clearing of BSS during the SPL relocation process, thus allowing
449           to carry state from board_init_f to board_init_r by way of BSS.
450
451 config SPL_DISPLAY_PRINT
452         bool "Display a board-specific message in SPL"
453         help
454           If this option is enabled, U-Boot will call the function
455           spl_display_print() immediately after displaying the SPL console
456           banner ("U-Boot SPL ..."). This function should be provided by
457           the board.
458
459 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
460         bool "MMC raw mode: by sector"
461         default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
462                      ARCH_MX6 || ARCH_MX7 || \
463                      ARCH_ROCKCHIP || ARCH_MVEBU ||  ARCH_SOCFPGA || \
464                      ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
465                      OMAP44XX || OMAP54XX || AM33XX || AM43XX || \
466                      TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
467         help
468           Use sector number for specifying U-Boot location on MMC/SD in
469           raw mode.
470
471 config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
472         hex "Address on the MMC to load U-Boot from"
473         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
474         default 0x40 if ARCH_SUNXI
475         default 0x75 if ARCH_DAVINCI
476         default 0x8a if ARCH_MX6 || ARCH_MX7
477         default 0x100 if ARCH_UNIPHIER
478         default 0x0 if ARCH_MVEBU
479         default 0x200 if ARCH_SOCFPGA || ARCH_AT91
480         default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
481                          OMAP54XX || AM33XX || AM43XX || ARCH_K3
482         default 0x4000 if ARCH_ROCKCHIP
483         default 0x822 if TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
484         help
485           Address on the MMC to load U-Boot from, when the MMC is being used
486           in raw mode. Units: MMC sectors (1 sector = 512 bytes).
487
488 config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
489         hex "U-Boot main hardware partition image offset"
490         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
491         default 0x10 if ARCH_SUNXI
492         default 0x0
493         help
494           On some platforms SPL location depends on hardware partition. The ROM
495           code skips the MBR sector when loading SPL from main hardware data
496           partition. This adds offset to the main U-Boot image. Set this symbol
497           to the number of skipped sectors.
498
499           If unsure, leave the default.
500
501 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
502         bool "MMC Raw mode: by partition"
503         help
504           Use a partition for loading U-Boot when using MMC/SD in raw mode.
505
506 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
507         hex "Partition to use to load U-Boot from"
508         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
509         default 1
510         help
511           Partition on the MMC to load U-Boot from when the MMC is being
512           used in raw mode
513
514 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
515         bool "MMC raw mode: by partition type"
516         depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
517         help
518           Use partition type for specifying U-Boot partition on MMC/SD in
519           raw mode. U-Boot will be loaded from the first partition of this
520           type to be found.
521
522 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
523         hex "Partition Type on the MMC to load U-Boot from"
524         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
525         help
526           Partition Type on the MMC to load U-Boot from, when the MMC is being
527           used in raw mode.
528
529 config SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
530         bool "Override eMMC EXT_CSC_PART_CONFIG by user defined partition"
531         depends on SUPPORT_EMMC_BOOT
532         help
533           eMMC boot partition is normally configured by the bits of the EXT_CSD
534           register (EXT_CSC_PART_CONFIG), BOOT_PARTITION_ENABLE field. In some
535           cases it might be required in SPL to load the image from different
536           partition than the partition selected by EXT_CSC_PART_CONFIG register.
537           Enable this option if you intend to use an eMMC boot partition other
538           then selected via EXT_CSC_PART_CONFIG register and specify the custom
539           partition number by the CONFIG_SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
540           option.
541
542 config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
543         int "Number of the eMMC boot partition to use"
544         depends on SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
545         default 1
546         help
547           eMMC boot partition number to use when the eMMC in raw mode and
548           the eMMC EXT_CSC_PART_CONFIG selection should be overridden in SPL
549           by user defined partition number.
550
551 config SPL_CRC32
552         bool "Support CRC32"
553         default y if SPL_LEGACY_IMAGE_FORMAT || SPL_EFI_PARTITION
554         default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
555         help
556           Enable this to support CRC32 in uImages or FIT images within SPL.
557           This is a 32-bit checksum value that can be used to verify images.
558           For FIT images, this is the least secure type of checksum, suitable
559           for detected accidental image corruption. For secure applications you
560           should consider SHA1 or SHA256.
561
562 config SPL_MD5
563         bool "Support MD5"
564         depends on SPL_FIT
565         help
566           Enable this to support MD5 in FIT images within SPL. An MD5
567           checksum is a 128-bit hash value used to check that the image
568           contents have not been corrupted. Note that MD5 is not considered
569           secure as it is possible (with a brute-force attack) to adjust the
570           image while still retaining the same MD5 hash value. For secure
571           applications where images may be changed maliciously, you should
572           consider SHA256 or SHA384.
573
574 config SPL_FIT_IMAGE_TINY
575         bool "Remove functionality from SPL FIT loading to reduce size"
576         depends on SPL_FIT
577         default y if MACH_SUN50I || MACH_SUN50I_H5 || SUN50I_GEN_H6
578         default y if ARCH_IMX8M || ARCH_IMX9
579         help
580           Enable this to reduce the size of the FIT image loading code
581           in SPL, if space for the SPL binary is very tight.
582
583           This skips the recording of each loaded payload
584           (i.e. loadable) into the FDT (modifying the loaded FDT to
585           ensure this information is available to the next image
586           invoked).
587
588 config SPL_CACHE
589         bool "Support CACHE drivers"
590         help
591           Enable CACHE drivers in SPL. These drivers can keep data so that
592           future requests for that data can be served faster. Enable this option
593           to build the drivers in drivers/cache as part of an SPL build.
594
595 config SPL_CPU
596         bool "Support CPU drivers"
597         help
598           Enable this to support CPU drivers in SPL. These drivers can set
599           up CPUs and provide information about them such as the model and
600           name. This can be useful in SPL since setting up the CPUs earlier
601           may improve boot performance. Enable this option to build the
602           drivers in drivers/cpu as part of an SPL build.
603
604 config SPL_CRYPTO
605         bool "Support crypto drivers"
606         help
607           Enable crypto drivers in SPL. These drivers can be used to
608           accelerate secure boot processing in secure applications. Enable
609           this option to build the drivers in drivers/crypto as part of an
610           SPL build.
611
612 config SPL_DMA
613         bool "Support DMA drivers"
614         help
615           Enable DMA (direct-memory-access) drivers in SPL. These drivers
616           can be used to handle memory-to-peripheral data transfer without
617           the CPU moving the data. Enable this option to build the drivers
618           in drivers/dma as part of an SPL build.
619
620 config SPL_DRIVERS_MISC
621         bool "Support misc drivers"
622         help
623           Enable miscellaneous drivers in SPL. These drivers perform various
624           tasks that don't fall nicely into other categories, Enable this
625           option to build the drivers in drivers/misc as part of an SPL
626           build, for those that support building in SPL (not all drivers do).
627
628 config SPL_ENV_SUPPORT
629         bool "Support an environment"
630         help
631           Enable environment support in SPL. The U-Boot environment provides
632           a number of settings (essentially name/value pairs) which can
633           control many aspects of U-Boot's operation. Normally this is not
634           needed in SPL as it has a much simpler task with less
635           configuration. But some boards use this to support 'Falcon' boot
636           on EXT2 and FAT, where SPL boots directly into Linux without
637           starting U-Boot first. Enabling this option will make env_get()
638           and env_set() available in SPL.
639
640 config SPL_SAVEENV
641         bool "Support save environment"
642         depends on SPL_ENV_SUPPORT
643         select SPL_MMC_WRITE if ENV_IS_IN_MMC
644         help
645           Enable save environment support in SPL after setenv. By default
646           the saveenv option is not provided in SPL, but some boards need
647           this support in 'Falcon' boot, where SPL need to boot from
648           different images based on environment variable set by OS. For
649           example OS may set "reboot_image" environment variable to
650           "recovery" inorder to boot recovery image by SPL. The SPL read
651           "reboot_image" and act accordingly and change the reboot_image
652           to default mode using setenv and save the environment.
653
654 config SPL_ETH
655         bool "Support Ethernet"
656         depends on SPL_ENV_SUPPORT
657         depends on SPL_NET
658         help
659           Enable access to the network subsystem and associated Ethernet
660           drivers in SPL. This permits SPL to load U-Boot over an Ethernet
661           link rather than from an on-board peripheral. Environment support
662           is required since the network stack uses a number of environment
663           variables. See also SPL_NET.
664
665 config SPL_FS_EXT4
666         bool "Support EXT filesystems"
667         help
668           Enable support for EXT2/3/4 filesystems with SPL. This permits
669           U-Boot (or Linux in Falcon mode) to be loaded from an EXT
670           filesystem from within SPL. Support for the underlying block
671           device (e.g. MMC or USB) must be enabled separately.
672
673 config SPL_FS_SQUASHFS
674         bool "Support SquashFS filesystems"
675         select FS_SQUASHFS
676         help
677           Enable support for SquashFS filesystems with SPL. This permits
678           U-Boot (or Linux in Falcon mode) to be loaded from a SquashFS
679           filesystem from within SPL. Support for the underlying block
680           device (e.g. MMC or USB) must be enabled separately.
681
682 config SPL_FS_FAT
683         bool "Support FAT filesystems"
684         select FS_FAT
685         help
686           Enable support for FAT and VFAT filesystems with SPL. This
687           permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
688           filesystem from within SPL. Support for the underlying block
689           device (e.g. MMC or USB) must be enabled separately.
690
691 config SPL_FS_LOAD_PAYLOAD_NAME
692         string "File to load for U-Boot from the filesystem"
693         depends on SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS
694         default "tispl.bin" if SYS_K3_SPL_ATF
695         default "u-boot.itb" if SPL_LOAD_FIT
696         default "u-boot.img"
697         help
698           Filename to read to load U-Boot when reading from filesystem.
699
700 config SPL_FS_LOAD_KERNEL_NAME
701         string "File to load for the OS kernel from the filesystem"
702         depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
703         default "uImage"
704         help
705           Filename to read to load for the OS kernel when reading from the
706           filesystem.
707
708 config SPL_FS_LOAD_ARGS_NAME
709         string "File to load for the OS kernel argument parameters from the filesystem"
710         depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
711         default "args"
712         help
713           Filename to read to load for the OS kernel argument parameters from
714           the filesystem.
715
716 config SPL_FAT_WRITE
717         bool "Support write for FAT filesystems"
718         help
719           Enable write support for FAT and VFAT filesystems with SPL.
720           Support for the underlying block device (e.g. MMC or USB) must be
721           enabled separately.
722
723 config SPL_FPGA
724         bool "Support FPGAs"
725         help
726           Enable support for FPGAs in SPL. Field-programmable Gate Arrays
727           provide software-configurable hardware which is typically used to
728           implement peripherals (such as UARTs, LCD displays, MMC) or
729           accelerate custom processing functions, such as image processing
730           or machine learning. Sometimes it is useful to program the FPGA
731           as early as possible during boot, and this option can enable that
732           within SPL.
733
734 config SPL_GPIO
735         bool "Support GPIO in SPL"
736         help
737           Enable support for GPIOs (General-purpose Input/Output) in SPL.
738           GPIOs allow U-Boot to read the state of an input line (high or
739           low) and set the state of an output line. This can be used to
740           drive LEDs, control power to various system parts and read user
741           input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
742           for example. Enable this option to build the drivers in
743           drivers/gpio as part of an SPL build.
744
745 config SPL_I2C
746         bool "Support I2C"
747         help
748           Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
749           I2C works with a clock and data line which can be driven by a
750           one or more masters or slaves. It is a fairly complex bus but is
751           widely used as it only needs two lines for communication. Speeds of
752           400kbps are typical but up to 3.4Mbps is supported by some
753           hardware. I2C can be useful in SPL to configure power management
754           ICs (PMICs) before raising the CPU clock speed, for example.
755           Enable this option to build the drivers in drivers/i2c as part of
756           an SPL build.
757
758 config SPL_LIBCOMMON_SUPPORT
759         bool "Support common libraries"
760         help
761           Enable support for common U-Boot libraries within SPL. These
762           libraries include common code to deal with U-Boot images,
763           environment and USB, for example. This option is enabled on many
764           boards. Enable this option to build the code in common/ as part of
765           an SPL build.
766
767 config SPL_LIBDISK_SUPPORT
768         bool "Support disk partitions"
769         select PARTITIONS
770         help
771           Enable support for disk partitions within SPL. 'Disk' is something
772           of a misnomer as it includes non-spinning media such as flash (as
773           used in MMC and USB sticks). Partitions provide a way for a disk
774           to be split up into separate regions, with a partition table placed
775           at the start or end which describes the location and size of each
776           'partition'. These partitions are typically uses as individual block
777           devices, typically with an EXT2 or FAT filesystem in each. This
778           option enables whatever partition support has been enabled in
779           U-Boot to also be used in SPL. It brings in the code in disk/.
780
781 config SPL_LIBGENERIC_SUPPORT
782         bool "Support generic libraries"
783         help
784           Enable support for generic U-Boot libraries within SPL. These
785           libraries include generic code to deal with device tree, hashing,
786           printf(), compression and the like. This option is enabled on many
787           boards. Enable this option to build the code in lib/ as part of an
788           SPL build.
789
790 config SPL_DM_MAILBOX
791         bool "Support Mailbox"
792         depends on SPL_DM
793         help
794           Enable support for Mailbox within SPL. This enable the inter
795           processor communication protocols tobe used within SPL. Enable
796           this option to build the drivers in drivers/mailbox as part of
797           SPL build.
798
799 config SPL_MMC
800         bool "Support MMC"
801         depends on MMC
802         help
803           Enable support for MMC (Multimedia Card) within SPL. This enables
804           the MMC protocol implementation and allows any enabled drivers to
805           be used within SPL. MMC can be used with or without disk partition
806           support depending on the application (SPL_LIBDISK_SUPPORT). Enable
807           this option to build the drivers in drivers/mmc as part of an SPL
808           build.
809
810 config SYS_MMCSD_FS_BOOT_PARTITION
811         int "MMC Boot Partition"
812         default 1
813         help
814           Partition on the MMC to load U-Boot from when the MMC is being
815           used in fs mode.
816           Use -1 as a special value to use the first bootable partition.
817
818 config SPL_MMC_TINY
819         bool "Tiny MMC framework in SPL"
820         depends on SPL_MMC
821         help
822           Enable MMC framework tinification support. This option is useful if
823           if your SPL is extremely size constrained. Heed the warning, enable
824           this option if and only if you know exactly what you are doing, if
825           you are reading this help text, you most likely have no idea :-)
826
827           The MMC framework is reduced to bare minimum to be useful. No malloc
828           support is needed for the MMC framework operation with this option
829           enabled. The framework supports exactly one MMC device and exactly
830           one MMC driver. The MMC driver can be adjusted to avoid any malloc
831           operations too, which can remove the need for malloc support in SPL
832           and thus further reduce footprint.
833
834 config SPL_MMC_WRITE
835         bool "MMC/SD/SDIO card support for write operations in SPL"
836         depends on SPL_MMC
837         help
838           Enable write access to MMC and SD Cards in SPL
839
840
841 config SPL_MPC8XXX_INIT_DDR
842         bool "Support MPC8XXX DDR init"
843         help
844           Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
845           random-access memory) on the MPC8XXX family within SPL. This
846           allows DRAM to be set up before loading U-Boot into that DRAM,
847           where it can run.
848
849 config SPL_MTD_SUPPORT
850         bool "Support MTD drivers"
851         help
852           Enable support for MTD (Memory Technology Device) within SPL. MTD
853           provides a block interface over raw NAND and can also be used with
854           SPI flash. This allows SPL to load U-Boot from supported MTD
855           devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
856           to enable specific MTD drivers.
857
858 config SPL_MUSB_NEW
859         bool "Support new Mentor Graphics USB"
860         help
861           Enable support for Mentor Graphics USB in SPL. This is a new
862           driver used by some boards. Enable this option to build
863           the drivers in drivers/usb/musb-new as part of an SPL build. The
864           old drivers are in drivers/usb/musb.
865
866 config SPL_NAND_SUPPORT
867         bool "Support NAND flash"
868         help
869           Enable support for NAND (Negative AND) flash in SPL. NAND flash
870           can be used to allow SPL to load U-Boot from supported devices.
871           This enables the drivers in drivers/mtd/nand/raw as part of an SPL
872           build.
873
874 config SPL_NAND_RAW_ONLY
875         bool "Support to boot only raw u-boot.bin images"
876         depends on SPL_NAND_SUPPORT
877         help
878           Use this only if you need to save space.
879
880 config SPL_NAND_DRIVERS
881         bool "Use standard NAND driver"
882         help
883           SPL uses normal NAND drivers, not minimal drivers.
884
885 config SPL_NAND_ECC
886         bool "Include standard ECC in SPL"
887
888 config SPL_NAND_SOFTECC
889         bool "Use software ECC in SPL"
890         depends on SPL_NAND_ECC
891
892 config SPL_NAND_SIMPLE
893         bool "Support simple NAND drivers in SPL"
894         help
895           Support for NAND boot using simple NAND drivers that
896           expose the cmd_ctrl() interface.
897
898 config SPL_NAND_BASE
899         depends on SPL_NAND_SUPPORT
900         bool "Use Base NAND Driver"
901         help
902           Include nand_base.c in the SPL.
903
904 config SPL_NAND_IDENT
905         depends on SPL_NAND_BASE
906         bool "Use chip ID to identify NAND flash"
907         help
908           SPL uses the chip ID list to identify the NAND flash.
909
910 config SPL_UBI
911         bool "Support UBI"
912         help
913           Enable support for loading payloads from UBI. See
914           README.ubispl for more info.
915
916 menu "UBI configuration for SPL"
917         depends on SPL_UBI
918
919 config SPL_UBI_LOAD_BY_VOLNAME
920         bool "Support loading volumes by name"
921         help
922           This enables support for loading UBI volumes by name. When this
923           is set, CONFIG_SPL_UBI_LOAD_MONITOR_VOLNAME can be used to
924           configure the volume name from which to load U-Boot.
925
926 config SPL_UBI_MAX_VOL_LEBS
927         int "Maximum number of LEBs per volume"
928         help
929           The maximum number of logical eraseblocks which a static volume
930           to load can contain. Used for sizing the scan data structure.
931
932 config SPL_UBI_MAX_PEB_SIZE
933         int "Maximum PEB size"
934         help
935           The maximum physical erase block size.
936
937 config SPL_UBI_MAX_PEBS
938         int "Maximum number of PEBs"
939         help
940           The maximum physical erase block size. If not overridden by
941           board code, this value will be used as the actual number of PEBs.
942
943 config SPL_UBI_PEB_OFFSET
944         int "Offset to first UBI PEB"
945         help
946           The offset in number of PEBs from the start of flash to the first
947           PEB part of the UBI image.
948
949 config SPL_UBI_VID_OFFSET
950         int "Offset to VID header"
951
952 config SPL_UBI_LEB_START
953         int "Offset to LEB in PEB"
954         help
955           The offset in bytes to the LEB within a PEB.
956
957 config SPL_UBI_INFO_ADDR
958         hex "Address to place UBI scan info"
959         help
960           Address for ubispl to place the scan info. Read README.ubispl to
961           determine the required size
962
963 config SPL_UBI_VOL_IDS
964         int "Maximum volume id"
965         help
966           The maximum volume id which can be loaded. Used for sizing the
967           scan data structure.
968
969 config SPL_UBI_LOAD_MONITOR_ID
970         int "id of U-Boot volume"
971         help
972           The UBI volume id from which to load U-Boot
973
974 config SPL_UBI_LOAD_MONITOR_VOLNAME
975         string "volume name of U-Boot volume"
976         depends on SPL_UBI_LOAD_BY_VOLNAME
977         help
978           The UBI volume name from which to load U-Boot
979
980 config SPL_UBI_LOAD_KERNEL_ID
981         int "id of kernel volume"
982         depends on SPL_OS_BOOT
983         help
984           The UBI volume id from which to load the kernel
985
986 config SPL_UBI_LOAD_ARGS_ID
987         int "id of kernel args volume"
988         depends on SPL_OS_BOOT
989         help
990           The UBI volume id from which to load the device tree
991
992 config UBI_SPL_SILENCE_MSG
993         bool "silence UBI SPL messages"
994         help
995           Disable messages from UBI SPL. This leaves warnings
996           and errors enabled.
997
998 endmenu
999
1000 config SPL_DM_SPI
1001         bool "Support SPI DM drivers in SPL"
1002         depends on SPL_DM
1003         help
1004           Enable support for SPI DM drivers in SPL.
1005
1006 config SPL_DM_SPI_FLASH
1007         bool "Support SPI DM FLASH drivers in SPL"
1008         depends on SPL_DM
1009         help
1010           Enable support for SPI DM flash drivers in SPL.
1011
1012 config SPL_NET
1013         bool "Support networking"
1014         help
1015           Enable support for network devices (such as Ethernet) in SPL.
1016           This permits SPL to load U-Boot over a network link rather than
1017           from an on-board peripheral. Environment support is required since
1018           the network stack uses a number of environment variables. See also
1019           SPL_ETH.
1020
1021 config SPL_NET_VCI_STRING
1022         string "BOOTP Vendor Class Identifier string sent by SPL"
1023         depends on SPL_NET
1024         help
1025           As defined by RFC 2132 the vendor class identifier field can be
1026           sent by the client to identify the vendor type and configuration
1027           of a client.  This is often used in practice to allow for the DHCP
1028           server to specify different files to load depending on if the ROM,
1029           SPL or U-Boot itself makes the request
1030
1031 config SPL_NO_CPU_SUPPORT
1032         def_bool y
1033         depends on (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
1034         help
1035           This is specific to the ARM926EJ-S CPU. It disables the standard
1036           start.S start-up code, presumably so that a replacement can be
1037           used on that CPU. You should not enable it unless you know what
1038           you are doing.
1039
1040 config SPL_NOR_SUPPORT
1041         bool "Support NOR flash"
1042         help
1043           Enable support for loading U-Boot from memory-mapped NOR (Negative
1044           OR) flash in SPL. NOR flash is slow to write but fast to read, and
1045           a memory-mapped device makes it very easy to access. Loading from
1046           NOR is typically achieved with just a memcpy().
1047
1048 config SPL_XIP_SUPPORT
1049         bool "Support XIP"
1050         help
1051           Enable support for execute in place of U-Boot or kernel image. There
1052           is no need to copy image from flash to ram if flash supports execute
1053           in place. Its very useful in systems having enough flash but not
1054           enough ram to load the image.
1055
1056 config SPL_ONENAND_SUPPORT
1057         bool "Support OneNAND flash"
1058         help
1059           Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
1060           a type of NAND flash and therefore can be used to allow SPL to
1061           load U-Boot from supported devices. This enables the drivers in
1062           drivers/mtd/onenand as part of an SPL build.
1063
1064 config SPL_OS_BOOT
1065         bool "Activate Falcon Mode"
1066         depends on !TI_SECURE_DEVICE
1067         help
1068           Enable booting directly to an OS from SPL.
1069           for more info read doc/README.falcon
1070
1071 config SYS_SPL_ARGS_ADDR
1072         hex "Address in memory to load 'args' file for Falcon Mode to"
1073         depends on SPL_OS_BOOT
1074         default 0x88000000 if ARCH_OMAP2PLUS
1075         help
1076           Address in memory where the 'args' file, typically a device tree
1077           will be loaded in to memory.
1078
1079 config SYS_NAND_SPL_KERNEL_OFFS
1080         hex "Address in memory to load the OS file for Falcon mode to"
1081         depends on SPL_OS_BOOT && SPL_NAND_SUPPORT
1082
1083 config SYS_OS_BASE
1084         hex "addr, where OS is found"
1085         depends on SPL_OS_BOOT && SPL_NOR_SUPPORT
1086         help
1087           Specify the address, where the OS image is found, which
1088           gets booted.
1089
1090 config SPL_FALCON_BOOT_MMCSD
1091         bool "Enable Falcon boot from MMC or SD media"
1092         depends on SPL_OS_BOOT && SPL_MMC
1093         help
1094           Select this if the Falcon mode OS image mode is on MMC or SD media.
1095
1096 config SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
1097         hex "Falcon mode: Sector to load kernel uImage from MMC"
1098         depends on SPL_FALCON_BOOT_MMCSD
1099         help
1100           When Falcon mode is used with an MMC or SD media, SPL needs to know
1101           where to look for the kernel uImage. The image is expected to begin
1102           at the raw MMC specified in this config.
1103           Note that the Falcon mode image can also be a FIT, if FIT support is
1104           enabled.
1105
1106 config SYS_MMCSD_RAW_MODE_ARGS_SECTOR
1107         hex "Falcon mode: Sector to load 'args' from MMC"
1108         depends on SPL_FALCON_BOOT_MMCSD
1109         help
1110           When Falcon mode is used with an MMC or SD media, SPL needs to know
1111           where to look for the OS 'args', typically a device tree. The
1112           contents are expected to begin at the raw MMC specified in this config.
1113           Note that if using a FIT image, this and the next option can be set to
1114           0x0.
1115
1116 config SYS_MMCSD_RAW_MODE_ARGS_SECTORS
1117         hex "Falcon mode: Number of sectors to load for 'args' from MMC"
1118         depends on SPL_FALCON_BOOT_MMCSD && SYS_MMCSD_RAW_MODE_ARGS_SECTOR != 0x0
1119
1120 config SPL_PAYLOAD
1121         string "SPL payload"
1122         default "tpl/u-boot-with-tpl.bin" if TPL
1123         default "u-boot.bin"
1124         help
1125           Payload for SPL boot. For backward compatibility, default to
1126           u-boot.bin, i.e. RAW image without any header. In case of
1127           TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
1128           use u-boot.img.
1129
1130 config SPL_PCI
1131         bool "Support PCI drivers"
1132         help
1133           Enable support for PCI in SPL. For platforms that need PCI to boot,
1134           or must perform some init using PCI in SPL, this provides the
1135           necessary driver support. This enables the drivers in drivers/pci
1136           as part of an SPL build.
1137
1138 config SPL_PCH
1139         bool "Support PCH drivers"
1140         help
1141           Enable support for PCH (Platform Controller Hub) devices in SPL.
1142           These are used to set up GPIOs and the SPI peripheral early in
1143           boot. This enables the drivers in drivers/pch as part of an SPL
1144           build.
1145
1146 config SPL_POST_MEM_SUPPORT
1147         bool "Support POST drivers"
1148         help
1149           Enable support for POST (Power-on Self Test) in SPL. POST is a
1150           procedure that checks that the hardware (CPU or board) appears to
1151           be functionally correctly. It is a sanity check that can be
1152           performed before booting. This enables the drivers in post/drivers
1153           as part of an SPL build.
1154
1155 config SPL_DM_RESET
1156         bool "Support reset drivers"
1157         depends on SPL_DM
1158         help
1159           Enable support for reset control in SPL.
1160           That can be useful in SPL to handle IP reset in driver, as in U-Boot,
1161           by using the generic reset API provided by driver model.
1162           This enables the drivers in drivers/reset as part of an SPL build.
1163
1164 config SPL_POWER
1165         bool "Support power drivers"
1166         help
1167           Enable support for power control in SPL. This includes support
1168           for PMICs (Power-management Integrated Circuits) and some of the
1169           features provided by PMICs. In particular, voltage regulators can
1170           be used to enable/disable power and vary its voltage. That can be
1171           useful in SPL to turn on boot peripherals and adjust CPU voltage
1172           so that the clock speed can be increased. This enables the drivers
1173           in drivers/power, drivers/power/pmic and drivers/power/regulator
1174           as part of an SPL build.
1175
1176 config SPL_POWER_DOMAIN
1177         bool "Support power domain drivers"
1178         select SPL_POWER
1179         help
1180           Enable support for power domain control in SPL. Many SoCs allow
1181           power to be applied to or removed from portions of the SoC (power
1182           domains). This may be used to save power. This API provides the
1183           means to control such power management hardware. This enables
1184           the drivers in drivers/power/domain as part of a SPL build.
1185
1186 config SPL_RAM_SUPPORT
1187         bool "Support booting from RAM"
1188         default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
1189         help
1190           Enable booting of an image in RAM. The image can be preloaded or
1191           it can be loaded by SPL directly into RAM (e.g. using USB).
1192
1193 config SPL_RAM_DEVICE
1194         bool "Support booting from preloaded image in RAM"
1195         depends on SPL_RAM_SUPPORT
1196         default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
1197         help
1198           Enable booting of an image already loaded in RAM. The image has to
1199           be already in memory when SPL takes over, e.g. loaded by the boot
1200           ROM.
1201
1202 config SPL_REMOTEPROC
1203         bool "Support REMOTEPROCS"
1204         help
1205           Enable support for REMOTEPROCs in SPL. This permits to load
1206           a remote processor firmware in SPL.
1207
1208 config SPL_RTC
1209         bool "Support RTC drivers"
1210         help
1211           Enable RTC (Real-time Clock) support in SPL. This includes support
1212           for reading and setting the time. Some RTC devices also have some
1213           non-volatile (battery-backed) memory which is accessible if
1214           needed. This enables the drivers in drivers/rtc as part of an SPL
1215           build.
1216
1217 config SPL_SATA
1218         bool "Support loading from SATA"
1219         help
1220           Enable support for SATA (Serial AT attachment) in SPL. This allows
1221           use of SATA devices such as hard drives and flash drivers for
1222           loading U-Boot. SATA is used in higher-end embedded systems and
1223           can provide higher performance than MMC , at somewhat higher
1224           expense and power consumption. This enables loading from SATA
1225           using a configured device.
1226
1227 config SPL_SATA_RAW_U_BOOT_USE_SECTOR
1228         bool "SATA raw mode: by sector"
1229         depends on SPL_SATA
1230         default y if ARCH_MVEBU
1231         help
1232           Use sector number for specifying U-Boot location on SATA disk in
1233           raw mode.
1234
1235 config SPL_SATA_RAW_U_BOOT_SECTOR
1236         hex "Sector on the SATA disk to load U-Boot from"
1237         depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
1238         default 0x1 if ARCH_MVEBU
1239         help
1240           Sector on the SATA disk to load U-Boot from, when the SATA disk is being
1241           used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
1242
1243 config SPL_SERIAL
1244         bool "Support serial"
1245         select SPL_PRINTF
1246         select SPL_STRTO
1247         help
1248           Enable support for serial in SPL. This allows use of a serial UART
1249           for displaying messages while SPL is running. It also brings in
1250           printf() and panic() functions. This should normally be enabled
1251           unless there are space reasons not to. Even then, consider
1252           enabling SPL_USE_TINY_PRINTF which is a small printf() version.
1253
1254 config SPL_SPI
1255         bool "Support SPI drivers"
1256         help
1257           Enable support for using SPI in SPL. This is used for connecting
1258           to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
1259           more details on that. The SPI driver provides the transport for
1260           data between the SPI flash and the CPU. This option can be used to
1261           enable SPI drivers that are needed for other purposes also, such
1262           as a SPI PMIC.
1263
1264 config SPL_SPI_FLASH_SUPPORT
1265         bool "Support SPI flash drivers"
1266         depends on SPL_SPI
1267         help
1268           Enable support for using SPI flash in SPL, and loading U-Boot from
1269           SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
1270           the SPI bus that is used to connect it to a system. It is a simple
1271           but fast bidirectional 4-wire bus (clock, chip select and two data
1272           lines). This enables the drivers in drivers/mtd/spi as part of an
1273           SPL build. This normally requires SPL_SPI.
1274
1275 if SPL_SPI_FLASH_SUPPORT
1276
1277 config SPL_SPI_FLASH_TINY
1278         bool "Enable low footprint SPL SPI Flash support"
1279         depends on !SPI_FLASH_BAR
1280         default y if SPI_FLASH
1281         help
1282          Enable lightweight SPL SPI Flash support that supports just reading
1283          data/images from flash. No support to write/erase flash. Enable
1284          this if you have SPL size limitations and don't need full
1285          fledged SPI flash support.
1286
1287 config SPL_SPI_FLASH_SFDP_SUPPORT
1288         bool "SFDP table parsing support for SPI NOR flashes"
1289         depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
1290         help
1291          Enable support for parsing and auto discovery of parameters for
1292          SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
1293          tables as per JESD216 standard in SPL.
1294
1295 config SPL_SPI_FLASH_MTD
1296         bool "Support for SPI flash MTD drivers in SPL"
1297         help
1298           Enable support for SPI flash MTD drivers in SPL.
1299
1300 config SPL_SPI_LOAD
1301         bool "Support loading from SPI flash"
1302         help
1303           Enable support for loading next stage, U-Boot or otherwise, from
1304           SPI NOR in U-Boot SPL.
1305
1306 endif # SPL_SPI_FLASH_SUPPORT
1307
1308 config SYS_SPI_U_BOOT_OFFS
1309         hex "address of u-boot payload in SPI flash"
1310         default 0x8000 if ARCH_SUNXI
1311         default 0x0
1312         depends on SPL_SPI_LOAD || SPL_SPI_SUNXI
1313         help
1314          Address within SPI-Flash from where the u-boot payload is fetched
1315          from.
1316
1317 config SPL_THERMAL
1318         bool "Driver support for thermal devices"
1319         help
1320           Enable support for temperature-sensing devices. Some SoCs have on-chip
1321           temperature sensors to permit warnings, speed throttling or even
1322           automatic power-off when the temperature gets too high or low. Other
1323           devices may be discrete but connected on a suitable bus.
1324
1325 config SPL_USB_HOST
1326         bool "Support USB host drivers"
1327         help
1328           Enable access to USB (Universal Serial Bus) host devices so that
1329           SPL can load U-Boot from a connected USB peripheral, such as a USB
1330           flash stick. While USB takes a little longer to start up than most
1331           buses, it is very flexible since many different types of storage
1332           device can be attached. This option enables the drivers in
1333           drivers/usb/host as part of an SPL build.
1334
1335 config SPL_USB_STORAGE
1336         bool "Support loading from USB"
1337         depends on SPL_USB_HOST && !(BLK && !DM_USB)
1338         help
1339           Enable support for USB devices in SPL. This allows use of USB
1340           devices such as hard drives and flash drivers for loading U-Boot.
1341           The actual drivers are enabled separately using the normal U-Boot
1342           config options. This enables loading from USB using a configured
1343           device.
1344
1345 config SYS_USB_FAT_BOOT_PARTITION
1346         int "Partition on USB to use to load U-Boot from"
1347         depends on SPL_USB_STORAGE
1348         default 1
1349         help
1350           Partition on the USB storage device to load U-Boot from
1351
1352 config SPL_USB_GADGET
1353         bool "Suppport USB Gadget drivers"
1354         help
1355           Enable USB Gadget API which allows to enable USB device functions
1356           in SPL.
1357
1358 if SPL_USB_GADGET
1359
1360 config SPL_USB_ETHER
1361         bool "Support USB Ethernet drivers"
1362         depends on SPL_NET
1363         help
1364           Enable access to the USB network subsystem and associated
1365           drivers in SPL. This permits SPL to load U-Boot over a
1366           USB-connected Ethernet link (such as a USB Ethernet dongle) rather
1367           than from an onboard peripheral. Environment support is required
1368           since the network stack uses a number of environment variables.
1369           See also SPL_NET and SPL_ETH.
1370
1371 config SPL_DFU
1372         bool "Support DFU (Device Firmware Upgrade)"
1373         select SPL_HASH
1374         select SPL_DFU_NO_RESET
1375         depends on SPL_RAM_SUPPORT
1376         help
1377           This feature enables the DFU (Device Firmware Upgrade) in SPL with
1378           RAM memory device support. The ROM code will load and execute
1379           the SPL built with dfu. The user can load binaries (u-boot/kernel) to
1380           selected device partition from host-pc using dfu-utils.
1381           This feature is useful to flash the binaries to factory or bare-metal
1382           boards using USB interface.
1383
1384 choice
1385         bool "DFU device selection"
1386         depends on SPL_DFU
1387
1388 config SPL_DFU_RAM
1389         bool "RAM device"
1390         depends on SPL_DFU && SPL_RAM_SUPPORT
1391         help
1392          select RAM/DDR memory device for loading binary images
1393          (u-boot/kernel) to the selected device partition using
1394          DFU and execute the u-boot/kernel from RAM.
1395
1396 endchoice
1397
1398 config SPL_USB_SDP_SUPPORT
1399         bool "Support SDP (Serial Download Protocol)"
1400         depends on SPL_SERIAL
1401         help
1402           Enable Serial Download Protocol (SDP) device support in SPL. This
1403           allows to download images into memory and execute (jump to) them
1404           using the same protocol as implemented by the i.MX family's boot ROM.
1405
1406 config SPL_SDP_USB_DEV
1407         int "SDP USB controller index"
1408         default 0
1409         depends on SPL_USB_SDP_SUPPORT
1410         help
1411           Some boards have USB controller other than 0. Define this option
1412           so it can be used in compiled environment.
1413 endif
1414
1415 config SPL_WATCHDOG
1416         bool "Support watchdog drivers"
1417         imply SPL_WDT if !HW_WATCHDOG
1418         help
1419           Enable support for watchdog drivers in SPL. A watchdog is
1420           typically a hardware peripheral which can reset the system when it
1421           detects no activity for a while (such as a software crash). This
1422           enables the drivers in drivers/watchdog as part of an SPL build.
1423
1424 config SPL_YMODEM_SUPPORT
1425         bool "Support loading using Ymodem"
1426         depends on SPL_SERIAL
1427         help
1428           While loading from serial is slow it can be a useful backup when
1429           there is no other option. The Ymodem protocol provides a reliable
1430           means of transmitting U-Boot over a serial line for using in SPL,
1431           with a checksum to ensure correctness.
1432
1433 config SPL_ATF
1434         bool "Support ARM Trusted Firmware"
1435         depends on ARM64 && SPL_FIT
1436         help
1437           ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
1438           is loaded by SPL (which is considered as BL2 in ATF terminology).
1439           More detail at: https://github.com/ARM-software/arm-trusted-firmware
1440
1441 config SPL_ATF_LOAD_IMAGE_V2
1442         bool "Use the new LOAD_IMAGE_V2 parameter passing"
1443         depends on SPL_ATF
1444         help
1445           Some platforms use the newer LOAD_IMAGE_V2 parameter passing.
1446
1447           If you want to load a bl31 image from the SPL and need the new
1448           method, say Y.
1449
1450 config SPL_ATF_NO_PLATFORM_PARAM
1451         bool "Pass no platform parameter"
1452         depends on SPL_ATF
1453         help
1454           While we expect to call a pointer to a valid FDT (or NULL)
1455           as the platform parameter to an ATF, some ATF versions are
1456           not U-Boot aware and have an insufficiently robust parameter
1457           validation to gracefully reject a FDT being passed.
1458
1459           If this option is enabled, the spl_atf os-type handler will
1460           always pass NULL for the platform parameter.
1461
1462           If your ATF is affected, say Y.
1463
1464 config SPL_AM33XX_ENABLE_RTC32K_OSC
1465         bool "Enable the RTC32K OSC on AM33xx based platforms"
1466         depends on AM33XX
1467         default y if AM33XX
1468         help
1469           Enable access to the AM33xx RTC and select the external 32kHz clock
1470           source.
1471
1472 config SPL_OPTEE_IMAGE
1473         bool "Support OP-TEE Trusted OS image in SPL"
1474         depends on ARM
1475         help
1476           OP-TEE is an open source Trusted OS which is loaded by SPL.
1477           More detail at: https://github.com/OP-TEE/optee_os
1478
1479 config SPL_OPENSBI
1480         bool "Support RISC-V OpenSBI"
1481         depends on RISCV && SPL_RISCV_MMODE && RISCV_SMODE
1482         help
1483           OpenSBI is an open-source implementation of the RISC-V Supervisor Binary
1484           Interface (SBI) specification. U-Boot supports the OpenSBI FW_DYNAMIC
1485           firmware. It is loaded and started by U-Boot SPL.
1486
1487           More details are available at https://github.com/riscv/opensbi and
1488           https://github.com/riscv/riscv-sbi-doc
1489
1490 config SPL_OPENSBI_LOAD_ADDR
1491         hex "OpenSBI load address"
1492         depends on SPL_OPENSBI
1493         help
1494           Load address of the OpenSBI binary.
1495
1496 config SPL_OPENSBI_SCRATCH_OPTIONS
1497         hex "Scratch options passed to OpenSBI"
1498         default 0x1
1499         depends on SPL_OPENSBI
1500         help
1501           Options passed to fw_dynamic, for example SBI_SCRATCH_NO_BOOT_PRINTS or
1502           SBI_SCRATCH_DEBUG_PRINTS.
1503
1504 config SPL_TARGET
1505         string "Addtional build targets for 'make'"
1506         default "spl/u-boot-spl.srec" if RCAR_GEN2
1507         default "spl/u-boot-spl.scif" if RCAR_GEN3
1508         default ""
1509         help
1510           On some platforms we need to have 'make' run additional build target
1511           rules. If required on your platform, enter it here, otherwise leave blank.
1512
1513
1514 config SPL_AT91_MCK_BYPASS
1515         bool "Use external clock signal as a source of main clock for AT91 platforms"
1516         depends on ARCH_AT91
1517         help
1518           Use external 8 to 24 Mhz clock signal as source of main clock instead
1519           of an external crystal oscillator.
1520           This option disables the internal driving on the XOUT pin.
1521           The external source has to provide a stable clock on the XIN pin.
1522           If this option is disabled, the SoC expects a crystal oscillator
1523           that needs driving on both XIN and XOUT lines.
1524 endmenu
1525
1526 config TPL
1527         depends on SUPPORT_TPL
1528         bool "Enable TPL"
1529         help
1530           If you want to build TPL as well as the normal image and SPL, say Y.
1531
1532 source "common/spl/Kconfig.tpl"
1533
1534 config VPL
1535         depends on SUPPORT_SPL
1536         bool "Enable VPL"
1537         help
1538           If you want to build VPL as well as the normal image, TPL and SPL,
1539           say Y.
1540
1541 source "common/spl/Kconfig.vpl"