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