blob: a7378bea8f219f3589e16d63a4a00b29117601bc [file] [log] [blame]
Simon Glassffe19762016-09-12 23:18:22 -06001config SUPPORT_SPL
2 bool
3
4config SUPPORT_TPL
5 bool
6
Simon Glass7eec8842022-04-30 00:56:52 -06007config SUPPORT_VPL
8 bool
9
B, Ravi4cca5cf2017-05-04 15:45:29 +053010config SPL_DFU_NO_RESET
11 bool
12
Simon Glassffe19762016-09-12 23:18:22 -060013config SPL
Tom Rini2aa5e502022-05-30 17:11:23 -040014 bool "Enable SPL"
Simon Glassffe19762016-09-12 23:18:22 -060015 depends on SUPPORT_SPL
Simon Glassffe19762016-09-12 23:18:22 -060016 help
17 If you want to build SPL as well as the normal image, say Y.
18
Tom Rini2aa5e502022-05-30 17:11:23 -040019menu "SPL configuration options"
20 depends on SPL
21
Tom Rini623d67e2018-02-06 12:15:38 -050022config SPL_FRAMEWORK
23 bool "Support SPL based upon the common SPL framework"
Tom Rini623d67e2018-02-06 12:15:38 -050024 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
Philippe Reynesc4510f42019-09-19 16:18:39 +020030config 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
Simon Goldschmidtc2722832019-05-24 22:07:04 +020039config SPL_SIZE_LIMIT
Simon Glassa8f0c942019-09-25 08:56:28 -060040 hex "Maximum size of SPL image"
Ovidiu Panaitb7232622020-09-25 21:12:56 +030041 default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB
42 default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
Pali Rohárab7f0f62022-09-14 18:48:16 +020043 default 0x30000 if ARCH_MVEBU && ARMADA_32BIT
Ovidiu Panaitb7232622020-09-25 21:12:56 +030044 default 0x0
Simon Goldschmidtc2722832019-05-24 22:07:04 +020045 help
46 Specifies the maximum length of the U-Boot SPL image.
47 If this value is zero, it is ignored.
48
49config 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
58config 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
67config SPL_SIZE_LIMIT_PROVIDE_STACK
68 hex "SPL image size check: provide stack space before relocation"
69 depends on SPL_SIZE_LIMIT > 0
Tom Rinif18679c2023-08-02 11:09:43 -040070 default 0x0
Simon Goldschmidtc2722832019-05-24 22:07:04 +020071 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
Tom Riniabb0f522022-05-16 17:20:26 -040077config 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
Andre Przywara3f5873f2022-09-13 01:23:58 +010084 default 0xbfa0 if MACH_SUN50I_H616
Tom Riniabb0f522022-05-16 17:20:26 -040085 default 0x7000 if RCAR_GEN3
86 default 0x5fa0 if SUNXI_SRAM_ADDRESS = 0x0
Joel Stanleyb5a48692022-06-29 16:35:22 +093087 default 0x10000 if ASPEED_AST2600
Peng Fan343f3982022-07-26 16:40:31 +080088 default 0x27000 if IMX8MM && SPL_TEXT_BASE = 0x7E1000
Oliver Gaskell14032b32024-09-12 16:50:56 +010089 default 0x30000 if ARCH_SC5XX && (SC59X_64 || SC59X)
Oliver Gaskell053a1202024-09-12 16:50:58 +010090 default 0x20000 if ARCH_SC5XX && SC58X
Tom Riniabb0f522022-05-16 17:20:26 -040091 default 0x0
92 help
93 Maximum size of the SPL image (text, data, rodata, and linker lists
94 sections), BSS excluded. When defined, the linker checks that the
95 actual size does not exceed it.
96
97config SPL_PAD_TO
98 hex "Offset to which the SPL should be padded before appending the SPL payload"
99 default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
100 default 0x11000 if ARCH_MX7 || (ARCH_MX6 && !MX6_OCRAM_256KB)
101 default 0x10000 if ARCH_KEYSTONE
Samuel Holland3d37a012023-10-31 00:17:38 -0500102 default 0x0 if ARCH_MTMIPS || ARCH_SUNXI
Tom Riniabb0f522022-05-16 17:20:26 -0400103 default TPL_MAX_SIZE if TPL_MAX_SIZE > SPL_MAX_SIZE
104 default SPL_MAX_SIZE
105 help
106 Image offset to which the SPL should be padded before appending the
107 SPL payload. By default, this is defined as CONFIG_SPL_MAX_SIZE, or 0 if
108 CONFIG_SPL_MAX_SIZE is undefined. CONFIG_SPL_PAD_TO must be either
109 0, meaning to append the SPL payload without any padding, or >=
110 CONFIG_SPL_MAX_SIZE.
111
Tom Rini65aa1242022-05-27 10:19:45 -0400112config SPL_HAS_BSS_LINKER_SECTION
113 depends on SPL_FRAMEWORK
114 bool "Use a specific address for the BSS via the linker script"
Oliver Gaskelld4f7cb52024-09-12 16:50:54 +0100115 default y if ARCH_SUNXI || ARCH_MX6 || ARCH_OMAP2PLUS || MIPS || RISCV || ARCH_ZYNQMP || ARCH_SC5XX
Tom Rini65aa1242022-05-27 10:19:45 -0400116
117config SPL_BSS_START_ADDR
118 hex "Link address for the BSS within the SPL binary"
119 depends on SPL_HAS_BSS_LINKER_SECTION
120 default 0x88200000 if (ARCH_MX6 && (MX6SX || MX6SL || MX6UL || MX6ULL)) || ARCH_MX7
121 default 0x18200000 if ARCH_MX6 && !(MX6SX || MX6SL || MX6UL || MX6ULL)
122 default 0x80a00000 if ARCH_OMAP2PLUS
123 default 0x81f80000 if ARCH_SUNXI && MACH_SUNIV
124 default 0x4ff80000 if ARCH_SUNXI && !(MACH_SUN9I || MACH_SUNIV)
125 default 0x2ff80000 if ARCH_SUNXI && MACH_SUN9I
Stefan Herbrechtsmeier30e73282022-07-14 15:47:33 +0200126 default 0x1000 if ARCH_ZYNQMP
Oliver Gaskell14032b32024-09-12 16:50:56 +0100127 default 0x200B0000 if ARCH_SC5XX && (SC59X_64 || SC59X)
Oliver Gaskell053a1202024-09-12 16:50:58 +0100128 default 0x20080000 if ARCH_SC5XX && SC58X
Tom Rini65aa1242022-05-27 10:19:45 -0400129
Tom Rini0cb89e72022-05-19 15:09:22 -0400130choice
131 prompt "Enforce SPL BSS limit"
Tom Rini2aa5e502022-05-30 17:11:23 -0400132 depends on !PPC
Tom Rini0cb89e72022-05-19 15:09:22 -0400133 default SPL_BSS_LIMIT
134 help
135 In some platforms we only want to enforce a limit on the size of the
136 BSS in memory. On other platforms we need to enforce a limit on the
137 whole of the memory allocation as we're strictly limited to a small
138 typically non-DRAM location. Finally, other platforms do not enforce
139 a memory limit within SPL.
140
141config SPL_NO_BSS_LIMIT
142 bool "Do not enforce a build time limit on the size of the BSS"
143
144config SPL_BSS_LIMIT
145 bool "Enforce a limit on the size of the BSS only"
146
147config SPL_FOOTPRINT_LIMIT
148 bool "Enforce a limit on the whole of memory allocated to SPL, BSS included"
149
150endchoice
151
152config SPL_BSS_MAX_SIZE
153 hex "Maximum size in memory allocated to the SPL BSS"
154 depends on SPL_BSS_LIMIT
155 default 0x100000 if ARCH_MX6 || RISCV
156 default 0x80000 if ARCH_OMAP2PLUS || ARCH_SUNXI
Oliver Gaskelld4f7cb52024-09-12 16:50:54 +0100157 default 0x10000 if ARCH_SC5XX
Tom Rini0cb89e72022-05-19 15:09:22 -0400158 help
159 When non-zero, the linker checks that the actual memory used by SPL
160 from __bss_start to __bss_end does not exceed it.
161
162config SPL_MAX_FOOTPRINT
163 hex "Maximum size in memory allocated to the SPL, BSS included"
164 depends on SPL_FOOTPRINT_LIMIT
165 help
166 When non-zero, the linker checks that the actual memory used by SPL
167 from _start to __bss_end does not exceed it.
168
Simon Goldschmidt0b820852019-07-16 22:30:36 +0200169config SPL_SYS_STACK_F_CHECK_BYTE
170 hex
171 default 0xaa
172 help
173 Constant used to check the stack
174
175config SPL_SYS_REPORT_STACK_F_USAGE
176 depends on SPL_SIZE_LIMIT_PROVIDE_STACK != 0
177 bool "Check and report stack usage in SPL before relocation"
178 help
179 If this option is enabled, the initial SPL stack is filled with 0xaa
180 very early, up to the size configured with
181 SPL_SIZE_LIMIT_PROVIDE_STACK.
182 Later when SPL is done using this initial stack and switches to a
183 stack in DRAM, the actually used size of this initial stack is
184 reported by examining the memory and searching for the lowest
185 occurrence of non 0xaa bytes.
186 This default implementation works for stacks growing down only.
187
Simon Glass58254e02021-07-05 16:32:57 -0600188config SPL_SHOW_ERRORS
189 bool "Show more information when something goes wrong"
Sean Anderson4d9e0f62023-11-08 11:48:35 -0500190 depends on SPL_LIBCOMMON_SUPPORT
Simon Glass58254e02021-07-05 16:32:57 -0600191 help
192 This enabled more verbose error messages and checking when something
193 goes wrong in SPL. For example, it shows the error code when U-Boot
194 cannot be located. This can help to diagnose the problem and figure
195 out a fix, particularly during development.
196
197 This adds a small amount to SPL code size, perhaps 100 bytes.
198
Simon Glass02b87002022-02-08 11:49:48 -0700199config SPL_BINMAN_SYMBOLS
200 bool "Declare binman symbols in SPL"
201 depends on SPL_FRAMEWORK && BINMAN
202 default y
203 help
Alper Nebi Yasakd6d2c9b2022-06-18 15:13:09 +0300204 This enables use of symbols in SPL which refer to other entries in
205 the same binman image as the SPL. These can be declared with the
206 binman_sym_declare(type, entry, prop) macro and accessed by the
207 binman_sym(type, entry, prop) macro defined in binman_sym.h.
208
209 See tools/binman/binman.rst for a detailed explanation.
210
211config SPL_BINMAN_UBOOT_SYMBOLS
212 bool "Declare binman symbols for U-Boot phases in SPL"
213 depends on SPL_BINMAN_SYMBOLS
Gary Bisson2e951192024-08-05 23:25:09 +0200214 default n if ARCH_IMX8M || ARCH_IMX8ULP || ARCH_IMX9
Alper Nebi Yasakd6d2c9b2022-06-18 15:13:09 +0300215 default y
216 help
217 This enables use of symbols in SPL which refer to U-Boot phases,
218 enabling SPL to obtain the location and size of its next phase simply
219 by calling spl_get_image_pos() and spl_get_image_size().
Simon Glass02b87002022-02-08 11:49:48 -0700220
Alper Nebi Yasakd6d2c9b2022-06-18 15:13:09 +0300221 For this to work, you must have all U-Boot phases in the same binman
222 image, so binman can update SPL with the locations of everything.
Simon Glass02b87002022-02-08 11:49:48 -0700223
Tom Rini0d989c82022-05-30 17:01:22 -0400224source "common/spl/Kconfig.nxp"
Tom Rini6b15c162022-05-13 12:26:35 -0400225
Simon Glasse14f1a22018-11-15 18:44:09 -0700226config HANDOFF
227 bool "Pass hand-off information from SPL to U-Boot proper"
Tom Rini2aa5e502022-05-30 17:11:23 -0400228 depends on BLOBLIST
Simon Glasse14f1a22018-11-15 18:44:09 -0700229 help
230 It is useful to be able to pass information from SPL to U-Boot
231 proper to preserve state that is known in SPL and is needed in U-Boot.
232 Enable this to locate the handoff information in U-Boot proper, early
233 in boot. It is available in gd->handoff. The state state is set up
234 in SPL (or TPL if that is being used).
235
Simon Glasse14f1a22018-11-15 18:44:09 -0700236config SPL_HANDOFF
237 bool "Pass hand-off information from SPL to U-Boot proper"
Simon Glass540ee8d2019-09-25 08:11:17 -0600238 depends on HANDOFF && SPL_BLOBLIST
Simon Glasse14f1a22018-11-15 18:44:09 -0700239 default y
240 help
241 This option enables SPL to write handoff information. This can be
242 used to pass information like the size of SDRAM from SPL to U-Boot
243 proper. Also SPL can receive information from TPL in the same place
244 if that is enabled.
245
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +0200246config SPL_LDSCRIPT
247 string "Linker script for the SPL stage"
Tom Rini49f5d172022-06-08 08:24:37 -0400248 default "arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds" if MACH_SUNIV
249 default "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds" if ARCH_SUNXI && !MACH_SUNIV && !ARM64
250 default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
251 default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
252 default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A
253 default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
254 default "arch/arm/mach-at91/arm926ejs/u-boot-spl.lds" if ARCH_AT91 && CPU_ARM926EJS
255 default "arch/arm/mach-at91/armv7/u-boot-spl.lds" if ARCH_AT91 && CPU_V7A
256 default "arch/arm/mach-omap2/u-boot-spl.lds" if ARCH_MX6 || ARCH_OMAP2PLUS || (ARCH_K3 && !ARM64)
257 default "arch/arm/mach-zynq/u-boot-spl.lds" if ARCH_ZYNQ
258 default "board/samsung/common/exynos-uboot-spl.lds" if ARCH_EXYNOS5 || ARCH_EXYNOS4
259 default "board/davinci/da8xxevm/u-boot-spl-da850evm.lds" if ARCH_DAVINCI
Tom Rini067b9ff2020-03-11 18:11:11 -0400260 default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +0200261 help
262 The SPL stage will usually require a different linker-script
263 (as it runs from a different memory region) than the regular
264 U-Boot stage. Set this to the path of the linker-script to
265 be used for SPL.
266
Simon Goldschmidtcc4078c2018-09-30 14:31:53 +0200267config SPL_TEXT_BASE
268 hex "SPL Text Base"
Andrew Davis06a021b2022-07-15 12:31:48 -0500269 default 0x402F4000 if AM43XX
270 default 0x402F0400 if AM33XX
271 default 0x40301350 if OMAP54XX
Andre Przywarad38c8ad2019-05-27 01:45:11 +0100272 default 0x10060 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN9I
Andre Przywara068962b2022-10-05 17:54:19 +0100273 default 0x20060 if SUN50I_GEN_H6 || SUNXI_GEN_NCAT2
Andre Przywarad38c8ad2019-05-27 01:45:11 +0100274 default 0x00060 if ARCH_SUNXI
Michal Simekad336ea2019-09-11 08:49:31 +0200275 default 0xfffc0000 if ARCH_ZYNQMP
Oliver Gaskelld4f7cb52024-09-12 16:50:54 +0100276 default 0x20080000 if ARCH_SC5XX
Simon Goldschmidtcc4078c2018-09-30 14:31:53 +0200277 default 0x0
278 help
279 The address in memory that SPL will be running from.
280
Lukas Funkee51ca6a2024-03-27 13:11:52 +0100281config SPL_SOC_INIT
282 bool "Call SoC-specific initialization in SPL"
283 help
284 If this option is enabled, U-Boot will call the function
285 spl_soc_init() from board_init_r(). This function should be
286 provided by the SoC vendor.
287
Ley Foon Tan48fcc4a2017-05-03 17:13:32 +0800288config SPL_BOARD_INIT
Ley Foon Tan48fcc4a2017-05-03 17:13:32 +0800289 bool "Call board-specific initialization in SPL"
290 help
291 If this option is enabled, U-Boot will call the function
292 spl_board_init() from board_init_r(). This function should be
293 provided by the board.
294
Sean Anderson35f15fe2023-11-08 11:48:43 -0500295config SPL_LOAD_BLOCK
296 bool
297 help
298 Support loading images from block devices. This adds a bl_len member
299 to struct spl_load_info.
300
Philipp Tomsich83ad7022017-06-22 23:38:36 +0200301config SPL_BOOTROM_SUPPORT
Michal Simek0606f9e2021-05-20 13:08:44 +0200302 bool "Support returning to the BOOTROM"
Sean Anderson35f15fe2023-11-08 11:48:43 -0500303 select SPL_LOAD_BLOCK if MACH_IMX
Philipp Tomsich83ad7022017-06-22 23:38:36 +0200304 help
305 Some platforms (e.g. the Rockchip RK3368) provide support in their
306 ROM for loading the next boot-stage after performing basic setup
307 from the SPL stage.
308
309 Enable this option, to return to the BOOTROM through the
310 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
311 boot device list, if not implemented for a given board)
312
Lukasz Majewski97c995d2018-05-02 16:10:50 +0200313config SPL_BOOTCOUNT_LIMIT
314 bool "Support bootcount in SPL"
Philippe Reynes8d82a202020-12-11 19:56:47 +0100315 depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
Lukasz Majewski97c995d2018-05-02 16:10:50 +0200316 help
317 On some boards, which use 'falcon' mode, it is necessary to check
318 and increment the number of boot attempts. Such boards do not
319 use proper U-Boot for normal boot flow and hence needs those
320 adjustments to be done in the SPL.
321
Andrew F. Davisb4be3c32017-02-16 11:18:38 -0600322config SPL_RAW_IMAGE_SUPPORT
323 bool "Support SPL loading and booting of RAW images"
Pali Rohár3c5ce032022-05-24 10:58:42 +0200324 default n if ARCH_MVEBU
Simon Glass081a45a2021-08-08 12:20:17 -0600325 default n if (ARCH_MX6 && (SPL_MMC || SPL_SATA))
Andrew Davis4c1f4762022-05-04 15:52:26 -0500326 default y
327 depends on !TI_SECURE_DEVICE
Andrew F. Davisb4be3c32017-02-16 11:18:38 -0600328 help
329 SPL will support loading and booting a RAW image when this option
330 is y. If this is not set, SPL will move on to other available
331 boot media to find a suitable image.
332
Andrew Davis360ec6a2022-05-04 15:52:25 -0500333config SPL_LEGACY_IMAGE_FORMAT
Andrew F. Davis74630342017-02-16 11:18:39 -0600334 bool "Support SPL loading and booting of Legacy images"
Pali Rohár3c5ce032022-05-24 10:58:42 +0200335 default n if ARCH_MVEBU
Andrew Davis4c1f4762022-05-04 15:52:26 -0500336 default y if !SPL_LOAD_FIT
337 depends on !TI_SECURE_DEVICE
Andrew F. Davis74630342017-02-16 11:18:39 -0600338 help
339 SPL will support loading and booting Legacy images when this option
340 is y. If this is not set, SPL will move on to other available
341 boot media to find a suitable image.
342
Simon Goldschmidt17140472019-02-10 21:34:37 +0100343config SPL_LEGACY_IMAGE_CRC_CHECK
344 bool "Check CRC of Legacy images"
Andrew Davis360ec6a2022-05-04 15:52:25 -0500345 depends on SPL_LEGACY_IMAGE_FORMAT
Simon Glassefc12232021-07-14 17:05:32 -0500346 select SPL_CRC32
Simon Goldschmidt17140472019-02-10 21:34:37 +0100347 help
348 Enable this to check the CRC of Legacy images. While this increases
349 reliability, it affects both code size and boot duration.
350 If disabled, Legacy images are booted if the image magic and size
351 are correct, without further integrity checks.
352
Sean Andersonefc185e2023-10-14 16:47:45 -0400353config SPL_LOAD_IMX_CONTAINER
354 bool "Enable SPL loading and booting of i.MX8 Containers"
355 depends on SPL
356 help
357 Support booting U-Boot from an i.MX8 container image. If you are not
358 using i.MX8, say 'n'.
359
360config IMX_CONTAINER_CFG
361 string "i.MX8 Container config file"
362 depends on SPL && SPL_LOAD_IMX_CONTAINER
363 help
364 Specify the cfg file for generating the container image which will be
365 loaded by SPL.
366
Simon Glassffe19762016-09-12 23:18:22 -0600367config SPL_SYS_MALLOC_SIMPLE
Tom Rini2aa5e502022-05-30 17:11:23 -0400368 bool "Only use malloc_simple functions in the SPL"
Simon Glassffe19762016-09-12 23:18:22 -0600369 help
370 Say Y here to only use the *_simple malloc functions from
371 malloc_simple.c, rather then using the versions from dlmalloc.c;
372 this will make the SPL binary smaller at the cost of more heap
373 usage as the *_simple malloc functions do not re-use free-ed mem.
374
Tom Rini8a14ac42022-05-26 13:13:21 -0400375config SPL_SHARES_INIT_SP_ADDR
376 bool "SPL and U-Boot use the same initial stack pointer location"
377 depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
Oliver Gaskelld4f7cb52024-09-12 16:50:54 +0100378 default n if ARCH_SUNXI || ARCH_MX6 || ARCH_MX7 || ARCH_SC5XX
Tom Rini8a14ac42022-05-26 13:13:21 -0400379 default y
380 help
381 In many cases, we can use the same initial stack pointer address for
382 both SPL and U-Boot itself. If you need to specify a different address
383 however, say N here and then set a different value in CONFIG_SPL_STACK.
384
385config SPL_STACK
386 hex "Initial stack pointer location"
Kever Yang4d87ac32024-01-24 15:42:04 +0800387 depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && \
388 SPL_FRAMEWORK || ROCKCHIP_RK3036
Tom Rini8a14ac42022-05-26 13:13:21 -0400389 depends on !SPL_SHARES_INIT_SP_ADDR
Tom Rinied83ed92022-05-26 13:46:32 -0400390 default 0x946bb8 if ARCH_MX7
Tom Rini55242432022-05-26 13:36:17 -0400391 default 0x93ffb8 if ARCH_MX6 && MX6_OCRAM_256KB
392 default 0x91ffb8 if ARCH_MX6 && !MX6_OCRAM_256KB
Andre Przywara3f5873f2022-09-13 01:23:58 +0100393 default 0x118000 if MACH_SUN50I_H6
Andre Przywarac573b092022-07-13 16:27:57 +0100394 default 0x52a00 if MACH_SUN50I_H616
Andre Przywara1987b0c2022-09-06 15:59:57 +0100395 default 0x40000 if MACH_SUN8I_R528
Andre Przywara3f5873f2022-09-13 01:23:58 +0100396 default 0x54000 if MACH_SUN50I || MACH_SUN50I_H5
397 default 0x18000 if MACH_SUN9I
398 default 0x8000 if ARCH_SUNXI
Oliver Gaskell14032b32024-09-12 16:50:56 +0100399 default 0x200E4000 if ARCH_SC5XX && (SC59X_64 || SC59X)
Oliver Gaskell053a1202024-09-12 16:50:58 +0100400 default 0x200B0000 if ARCH_SC5XX && SC58X
Tom Rini8a14ac42022-05-26 13:13:21 -0400401 help
402 Address of the start of the stack SPL will use before SDRAM is
403 initialized.
404
Simon Glassffe19762016-09-12 23:18:22 -0600405config SPL_STACK_R
Simon Glassffe19762016-09-12 23:18:22 -0600406 bool "Enable SDRAM location for SPL stack"
407 help
408 SPL starts off execution in SRAM and thus typically has only a small
409 stack available. Since SPL sets up DRAM while in its board_init_f()
410 function, it is possible for the stack to move there before
411 board_init_r() is reached. This option enables a special SDRAM
412 location for the SPL stack. U-Boot SPL switches to this after
413 board_init_f() completes, and before board_init_r() starts.
414
415config SPL_STACK_R_ADDR
416 depends on SPL_STACK_R
417 hex "SDRAM location for SPL stack"
Tom Rinic37e0cf2017-09-17 11:44:49 -0400418 default 0x82000000 if ARCH_OMAP2PLUS
Simon Glassffe19762016-09-12 23:18:22 -0600419 help
420 Specify the address in SDRAM for the SPL stack. This will be set up
421 before board_init_r() is called.
422
423config SPL_STACK_R_MALLOC_SIMPLE_LEN
424 depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
425 hex "Size of malloc_simple heap after switching to DRAM SPL stack"
Neha Malcom Francis0f1326e2023-01-11 18:11:23 +0530426 default 0x400000 if ARCH_K3 && ARM64
Vignesh Raghavendrac6fc1502024-05-31 20:16:36 +0530427 default 0x200000 if ARCH_K3 && CPU_V7R
Simon Glassffe19762016-09-12 23:18:22 -0600428 default 0x100000
429 help
430 Specify the amount of the stack to use as memory pool for
431 malloc_simple after switching the stack to DRAM. This may be set
432 to give board_init_r() a larger heap then the initial heap in
433 SRAM which is limited to SYS_MALLOC_F_LEN bytes.
434
435config SPL_SEPARATE_BSS
Simon Glassffe19762016-09-12 23:18:22 -0600436 bool "BSS section is in a different memory region from text"
437 help
438 Some platforms need a large BSS region in SPL and can provide this
439 because RAM is already set up. In this case BSS can be moved to RAM.
440 This option should then be enabled so that the correct device tree
441 location is used. Normally we put the device tree at the end of BSS
442 but with this option enabled, it goes at _image_binary_end.
443
Simon Glass67e3fca2023-09-26 08:14:16 -0600444config SPL_SYS_MALLOC
Tom Rini166e3222022-05-27 12:48:32 -0400445 bool "Enable malloc pool in SPL"
446 depends on SPL_FRAMEWORK
447
Simon Glass67e3fca2023-09-26 08:14:16 -0600448config SPL_HAS_CUSTOM_MALLOC_START
Tom Rini166e3222022-05-27 12:48:32 -0400449 bool "For the SPL malloc pool, define a custom starting address"
Simon Glass67e3fca2023-09-26 08:14:16 -0600450 depends on SPL_SYS_MALLOC
Tom Rini166e3222022-05-27 12:48:32 -0400451
Simon Glass67e3fca2023-09-26 08:14:16 -0600452config SPL_CUSTOM_SYS_MALLOC_ADDR
Tom Rini166e3222022-05-27 12:48:32 -0400453 hex "SPL malloc addr"
Simon Glass67e3fca2023-09-26 08:14:16 -0600454 depends on SPL_HAS_CUSTOM_MALLOC_START
Tom Rini166e3222022-05-27 12:48:32 -0400455
Simon Glass67e3fca2023-09-26 08:14:16 -0600456config SPL_SYS_MALLOC_SIZE
Tom Rini166e3222022-05-27 12:48:32 -0400457 hex "Size of the SPL malloc pool"
Simon Glass67e3fca2023-09-26 08:14:16 -0600458 depends on SPL_SYS_MALLOC
Tom Rini166e3222022-05-27 12:48:32 -0400459 default 0x100000
460
Simon Glass5b21b342021-03-15 17:25:35 +1300461config SPL_READ_ONLY
462 bool
463 depends on SPL_OF_PLATDATA
464 # Bind cannot be supported because the udevice structs are in read-only
465 # memory so we cannot update the linked lists.
466 select SPL_OF_PLATDATA_NO_BIND
467 select SPL_OF_PLATDATA_RT
468 help
469 Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
470 section of memory. This means that of-platdata must make a copy (in
471 writeable memory) of anything it wants to modify, such as
472 device-private data.
473
Simon Glass6324cce2018-11-15 18:43:57 -0700474config SPL_BANNER_PRINT
475 bool "Enable output of the SPL banner 'U-Boot SPL ...'"
476 default y
477 help
478 If this option is enabled, SPL will print the banner with version
Thomas Hebbfd37f242019-11-13 18:18:03 -0800479 info. Disabling this option could be useful to reduce SPL boot time
Simon Glass6324cce2018-11-15 18:43:57 -0700480 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
481
Andreas Dannenbergaa4ad4b2019-06-04 17:55:45 -0500482config SPL_EARLY_BSS
483 depends on ARM && !ARM64
484 bool "Allows initializing BSS early before entering board_init_f"
485 help
486 On some platform we have sufficient memory available early on to
487 allow setting up and using a basic BSS prior to entering
488 board_init_f. Activating this option will also de-activate the
489 clearing of BSS during the SPL relocation process, thus allowing
490 to carry state from board_init_f to board_init_r by way of BSS.
491
Simon Glassf481ab12016-09-24 18:19:56 -0600492config SPL_DISPLAY_PRINT
Simon Glassf481ab12016-09-24 18:19:56 -0600493 bool "Display a board-specific message in SPL"
494 help
495 If this option is enabled, U-Boot will call the function
496 spl_display_print() immediately after displaying the SPL console
497 banner ("U-Boot SPL ..."). This function should be provided by
498 the board.
499
Sean Anderson29e338f2023-11-08 11:48:50 -0500500config SPL_SYS_MMCSD_RAW_MODE
501 bool
502 help
503 Support booting from an MMC without a filesystem.
504
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200505config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
506 bool "MMC raw mode: by sector"
Fabio Estevam22a1fab2018-06-11 15:08:05 -0300507 default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
508 ARCH_MX6 || ARCH_MX7 || \
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200509 ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \
510 ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
Tom Rini8c6b4372024-07-15 13:35:53 -0600511 OMAP54XX || AM33XX || AM43XX || \
Green Wan2e5da522021-05-27 06:52:13 -0700512 TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
Sean Anderson35f15fe2023-11-08 11:48:43 -0500513 select SPL_LOAD_BLOCK if SPL_MMC
Sean Anderson29e338f2023-11-08 11:48:50 -0500514 select SPL_SYS_MMCSD_RAW_MODE if SPL_MMC
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200515 help
516 Use sector number for specifying U-Boot location on MMC/SD in
517 raw mode.
518
519config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
520 hex "Address on the MMC to load U-Boot from"
Tom Rini3c82f982017-05-22 19:21:57 +0000521 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
Andre Przywarad42cbee2021-01-11 21:11:39 +0100522 default 0x40 if ARCH_SUNXI
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200523 default 0x75 if ARCH_DAVINCI
Fabio Estevam22a1fab2018-06-11 15:08:05 -0300524 default 0x8a if ARCH_MX6 || ARCH_MX7
Kever Yang6cc131d2017-11-02 15:16:34 +0800525 default 0x100 if ARCH_UNIPHIER
Pali Rohárcf97b822021-07-23 11:14:29 +0200526 default 0x0 if ARCH_MVEBU
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200527 default 0x200 if ARCH_SOCFPGA || ARCH_AT91
Tom Rini8c6b4372024-07-15 13:35:53 -0600528 default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
Lokesh Vutla9bdec002018-08-27 15:57:08 +0530529 OMAP54XX || AM33XX || AM43XX || ARCH_K3
Kever Yang6cc131d2017-11-02 15:16:34 +0800530 default 0x4000 if ARCH_ROCKCHIP
Green Wan2e5da522021-05-27 06:52:13 -0700531 default 0x822 if TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200532 help
533 Address on the MMC to load U-Boot from, when the MMC is being used
534 in raw mode. Units: MMC sectors (1 sector = 512 bytes).
535
Baruch Siachfef81be2020-01-15 09:08:08 +0200536config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
537 hex "U-Boot main hardware partition image offset"
538 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
Andre Przywarad42cbee2021-01-11 21:11:39 +0100539 default 0x10 if ARCH_SUNXI
Baruch Siachfef81be2020-01-15 09:08:08 +0200540 default 0x0
541 help
542 On some platforms SPL location depends on hardware partition. The ROM
543 code skips the MBR sector when loading SPL from main hardware data
544 partition. This adds offset to the main U-Boot image. Set this symbol
545 to the number of skipped sectors.
546
547 If unsure, leave the default.
548
Dalon Westergreenf5ba9852017-02-10 17:15:35 -0800549config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
550 bool "MMC Raw mode: by partition"
Sean Anderson35f15fe2023-11-08 11:48:43 -0500551 select SPL_LOAD_BLOCK if SPL_MMC
Sean Anderson29e338f2023-11-08 11:48:50 -0500552 select SPL_SYS_MMCSD_RAW_MODE if SPL_MMC
Dalon Westergreenf5ba9852017-02-10 17:15:35 -0800553 help
554 Use a partition for loading U-Boot when using MMC/SD in raw mode.
555
556config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
557 hex "Partition to use to load U-Boot from"
Tom Rini3c82f982017-05-22 19:21:57 +0000558 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
Dalon Westergreenf5ba9852017-02-10 17:15:35 -0800559 default 1
560 help
561 Partition on the MMC to load U-Boot from when the MMC is being
562 used in raw mode
563
Dalon Westergreen8d770f42017-02-10 17:15:34 -0800564config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
565 bool "MMC raw mode: by partition type"
Tom Rini3c82f982017-05-22 19:21:57 +0000566 depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
Dalon Westergreen8d770f42017-02-10 17:15:34 -0800567 help
568 Use partition type for specifying U-Boot partition on MMC/SD in
569 raw mode. U-Boot will be loaded from the first partition of this
570 type to be found.
571
572config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
573 hex "Partition Type on the MMC to load U-Boot from"
Tom Rini3c82f982017-05-22 19:21:57 +0000574 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
Dalon Westergreen8d770f42017-02-10 17:15:34 -0800575 help
576 Partition Type on the MMC to load U-Boot from, when the MMC is being
577 used in raw mode.
578
Anatolij Gustschin137b8732019-10-18 21:38:33 +0200579config SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
580 bool "Override eMMC EXT_CSC_PART_CONFIG by user defined partition"
581 depends on SUPPORT_EMMC_BOOT
582 help
583 eMMC boot partition is normally configured by the bits of the EXT_CSD
584 register (EXT_CSC_PART_CONFIG), BOOT_PARTITION_ENABLE field. In some
585 cases it might be required in SPL to load the image from different
586 partition than the partition selected by EXT_CSC_PART_CONFIG register.
587 Enable this option if you intend to use an eMMC boot partition other
588 then selected via EXT_CSC_PART_CONFIG register and specify the custom
589 partition number by the CONFIG_SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
590 option.
591
592config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
593 int "Number of the eMMC boot partition to use"
594 depends on SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
595 default 1
596 help
597 eMMC boot partition number to use when the eMMC in raw mode and
598 the eMMC EXT_CSC_PART_CONFIG selection should be overridden in SPL
599 by user defined partition number.
600
Philipp Tomsich4faa0112017-11-24 13:26:03 +0100601config SPL_FIT_IMAGE_TINY
602 bool "Remove functionality from SPL FIT loading to reduce size"
603 depends on SPL_FIT
Samuel Holland76183892023-10-31 00:17:41 -0500604 default y if ARCH_IMX8M || ARCH_IMX9 || ARCH_SUNXI
Philipp Tomsich4faa0112017-11-24 13:26:03 +0100605 help
606 Enable this to reduce the size of the FIT image loading code
607 in SPL, if space for the SPL binary is very tight.
608
Samuel Hollande646f512020-10-21 21:12:13 -0500609 This skips the recording of each loaded payload
Philipp Tomsich4faa0112017-11-24 13:26:03 +0100610 (i.e. loadable) into the FDT (modifying the loaded FDT to
611 ensure this information is available to the next image
612 invoked).
613
Simon Glassde3fd532021-08-08 12:20:15 -0600614config SPL_CACHE
Rick Chen8b4ee5f2019-11-14 13:52:26 +0800615 bool "Support CACHE drivers"
616 help
617 Enable CACHE drivers in SPL. These drivers can keep data so that
618 future requests for that data can be served faster. Enable this option
619 to build the drivers in drivers/cache as part of an SPL build.
620
Simon Glass2f002162021-03-15 18:11:18 +1300621config SPL_CPU
Simon Glasseca677f2017-01-16 07:03:29 -0700622 bool "Support CPU drivers"
Simon Glasseca677f2017-01-16 07:03:29 -0700623 help
624 Enable this to support CPU drivers in SPL. These drivers can set
625 up CPUs and provide information about them such as the model and
626 name. This can be useful in SPL since setting up the CPUs earlier
627 may improve boot performance. Enable this option to build the
628 drivers in drivers/cpu as part of an SPL build.
629
Simon Glassa8437ce2021-07-10 21:14:25 -0600630config SPL_CRYPTO
Simon Glass1e3911a2016-09-13 07:05:23 -0600631 bool "Support crypto drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600632 help
633 Enable crypto drivers in SPL. These drivers can be used to
634 accelerate secure boot processing in secure applications. Enable
635 this option to build the drivers in drivers/crypto as part of an
636 SPL build.
637
Vignesh Raghavendra3d2ba9c2019-11-15 17:00:41 +0530638config SPL_DMA
Simon Glass1e3911a2016-09-13 07:05:23 -0600639 bool "Support DMA drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600640 help
641 Enable DMA (direct-memory-access) drivers in SPL. These drivers
642 can be used to handle memory-to-peripheral data transfer without
643 the CPU moving the data. Enable this option to build the drivers
644 in drivers/dma as part of an SPL build.
645
Simon Glass284cb9c2021-07-10 21:14:31 -0600646config SPL_DRIVERS_MISC
Simon Glass1e3911a2016-09-13 07:05:23 -0600647 bool "Support misc drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600648 help
649 Enable miscellaneous drivers in SPL. These drivers perform various
650 tasks that don't fall nicely into other categories, Enable this
651 option to build the drivers in drivers/misc as part of an SPL
652 build, for those that support building in SPL (not all drivers do).
653
654config SPL_ENV_SUPPORT
655 bool "Support an environment"
Simon Glass1e3911a2016-09-13 07:05:23 -0600656 help
657 Enable environment support in SPL. The U-Boot environment provides
658 a number of settings (essentially name/value pairs) which can
659 control many aspects of U-Boot's operation. Normally this is not
660 needed in SPL as it has a much simpler task with less
661 configuration. But some boards use this to support 'Falcon' boot
662 on EXT2 and FAT, where SPL boots directly into Linux without
Simon Glass64b723f2017-08-03 12:22:12 -0600663 starting U-Boot first. Enabling this option will make env_get()
Simon Glass6a38e412017-08-03 12:22:09 -0600664 and env_set() available in SPL.
Simon Glass1e3911a2016-09-13 07:05:23 -0600665
B, Ravie94b0242016-09-28 14:46:18 +0530666config SPL_SAVEENV
667 bool "Support save environment"
Tom Rini3c82f982017-05-22 19:21:57 +0000668 depends on SPL_ENV_SUPPORT
Jean-Jacques Hiblotd0531672018-01-04 15:23:32 +0100669 select SPL_MMC_WRITE if ENV_IS_IN_MMC
B, Ravie94b0242016-09-28 14:46:18 +0530670 help
671 Enable save environment support in SPL after setenv. By default
672 the saveenv option is not provided in SPL, but some boards need
673 this support in 'Falcon' boot, where SPL need to boot from
674 different images based on environment variable set by OS. For
675 example OS may set "reboot_image" environment variable to
676 "recovery" inorder to boot recovery image by SPL. The SPL read
677 "reboot_image" and act accordingly and change the reboot_image
Shyam Sainiefe757c2018-06-07 19:47:19 +0530678 to default mode using setenv and save the environment.
B, Ravie94b0242016-09-28 14:46:18 +0530679
Simon Glasse5cd9a42021-07-10 21:14:26 -0600680config SPL_ETH
Simon Glass1e3911a2016-09-13 07:05:23 -0600681 bool "Support Ethernet"
682 depends on SPL_ENV_SUPPORT
Simon Glass1d926242021-08-08 12:20:31 -0600683 depends on SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -0600684 help
685 Enable access to the network subsystem and associated Ethernet
686 drivers in SPL. This permits SPL to load U-Boot over an Ethernet
687 link rather than from an on-board peripheral. Environment support
688 is required since the network stack uses a number of environment
Simon Glass041a0ac2021-08-08 12:20:30 -0600689 variables. See also SPL_NET.
Simon Glass1e3911a2016-09-13 07:05:23 -0600690
Tien Fong Chee6091dd12019-01-23 14:20:05 +0800691config SPL_FS_EXT4
Simon Glass1e3911a2016-09-13 07:05:23 -0600692 bool "Support EXT filesystems"
Sean Anderson01349c12023-10-14 16:47:49 -0400693 select SPL_CRC16 if EXT4_WRITE
Simon Glass1e3911a2016-09-13 07:05:23 -0600694 help
695 Enable support for EXT2/3/4 filesystems with SPL. This permits
696 U-Boot (or Linux in Falcon mode) to be loaded from an EXT
697 filesystem from within SPL. Support for the underlying block
698 device (e.g. MMC or USB) must be enabled separately.
699
Joao Marcos Costa29da3742020-07-30 15:33:47 +0200700config SPL_FS_SQUASHFS
701 bool "Support SquashFS filesystems"
702 select FS_SQUASHFS
703 help
704 Enable support for SquashFS filesystems with SPL. This permits
705 U-Boot (or Linux in Falcon mode) to be loaded from a SquashFS
706 filesystem from within SPL. Support for the underlying block
707 device (e.g. MMC or USB) must be enabled separately.
708
Tien Fong Chee6fd0a712019-01-23 14:20:03 +0800709config SPL_FS_FAT
Simon Glass1e3911a2016-09-13 07:05:23 -0600710 bool "Support FAT filesystems"
Sekhar Nori1909a7b2017-06-02 17:53:59 +0530711 select FS_FAT
Simon Glass1e3911a2016-09-13 07:05:23 -0600712 help
713 Enable support for FAT and VFAT filesystems with SPL. This
714 permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
715 filesystem from within SPL. Support for the underlying block
716 device (e.g. MMC or USB) must be enabled separately.
717
Sean Anderson90251882023-11-08 11:48:58 -0500718config SPL_FS_FAT_DMA_ALIGN
719 bool "Use DMA-aligned buffers with FAT"
720 depends on SPL_FS_FAT
721 select SPL_LOAD_BLOCK
722 default y if SPL_LOAD_FIT
723 help
724 The FAT filesystem driver tries to ensure that the reads it issues to
725 the block subsystem use DMA-aligned buffers. If the supplied buffer is
726 not DMA-aligned, the FAT driver will use a bounce-buffer and read
727 block-by-block. This is separate from the bounce-buffer used by the
728 block subsystem (CONFIG_BOUNCE_BUFFER).
729
730 Enable this config to align buffers passed to the FAT filesystem
731 driver. This will speed up reads, but will increase the size of U-Boot
732 by around 60 bytes.
733
Tom Rinia4f2ab92022-05-13 17:12:35 -0400734config SPL_FS_LOAD_PAYLOAD_NAME
735 string "File to load for U-Boot from the filesystem"
Kautuk Consula3a5d682022-12-07 17:12:36 +0530736 depends on SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS || SPL_SEMIHOSTING
Tom Rinia4f2ab92022-05-13 17:12:35 -0400737 default "tispl.bin" if SYS_K3_SPL_ATF
738 default "u-boot.itb" if SPL_LOAD_FIT
739 default "u-boot.img"
740 help
741 Filename to read to load U-Boot when reading from filesystem.
742
743config SPL_FS_LOAD_KERNEL_NAME
744 string "File to load for the OS kernel from the filesystem"
745 depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
746 default "uImage"
747 help
748 Filename to read to load for the OS kernel when reading from the
749 filesystem.
750
751config SPL_FS_LOAD_ARGS_NAME
752 string "File to load for the OS kernel argument parameters from the filesystem"
753 depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
754 default "args"
755 help
756 Filename to read to load for the OS kernel argument parameters from
757 the filesystem.
758
Tien Fong Chee87fda0c2019-01-23 14:20:04 +0800759config SPL_FAT_WRITE
760 bool "Support write for FAT filesystems"
761 help
762 Enable write support for FAT and VFAT filesystems with SPL.
763 Support for the underlying block device (e.g. MMC or USB) must be
764 enabled separately.
765
Michal Simek1aab1142020-09-09 14:41:56 +0200766config SPL_FPGA
Simon Glass1e3911a2016-09-13 07:05:23 -0600767 bool "Support FPGAs"
Simon Glass1e3911a2016-09-13 07:05:23 -0600768 help
769 Enable support for FPGAs in SPL. Field-programmable Gate Arrays
770 provide software-configurable hardware which is typically used to
771 implement peripherals (such as UARTs, LCD displays, MMC) or
772 accelerate custom processing functions, such as image processing
773 or machine learning. Sometimes it is useful to program the FPGA
774 as early as possible during boot, and this option can enable that
775 within SPL.
776
Simon Glass035939e2021-07-10 21:14:30 -0600777config SPL_GPIO
Simon Glass592d5b92018-11-15 18:43:55 -0700778 bool "Support GPIO in SPL"
Simon Glass1e3911a2016-09-13 07:05:23 -0600779 help
780 Enable support for GPIOs (General-purpose Input/Output) in SPL.
781 GPIOs allow U-Boot to read the state of an input line (high or
782 low) and set the state of an output line. This can be used to
783 drive LEDs, control power to various system parts and read user
784 input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
785 for example. Enable this option to build the drivers in
786 drivers/gpio as part of an SPL build.
787
Simon Glassbccfc2e2021-07-10 21:14:36 -0600788config SPL_I2C
Simon Glass1e3911a2016-09-13 07:05:23 -0600789 bool "Support I2C"
Simon Glass1e3911a2016-09-13 07:05:23 -0600790 help
791 Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
792 I2C works with a clock and data line which can be driven by a
793 one or more masters or slaves. It is a fairly complex bus but is
794 widely used as it only needs two lines for communication. Speeds of
795 400kbps are typical but up to 3.4Mbps is supported by some
796 hardware. I2C can be useful in SPL to configure power management
797 ICs (PMICs) before raising the CPU clock speed, for example.
798 Enable this option to build the drivers in drivers/i2c as part of
799 an SPL build.
800
801config SPL_LIBCOMMON_SUPPORT
802 bool "Support common libraries"
Simon Glass1e3911a2016-09-13 07:05:23 -0600803 help
804 Enable support for common U-Boot libraries within SPL. These
805 libraries include common code to deal with U-Boot images,
806 environment and USB, for example. This option is enabled on many
807 boards. Enable this option to build the code in common/ as part of
808 an SPL build.
809
810config SPL_LIBDISK_SUPPORT
Simon Goldschmidt62067052018-08-16 09:44:55 +0200811 bool "Support disk partitions"
Tom Rini1794ae62018-12-05 08:23:38 -0500812 select PARTITIONS
Simon Glass1e3911a2016-09-13 07:05:23 -0600813 help
814 Enable support for disk partitions within SPL. 'Disk' is something
815 of a misnomer as it includes non-spinning media such as flash (as
816 used in MMC and USB sticks). Partitions provide a way for a disk
817 to be split up into separate regions, with a partition table placed
818 at the start or end which describes the location and size of each
819 'partition'. These partitions are typically uses as individual block
820 devices, typically with an EXT2 or FAT filesystem in each. This
821 option enables whatever partition support has been enabled in
822 U-Boot to also be used in SPL. It brings in the code in disk/.
823
824config SPL_LIBGENERIC_SUPPORT
825 bool "Support generic libraries"
Simon Glass1e3911a2016-09-13 07:05:23 -0600826 help
827 Enable support for generic U-Boot libraries within SPL. These
828 libraries include generic code to deal with device tree, hashing,
829 printf(), compression and the like. This option is enabled on many
830 boards. Enable this option to build the code in lib/ as part of an
831 SPL build.
832
Lokesh Vutla2aeb9342018-08-27 15:57:49 +0530833config SPL_DM_MAILBOX
834 bool "Support Mailbox"
Tom Rini78896ae2022-05-31 10:24:55 -0400835 depends on SPL_DM
Lokesh Vutla2aeb9342018-08-27 15:57:49 +0530836 help
837 Enable support for Mailbox within SPL. This enable the inter
838 processor communication protocols tobe used within SPL. Enable
839 this option to build the drivers in drivers/mailbox as part of
840 SPL build.
841
Roger Quadrosb576fbf2022-10-20 16:30:47 +0300842config SPL_MEMORY
843 bool "Support Memory controller drivers"
844 help
845 Enable support for Memory Controller drivers within SPL.
846 These devices provide Memory bus interface to various devices like
847 SRAM, Ethernet adapters, FPGAs, etc.
848
Simon Glassb58bfe02021-08-08 12:20:09 -0600849config SPL_MMC
Simon Glass1e3911a2016-09-13 07:05:23 -0600850 bool "Support MMC"
Tom Rini3c82f982017-05-22 19:21:57 +0000851 depends on MMC
Simon Glass1e3911a2016-09-13 07:05:23 -0600852 help
853 Enable support for MMC (Multimedia Card) within SPL. This enables
854 the MMC protocol implementation and allows any enabled drivers to
855 be used within SPL. MMC can be used with or without disk partition
856 support depending on the application (SPL_LIBDISK_SUPPORT). Enable
857 this option to build the drivers in drivers/mmc as part of an SPL
858 build.
859
Pali Rohára0811552023-01-21 15:13:08 +0100860config SYS_MMCSD_FS_BOOT
861 bool "MMC FS Boot mode"
862 depends on SPL_MMC
863 default y if !ARCH_MVEBU
864 help
865 Enable MMC FS Boot mode. Partition is selected by option
866 SYS_MMCSD_FS_BOOT_PARTITION.
867
Adam Ford98a87cf2020-07-03 10:17:30 -0500868config SYS_MMCSD_FS_BOOT_PARTITION
869 int "MMC Boot Partition"
Pali Rohára0811552023-01-21 15:13:08 +0100870 depends on SYS_MMCSD_FS_BOOT
Adam Ford98a87cf2020-07-03 10:17:30 -0500871 default 1
872 help
873 Partition on the MMC to load U-Boot from when the MMC is being
Jérôme Carreterod0a8e592022-03-15 16:34:51 -0400874 used in fs mode.
875 Use -1 as a special value to use the first bootable partition.
Adam Ford98a87cf2020-07-03 10:17:30 -0500876
Ezequiel Garcia66983182019-05-25 19:25:21 -0300877config SPL_MMC_TINY
878 bool "Tiny MMC framework in SPL"
Simon Glassb58bfe02021-08-08 12:20:09 -0600879 depends on SPL_MMC
Ezequiel Garcia66983182019-05-25 19:25:21 -0300880 help
881 Enable MMC framework tinification support. This option is useful if
882 if your SPL is extremely size constrained. Heed the warning, enable
883 this option if and only if you know exactly what you are doing, if
884 you are reading this help text, you most likely have no idea :-)
885
886 The MMC framework is reduced to bare minimum to be useful. No malloc
887 support is needed for the MMC framework operation with this option
888 enabled. The framework supports exactly one MMC device and exactly
889 one MMC driver. The MMC driver can be adjusted to avoid any malloc
890 operations too, which can remove the need for malloc support in SPL
891 and thus further reduce footprint.
892
Jean-Jacques Hiblotd0531672018-01-04 15:23:32 +0100893config SPL_MMC_WRITE
894 bool "MMC/SD/SDIO card support for write operations in SPL"
Simon Glassb58bfe02021-08-08 12:20:09 -0600895 depends on SPL_MMC
Jean-Jacques Hiblotd0531672018-01-04 15:23:32 +0100896 help
897 Enable write access to MMC and SD Cards in SPL
898
899
Simon Glass64571062021-08-08 12:20:16 -0600900config SPL_MPC8XXX_INIT_DDR
Simon Glass1e3911a2016-09-13 07:05:23 -0600901 bool "Support MPC8XXX DDR init"
Simon Glass1e3911a2016-09-13 07:05:23 -0600902 help
903 Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
904 random-access memory) on the MPC8XXX family within SPL. This
905 allows DRAM to be set up before loading U-Boot into that DRAM,
906 where it can run.
907
Sean Anderson34ec1662023-11-04 16:37:47 -0400908config SPL_MTD
Simon Glass1e3911a2016-09-13 07:05:23 -0600909 bool "Support MTD drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600910 help
911 Enable support for MTD (Memory Technology Device) within SPL. MTD
912 provides a block interface over raw NAND and can also be used with
913 SPI flash. This allows SPL to load U-Boot from supported MTD
914 devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
915 to enable specific MTD drivers.
916
Simon Glass762b9972021-07-10 21:14:27 -0600917config SPL_MUSB_NEW
Simon Glass1e3911a2016-09-13 07:05:23 -0600918 bool "Support new Mentor Graphics USB"
Simon Glass1e3911a2016-09-13 07:05:23 -0600919 help
920 Enable support for Mentor Graphics USB in SPL. This is a new
921 driver used by some boards. Enable this option to build
922 the drivers in drivers/usb/musb-new as part of an SPL build. The
923 old drivers are in drivers/usb/musb.
924
925config SPL_NAND_SUPPORT
926 bool "Support NAND flash"
Sean Anderson35f15fe2023-11-08 11:48:43 -0500927 select SPL_LOAD_BLOCK
Simon Glass1e3911a2016-09-13 07:05:23 -0600928 help
929 Enable support for NAND (Negative AND) flash in SPL. NAND flash
930 can be used to allow SPL to load U-Boot from supported devices.
Miquel Raynal1f1ae152018-08-16 17:30:07 +0200931 This enables the drivers in drivers/mtd/nand/raw as part of an SPL
Simon Glass1e3911a2016-09-13 07:05:23 -0600932 build.
933
Tom Rini2d03b912022-05-13 12:46:23 -0400934config SPL_NAND_RAW_ONLY
935 bool "Support to boot only raw u-boot.bin images"
936 depends on SPL_NAND_SUPPORT
937 help
938 Use this only if you need to save space.
939
Adam Ford3a383772020-07-03 08:09:44 -0500940config SPL_NAND_DRIVERS
941 bool "Use standard NAND driver"
942 help
943 SPL uses normal NAND drivers, not minimal drivers.
944
945config SPL_NAND_ECC
Tom Rini2d03b912022-05-13 12:46:23 -0400946 bool "Include standard ECC in SPL"
947
948config SPL_NAND_SOFTECC
949 bool "Use software ECC in SPL"
950 depends on SPL_NAND_ECC
Adam Ford3a383772020-07-03 08:09:44 -0500951
952config SPL_NAND_SIMPLE
953 bool "Support simple NAND drivers in SPL"
954 help
955 Support for NAND boot using simple NAND drivers that
956 expose the cmd_ctrl() interface.
957
Adam Ford5e56ad02020-07-03 08:09:45 -0500958config SPL_NAND_BASE
developer81670fe2022-05-20 11:23:53 +0800959 depends on SPL_NAND_SUPPORT
Adam Ford5e56ad02020-07-03 08:09:45 -0500960 bool "Use Base NAND Driver"
Michal Simek0606f9e2021-05-20 13:08:44 +0200961 help
962 Include nand_base.c in the SPL.
Adam Ford5e56ad02020-07-03 08:09:45 -0500963
964config SPL_NAND_IDENT
965 depends on SPL_NAND_BASE
966 bool "Use chip ID to identify NAND flash"
967 help
968 SPL uses the chip ID list to identify the NAND flash.
969
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +0200970config SPL_UBI
971 bool "Support UBI"
972 help
973 Enable support for loading payloads from UBI. See
974 README.ubispl for more info.
975
Tom Rini78896ae2022-05-31 10:24:55 -0400976menu "UBI configuration for SPL"
977 depends on SPL_UBI
Lukasz Majewski76f442982020-06-04 23:11:53 +0800978
Hamish Guthrie3ce740d2019-05-15 15:15:59 +0200979config SPL_UBI_LOAD_BY_VOLNAME
980 bool "Support loading volumes by name"
981 help
982 This enables support for loading UBI volumes by name. When this
983 is set, CONFIG_SPL_UBI_LOAD_MONITOR_VOLNAME can be used to
984 configure the volume name from which to load U-Boot.
985
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +0200986config SPL_UBI_MAX_VOL_LEBS
987 int "Maximum number of LEBs per volume"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +0200988 help
989 The maximum number of logical eraseblocks which a static volume
990 to load can contain. Used for sizing the scan data structure.
991
992config SPL_UBI_MAX_PEB_SIZE
993 int "Maximum PEB size"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +0200994 help
995 The maximum physical erase block size.
996
997config SPL_UBI_MAX_PEBS
998 int "Maximum number of PEBs"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +0200999 help
1000 The maximum physical erase block size. If not overridden by
1001 board code, this value will be used as the actual number of PEBs.
1002
1003config SPL_UBI_PEB_OFFSET
1004 int "Offset to first UBI PEB"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001005 help
1006 The offset in number of PEBs from the start of flash to the first
1007 PEB part of the UBI image.
1008
1009config SPL_UBI_VID_OFFSET
1010 int "Offset to VID header"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001011
1012config SPL_UBI_LEB_START
1013 int "Offset to LEB in PEB"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001014 help
1015 The offset in bytes to the LEB within a PEB.
1016
1017config SPL_UBI_INFO_ADDR
1018 hex "Address to place UBI scan info"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001019 help
1020 Address for ubispl to place the scan info. Read README.ubispl to
1021 determine the required size
1022
1023config SPL_UBI_VOL_IDS
1024 int "Maximum volume id"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001025 help
1026 The maximum volume id which can be loaded. Used for sizing the
1027 scan data structure.
1028
1029config SPL_UBI_LOAD_MONITOR_ID
1030 int "id of U-Boot volume"
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001031 help
1032 The UBI volume id from which to load U-Boot
1033
Hamish Guthrie3ce740d2019-05-15 15:15:59 +02001034config SPL_UBI_LOAD_MONITOR_VOLNAME
1035 string "volume name of U-Boot volume"
1036 depends on SPL_UBI_LOAD_BY_VOLNAME
1037 help
1038 The UBI volume name from which to load U-Boot
1039
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001040config SPL_UBI_LOAD_KERNEL_ID
1041 int "id of kernel volume"
Tom Rini78896ae2022-05-31 10:24:55 -04001042 depends on SPL_OS_BOOT
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001043 help
1044 The UBI volume id from which to load the kernel
1045
1046config SPL_UBI_LOAD_ARGS_ID
1047 int "id of kernel args volume"
Tom Rini78896ae2022-05-31 10:24:55 -04001048 depends on SPL_OS_BOOT
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001049 help
1050 The UBI volume id from which to load the device tree
1051
Markus Klotzbuechercfe40f42019-05-15 15:16:00 +02001052config UBI_SPL_SILENCE_MSG
1053 bool "silence UBI SPL messages"
Markus Klotzbuechercfe40f42019-05-15 15:16:00 +02001054 help
1055 Disable messages from UBI SPL. This leaves warnings
1056 and errors enabled.
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001057
Tom Rini78896ae2022-05-31 10:24:55 -04001058endmenu
1059
1060config SPL_DM_SPI
1061 bool "Support SPI DM drivers in SPL"
1062 depends on SPL_DM
1063 help
1064 Enable support for SPI DM drivers in SPL.
1065
1066config SPL_DM_SPI_FLASH
1067 bool "Support SPI DM FLASH drivers in SPL"
1068 depends on SPL_DM
1069 help
1070 Enable support for SPI DM flash drivers in SPL.
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001071
Simon Glass041a0ac2021-08-08 12:20:30 -06001072config SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -06001073 bool "Support networking"
Simon Glass1e3911a2016-09-13 07:05:23 -06001074 help
1075 Enable support for network devices (such as Ethernet) in SPL.
1076 This permits SPL to load U-Boot over a network link rather than
1077 from an on-board peripheral. Environment support is required since
1078 the network stack uses a number of environment variables. See also
Simon Glasse5cd9a42021-07-10 21:14:26 -06001079 SPL_ETH.
Simon Glass1e3911a2016-09-13 07:05:23 -06001080
Simon Glass1e3911a2016-09-13 07:05:23 -06001081config SPL_NET_VCI_STRING
1082 string "BOOTP Vendor Class Identifier string sent by SPL"
Tom Rini78896ae2022-05-31 10:24:55 -04001083 depends on SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -06001084 help
1085 As defined by RFC 2132 the vendor class identifier field can be
1086 sent by the client to identify the vendor type and configuration
1087 of a client. This is often used in practice to allow for the DHCP
1088 server to specify different files to load depending on if the ROM,
1089 SPL or U-Boot itself makes the request
Simon Glass1e3911a2016-09-13 07:05:23 -06001090
1091config SPL_NO_CPU_SUPPORT
Tom Rini78896ae2022-05-31 10:24:55 -04001092 def_bool y
1093 depends on (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
Simon Glass1e3911a2016-09-13 07:05:23 -06001094 help
1095 This is specific to the ARM926EJ-S CPU. It disables the standard
1096 start.S start-up code, presumably so that a replacement can be
1097 used on that CPU. You should not enable it unless you know what
1098 you are doing.
1099
1100config SPL_NOR_SUPPORT
1101 bool "Support NOR flash"
Simon Glass1e3911a2016-09-13 07:05:23 -06001102 help
1103 Enable support for loading U-Boot from memory-mapped NOR (Negative
1104 OR) flash in SPL. NOR flash is slow to write but fast to read, and
1105 a memory-mapped device makes it very easy to access. Loading from
1106 NOR is typically achieved with just a memcpy().
1107
Vikas Manocha9e582652017-05-28 12:55:11 -07001108config SPL_XIP_SUPPORT
1109 bool "Support XIP"
Vikas Manocha9e582652017-05-28 12:55:11 -07001110 help
1111 Enable support for execute in place of U-Boot or kernel image. There
1112 is no need to copy image from flash to ram if flash supports execute
1113 in place. Its very useful in systems having enough flash but not
1114 enough ram to load the image.
1115
Simon Glass1e3911a2016-09-13 07:05:23 -06001116config SPL_ONENAND_SUPPORT
1117 bool "Support OneNAND flash"
Simon Glass1e3911a2016-09-13 07:05:23 -06001118 help
1119 Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
1120 a type of NAND flash and therefore can be used to allow SPL to
1121 load U-Boot from supported devices. This enables the drivers in
1122 drivers/mtd/onenand as part of an SPL build.
1123
Heiko Schocher1d12ba22016-10-06 07:55:15 +02001124config SPL_OS_BOOT
1125 bool "Activate Falcon Mode"
Tom Rini3c82f982017-05-22 19:21:57 +00001126 depends on !TI_SECURE_DEVICE
Heiko Schocher1d12ba22016-10-06 07:55:15 +02001127 help
1128 Enable booting directly to an OS from SPL.
1129 for more info read doc/README.falcon
1130
Simon Glass259cdb42023-09-26 08:14:17 -06001131config SPL_PAYLOAD_ARGS_ADDR
Tom Rini2c9d2b52022-05-27 22:06:52 -04001132 hex "Address in memory to load 'args' file for Falcon Mode to"
Randolphb1933972023-12-29 16:32:22 +08001133 depends on SPL_OS_BOOT || SPL_LOAD_FIT_OPENSBI_OS_BOOT
Tom Rini2c9d2b52022-05-27 22:06:52 -04001134 default 0x88000000 if ARCH_OMAP2PLUS
Oliver Gaskelld4f7cb52024-09-12 16:50:54 +01001135 default 0x99000000 if ARCH_SC5XX && SC59X_64
Oliver Gaskell14032b32024-09-12 16:50:56 +01001136 default 0xA0000000 if ARCH_SC5XX && TARGET_SC594_SOM_EZKIT
Oliver Gaskellbc139712024-09-12 16:50:57 +01001137 default 0x80000000 if ARCH_SC5XX && TARGET_SC594_SOM_EZLITE
Tom Rini2c9d2b52022-05-27 22:06:52 -04001138 help
1139 Address in memory where the 'args' file, typically a device tree
1140 will be loaded in to memory.
1141
Tom Rini9568a0e2022-05-28 16:43:53 -04001142config SYS_NAND_SPL_KERNEL_OFFS
1143 hex "Address in memory to load the OS file for Falcon mode to"
1144 depends on SPL_OS_BOOT && SPL_NAND_SUPPORT
1145
Heiko Schocher65928932016-10-06 07:55:16 +02001146config SYS_OS_BASE
1147 hex "addr, where OS is found"
Tom Rini78896ae2022-05-31 10:24:55 -04001148 depends on SPL_OS_BOOT && SPL_NOR_SUPPORT
Heiko Schocher65928932016-10-06 07:55:16 +02001149 help
1150 Specify the address, where the OS image is found, which
1151 gets booted.
1152
Alexandru Gagniuc99426c82021-12-30 10:39:59 -06001153config SPL_FALCON_BOOT_MMCSD
1154 bool "Enable Falcon boot from MMC or SD media"
1155 depends on SPL_OS_BOOT && SPL_MMC
Sean Anderson35f15fe2023-11-08 11:48:43 -05001156 select SPL_LOAD_BLOCK
Sean Anderson29e338f2023-11-08 11:48:50 -05001157 select SPL_SYS_MMCSD_RAW_MODE
Alexandru Gagniuc99426c82021-12-30 10:39:59 -06001158 help
1159 Select this if the Falcon mode OS image mode is on MMC or SD media.
1160
1161config SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
1162 hex "Falcon mode: Sector to load kernel uImage from MMC"
1163 depends on SPL_FALCON_BOOT_MMCSD
1164 help
1165 When Falcon mode is used with an MMC or SD media, SPL needs to know
1166 where to look for the kernel uImage. The image is expected to begin
1167 at the raw MMC specified in this config.
1168 Note that the Falcon mode image can also be a FIT, if FIT support is
1169 enabled.
1170
Tom Rinif95c2592022-05-28 17:21:03 -04001171config SYS_MMCSD_RAW_MODE_ARGS_SECTOR
1172 hex "Falcon mode: Sector to load 'args' from MMC"
1173 depends on SPL_FALCON_BOOT_MMCSD
1174 help
1175 When Falcon mode is used with an MMC or SD media, SPL needs to know
1176 where to look for the OS 'args', typically a device tree. The
1177 contents are expected to begin at the raw MMC specified in this config.
1178 Note that if using a FIT image, this and the next option can be set to
1179 0x0.
1180
1181config SYS_MMCSD_RAW_MODE_ARGS_SECTORS
1182 hex "Falcon mode: Number of sectors to load for 'args' from MMC"
1183 depends on SPL_FALCON_BOOT_MMCSD && SYS_MMCSD_RAW_MODE_ARGS_SECTOR != 0x0
1184
York Sun53492672018-06-14 14:38:48 -07001185config SPL_PAYLOAD
1186 string "SPL payload"
1187 default "tpl/u-boot-with-tpl.bin" if TPL
1188 default "u-boot.bin"
1189 help
Chris Packham37bc3162019-01-13 22:13:20 +13001190 Payload for SPL boot. For backward compatibility, default to
York Sun53492672018-06-14 14:38:48 -07001191 u-boot.bin, i.e. RAW image without any header. In case of
1192 TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
1193 use u-boot.img.
1194
Sekhar Nori9108d922018-12-06 15:40:08 +05301195config SPL_PCI
Simon Glass6569f3a2017-01-16 07:03:30 -07001196 bool "Support PCI drivers"
Simon Glass6569f3a2017-01-16 07:03:30 -07001197 help
1198 Enable support for PCI in SPL. For platforms that need PCI to boot,
1199 or must perform some init using PCI in SPL, this provides the
1200 necessary driver support. This enables the drivers in drivers/pci
1201 as part of an SPL build.
1202
Simon Glassff67f232021-08-08 12:20:10 -06001203config SPL_PCH
Simon Glass36258a52017-01-16 07:03:33 -07001204 bool "Support PCH drivers"
Simon Glass36258a52017-01-16 07:03:33 -07001205 help
1206 Enable support for PCH (Platform Controller Hub) devices in SPL.
1207 These are used to set up GPIOs and the SPI peripheral early in
1208 boot. This enables the drivers in drivers/pch as part of an SPL
1209 build.
1210
Simon Glass1e3911a2016-09-13 07:05:23 -06001211config SPL_POST_MEM_SUPPORT
1212 bool "Support POST drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -06001213 help
1214 Enable support for POST (Power-on Self Test) in SPL. POST is a
1215 procedure that checks that the hardware (CPU or board) appears to
1216 be functionally correctly. It is a sanity check that can be
1217 performed before booting. This enables the drivers in post/drivers
1218 as part of an SPL build.
1219
Ley Foon Tan9caf7122018-06-14 18:45:19 +08001220config SPL_DM_RESET
Patrick Delaunay329827a2018-03-12 10:46:05 +01001221 bool "Support reset drivers"
Tom Rini78896ae2022-05-31 10:24:55 -04001222 depends on SPL_DM
Patrick Delaunay329827a2018-03-12 10:46:05 +01001223 help
1224 Enable support for reset control in SPL.
1225 That can be useful in SPL to handle IP reset in driver, as in U-Boot,
1226 by using the generic reset API provided by driver model.
1227 This enables the drivers in drivers/reset as part of an SPL build.
1228
Simon Glasse91ac4c2021-07-10 21:14:24 -06001229config SPL_POWER
Simon Glass1e3911a2016-09-13 07:05:23 -06001230 bool "Support power drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -06001231 help
1232 Enable support for power control in SPL. This includes support
1233 for PMICs (Power-management Integrated Circuits) and some of the
1234 features provided by PMICs. In particular, voltage regulators can
1235 be used to enable/disable power and vary its voltage. That can be
1236 useful in SPL to turn on boot peripherals and adjust CPU voltage
1237 so that the clock speed can be increased. This enables the drivers
1238 in drivers/power, drivers/power/pmic and drivers/power/regulator
1239 as part of an SPL build.
1240
Peng Fan3775fed2018-07-27 10:20:37 +08001241config SPL_POWER_DOMAIN
1242 bool "Support power domain drivers"
Simon Glassa0e44872021-08-08 12:20:29 -06001243 select SPL_POWER
Peng Fan3775fed2018-07-27 10:20:37 +08001244 help
1245 Enable support for power domain control in SPL. Many SoCs allow
1246 power to be applied to or removed from portions of the SoC (power
1247 domains). This may be used to save power. This API provides the
1248 means to control such power management hardware. This enables
1249 the drivers in drivers/power/domain as part of a SPL build.
1250
Stefan Agnercd01e642016-12-23 07:51:53 +01001251config SPL_RAM_SUPPORT
1252 bool "Support booting from RAM"
Trevor Woerner513f6402020-05-06 08:02:41 -04001253 default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
Stefan Agnercd01e642016-12-23 07:51:53 +01001254 help
1255 Enable booting of an image in RAM. The image can be preloaded or
1256 it can be loaded by SPL directly into RAM (e.g. using USB).
1257
Stefan Agnere2eaac12016-12-23 07:51:52 +01001258config SPL_RAM_DEVICE
1259 bool "Support booting from preloaded image in RAM"
Stefan Agnercd01e642016-12-23 07:51:53 +01001260 depends on SPL_RAM_SUPPORT
Trevor Woerner513f6402020-05-06 08:02:41 -04001261 default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
Stefan Agnere2eaac12016-12-23 07:51:52 +01001262 help
1263 Enable booting of an image already loaded in RAM. The image has to
1264 be already in memory when SPL takes over, e.g. loaded by the boot
1265 ROM.
1266
Lokesh Vutla1a6f8e02018-08-27 15:57:53 +05301267config SPL_REMOTEPROC
1268 bool "Support REMOTEPROCS"
1269 help
1270 Enable support for REMOTEPROCs in SPL. This permits to load
1271 a remote processor firmware in SPL.
1272
Simon Glass31985312021-08-08 12:20:11 -06001273config SPL_RTC
Simon Glassb69691b2017-01-16 07:03:31 -07001274 bool "Support RTC drivers"
Simon Glassb69691b2017-01-16 07:03:31 -07001275 help
1276 Enable RTC (Real-time Clock) support in SPL. This includes support
1277 for reading and setting the time. Some RTC devices also have some
1278 non-volatile (battery-backed) memory which is accessible if
1279 needed. This enables the drivers in drivers/rtc as part of an SPL
1280 build.
1281
Simon Glass081a45a2021-08-08 12:20:17 -06001282config SPL_SATA
Simon Glass1e3911a2016-09-13 07:05:23 -06001283 bool "Support loading from SATA"
Simon Glass1e3911a2016-09-13 07:05:23 -06001284 help
1285 Enable support for SATA (Serial AT attachment) in SPL. This allows
1286 use of SATA devices such as hard drives and flash drivers for
1287 loading U-Boot. SATA is used in higher-end embedded systems and
1288 can provide higher performance than MMC , at somewhat higher
1289 expense and power consumption. This enables loading from SATA
1290 using a configured device.
1291
Tom Rinia0a6f692022-11-16 13:10:35 -05001292config SYS_SATA_FAT_BOOT_PARTITION
1293 int "Partition on the SATA disk to load U-Boot from"
1294 depends on SPL_SATA && SPL_FS_FAT
1295 default 1
1296
Baruch Siachc9eff6a2019-07-14 17:54:21 +03001297config SPL_SATA_RAW_U_BOOT_USE_SECTOR
1298 bool "SATA raw mode: by sector"
Simon Glass081a45a2021-08-08 12:20:17 -06001299 depends on SPL_SATA
Pali Rohárcf97b822021-07-23 11:14:29 +02001300 default y if ARCH_MVEBU
Baruch Siachc9eff6a2019-07-14 17:54:21 +03001301 help
1302 Use sector number for specifying U-Boot location on SATA disk in
1303 raw mode.
1304
1305config SPL_SATA_RAW_U_BOOT_SECTOR
1306 hex "Sector on the SATA disk to load U-Boot from"
1307 depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
Pali Rohárcf97b822021-07-23 11:14:29 +02001308 default 0x1 if ARCH_MVEBU
Baruch Siachc9eff6a2019-07-14 17:54:21 +03001309 help
1310 Sector on the SATA disk to load U-Boot from, when the SATA disk is being
1311 used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
1312
Mayuresh Chitaleb365c942023-06-03 19:32:53 +05301313config SPL_NVME
1314 bool "NVM Express device support"
Tom Rinid15a79c2024-06-04 19:37:41 -06001315 depends on SPL_BLK
Mayuresh Chitaleb365c942023-06-03 19:32:53 +05301316 select FS_LOADER
Mayuresh Chitale5d96a912023-06-03 19:32:54 +05301317 select SPL_BLK_FS
Mayuresh Chitaleb365c942023-06-03 19:32:53 +05301318 help
1319 This option enables support for NVM Express devices.
1320 It supports basic functions of NVMe (read/write).
1321
1322config SPL_NVME_PCI
1323 bool "NVM Express PCI device support for SPL"
1324 depends on SPL_PCI && SPL_NVME
1325 help
1326 This option enables support for NVM Express PCI devices.
1327 This allows use of NVMe devices for loading u-boot.
1328
1329config SPL_NVME_BOOT_DEVICE
1330 hex "NVMe boot device number"
1331 depends on SPL_NVME
1332 default 0x0
1333
1334config SYS_NVME_BOOT_PARTITION
1335 hex "NVMe boot partition number"
1336 depends on SPL_NVME
1337 default 0x1
1338
Simon Glassf4d60392021-08-08 12:20:12 -06001339config SPL_SERIAL
Simon Glass1e3911a2016-09-13 07:05:23 -06001340 bool "Support serial"
Alex Kiernan5b404282018-04-19 04:32:54 +00001341 select SPL_PRINTF
1342 select SPL_STRTO
Simon Glass1e3911a2016-09-13 07:05:23 -06001343 help
1344 Enable support for serial in SPL. This allows use of a serial UART
1345 for displaying messages while SPL is running. It also brings in
1346 printf() and panic() functions. This should normally be enabled
1347 unless there are space reasons not to. Even then, consider
Simon Glass7611ac62019-09-25 08:56:27 -06001348 enabling SPL_USE_TINY_PRINTF which is a small printf() version.
Simon Glass1e3911a2016-09-13 07:05:23 -06001349
Simon Glassa5820472021-08-08 12:20:14 -06001350config SPL_SPI
Simon Goldschmidt3a025332019-10-25 16:22:09 +02001351 bool "Support SPI drivers"
1352 help
1353 Enable support for using SPI in SPL. This is used for connecting
1354 to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
1355 more details on that. The SPI driver provides the transport for
1356 data between the SPI flash and the CPU. This option can be used to
1357 enable SPI drivers that are needed for other purposes also, such
1358 as a SPI PMIC.
1359
Simon Glass1e3911a2016-09-13 07:05:23 -06001360config SPL_SPI_FLASH_SUPPORT
1361 bool "Support SPI flash drivers"
Simon Glassa5820472021-08-08 12:20:14 -06001362 depends on SPL_SPI
Simon Glass1e3911a2016-09-13 07:05:23 -06001363 help
1364 Enable support for using SPI flash in SPL, and loading U-Boot from
1365 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
1366 the SPI bus that is used to connect it to a system. It is a simple
1367 but fast bidirectional 4-wire bus (clock, chip select and two data
1368 lines). This enables the drivers in drivers/mtd/spi as part of an
Simon Glassa5820472021-08-08 12:20:14 -06001369 SPL build. This normally requires SPL_SPI.
Simon Glass1e3911a2016-09-13 07:05:23 -06001370
Vignesh R4d848c92019-02-05 11:29:20 +05301371if SPL_SPI_FLASH_SUPPORT
1372
Vignesh R3f5fb8b2019-02-05 11:29:25 +05301373config SPL_SPI_FLASH_TINY
1374 bool "Enable low footprint SPL SPI Flash support"
1375 depends on !SPI_FLASH_BAR
Vignesh Rf53872d2019-02-05 11:29:26 +05301376 default y if SPI_FLASH
Vignesh R3f5fb8b2019-02-05 11:29:25 +05301377 help
1378 Enable lightweight SPL SPI Flash support that supports just reading
1379 data/images from flash. No support to write/erase flash. Enable
1380 this if you have SPL size limitations and don't need full
1381 fledged SPI flash support.
1382
Vignesh R4d848c92019-02-05 11:29:20 +05301383config SPL_SPI_FLASH_SFDP_SUPPORT
1384 bool "SFDP table parsing support for SPI NOR flashes"
Vignesh R3f5fb8b2019-02-05 11:29:25 +05301385 depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
Vignesh R4d848c92019-02-05 11:29:20 +05301386 help
1387 Enable support for parsing and auto discovery of parameters for
1388 SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
1389 tables as per JESD216 standard in SPL.
1390
Lukasz Majewski76f442982020-06-04 23:11:53 +08001391config SPL_SPI_FLASH_MTD
1392 bool "Support for SPI flash MTD drivers in SPL"
1393 help
1394 Enable support for SPI flash MTD drivers in SPL.
1395
Marek Vasute2542252018-04-07 16:05:27 +02001396config SPL_SPI_LOAD
1397 bool "Support loading from SPI flash"
Marek Vasute2542252018-04-07 16:05:27 +02001398 help
1399 Enable support for loading next stage, U-Boot or otherwise, from
1400 SPI NOR in U-Boot SPL.
1401
Vignesh R4d848c92019-02-05 11:29:20 +05301402endif # SPL_SPI_FLASH_SUPPORT
1403
Hannes Schmelzer38df9972019-08-22 15:41:46 +02001404config SYS_SPI_U_BOOT_OFFS
1405 hex "address of u-boot payload in SPI flash"
Andre Przywarae6d9fc02020-01-06 01:29:10 +00001406 default 0x8000 if ARCH_SUNXI
Hannes Schmelzer38df9972019-08-22 15:41:46 +02001407 default 0x0
1408 depends on SPL_SPI_LOAD || SPL_SPI_SUNXI
1409 help
1410 Address within SPI-Flash from where the u-boot payload is fetched
1411 from.
1412
Faiz Abbasae1627c2017-11-14 16:12:31 +05301413config SPL_THERMAL
1414 bool "Driver support for thermal devices"
1415 help
1416 Enable support for temperature-sensing devices. Some SoCs have on-chip
1417 temperature sensors to permit warnings, speed throttling or even
1418 automatic power-off when the temperature gets too high or low. Other
1419 devices may be discrete but connected on a suitable bus.
1420
Simon Glass1ba1d4e2021-07-10 21:14:28 -06001421config SPL_WATCHDOG
Simon Glass1e3911a2016-09-13 07:05:23 -06001422 bool "Support watchdog drivers"
Marek Vasut55ec91b2019-06-09 03:46:21 +02001423 imply SPL_WDT if !HW_WATCHDOG
Simon Glass1e3911a2016-09-13 07:05:23 -06001424 help
1425 Enable support for watchdog drivers in SPL. A watchdog is
1426 typically a hardware peripheral which can reset the system when it
1427 detects no activity for a while (such as a software crash). This
1428 enables the drivers in drivers/watchdog as part of an SPL build.
1429
1430config SPL_YMODEM_SUPPORT
1431 bool "Support loading using Ymodem"
Simon Glassf4d60392021-08-08 12:20:12 -06001432 depends on SPL_SERIAL
Simon Glass1e3911a2016-09-13 07:05:23 -06001433 help
1434 While loading from serial is slow it can be a useful backup when
1435 there is no other option. The Ymodem protocol provides a reliable
1436 means of transmitting U-Boot over a serial line for using in SPL,
1437 with a checksum to ensure correctness.
1438
Philipp Tomsichf6618812017-09-13 21:29:36 +02001439config SPL_ATF
Kever Yang6e79a912017-05-05 11:47:45 +08001440 bool "Support ARM Trusted Firmware"
Samuel Holland27b77832022-10-30 23:26:19 -05001441 depends on ARM64
1442 depends on SPL_LOAD_FIT && !SPL_FIT_IMAGE_TINY
Kever Yang6e79a912017-05-05 11:47:45 +08001443 help
Philipp Tomsichc4078af2018-01-02 21:16:43 +01001444 ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
1445 is loaded by SPL (which is considered as BL2 in ATF terminology).
Kever Yang6e79a912017-05-05 11:47:45 +08001446 More detail at: https://github.com/ARM-software/arm-trusted-firmware
1447
Michael Walleafaf6ea2020-11-18 17:45:58 +01001448config SPL_ATF_LOAD_IMAGE_V2
1449 bool "Use the new LOAD_IMAGE_V2 parameter passing"
1450 depends on SPL_ATF
1451 help
1452 Some platforms use the newer LOAD_IMAGE_V2 parameter passing.
1453
1454 If you want to load a bl31 image from the SPL and need the new
1455 method, say Y.
1456
Philipp Tomsichc4078af2018-01-02 21:16:43 +01001457config SPL_ATF_NO_PLATFORM_PARAM
Michal Simek0606f9e2021-05-20 13:08:44 +02001458 bool "Pass no platform parameter"
Philipp Tomsichc4078af2018-01-02 21:16:43 +01001459 depends on SPL_ATF
1460 help
1461 While we expect to call a pointer to a valid FDT (or NULL)
1462 as the platform parameter to an ATF, some ATF versions are
1463 not U-Boot aware and have an insufficiently robust parameter
1464 validation to gracefully reject a FDT being passed.
1465
1466 If this option is enabled, the spl_atf os-type handler will
1467 always pass NULL for the platform parameter.
1468
1469 If your ATF is affected, say Y.
1470
Alex Kiernan10238ef2018-03-15 22:11:46 +00001471config SPL_AM33XX_ENABLE_RTC32K_OSC
1472 bool "Enable the RTC32K OSC on AM33xx based platforms"
Tom Rini78896ae2022-05-31 10:24:55 -04001473 depends on AM33XX
Alex Kiernan10238ef2018-03-15 22:11:46 +00001474 default y if AM33XX
1475 help
1476 Enable access to the AM33xx RTC and select the external 32kHz clock
1477 source.
1478
Patrick Delaunaya7ca4802021-09-02 11:56:16 +02001479config SPL_OPTEE_IMAGE
1480 bool "Support OP-TEE Trusted OS image in SPL"
Kever Yanga28d42c2018-08-23 17:17:59 +08001481 depends on ARM
Jagan Teki9bd34ac2022-11-03 11:49:47 +05301482 depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL
Kever Yanga28d42c2018-08-23 17:17:59 +08001483 help
Patrick Delaunaya7ca4802021-09-02 11:56:16 +02001484 OP-TEE is an open source Trusted OS which is loaded by SPL.
Kever Yanga28d42c2018-08-23 17:17:59 +08001485 More detail at: https://github.com/OP-TEE/optee_os
1486
Lukas Auer515b9342019-08-21 21:14:44 +02001487config SPL_OPENSBI
1488 bool "Support RISC-V OpenSBI"
1489 depends on RISCV && SPL_RISCV_MMODE && RISCV_SMODE
Samuel Holland27b77832022-10-30 23:26:19 -05001490 depends on SPL_LOAD_FIT && !SPL_FIT_IMAGE_TINY
Lukas Auer515b9342019-08-21 21:14:44 +02001491 help
1492 OpenSBI is an open-source implementation of the RISC-V Supervisor Binary
1493 Interface (SBI) specification. U-Boot supports the OpenSBI FW_DYNAMIC
1494 firmware. It is loaded and started by U-Boot SPL.
1495
1496 More details are available at https://github.com/riscv/opensbi and
1497 https://github.com/riscv/riscv-sbi-doc
1498
1499config SPL_OPENSBI_LOAD_ADDR
1500 hex "OpenSBI load address"
1501 depends on SPL_OPENSBI
1502 help
1503 Load address of the OpenSBI binary.
1504
Nikita Shubind3d68062022-08-08 13:28:52 +03001505config SPL_OPENSBI_SCRATCH_OPTIONS
1506 hex "Scratch options passed to OpenSBI"
1507 default 0x1
1508 depends on SPL_OPENSBI
1509 help
Heinrich Schuchardta3587892023-07-04 02:14:21 +02001510 This bitmap of options is passed from U-Boot SPL to OpenSBI.
1511 As of OpenSBI 1.3 the following bits are defined:
1512 - SBI_SCRATCH_NO_BOOT_PRINTS = 0x1 (Disable prints during boot)
1513 - SBI_SCRATCH_DEBUG_PRINTS = 0x2 (Enable runtime debug prints)
Nikita Shubind3d68062022-08-08 13:28:52 +03001514
Tom Rini06d06f72022-05-27 17:13:52 -04001515config SPL_TARGET
1516 string "Addtional build targets for 'make'"
1517 default "spl/u-boot-spl.srec" if RCAR_GEN2
1518 default "spl/u-boot-spl.scif" if RCAR_GEN3
1519 default ""
1520 help
1521 On some platforms we need to have 'make' run additional build target
1522 rules. If required on your platform, enter it here, otherwise leave blank.
1523
Tom Rini2aa5e502022-05-30 17:11:23 -04001524
1525config SPL_AT91_MCK_BYPASS
1526 bool "Use external clock signal as a source of main clock for AT91 platforms"
1527 depends on ARCH_AT91
1528 help
1529 Use external 8 to 24 Mhz clock signal as source of main clock instead
1530 of an external crystal oscillator.
1531 This option disables the internal driving on the XOUT pin.
1532 The external source has to provide a stable clock on the XIN pin.
1533 If this option is disabled, the SoC expects a crystal oscillator
1534 that needs driving on both XIN and XOUT lines.
1535endmenu
1536
Tom Rini3c82f982017-05-22 19:21:57 +00001537config TPL
Tom Rini3c82f982017-05-22 19:21:57 +00001538 depends on SUPPORT_TPL
Tom Rini2aa5e502022-05-30 17:11:23 -04001539 bool "Enable TPL"
Tom Rini3c82f982017-05-22 19:21:57 +00001540 help
1541 If you want to build TPL as well as the normal image and SPL, say Y.
1542
Tom Rini0d989c82022-05-30 17:01:22 -04001543source "common/spl/Kconfig.tpl"
Tom Rini3c82f982017-05-22 19:21:57 +00001544
Simon Glasse7ca7da2022-04-30 00:56:53 -06001545config VPL
Simon Glasse7ca7da2022-04-30 00:56:53 -06001546 depends on SUPPORT_SPL
Tom Rini2aa5e502022-05-30 17:11:23 -04001547 bool "Enable VPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -06001548 help
1549 If you want to build VPL as well as the normal image, TPL and SPL,
1550 say Y.
1551
Tom Rini0d989c82022-05-30 17:01:22 -04001552source "common/spl/Kconfig.vpl"