blob: adcd7ca19a4b134ac4c1965b6f8d90b87c7a7e5f [file] [log] [blame]
Simon Glass7eec8842022-04-30 00:56:52 -06001menu "SPL / TPL / VPL"
Simon Glass1e3911a2016-09-13 07:05:23 -06002
Simon Glassffe19762016-09-12 23:18:22 -06003config SUPPORT_SPL
4 bool
5
6config SUPPORT_TPL
7 bool
8
Simon Glass7eec8842022-04-30 00:56:52 -06009config SUPPORT_VPL
10 bool
11
B, Ravi4cca5cf2017-05-04 15:45:29 +053012config SPL_DFU_NO_RESET
13 bool
14
Simon Glassffe19762016-09-12 23:18:22 -060015config SPL
16 bool
17 depends on SUPPORT_SPL
18 prompt "Enable SPL"
19 help
20 If you want to build SPL as well as the normal image, say Y.
21
Tom Rini623d67e2018-02-06 12:15:38 -050022config SPL_FRAMEWORK
23 bool "Support SPL based upon the common SPL framework"
24 depends on SPL
25 default y
26 help
27 Enable the SPL framework under common/spl/. This framework
28 supports MMC, NAND and YMODEM and other methods loading of U-Boot
29 and the Linux Kernel. If unsure, say Y.
30
Philippe Reynesc4510f42019-09-19 16:18:39 +020031config SPL_FRAMEWORK_BOARD_INIT_F
32 bool "Define a generic function board_init_f"
33 depends on SPL_FRAMEWORK
34 help
35 Define a generic function board_init_f that:
36 - initialize the spl (spl_early_init)
37 - initialize the serial (preloader_console_init)
38 Unless you want to provide your own board_init_f, you should say Y.
39
Simon Goldschmidtc2722832019-05-24 22:07:04 +020040config SPL_SIZE_LIMIT
Simon Glassa8f0c942019-09-25 08:56:28 -060041 hex "Maximum size of SPL image"
Simon Goldschmidtc2722832019-05-24 22:07:04 +020042 depends on SPL
Ovidiu Panaitb7232622020-09-25 21:12:56 +030043 default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB
44 default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
45 default 0x0
Simon Goldschmidtc2722832019-05-24 22:07:04 +020046 help
47 Specifies the maximum length of the U-Boot SPL image.
48 If this value is zero, it is ignored.
49
50config SPL_SIZE_LIMIT_SUBTRACT_GD
51 bool "SPL image size check: provide space for global data"
52 depends on SPL_SIZE_LIMIT > 0
53 help
54 If enabled, aligned size of global data is reserved in
55 SPL_SIZE_LIMIT check to ensure such an image does not overflow SRAM
56 if SPL_SIZE_LIMIT describes the size of SRAM available for SPL when
57 pre-reloc global data is put into this SRAM, too.
58
59config SPL_SIZE_LIMIT_SUBTRACT_MALLOC
60 bool "SPL image size check: provide space for malloc() pool before relocation"
61 depends on SPL_SIZE_LIMIT > 0
62 help
63 If enabled, SPL_SYS_MALLOC_F_LEN is reserved in SPL_SIZE_LIMIT check
64 to ensure such an image does not overflow SRAM if SPL_SIZE_LIMIT
65 describes the size of SRAM available for SPL when pre-reloc malloc
66 pool is put into this SRAM, too.
67
68config SPL_SIZE_LIMIT_PROVIDE_STACK
69 hex "SPL image size check: provide stack space before relocation"
70 depends on SPL_SIZE_LIMIT > 0
71 default 0
72 help
73 If set, this size is reserved in SPL_SIZE_LIMIT check to ensure such
74 an image does not overflow SRAM if SPL_SIZE_LIMIT describes the size
75 of SRAM available for SPL when the stack required before reolcation
76 uses this SRAM, too.
77
Tom Riniabb0f522022-05-16 17:20:26 -040078config SPL_MAX_SIZE
79 hex "Maximum size of the SPL image, excluding BSS"
80 default 0x30000 if ARCH_MX6 && MX6_OCRAM_256KB
81 default 0x1b000 if AM33XX && !TI_SECURE_DEVICE
82 default 0x10000 if ARCH_MX6 && !MX6_OCRAM_256KB
83 default 0x7fa0 if SUNXI_SRAM_ADDRESS = 0x10000
84 default 0x7fa0 if SUNXI_SRAM_ADDRESS = 0x20000 && !MACH_SUN50I_H616
85 default 0x7000 if RCAR_GEN3
86 default 0x5fa0 if SUNXI_SRAM_ADDRESS = 0x0
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
93config 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
Tom Rini65aa1242022-05-27 10:19:45 -0400108config 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
112
113config 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
Tom Rini0cb89e72022-05-19 15:09:22 -0400123choice
124 prompt "Enforce SPL BSS limit"
125 depends on SPL && !PPC
126 default SPL_BSS_LIMIT
127 help
128 In some platforms we only want to enforce a limit on the size of the
129 BSS in memory. On other platforms we need to enforce a limit on the
130 whole of the memory allocation as we're strictly limited to a small
131 typically non-DRAM location. Finally, other platforms do not enforce
132 a memory limit within SPL.
133
134config SPL_NO_BSS_LIMIT
135 bool "Do not enforce a build time limit on the size of the BSS"
136
137config SPL_BSS_LIMIT
138 bool "Enforce a limit on the size of the BSS only"
139
140config SPL_FOOTPRINT_LIMIT
141 bool "Enforce a limit on the whole of memory allocated to SPL, BSS included"
142
143endchoice
144
145config SPL_BSS_MAX_SIZE
146 hex "Maximum size in memory allocated to the SPL BSS"
147 depends on SPL_BSS_LIMIT
148 default 0x100000 if ARCH_MX6 || RISCV
149 default 0x80000 if ARCH_OMAP2PLUS || ARCH_SUNXI
150 help
151 When non-zero, the linker checks that the actual memory used by SPL
152 from __bss_start to __bss_end does not exceed it.
153
154config SPL_MAX_FOOTPRINT
155 hex "Maximum size in memory allocated to the SPL, BSS included"
156 depends on SPL_FOOTPRINT_LIMIT
157 help
158 When non-zero, the linker checks that the actual memory used by SPL
159 from _start to __bss_end does not exceed it.
160
Simon Goldschmidt0b820852019-07-16 22:30:36 +0200161config SPL_SYS_STACK_F_CHECK_BYTE
162 hex
163 default 0xaa
164 help
165 Constant used to check the stack
166
167config SPL_SYS_REPORT_STACK_F_USAGE
168 depends on SPL_SIZE_LIMIT_PROVIDE_STACK != 0
169 bool "Check and report stack usage in SPL before relocation"
170 help
171 If this option is enabled, the initial SPL stack is filled with 0xaa
172 very early, up to the size configured with
173 SPL_SIZE_LIMIT_PROVIDE_STACK.
174 Later when SPL is done using this initial stack and switches to a
175 stack in DRAM, the actually used size of this initial stack is
176 reported by examining the memory and searching for the lowest
177 occurrence of non 0xaa bytes.
178 This default implementation works for stacks growing down only.
179
Simon Glass58254e02021-07-05 16:32:57 -0600180config SPL_SHOW_ERRORS
181 bool "Show more information when something goes wrong"
182 help
183 This enabled more verbose error messages and checking when something
184 goes wrong in SPL. For example, it shows the error code when U-Boot
185 cannot be located. This can help to diagnose the problem and figure
186 out a fix, particularly during development.
187
188 This adds a small amount to SPL code size, perhaps 100 bytes.
189
Simon Glass02b87002022-02-08 11:49:48 -0700190config SPL_BINMAN_SYMBOLS
191 bool "Declare binman symbols in SPL"
192 depends on SPL_FRAMEWORK && BINMAN
193 default y
194 help
195 This enables use of symbols in SPL which refer to U-Boot, enabling SPL
196 to obtain the location of U-Boot simply by calling spl_get_image_pos()
197 and spl_get_image_size().
198
199 For this to work, you must have a U-Boot image in the binman image, so
200 binman can update SPL with the location of it.
201
Alison Wangb846d182019-12-04 06:21:55 +0000202menu "PowerPC and LayerScape SPL Boot options"
Tom Rinie5678e42019-06-01 14:20:25 -0400203
204config SPL_NAND_BOOT
205 bool "Load SPL from NAND flash"
Alison Wangb846d182019-12-04 06:21:55 +0000206 depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
Tom Rinie5678e42019-06-01 14:20:25 -0400207
208config SPL_MMC_BOOT
209 bool "Load SPL from SD Card / eMMC"
Alison Wangb846d182019-12-04 06:21:55 +0000210 depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
Tom Rinie5678e42019-06-01 14:20:25 -0400211
212config SPL_SPI_BOOT
213 bool "Load SPL from SPI flash"
Alison Wangb846d182019-12-04 06:21:55 +0000214 depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
Tom Rinie5678e42019-06-01 14:20:25 -0400215
216config SPL_FSL_PBL
217 bool "Create SPL in Freescale PBI format"
Alison Wangb846d182019-12-04 06:21:55 +0000218 depends on (PPC || ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && \
219 SUPPORT_SPL
Tom Rinie5678e42019-06-01 14:20:25 -0400220 help
221 Create boot binary having SPL binary in PBI format concatenated with
222 u-boot binary.
223
Tom Rini17845c52022-05-21 11:26:27 -0400224config SPL_SYS_CCSR_DO_NOT_RELOCATE
225 bool "Ensures that CCSR is not relocated"
226 depends on PPC
227 help
228 If this is defined, then CONFIG_SYS_CCSRBAR_PHYS will be forced to a
229 value that ensures that CCSR is not relocated.
230
231config TPL_SYS_CCSR_DO_NOT_RELOCATE
232 def_bool y
233 depends on SPL_SYS_CCSR_DO_NOT_RELOCATE
234
Tom Rinie5678e42019-06-01 14:20:25 -0400235endmenu
236
Tom Rini6de36a72022-05-26 16:59:30 -0400237menu "PowerPC SPL / TPL specific options"
238 depends on PPC && (SPL && !SPL_FRAMEWORK)
Tom Rini6b15c162022-05-13 12:26:35 -0400239
240config SPL_INIT_MINIMAL
241 bool "Arch init code will be built for a very small image"
242
243config SPL_FLUSH_IMAGE
244 bool "Clean dcache and invalidate icache after loading the image"
245
246config SPL_SKIP_RELOCATE
247 bool "Skip relocating SPL"
248
Tom Rini6de36a72022-05-26 16:59:30 -0400249config SPL_RELOC_TEXT_BASE
250 hex "Address to relocate SPL to"
251 default SPL_TEXT_BASE
252 help
253 If unspecified, this is equal to CONFIG_SPL_TEXT_BASE (i.e. no
254 relocation is done).
255
256config SPL_RELOC_STACK
257 hex "Address of the start of the stack SPL will use after relocation."
258 help
259 If unspecified, this is equal to CONFIG_SYS_SPL_MALLOC_START. Starting
260 address of the malloc pool used in SPL. When this option is set the full
261 malloc is used in SPL and it is set up by spl_init() and before that, the
262 simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
263
264config SPL_RELOC_MALLOC
265 bool "SPL has malloc pool after relocation"
266
267config SPL_RELOC_MALLOC_ADDR
268 hex "Address of malloc pool in SPL"
269 depends on SPL_RELOC_MALLOC
270
271config SPL_RELOC_MALLOC_SIZE
272 hex "Size of malloc pool in SPL"
273 depends on SPL_RELOC_MALLOC
274
275config TPL_RELOC_TEXT_BASE
276 hex "Address to relocate TPL to"
277 depends on TPL
278 default TPL_TEXT_BASE
279 help
280 If unspecified, this is equal to CONFIG_TPL_TEXT_BASE (i.e. no
281 relocation is done).
282
283config TPL_RELOC_STACK
284 hex "Address of the start of the stack TPL will use after relocation."
285 depends on TPL
286 help
287 If unspecified, this is equal to CONFIG_SYS_TPL_MALLOC_START. Starting
288 address of the malloc pool used in TPL. When this option is set the full
289 malloc is used in TPL and it is set up by spl_init() and before that, the
290 simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
291
292config TPL_RELOC_MALLOC
293 bool "TPL has malloc pool after relocation"
294 depends on TPL
295
296config TPL_RELOC_MALLOC_ADDR
297 hex "Address of malloc pool in TPL"
298 depends on TPL_RELOC_MALLOC
299
300config TPL_RELOC_MALLOC_SIZE
301 hex "Size of malloc pool in TPL"
302 depends on TPL_RELOC_MALLOC
303
Tom Rini6b15c162022-05-13 12:26:35 -0400304endmenu
305
Simon Glasse14f1a22018-11-15 18:44:09 -0700306config HANDOFF
307 bool "Pass hand-off information from SPL to U-Boot proper"
Ovidiu Panaitf97049f2020-11-28 10:43:19 +0200308 depends on SPL && BLOBLIST
Simon Glasse14f1a22018-11-15 18:44:09 -0700309 help
310 It is useful to be able to pass information from SPL to U-Boot
311 proper to preserve state that is known in SPL and is needed in U-Boot.
312 Enable this to locate the handoff information in U-Boot proper, early
313 in boot. It is available in gd->handoff. The state state is set up
314 in SPL (or TPL if that is being used).
315
Tom Rini3c82f982017-05-22 19:21:57 +0000316if SPL
317
Simon Glasse14f1a22018-11-15 18:44:09 -0700318config SPL_HANDOFF
319 bool "Pass hand-off information from SPL to U-Boot proper"
Simon Glass540ee8d2019-09-25 08:11:17 -0600320 depends on HANDOFF && SPL_BLOBLIST
Simon Glasse14f1a22018-11-15 18:44:09 -0700321 default y
322 help
323 This option enables SPL to write handoff information. This can be
324 used to pass information like the size of SDRAM from SPL to U-Boot
325 proper. Also SPL can receive information from TPL in the same place
326 if that is enabled.
327
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +0200328config SPL_LDSCRIPT
329 string "Linker script for the SPL stage"
Tom Rini067b9ff2020-03-11 18:11:11 -0400330 default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +0200331 help
332 The SPL stage will usually require a different linker-script
333 (as it runs from a different memory region) than the regular
334 U-Boot stage. Set this to the path of the linker-script to
335 be used for SPL.
336
Simon Goldschmidtcc4078c2018-09-30 14:31:53 +0200337config SPL_TEXT_BASE
338 hex "SPL Text Base"
339 default ISW_ENTRY_ADDR if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
Andre Przywarad38c8ad2019-05-27 01:45:11 +0100340 default 0x10060 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN9I
Jernej Skrabecda8ae612021-01-11 21:11:34 +0100341 default 0x20060 if SUN50I_GEN_H6
Andre Przywarad38c8ad2019-05-27 01:45:11 +0100342 default 0x00060 if ARCH_SUNXI
Michal Simekad336ea2019-09-11 08:49:31 +0200343 default 0xfffc0000 if ARCH_ZYNQMP
Simon Goldschmidtcc4078c2018-09-30 14:31:53 +0200344 default 0x0
345 help
346 The address in memory that SPL will be running from.
347
Ley Foon Tan48fcc4a2017-05-03 17:13:32 +0800348config SPL_BOARD_INIT
Ley Foon Tan48fcc4a2017-05-03 17:13:32 +0800349 bool "Call board-specific initialization in SPL"
350 help
351 If this option is enabled, U-Boot will call the function
352 spl_board_init() from board_init_r(). This function should be
353 provided by the board.
354
Simon Glasse7ca7da2022-04-30 00:56:53 -0600355config VPL_BOARD_INIT
356 bool "Call board-specific initialization in VPL"
357 help
358 If this option is enabled, U-Boot will call the function
359 spl_board_init() from board_init_r(). This function should be
360 provided by the board.
361
Philipp Tomsich83ad7022017-06-22 23:38:36 +0200362config SPL_BOOTROM_SUPPORT
Michal Simek0606f9e2021-05-20 13:08:44 +0200363 bool "Support returning to the BOOTROM"
Philipp Tomsich83ad7022017-06-22 23:38:36 +0200364 help
365 Some platforms (e.g. the Rockchip RK3368) provide support in their
366 ROM for loading the next boot-stage after performing basic setup
367 from the SPL stage.
368
369 Enable this option, to return to the BOOTROM through the
370 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
371 boot device list, if not implemented for a given board)
372
Lukasz Majewski97c995d2018-05-02 16:10:50 +0200373config SPL_BOOTCOUNT_LIMIT
374 bool "Support bootcount in SPL"
Philippe Reynes8d82a202020-12-11 19:56:47 +0100375 depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
Lukasz Majewski97c995d2018-05-02 16:10:50 +0200376 help
377 On some boards, which use 'falcon' mode, it is necessary to check
378 and increment the number of boot attempts. Such boards do not
379 use proper U-Boot for normal boot flow and hence needs those
380 adjustments to be done in the SPL.
381
Andrew F. Davisb4be3c32017-02-16 11:18:38 -0600382config SPL_RAW_IMAGE_SUPPORT
383 bool "Support SPL loading and booting of RAW images"
Simon Glass081a45a2021-08-08 12:20:17 -0600384 default n if (ARCH_MX6 && (SPL_MMC || SPL_SATA))
Andrew Davis4c1f4762022-05-04 15:52:26 -0500385 default y
386 depends on !TI_SECURE_DEVICE
Andrew F. Davisb4be3c32017-02-16 11:18:38 -0600387 help
388 SPL will support loading and booting a RAW image when this option
389 is y. If this is not set, SPL will move on to other available
390 boot media to find a suitable image.
391
Andrew Davis360ec6a2022-05-04 15:52:25 -0500392config SPL_LEGACY_IMAGE_FORMAT
Andrew F. Davis74630342017-02-16 11:18:39 -0600393 bool "Support SPL loading and booting of Legacy images"
Andrew Davis4c1f4762022-05-04 15:52:26 -0500394 default y if !SPL_LOAD_FIT
395 depends on !TI_SECURE_DEVICE
Andrew F. Davis74630342017-02-16 11:18:39 -0600396 help
397 SPL will support loading and booting Legacy images when this option
398 is y. If this is not set, SPL will move on to other available
399 boot media to find a suitable image.
400
Simon Goldschmidt17140472019-02-10 21:34:37 +0100401config SPL_LEGACY_IMAGE_CRC_CHECK
402 bool "Check CRC of Legacy images"
Andrew Davis360ec6a2022-05-04 15:52:25 -0500403 depends on SPL_LEGACY_IMAGE_FORMAT
Simon Glassefc12232021-07-14 17:05:32 -0500404 select SPL_CRC32
Simon Goldschmidt17140472019-02-10 21:34:37 +0100405 help
406 Enable this to check the CRC of Legacy images. While this increases
407 reliability, it affects both code size and boot duration.
408 If disabled, Legacy images are booted if the image magic and size
409 are correct, without further integrity checks.
410
Simon Glassffe19762016-09-12 23:18:22 -0600411config SPL_SYS_MALLOC_SIMPLE
412 bool
Simon Glassffe19762016-09-12 23:18:22 -0600413 prompt "Only use malloc_simple functions in the SPL"
414 help
415 Say Y here to only use the *_simple malloc functions from
416 malloc_simple.c, rather then using the versions from dlmalloc.c;
417 this will make the SPL binary smaller at the cost of more heap
418 usage as the *_simple malloc functions do not re-use free-ed mem.
419
Philipp Tomsich0c8e75c2017-06-30 18:57:25 +0200420config TPL_SYS_MALLOC_SIMPLE
421 bool
422 prompt "Only use malloc_simple functions in the TPL"
Adam Ford43a1e2d2019-08-13 14:32:30 -0500423 depends on TPL
Philipp Tomsich0c8e75c2017-06-30 18:57:25 +0200424 help
425 Say Y here to only use the *_simple malloc functions from
426 malloc_simple.c, rather then using the versions from dlmalloc.c;
427 this will make the TPL binary smaller at the cost of more heap
428 usage as the *_simple malloc functions do not re-use free-ed mem.
429
Tom Rini8a14ac42022-05-26 13:13:21 -0400430config SPL_SHARES_INIT_SP_ADDR
431 bool "SPL and U-Boot use the same initial stack pointer location"
432 depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
Tom Rinied83ed92022-05-26 13:46:32 -0400433 default n if ARCH_SUNXI || ARCH_MX6 || ARCH_MX7
Tom Rini8a14ac42022-05-26 13:13:21 -0400434 default y
435 help
436 In many cases, we can use the same initial stack pointer address for
437 both SPL and U-Boot itself. If you need to specify a different address
438 however, say N here and then set a different value in CONFIG_SPL_STACK.
439
440config SPL_STACK
441 hex "Initial stack pointer location"
442 depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
443 depends on !SPL_SHARES_INIT_SP_ADDR
Tom Rinied83ed92022-05-26 13:46:32 -0400444 default 0x946bb8 if ARCH_MX7
Tom Rini55242432022-05-26 13:36:17 -0400445 default 0x93ffb8 if ARCH_MX6 && MX6_OCRAM_256KB
446 default 0x91ffb8 if ARCH_MX6 && !MX6_OCRAM_256KB
Tom Rini8a14ac42022-05-26 13:13:21 -0400447 help
448 Address of the start of the stack SPL will use before SDRAM is
449 initialized.
450
Simon Glassffe19762016-09-12 23:18:22 -0600451config SPL_STACK_R
Simon Glassffe19762016-09-12 23:18:22 -0600452 bool "Enable SDRAM location for SPL stack"
453 help
454 SPL starts off execution in SRAM and thus typically has only a small
455 stack available. Since SPL sets up DRAM while in its board_init_f()
456 function, it is possible for the stack to move there before
457 board_init_r() is reached. This option enables a special SDRAM
458 location for the SPL stack. U-Boot SPL switches to this after
459 board_init_f() completes, and before board_init_r() starts.
460
461config SPL_STACK_R_ADDR
462 depends on SPL_STACK_R
463 hex "SDRAM location for SPL stack"
Tom Rinic37e0cf2017-09-17 11:44:49 -0400464 default 0x82000000 if ARCH_OMAP2PLUS
Simon Glassffe19762016-09-12 23:18:22 -0600465 help
466 Specify the address in SDRAM for the SPL stack. This will be set up
467 before board_init_r() is called.
468
469config SPL_STACK_R_MALLOC_SIMPLE_LEN
470 depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
471 hex "Size of malloc_simple heap after switching to DRAM SPL stack"
472 default 0x100000
473 help
474 Specify the amount of the stack to use as memory pool for
475 malloc_simple after switching the stack to DRAM. This may be set
476 to give board_init_r() a larger heap then the initial heap in
477 SRAM which is limited to SYS_MALLOC_F_LEN bytes.
478
479config SPL_SEPARATE_BSS
Simon Glassffe19762016-09-12 23:18:22 -0600480 bool "BSS section is in a different memory region from text"
481 help
482 Some platforms need a large BSS region in SPL and can provide this
483 because RAM is already set up. In this case BSS can be moved to RAM.
484 This option should then be enabled so that the correct device tree
485 location is used. Normally we put the device tree at the end of BSS
486 but with this option enabled, it goes at _image_binary_end.
487
Simon Glass5b21b342021-03-15 17:25:35 +1300488config SPL_READ_ONLY
489 bool
490 depends on SPL_OF_PLATDATA
491 # Bind cannot be supported because the udevice structs are in read-only
492 # memory so we cannot update the linked lists.
493 select SPL_OF_PLATDATA_NO_BIND
494 select SPL_OF_PLATDATA_RT
495 help
496 Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
497 section of memory. This means that of-platdata must make a copy (in
498 writeable memory) of anything it wants to modify, such as
499 device-private data.
500
Simon Glass7eec8842022-04-30 00:56:52 -0600501config TPL_SEPARATE_BSS
502 bool "BSS section is in a different memory region from text"
503 default y if SPL_SEPARATE_BSS
504 help
505 Some platforms need a large BSS region in TPL and can provide this
506 because RAM is already set up. In this case BSS can be moved to RAM.
507 This option should then be enabled so that the correct device tree
508 location is used. Normally we put the device tree at the end of BSS
509 but with this option enabled, it goes at _image_binary_end.
510
Simon Glass6324cce2018-11-15 18:43:57 -0700511config SPL_BANNER_PRINT
512 bool "Enable output of the SPL banner 'U-Boot SPL ...'"
513 default y
514 help
515 If this option is enabled, SPL will print the banner with version
Thomas Hebbfd37f242019-11-13 18:18:03 -0800516 info. Disabling this option could be useful to reduce SPL boot time
Simon Glass6324cce2018-11-15 18:43:57 -0700517 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
518
519config TPL_BANNER_PRINT
520 bool "Enable output of the TPL banner 'U-Boot TPL ...'"
Adam Ford43a1e2d2019-08-13 14:32:30 -0500521 depends on TPL
Simon Glass6324cce2018-11-15 18:43:57 -0700522 default y
Anatolij Gustschin6fe74d22018-01-25 18:45:22 +0100523 help
Thomas Hebbfd37f242019-11-13 18:18:03 -0800524 If this option is enabled, TPL will print the banner with version
525 info. Disabling this option could be useful to reduce TPL boot time
Simon Glass6324cce2018-11-15 18:43:57 -0700526 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
Anatolij Gustschin6fe74d22018-01-25 18:45:22 +0100527
Andreas Dannenbergaa4ad4b2019-06-04 17:55:45 -0500528config SPL_EARLY_BSS
529 depends on ARM && !ARM64
530 bool "Allows initializing BSS early before entering board_init_f"
531 help
532 On some platform we have sufficient memory available early on to
533 allow setting up and using a basic BSS prior to entering
534 board_init_f. Activating this option will also de-activate the
535 clearing of BSS during the SPL relocation process, thus allowing
536 to carry state from board_init_f to board_init_r by way of BSS.
537
Simon Glassf481ab12016-09-24 18:19:56 -0600538config SPL_DISPLAY_PRINT
Simon Glassf481ab12016-09-24 18:19:56 -0600539 bool "Display a board-specific message in SPL"
540 help
541 If this option is enabled, U-Boot will call the function
542 spl_display_print() immediately after displaying the SPL console
543 banner ("U-Boot SPL ..."). This function should be provided by
544 the board.
545
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200546config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
547 bool "MMC raw mode: by sector"
Fabio Estevam22a1fab2018-06-11 15:08:05 -0300548 default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
549 ARCH_MX6 || ARCH_MX7 || \
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200550 ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \
551 ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
Bin Menge9ead4a2021-03-17 11:10:58 +0800552 OMAP44XX || OMAP54XX || AM33XX || AM43XX || \
Green Wan2e5da522021-05-27 06:52:13 -0700553 TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200554 help
555 Use sector number for specifying U-Boot location on MMC/SD in
556 raw mode.
557
558config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
559 hex "Address on the MMC to load U-Boot from"
Tom Rini3c82f982017-05-22 19:21:57 +0000560 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
Andre Przywarad42cbee2021-01-11 21:11:39 +0100561 default 0x40 if ARCH_SUNXI
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200562 default 0x75 if ARCH_DAVINCI
Fabio Estevam22a1fab2018-06-11 15:08:05 -0300563 default 0x8a if ARCH_MX6 || ARCH_MX7
Kever Yang6cc131d2017-11-02 15:16:34 +0800564 default 0x100 if ARCH_UNIPHIER
Pali Rohárcf97b822021-07-23 11:14:29 +0200565 default 0x0 if ARCH_MVEBU
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200566 default 0x200 if ARCH_SOCFPGA || ARCH_AT91
567 default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
Lokesh Vutla9bdec002018-08-27 15:57:08 +0530568 OMAP54XX || AM33XX || AM43XX || ARCH_K3
Kever Yang6cc131d2017-11-02 15:16:34 +0800569 default 0x4000 if ARCH_ROCKCHIP
Green Wan2e5da522021-05-27 06:52:13 -0700570 default 0x822 if TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
Semen Protsenko7e3ba482016-11-16 19:19:05 +0200571 help
572 Address on the MMC to load U-Boot from, when the MMC is being used
573 in raw mode. Units: MMC sectors (1 sector = 512 bytes).
574
Baruch Siachfef81be2020-01-15 09:08:08 +0200575config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
576 hex "U-Boot main hardware partition image offset"
577 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
Andre Przywarad42cbee2021-01-11 21:11:39 +0100578 default 0x10 if ARCH_SUNXI
Baruch Siachfef81be2020-01-15 09:08:08 +0200579 default 0x0
580 help
581 On some platforms SPL location depends on hardware partition. The ROM
582 code skips the MBR sector when loading SPL from main hardware data
583 partition. This adds offset to the main U-Boot image. Set this symbol
584 to the number of skipped sectors.
585
586 If unsure, leave the default.
587
Dalon Westergreenf5ba9852017-02-10 17:15:35 -0800588config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
589 bool "MMC Raw mode: by partition"
Dalon Westergreenf5ba9852017-02-10 17:15:35 -0800590 help
591 Use a partition for loading U-Boot when using MMC/SD in raw mode.
592
593config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
594 hex "Partition to use to load U-Boot from"
Tom Rini3c82f982017-05-22 19:21:57 +0000595 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
Dalon Westergreenf5ba9852017-02-10 17:15:35 -0800596 default 1
597 help
598 Partition on the MMC to load U-Boot from when the MMC is being
599 used in raw mode
600
Dalon Westergreen8d770f42017-02-10 17:15:34 -0800601config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
602 bool "MMC raw mode: by partition type"
Tom Rini3c82f982017-05-22 19:21:57 +0000603 depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
Dalon Westergreen8d770f42017-02-10 17:15:34 -0800604 help
605 Use partition type for specifying U-Boot partition on MMC/SD in
606 raw mode. U-Boot will be loaded from the first partition of this
607 type to be found.
608
609config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
610 hex "Partition Type on the MMC to load U-Boot from"
Tom Rini3c82f982017-05-22 19:21:57 +0000611 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
Dalon Westergreen8d770f42017-02-10 17:15:34 -0800612 help
613 Partition Type on the MMC to load U-Boot from, when the MMC is being
614 used in raw mode.
615
Anatolij Gustschin137b8732019-10-18 21:38:33 +0200616config SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
617 bool "Override eMMC EXT_CSC_PART_CONFIG by user defined partition"
618 depends on SUPPORT_EMMC_BOOT
619 help
620 eMMC boot partition is normally configured by the bits of the EXT_CSD
621 register (EXT_CSC_PART_CONFIG), BOOT_PARTITION_ENABLE field. In some
622 cases it might be required in SPL to load the image from different
623 partition than the partition selected by EXT_CSC_PART_CONFIG register.
624 Enable this option if you intend to use an eMMC boot partition other
625 then selected via EXT_CSC_PART_CONFIG register and specify the custom
626 partition number by the CONFIG_SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
627 option.
628
629config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
630 int "Number of the eMMC boot partition to use"
631 depends on SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
632 default 1
633 help
634 eMMC boot partition number to use when the eMMC in raw mode and
635 the eMMC EXT_CSC_PART_CONFIG selection should be overridden in SPL
636 by user defined partition number.
637
Simon Glassefc12232021-07-14 17:05:32 -0500638config SPL_CRC32
Simon Glass1e3911a2016-09-13 07:05:23 -0600639 bool "Support CRC32"
Andrew Davis360ec6a2022-05-04 15:52:25 -0500640 default y if SPL_LEGACY_IMAGE_FORMAT || SPL_EFI_PARTITION
Simon Glass577226c2021-09-25 19:43:24 -0600641 default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
Simon Glass1e3911a2016-09-13 07:05:23 -0600642 help
Simon Goldschmidt17140472019-02-10 21:34:37 +0100643 Enable this to support CRC32 in uImages or FIT images within SPL.
644 This is a 32-bit checksum value that can be used to verify images.
645 For FIT images, this is the least secure type of checksum, suitable
646 for detected accidental image corruption. For secure applications you
647 should consider SHA1 or SHA256.
Simon Glass1e3911a2016-09-13 07:05:23 -0600648
Simon Glasse025c652021-07-14 17:05:33 -0500649config SPL_MD5
Simon Glass1e3911a2016-09-13 07:05:23 -0600650 bool "Support MD5"
651 depends on SPL_FIT
652 help
653 Enable this to support MD5 in FIT images within SPL. An MD5
654 checksum is a 128-bit hash value used to check that the image
655 contents have not been corrupted. Note that MD5 is not considered
656 secure as it is possible (with a brute-force attack) to adjust the
657 image while still retaining the same MD5 hash value. For secure
658 applications where images may be changed maliciously, you should
Reuben Dowle1908fd92020-04-16 17:36:52 +1200659 consider SHA256 or SHA384.
Simon Glass1e3911a2016-09-13 07:05:23 -0600660
Philipp Tomsich4faa0112017-11-24 13:26:03 +0100661config SPL_FIT_IMAGE_TINY
662 bool "Remove functionality from SPL FIT loading to reduce size"
663 depends on SPL_FIT
Jernej Skrabecda8ae612021-01-11 21:11:34 +0100664 default y if MACH_SUN50I || MACH_SUN50I_H5 || SUN50I_GEN_H6
Ye Lid08aeb62018-11-20 10:19:15 +0000665 default y if ARCH_IMX8M
Philipp Tomsich4faa0112017-11-24 13:26:03 +0100666 help
667 Enable this to reduce the size of the FIT image loading code
668 in SPL, if space for the SPL binary is very tight.
669
Samuel Hollande646f512020-10-21 21:12:13 -0500670 This skips the recording of each loaded payload
Philipp Tomsich4faa0112017-11-24 13:26:03 +0100671 (i.e. loadable) into the FDT (modifying the loaded FDT to
672 ensure this information is available to the next image
673 invoked).
674
Simon Glassde3fd532021-08-08 12:20:15 -0600675config SPL_CACHE
Rick Chen8b4ee5f2019-11-14 13:52:26 +0800676 bool "Support CACHE drivers"
677 help
678 Enable CACHE drivers in SPL. These drivers can keep data so that
679 future requests for that data can be served faster. Enable this option
680 to build the drivers in drivers/cache as part of an SPL build.
681
Simon Glass2f002162021-03-15 18:11:18 +1300682config SPL_CPU
Simon Glasseca677f2017-01-16 07:03:29 -0700683 bool "Support CPU drivers"
Simon Glasseca677f2017-01-16 07:03:29 -0700684 help
685 Enable this to support CPU drivers in SPL. These drivers can set
686 up CPUs and provide information about them such as the model and
687 name. This can be useful in SPL since setting up the CPUs earlier
688 may improve boot performance. Enable this option to build the
689 drivers in drivers/cpu as part of an SPL build.
690
Simon Glassa8437ce2021-07-10 21:14:25 -0600691config SPL_CRYPTO
Simon Glass1e3911a2016-09-13 07:05:23 -0600692 bool "Support crypto drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600693 help
694 Enable crypto drivers in SPL. These drivers can be used to
695 accelerate secure boot processing in secure applications. Enable
696 this option to build the drivers in drivers/crypto as part of an
697 SPL build.
698
Vignesh Raghavendra3d2ba9c2019-11-15 17:00:41 +0530699config SPL_DMA
Simon Glass1e3911a2016-09-13 07:05:23 -0600700 bool "Support DMA drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600701 help
702 Enable DMA (direct-memory-access) drivers in SPL. These drivers
703 can be used to handle memory-to-peripheral data transfer without
704 the CPU moving the data. Enable this option to build the drivers
705 in drivers/dma as part of an SPL build.
706
Simon Glass284cb9c2021-07-10 21:14:31 -0600707config SPL_DRIVERS_MISC
Simon Glass1e3911a2016-09-13 07:05:23 -0600708 bool "Support misc drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600709 help
710 Enable miscellaneous drivers in SPL. These drivers perform various
711 tasks that don't fall nicely into other categories, Enable this
712 option to build the drivers in drivers/misc as part of an SPL
713 build, for those that support building in SPL (not all drivers do).
714
715config SPL_ENV_SUPPORT
716 bool "Support an environment"
Simon Glass1e3911a2016-09-13 07:05:23 -0600717 help
718 Enable environment support in SPL. The U-Boot environment provides
719 a number of settings (essentially name/value pairs) which can
720 control many aspects of U-Boot's operation. Normally this is not
721 needed in SPL as it has a much simpler task with less
722 configuration. But some boards use this to support 'Falcon' boot
723 on EXT2 and FAT, where SPL boots directly into Linux without
Simon Glass64b723f2017-08-03 12:22:12 -0600724 starting U-Boot first. Enabling this option will make env_get()
Simon Glass6a38e412017-08-03 12:22:09 -0600725 and env_set() available in SPL.
Simon Glass1e3911a2016-09-13 07:05:23 -0600726
B, Ravie94b0242016-09-28 14:46:18 +0530727config SPL_SAVEENV
728 bool "Support save environment"
Tom Rini3c82f982017-05-22 19:21:57 +0000729 depends on SPL_ENV_SUPPORT
Jean-Jacques Hiblotd0531672018-01-04 15:23:32 +0100730 select SPL_MMC_WRITE if ENV_IS_IN_MMC
B, Ravie94b0242016-09-28 14:46:18 +0530731 help
732 Enable save environment support in SPL after setenv. By default
733 the saveenv option is not provided in SPL, but some boards need
734 this support in 'Falcon' boot, where SPL need to boot from
735 different images based on environment variable set by OS. For
736 example OS may set "reboot_image" environment variable to
737 "recovery" inorder to boot recovery image by SPL. The SPL read
738 "reboot_image" and act accordingly and change the reboot_image
Shyam Sainiefe757c2018-06-07 19:47:19 +0530739 to default mode using setenv and save the environment.
B, Ravie94b0242016-09-28 14:46:18 +0530740
Simon Glasse5cd9a42021-07-10 21:14:26 -0600741config SPL_ETH
Simon Glass1e3911a2016-09-13 07:05:23 -0600742 bool "Support Ethernet"
743 depends on SPL_ENV_SUPPORT
Simon Glass1d926242021-08-08 12:20:31 -0600744 depends on SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -0600745 help
746 Enable access to the network subsystem and associated Ethernet
747 drivers in SPL. This permits SPL to load U-Boot over an Ethernet
748 link rather than from an on-board peripheral. Environment support
749 is required since the network stack uses a number of environment
Simon Glass041a0ac2021-08-08 12:20:30 -0600750 variables. See also SPL_NET.
Simon Glass1e3911a2016-09-13 07:05:23 -0600751
Tien Fong Chee6091dd12019-01-23 14:20:05 +0800752config SPL_FS_EXT4
Simon Glass1e3911a2016-09-13 07:05:23 -0600753 bool "Support EXT filesystems"
Simon Glass1e3911a2016-09-13 07:05:23 -0600754 help
755 Enable support for EXT2/3/4 filesystems with SPL. This permits
756 U-Boot (or Linux in Falcon mode) to be loaded from an EXT
757 filesystem from within SPL. Support for the underlying block
758 device (e.g. MMC or USB) must be enabled separately.
759
Joao Marcos Costa29da3742020-07-30 15:33:47 +0200760config SPL_FS_SQUASHFS
761 bool "Support SquashFS filesystems"
762 select FS_SQUASHFS
763 help
764 Enable support for SquashFS filesystems with SPL. This permits
765 U-Boot (or Linux in Falcon mode) to be loaded from a SquashFS
766 filesystem from within SPL. Support for the underlying block
767 device (e.g. MMC or USB) must be enabled separately.
768
Tien Fong Chee6fd0a712019-01-23 14:20:03 +0800769config SPL_FS_FAT
Simon Glass1e3911a2016-09-13 07:05:23 -0600770 bool "Support FAT filesystems"
Sekhar Nori1909a7b2017-06-02 17:53:59 +0530771 select FS_FAT
Simon Glass1e3911a2016-09-13 07:05:23 -0600772 help
773 Enable support for FAT and VFAT filesystems with SPL. This
774 permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
775 filesystem from within SPL. Support for the underlying block
776 device (e.g. MMC or USB) must be enabled separately.
777
Tom Rinia4f2ab92022-05-13 17:12:35 -0400778config SPL_FS_LOAD_PAYLOAD_NAME
779 string "File to load for U-Boot from the filesystem"
780 depends on SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS
781 default "tispl.bin" if SYS_K3_SPL_ATF
782 default "u-boot.itb" if SPL_LOAD_FIT
783 default "u-boot.img"
784 help
785 Filename to read to load U-Boot when reading from filesystem.
786
787config SPL_FS_LOAD_KERNEL_NAME
788 string "File to load for the OS kernel from the filesystem"
789 depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
790 default "uImage"
791 help
792 Filename to read to load for the OS kernel when reading from the
793 filesystem.
794
795config SPL_FS_LOAD_ARGS_NAME
796 string "File to load for the OS kernel argument parameters from the filesystem"
797 depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
798 default "args"
799 help
800 Filename to read to load for the OS kernel argument parameters from
801 the filesystem.
802
Tien Fong Chee87fda0c2019-01-23 14:20:04 +0800803config SPL_FAT_WRITE
804 bool "Support write for FAT filesystems"
805 help
806 Enable write support for FAT and VFAT filesystems with SPL.
807 Support for the underlying block device (e.g. MMC or USB) must be
808 enabled separately.
809
Michal Simek1aab1142020-09-09 14:41:56 +0200810config SPL_FPGA
Simon Glass1e3911a2016-09-13 07:05:23 -0600811 bool "Support FPGAs"
Simon Glass1e3911a2016-09-13 07:05:23 -0600812 help
813 Enable support for FPGAs in SPL. Field-programmable Gate Arrays
814 provide software-configurable hardware which is typically used to
815 implement peripherals (such as UARTs, LCD displays, MMC) or
816 accelerate custom processing functions, such as image processing
817 or machine learning. Sometimes it is useful to program the FPGA
818 as early as possible during boot, and this option can enable that
819 within SPL.
820
Simon Glass035939e2021-07-10 21:14:30 -0600821config SPL_GPIO
Simon Glass592d5b92018-11-15 18:43:55 -0700822 bool "Support GPIO in SPL"
Simon Glass1e3911a2016-09-13 07:05:23 -0600823 help
824 Enable support for GPIOs (General-purpose Input/Output) in SPL.
825 GPIOs allow U-Boot to read the state of an input line (high or
826 low) and set the state of an output line. This can be used to
827 drive LEDs, control power to various system parts and read user
828 input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
829 for example. Enable this option to build the drivers in
830 drivers/gpio as part of an SPL build.
831
Simon Glassbccfc2e2021-07-10 21:14:36 -0600832config SPL_I2C
Simon Glass1e3911a2016-09-13 07:05:23 -0600833 bool "Support I2C"
Simon Glass1e3911a2016-09-13 07:05:23 -0600834 help
835 Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
836 I2C works with a clock and data line which can be driven by a
837 one or more masters or slaves. It is a fairly complex bus but is
838 widely used as it only needs two lines for communication. Speeds of
839 400kbps are typical but up to 3.4Mbps is supported by some
840 hardware. I2C can be useful in SPL to configure power management
841 ICs (PMICs) before raising the CPU clock speed, for example.
842 Enable this option to build the drivers in drivers/i2c as part of
843 an SPL build.
844
845config SPL_LIBCOMMON_SUPPORT
846 bool "Support common libraries"
Simon Glass1e3911a2016-09-13 07:05:23 -0600847 help
848 Enable support for common U-Boot libraries within SPL. These
849 libraries include common code to deal with U-Boot images,
850 environment and USB, for example. This option is enabled on many
851 boards. Enable this option to build the code in common/ as part of
852 an SPL build.
853
854config SPL_LIBDISK_SUPPORT
Simon Goldschmidt62067052018-08-16 09:44:55 +0200855 bool "Support disk partitions"
Tom Rini1794ae62018-12-05 08:23:38 -0500856 select PARTITIONS
Simon Glass1e3911a2016-09-13 07:05:23 -0600857 help
858 Enable support for disk partitions within SPL. 'Disk' is something
859 of a misnomer as it includes non-spinning media such as flash (as
860 used in MMC and USB sticks). Partitions provide a way for a disk
861 to be split up into separate regions, with a partition table placed
862 at the start or end which describes the location and size of each
863 'partition'. These partitions are typically uses as individual block
864 devices, typically with an EXT2 or FAT filesystem in each. This
865 option enables whatever partition support has been enabled in
866 U-Boot to also be used in SPL. It brings in the code in disk/.
867
868config SPL_LIBGENERIC_SUPPORT
869 bool "Support generic libraries"
Simon Glass1e3911a2016-09-13 07:05:23 -0600870 help
871 Enable support for generic U-Boot libraries within SPL. These
872 libraries include generic code to deal with device tree, hashing,
873 printf(), compression and the like. This option is enabled on many
874 boards. Enable this option to build the code in lib/ as part of an
875 SPL build.
876
Lokesh Vutla2aeb9342018-08-27 15:57:49 +0530877config SPL_DM_MAILBOX
878 bool "Support Mailbox"
879 help
880 Enable support for Mailbox within SPL. This enable the inter
881 processor communication protocols tobe used within SPL. Enable
882 this option to build the drivers in drivers/mailbox as part of
883 SPL build.
884
Simon Glassb58bfe02021-08-08 12:20:09 -0600885config SPL_MMC
Simon Glass1e3911a2016-09-13 07:05:23 -0600886 bool "Support MMC"
Tom Rini3c82f982017-05-22 19:21:57 +0000887 depends on MMC
Tom Rini1794ae62018-12-05 08:23:38 -0500888 select HAVE_BLOCK_DEVICE
Simon Glass1e3911a2016-09-13 07:05:23 -0600889 help
890 Enable support for MMC (Multimedia Card) within SPL. This enables
891 the MMC protocol implementation and allows any enabled drivers to
892 be used within SPL. MMC can be used with or without disk partition
893 support depending on the application (SPL_LIBDISK_SUPPORT). Enable
894 this option to build the drivers in drivers/mmc as part of an SPL
895 build.
896
Adam Ford98a87cf2020-07-03 10:17:30 -0500897config SYS_MMCSD_FS_BOOT_PARTITION
898 int "MMC Boot Partition"
899 default 1
900 help
901 Partition on the MMC to load U-Boot from when the MMC is being
Jérôme Carreterod0a8e592022-03-15 16:34:51 -0400902 used in fs mode.
903 Use -1 as a special value to use the first bootable partition.
Adam Ford98a87cf2020-07-03 10:17:30 -0500904
Ezequiel Garcia66983182019-05-25 19:25:21 -0300905config SPL_MMC_TINY
906 bool "Tiny MMC framework in SPL"
Simon Glassb58bfe02021-08-08 12:20:09 -0600907 depends on SPL_MMC
Ezequiel Garcia66983182019-05-25 19:25:21 -0300908 help
909 Enable MMC framework tinification support. This option is useful if
910 if your SPL is extremely size constrained. Heed the warning, enable
911 this option if and only if you know exactly what you are doing, if
912 you are reading this help text, you most likely have no idea :-)
913
914 The MMC framework is reduced to bare minimum to be useful. No malloc
915 support is needed for the MMC framework operation with this option
916 enabled. The framework supports exactly one MMC device and exactly
917 one MMC driver. The MMC driver can be adjusted to avoid any malloc
918 operations too, which can remove the need for malloc support in SPL
919 and thus further reduce footprint.
920
Jean-Jacques Hiblotd0531672018-01-04 15:23:32 +0100921config SPL_MMC_WRITE
922 bool "MMC/SD/SDIO card support for write operations in SPL"
Simon Glassb58bfe02021-08-08 12:20:09 -0600923 depends on SPL_MMC
Jean-Jacques Hiblotd0531672018-01-04 15:23:32 +0100924 help
925 Enable write access to MMC and SD Cards in SPL
926
927
Simon Glass64571062021-08-08 12:20:16 -0600928config SPL_MPC8XXX_INIT_DDR
Simon Glass1e3911a2016-09-13 07:05:23 -0600929 bool "Support MPC8XXX DDR init"
Simon Glass1e3911a2016-09-13 07:05:23 -0600930 help
931 Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
932 random-access memory) on the MPC8XXX family within SPL. This
933 allows DRAM to be set up before loading U-Boot into that DRAM,
934 where it can run.
935
936config SPL_MTD_SUPPORT
937 bool "Support MTD drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -0600938 help
939 Enable support for MTD (Memory Technology Device) within SPL. MTD
940 provides a block interface over raw NAND and can also be used with
941 SPI flash. This allows SPL to load U-Boot from supported MTD
942 devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
943 to enable specific MTD drivers.
944
Simon Glass762b9972021-07-10 21:14:27 -0600945config SPL_MUSB_NEW
Simon Glass1e3911a2016-09-13 07:05:23 -0600946 bool "Support new Mentor Graphics USB"
Simon Glass1e3911a2016-09-13 07:05:23 -0600947 help
948 Enable support for Mentor Graphics USB in SPL. This is a new
949 driver used by some boards. Enable this option to build
950 the drivers in drivers/usb/musb-new as part of an SPL build. The
951 old drivers are in drivers/usb/musb.
952
953config SPL_NAND_SUPPORT
954 bool "Support NAND flash"
Simon Glass1e3911a2016-09-13 07:05:23 -0600955 help
956 Enable support for NAND (Negative AND) flash in SPL. NAND flash
957 can be used to allow SPL to load U-Boot from supported devices.
Miquel Raynal1f1ae152018-08-16 17:30:07 +0200958 This enables the drivers in drivers/mtd/nand/raw as part of an SPL
Simon Glass1e3911a2016-09-13 07:05:23 -0600959 build.
960
Tom Rini2d03b912022-05-13 12:46:23 -0400961config SPL_NAND_RAW_ONLY
962 bool "Support to boot only raw u-boot.bin images"
963 depends on SPL_NAND_SUPPORT
964 help
965 Use this only if you need to save space.
966
Adam Ford3a383772020-07-03 08:09:44 -0500967config SPL_NAND_DRIVERS
968 bool "Use standard NAND driver"
969 help
970 SPL uses normal NAND drivers, not minimal drivers.
971
972config SPL_NAND_ECC
Tom Rini2d03b912022-05-13 12:46:23 -0400973 bool "Include standard ECC in SPL"
974
975config SPL_NAND_SOFTECC
976 bool "Use software ECC in SPL"
977 depends on SPL_NAND_ECC
Adam Ford3a383772020-07-03 08:09:44 -0500978
979config SPL_NAND_SIMPLE
980 bool "Support simple NAND drivers in SPL"
981 help
982 Support for NAND boot using simple NAND drivers that
983 expose the cmd_ctrl() interface.
984
Adam Ford5e56ad02020-07-03 08:09:45 -0500985config SPL_NAND_BASE
986 depends on SPL_NAND_DRIVERS
987 bool "Use Base NAND Driver"
Michal Simek0606f9e2021-05-20 13:08:44 +0200988 help
989 Include nand_base.c in the SPL.
Adam Ford5e56ad02020-07-03 08:09:45 -0500990
991config SPL_NAND_IDENT
992 depends on SPL_NAND_BASE
993 bool "Use chip ID to identify NAND flash"
994 help
995 SPL uses the chip ID list to identify the NAND flash.
996
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +0200997config SPL_UBI
998 bool "Support UBI"
999 help
1000 Enable support for loading payloads from UBI. See
1001 README.ubispl for more info.
1002
Lukasz Majewski7766ce02019-09-09 12:06:46 +02001003if SPL_DM
1004config SPL_DM_SPI
1005 bool "Support SPI DM drivers in SPL"
1006 help
1007 Enable support for SPI DM drivers in SPL.
1008
Lukasz Majewski76f442982020-06-04 23:11:53 +08001009config SPL_DM_SPI_FLASH
1010 bool "Support SPI DM FLASH drivers in SPL"
1011 help
1012 Enable support for SPI DM flash drivers in SPL.
1013
Lukasz Majewski7766ce02019-09-09 12:06:46 +02001014endif
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001015if SPL_UBI
Hamish Guthrie3ce740d2019-05-15 15:15:59 +02001016config SPL_UBI_LOAD_BY_VOLNAME
1017 bool "Support loading volumes by name"
1018 help
1019 This enables support for loading UBI volumes by name. When this
1020 is set, CONFIG_SPL_UBI_LOAD_MONITOR_VOLNAME can be used to
1021 configure the volume name from which to load U-Boot.
1022
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001023config SPL_UBI_MAX_VOL_LEBS
1024 int "Maximum number of LEBs per volume"
1025 depends on SPL_UBI
1026 help
1027 The maximum number of logical eraseblocks which a static volume
1028 to load can contain. Used for sizing the scan data structure.
1029
1030config SPL_UBI_MAX_PEB_SIZE
1031 int "Maximum PEB size"
1032 depends on SPL_UBI
1033 help
1034 The maximum physical erase block size.
1035
1036config SPL_UBI_MAX_PEBS
1037 int "Maximum number of PEBs"
1038 depends on SPL_UBI
1039 help
1040 The maximum physical erase block size. If not overridden by
1041 board code, this value will be used as the actual number of PEBs.
1042
1043config SPL_UBI_PEB_OFFSET
1044 int "Offset to first UBI PEB"
1045 depends on SPL_UBI
1046 help
1047 The offset in number of PEBs from the start of flash to the first
1048 PEB part of the UBI image.
1049
1050config SPL_UBI_VID_OFFSET
1051 int "Offset to VID header"
1052 depends on SPL_UBI
1053
1054config SPL_UBI_LEB_START
1055 int "Offset to LEB in PEB"
1056 depends on SPL_UBI
1057 help
1058 The offset in bytes to the LEB within a PEB.
1059
1060config SPL_UBI_INFO_ADDR
1061 hex "Address to place UBI scan info"
1062 depends on SPL_UBI
1063 help
1064 Address for ubispl to place the scan info. Read README.ubispl to
1065 determine the required size
1066
1067config SPL_UBI_VOL_IDS
1068 int "Maximum volume id"
1069 depends on SPL_UBI
1070 help
1071 The maximum volume id which can be loaded. Used for sizing the
1072 scan data structure.
1073
1074config SPL_UBI_LOAD_MONITOR_ID
1075 int "id of U-Boot volume"
1076 depends on SPL_UBI
1077 help
1078 The UBI volume id from which to load U-Boot
1079
Hamish Guthrie3ce740d2019-05-15 15:15:59 +02001080config SPL_UBI_LOAD_MONITOR_VOLNAME
1081 string "volume name of U-Boot volume"
1082 depends on SPL_UBI_LOAD_BY_VOLNAME
1083 help
1084 The UBI volume name from which to load U-Boot
1085
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001086config SPL_UBI_LOAD_KERNEL_ID
1087 int "id of kernel volume"
1088 depends on SPL_OS_BOOT && SPL_UBI
1089 help
1090 The UBI volume id from which to load the kernel
1091
1092config SPL_UBI_LOAD_ARGS_ID
1093 int "id of kernel args volume"
1094 depends on SPL_OS_BOOT && SPL_UBI
1095 help
1096 The UBI volume id from which to load the device tree
1097
Markus Klotzbuechercfe40f42019-05-15 15:16:00 +02001098config UBI_SPL_SILENCE_MSG
1099 bool "silence UBI SPL messages"
Markus Klotzbuechercfe40f42019-05-15 15:16:00 +02001100 help
1101 Disable messages from UBI SPL. This leaves warnings
1102 and errors enabled.
Markus Klotzbuecherf5aa1762019-05-15 15:15:57 +02001103
1104endif # if SPL_UBI
1105
Simon Glass041a0ac2021-08-08 12:20:30 -06001106config SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -06001107 bool "Support networking"
Simon Glass1e3911a2016-09-13 07:05:23 -06001108 help
1109 Enable support for network devices (such as Ethernet) in SPL.
1110 This permits SPL to load U-Boot over a network link rather than
1111 from an on-board peripheral. Environment support is required since
1112 the network stack uses a number of environment variables. See also
Simon Glasse5cd9a42021-07-10 21:14:26 -06001113 SPL_ETH.
Simon Glass1e3911a2016-09-13 07:05:23 -06001114
Simon Glass041a0ac2021-08-08 12:20:30 -06001115if SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -06001116config SPL_NET_VCI_STRING
1117 string "BOOTP Vendor Class Identifier string sent by SPL"
1118 help
1119 As defined by RFC 2132 the vendor class identifier field can be
1120 sent by the client to identify the vendor type and configuration
1121 of a client. This is often used in practice to allow for the DHCP
1122 server to specify different files to load depending on if the ROM,
1123 SPL or U-Boot itself makes the request
Simon Glass041a0ac2021-08-08 12:20:30 -06001124endif # if SPL_NET
Simon Glass1e3911a2016-09-13 07:05:23 -06001125
1126config SPL_NO_CPU_SUPPORT
1127 bool "Drop CPU code in SPL"
Simon Glass1e3911a2016-09-13 07:05:23 -06001128 help
1129 This is specific to the ARM926EJ-S CPU. It disables the standard
1130 start.S start-up code, presumably so that a replacement can be
1131 used on that CPU. You should not enable it unless you know what
1132 you are doing.
1133
1134config SPL_NOR_SUPPORT
1135 bool "Support NOR flash"
Simon Glass1e3911a2016-09-13 07:05:23 -06001136 help
1137 Enable support for loading U-Boot from memory-mapped NOR (Negative
1138 OR) flash in SPL. NOR flash is slow to write but fast to read, and
1139 a memory-mapped device makes it very easy to access. Loading from
1140 NOR is typically achieved with just a memcpy().
1141
Vikas Manocha9e582652017-05-28 12:55:11 -07001142config SPL_XIP_SUPPORT
1143 bool "Support XIP"
1144 depends on SPL
1145 help
1146 Enable support for execute in place of U-Boot or kernel image. There
1147 is no need to copy image from flash to ram if flash supports execute
1148 in place. Its very useful in systems having enough flash but not
1149 enough ram to load the image.
1150
Simon Glass1e3911a2016-09-13 07:05:23 -06001151config SPL_ONENAND_SUPPORT
1152 bool "Support OneNAND flash"
Simon Glass1e3911a2016-09-13 07:05:23 -06001153 help
1154 Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
1155 a type of NAND flash and therefore can be used to allow SPL to
1156 load U-Boot from supported devices. This enables the drivers in
1157 drivers/mtd/onenand as part of an SPL build.
1158
Heiko Schocher1d12ba22016-10-06 07:55:15 +02001159config SPL_OS_BOOT
1160 bool "Activate Falcon Mode"
Tom Rini3c82f982017-05-22 19:21:57 +00001161 depends on !TI_SECURE_DEVICE
Heiko Schocher1d12ba22016-10-06 07:55:15 +02001162 help
1163 Enable booting directly to an OS from SPL.
1164 for more info read doc/README.falcon
1165
Heiko Schocher65928932016-10-06 07:55:16 +02001166if SPL_OS_BOOT
1167config SYS_OS_BASE
1168 hex "addr, where OS is found"
Tom Rini3c82f982017-05-22 19:21:57 +00001169 depends on SPL_NOR_SUPPORT
Heiko Schocher65928932016-10-06 07:55:16 +02001170 help
1171 Specify the address, where the OS image is found, which
1172 gets booted.
1173
1174endif # SPL_OS_BOOT
1175
Alexandru Gagniuc99426c82021-12-30 10:39:59 -06001176config SPL_FALCON_BOOT_MMCSD
1177 bool "Enable Falcon boot from MMC or SD media"
1178 depends on SPL_OS_BOOT && SPL_MMC
1179 help
1180 Select this if the Falcon mode OS image mode is on MMC or SD media.
1181
1182config SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
1183 hex "Falcon mode: Sector to load kernel uImage from MMC"
1184 depends on SPL_FALCON_BOOT_MMCSD
1185 help
1186 When Falcon mode is used with an MMC or SD media, SPL needs to know
1187 where to look for the kernel uImage. The image is expected to begin
1188 at the raw MMC specified in this config.
1189 Note that the Falcon mode image can also be a FIT, if FIT support is
1190 enabled.
1191
York Sun53492672018-06-14 14:38:48 -07001192config SPL_PAYLOAD
1193 string "SPL payload"
1194 default "tpl/u-boot-with-tpl.bin" if TPL
1195 default "u-boot.bin"
1196 help
Chris Packham37bc3162019-01-13 22:13:20 +13001197 Payload for SPL boot. For backward compatibility, default to
York Sun53492672018-06-14 14:38:48 -07001198 u-boot.bin, i.e. RAW image without any header. In case of
1199 TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
1200 use u-boot.img.
1201
Sekhar Nori9108d922018-12-06 15:40:08 +05301202config SPL_PCI
Simon Glass6569f3a2017-01-16 07:03:30 -07001203 bool "Support PCI drivers"
Simon Glass6569f3a2017-01-16 07:03:30 -07001204 help
1205 Enable support for PCI in SPL. For platforms that need PCI to boot,
1206 or must perform some init using PCI in SPL, this provides the
1207 necessary driver support. This enables the drivers in drivers/pci
1208 as part of an SPL build.
1209
Simon Glassff67f232021-08-08 12:20:10 -06001210config SPL_PCH
Simon Glass36258a52017-01-16 07:03:33 -07001211 bool "Support PCH drivers"
Simon Glass36258a52017-01-16 07:03:33 -07001212 help
1213 Enable support for PCH (Platform Controller Hub) devices in SPL.
1214 These are used to set up GPIOs and the SPI peripheral early in
1215 boot. This enables the drivers in drivers/pch as part of an SPL
1216 build.
1217
Simon Glass1e3911a2016-09-13 07:05:23 -06001218config SPL_POST_MEM_SUPPORT
1219 bool "Support POST drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -06001220 help
1221 Enable support for POST (Power-on Self Test) in SPL. POST is a
1222 procedure that checks that the hardware (CPU or board) appears to
1223 be functionally correctly. It is a sanity check that can be
1224 performed before booting. This enables the drivers in post/drivers
1225 as part of an SPL build.
1226
Ley Foon Tan9caf7122018-06-14 18:45:19 +08001227config SPL_DM_RESET
Patrick Delaunay329827a2018-03-12 10:46:05 +01001228 bool "Support reset drivers"
1229 depends on SPL
1230 help
1231 Enable support for reset control in SPL.
1232 That can be useful in SPL to handle IP reset in driver, as in U-Boot,
1233 by using the generic reset API provided by driver model.
1234 This enables the drivers in drivers/reset as part of an SPL build.
1235
Simon Glasse91ac4c2021-07-10 21:14:24 -06001236config SPL_POWER
Simon Glass1e3911a2016-09-13 07:05:23 -06001237 bool "Support power drivers"
Simon Glass1e3911a2016-09-13 07:05:23 -06001238 help
1239 Enable support for power control in SPL. This includes support
1240 for PMICs (Power-management Integrated Circuits) and some of the
1241 features provided by PMICs. In particular, voltage regulators can
1242 be used to enable/disable power and vary its voltage. That can be
1243 useful in SPL to turn on boot peripherals and adjust CPU voltage
1244 so that the clock speed can be increased. This enables the drivers
1245 in drivers/power, drivers/power/pmic and drivers/power/regulator
1246 as part of an SPL build.
1247
Peng Fan3775fed2018-07-27 10:20:37 +08001248config SPL_POWER_DOMAIN
1249 bool "Support power domain drivers"
Simon Glassa0e44872021-08-08 12:20:29 -06001250 select SPL_POWER
Peng Fan3775fed2018-07-27 10:20:37 +08001251 help
1252 Enable support for power domain control in SPL. Many SoCs allow
1253 power to be applied to or removed from portions of the SoC (power
1254 domains). This may be used to save power. This API provides the
1255 means to control such power management hardware. This enables
1256 the drivers in drivers/power/domain as part of a SPL build.
1257
Stefan Agnercd01e642016-12-23 07:51:53 +01001258config SPL_RAM_SUPPORT
1259 bool "Support booting from RAM"
Trevor Woerner513f6402020-05-06 08:02:41 -04001260 default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
Stefan Agnercd01e642016-12-23 07:51:53 +01001261 help
1262 Enable booting of an image in RAM. The image can be preloaded or
1263 it can be loaded by SPL directly into RAM (e.g. using USB).
1264
Stefan Agnere2eaac12016-12-23 07:51:52 +01001265config SPL_RAM_DEVICE
1266 bool "Support booting from preloaded image in RAM"
Stefan Agnercd01e642016-12-23 07:51:53 +01001267 depends on SPL_RAM_SUPPORT
Trevor Woerner513f6402020-05-06 08:02:41 -04001268 default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
Stefan Agnere2eaac12016-12-23 07:51:52 +01001269 help
1270 Enable booting of an image already loaded in RAM. The image has to
1271 be already in memory when SPL takes over, e.g. loaded by the boot
1272 ROM.
1273
Lokesh Vutla1a6f8e02018-08-27 15:57:53 +05301274config SPL_REMOTEPROC
1275 bool "Support REMOTEPROCS"
1276 help
1277 Enable support for REMOTEPROCs in SPL. This permits to load
1278 a remote processor firmware in SPL.
1279
Simon Glass31985312021-08-08 12:20:11 -06001280config SPL_RTC
Simon Glassb69691b2017-01-16 07:03:31 -07001281 bool "Support RTC drivers"
Simon Glassb69691b2017-01-16 07:03:31 -07001282 help
1283 Enable RTC (Real-time Clock) support in SPL. This includes support
1284 for reading and setting the time. Some RTC devices also have some
1285 non-volatile (battery-backed) memory which is accessible if
1286 needed. This enables the drivers in drivers/rtc as part of an SPL
1287 build.
1288
Simon Glass081a45a2021-08-08 12:20:17 -06001289config SPL_SATA
Simon Glass1e3911a2016-09-13 07:05:23 -06001290 bool "Support loading from SATA"
Simon Glass1e3911a2016-09-13 07:05:23 -06001291 help
1292 Enable support for SATA (Serial AT attachment) in SPL. This allows
1293 use of SATA devices such as hard drives and flash drivers for
1294 loading U-Boot. SATA is used in higher-end embedded systems and
1295 can provide higher performance than MMC , at somewhat higher
1296 expense and power consumption. This enables loading from SATA
1297 using a configured device.
1298
Baruch Siachc9eff6a2019-07-14 17:54:21 +03001299config SPL_SATA_RAW_U_BOOT_USE_SECTOR
1300 bool "SATA raw mode: by sector"
Simon Glass081a45a2021-08-08 12:20:17 -06001301 depends on SPL_SATA
Pali Rohárcf97b822021-07-23 11:14:29 +02001302 default y if ARCH_MVEBU
Baruch Siachc9eff6a2019-07-14 17:54:21 +03001303 help
1304 Use sector number for specifying U-Boot location on SATA disk in
1305 raw mode.
1306
1307config SPL_SATA_RAW_U_BOOT_SECTOR
1308 hex "Sector on the SATA disk to load U-Boot from"
1309 depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
Pali Rohárcf97b822021-07-23 11:14:29 +02001310 default 0x1 if ARCH_MVEBU
Baruch Siachc9eff6a2019-07-14 17:54:21 +03001311 help
1312 Sector on the SATA disk to load U-Boot from, when the SATA disk is being
1313 used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
1314
Simon Glassf4d60392021-08-08 12:20:12 -06001315config SPL_SERIAL
Simon Glass1e3911a2016-09-13 07:05:23 -06001316 bool "Support serial"
Alex Kiernan5b404282018-04-19 04:32:54 +00001317 select SPL_PRINTF
1318 select SPL_STRTO
Simon Glass1e3911a2016-09-13 07:05:23 -06001319 help
1320 Enable support for serial in SPL. This allows use of a serial UART
1321 for displaying messages while SPL is running. It also brings in
1322 printf() and panic() functions. This should normally be enabled
1323 unless there are space reasons not to. Even then, consider
Simon Glass7611ac62019-09-25 08:56:27 -06001324 enabling SPL_USE_TINY_PRINTF which is a small printf() version.
Simon Glass1e3911a2016-09-13 07:05:23 -06001325
Simon Glassa5820472021-08-08 12:20:14 -06001326config SPL_SPI
Simon Goldschmidt3a025332019-10-25 16:22:09 +02001327 bool "Support SPI drivers"
1328 help
1329 Enable support for using SPI in SPL. This is used for connecting
1330 to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
1331 more details on that. The SPI driver provides the transport for
1332 data between the SPI flash and the CPU. This option can be used to
1333 enable SPI drivers that are needed for other purposes also, such
1334 as a SPI PMIC.
1335
Simon Glass1e3911a2016-09-13 07:05:23 -06001336config SPL_SPI_FLASH_SUPPORT
1337 bool "Support SPI flash drivers"
Simon Glassa5820472021-08-08 12:20:14 -06001338 depends on SPL_SPI
Simon Glass1e3911a2016-09-13 07:05:23 -06001339 help
1340 Enable support for using SPI flash in SPL, and loading U-Boot from
1341 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
1342 the SPI bus that is used to connect it to a system. It is a simple
1343 but fast bidirectional 4-wire bus (clock, chip select and two data
1344 lines). This enables the drivers in drivers/mtd/spi as part of an
Simon Glassa5820472021-08-08 12:20:14 -06001345 SPL build. This normally requires SPL_SPI.
Simon Glass1e3911a2016-09-13 07:05:23 -06001346
Vignesh R4d848c92019-02-05 11:29:20 +05301347if SPL_SPI_FLASH_SUPPORT
1348
Vignesh R3f5fb8b2019-02-05 11:29:25 +05301349config SPL_SPI_FLASH_TINY
1350 bool "Enable low footprint SPL SPI Flash support"
1351 depends on !SPI_FLASH_BAR
Vignesh Rf53872d2019-02-05 11:29:26 +05301352 default y if SPI_FLASH
Vignesh R3f5fb8b2019-02-05 11:29:25 +05301353 help
1354 Enable lightweight SPL SPI Flash support that supports just reading
1355 data/images from flash. No support to write/erase flash. Enable
1356 this if you have SPL size limitations and don't need full
1357 fledged SPI flash support.
1358
Vignesh R4d848c92019-02-05 11:29:20 +05301359config SPL_SPI_FLASH_SFDP_SUPPORT
1360 bool "SFDP table parsing support for SPI NOR flashes"
Vignesh R3f5fb8b2019-02-05 11:29:25 +05301361 depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
Vignesh R4d848c92019-02-05 11:29:20 +05301362 help
1363 Enable support for parsing and auto discovery of parameters for
1364 SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
1365 tables as per JESD216 standard in SPL.
1366
Lukasz Majewski76f442982020-06-04 23:11:53 +08001367config SPL_SPI_FLASH_MTD
1368 bool "Support for SPI flash MTD drivers in SPL"
1369 help
1370 Enable support for SPI flash MTD drivers in SPL.
1371
Marek Vasute2542252018-04-07 16:05:27 +02001372config SPL_SPI_LOAD
1373 bool "Support loading from SPI flash"
Marek Vasute2542252018-04-07 16:05:27 +02001374 help
1375 Enable support for loading next stage, U-Boot or otherwise, from
1376 SPI NOR in U-Boot SPL.
1377
Vignesh R4d848c92019-02-05 11:29:20 +05301378endif # SPL_SPI_FLASH_SUPPORT
1379
Hannes Schmelzer38df9972019-08-22 15:41:46 +02001380config SYS_SPI_U_BOOT_OFFS
1381 hex "address of u-boot payload in SPI flash"
Andre Przywarae6d9fc02020-01-06 01:29:10 +00001382 default 0x8000 if ARCH_SUNXI
Hannes Schmelzer38df9972019-08-22 15:41:46 +02001383 default 0x0
1384 depends on SPL_SPI_LOAD || SPL_SPI_SUNXI
1385 help
1386 Address within SPI-Flash from where the u-boot payload is fetched
1387 from.
1388
Faiz Abbasae1627c2017-11-14 16:12:31 +05301389config SPL_THERMAL
1390 bool "Driver support for thermal devices"
1391 help
1392 Enable support for temperature-sensing devices. Some SoCs have on-chip
1393 temperature sensors to permit warnings, speed throttling or even
1394 automatic power-off when the temperature gets too high or low. Other
1395 devices may be discrete but connected on a suitable bus.
1396
Simon Glass1f2440c2021-07-10 21:14:29 -06001397config SPL_USB_HOST
Simon Glass1e3911a2016-09-13 07:05:23 -06001398 bool "Support USB host drivers"
Tom Rini1794ae62018-12-05 08:23:38 -05001399 select HAVE_BLOCK_DEVICE
Simon Glass1e3911a2016-09-13 07:05:23 -06001400 help
1401 Enable access to USB (Universal Serial Bus) host devices so that
1402 SPL can load U-Boot from a connected USB peripheral, such as a USB
1403 flash stick. While USB takes a little longer to start up than most
1404 buses, it is very flexible since many different types of storage
1405 device can be attached. This option enables the drivers in
1406 drivers/usb/host as part of an SPL build.
1407
Abel Vesa5ea11ba52019-02-01 16:40:07 +00001408config SPL_USB_STORAGE
Simon Glass1e3911a2016-09-13 07:05:23 -06001409 bool "Support loading from USB"
Simon Glass1f2440c2021-07-10 21:14:29 -06001410 depends on SPL_USB_HOST && !(BLK && !DM_USB)
Simon Glass1e3911a2016-09-13 07:05:23 -06001411 help
1412 Enable support for USB devices in SPL. This allows use of USB
1413 devices such as hard drives and flash drivers for loading U-Boot.
1414 The actual drivers are enabled separately using the normal U-Boot
1415 config options. This enables loading from USB using a configured
1416 device.
1417
Jean-Jacques Hiblot6a228522019-01-10 15:44:13 +01001418config SPL_USB_GADGET
Stefan Agner0489c3b2016-11-21 10:58:53 -08001419 bool "Suppport USB Gadget drivers"
Stefan Agner0489c3b2016-11-21 10:58:53 -08001420 help
1421 Enable USB Gadget API which allows to enable USB device functions
1422 in SPL.
1423
Jean-Jacques Hiblot6a228522019-01-10 15:44:13 +01001424if SPL_USB_GADGET
Stefan Agner0489c3b2016-11-21 10:58:53 -08001425
Faiz Abbasc01553b2018-02-16 21:17:44 +05301426config SPL_USB_ETHER
Stefan Agner0489c3b2016-11-21 10:58:53 -08001427 bool "Support USB Ethernet drivers"
Simon Glass1d926242021-08-08 12:20:31 -06001428 depends on SPL_NET
Stefan Agner0489c3b2016-11-21 10:58:53 -08001429 help
1430 Enable access to the USB network subsystem and associated
1431 drivers in SPL. This permits SPL to load U-Boot over a
1432 USB-connected Ethernet link (such as a USB Ethernet dongle) rather
1433 than from an onboard peripheral. Environment support is required
1434 since the network stack uses a number of environment variables.
Simon Glass041a0ac2021-08-08 12:20:30 -06001435 See also SPL_NET and SPL_ETH.
Stefan Agner0489c3b2016-11-21 10:58:53 -08001436
Andrew F. Davis6d932e62019-01-17 13:43:02 -06001437config SPL_DFU
Fabio Estevam96bdff52018-08-31 10:02:28 -03001438 bool "Support DFU (Device Firmware Upgrade)"
Alexandru Gagniuc97464ff2021-09-02 19:54:19 -05001439 select SPL_HASH
B, Ravi4cca5cf2017-05-04 15:45:29 +05301440 select SPL_DFU_NO_RESET
B, Ravi7e0c0ea2017-05-04 15:45:28 +05301441 depends on SPL_RAM_SUPPORT
Stefan Agnere542edd2016-11-21 10:58:52 -08001442 help
Fabio Estevam96bdff52018-08-31 10:02:28 -03001443 This feature enables the DFU (Device Firmware Upgrade) in SPL with
Stefan Agnere542edd2016-11-21 10:58:52 -08001444 RAM memory device support. The ROM code will load and execute
1445 the SPL built with dfu. The user can load binaries (u-boot/kernel) to
1446 selected device partition from host-pc using dfu-utils.
1447 This feature is useful to flash the binaries to factory or bare-metal
1448 boards using USB interface.
1449
1450choice
1451 bool "DFU device selection"
Andrew F. Davis6d932e62019-01-17 13:43:02 -06001452 depends on SPL_DFU
Stefan Agnere542edd2016-11-21 10:58:52 -08001453
1454config SPL_DFU_RAM
1455 bool "RAM device"
Andrew F. Davis6d932e62019-01-17 13:43:02 -06001456 depends on SPL_DFU && SPL_RAM_SUPPORT
Stefan Agnere542edd2016-11-21 10:58:52 -08001457 help
1458 select RAM/DDR memory device for loading binary images
1459 (u-boot/kernel) to the selected device partition using
1460 DFU and execute the u-boot/kernel from RAM.
1461
1462endchoice
1463
Stefan Agnerd0d9d212017-08-16 11:00:54 -07001464config SPL_USB_SDP_SUPPORT
1465 bool "Support SDP (Serial Download Protocol)"
Simon Glassf4d60392021-08-08 12:20:12 -06001466 depends on SPL_SERIAL
Stefan Agnerd0d9d212017-08-16 11:00:54 -07001467 help
1468 Enable Serial Download Protocol (SDP) device support in SPL. This
1469 allows to download images into memory and execute (jump to) them
1470 using the same protocol as implemented by the i.MX family's boot ROM.
Ye Lif7ac6fd2020-04-29 10:35:12 +08001471
1472config SPL_SDP_USB_DEV
1473 int "SDP USB controller index"
1474 default 0
1475 depends on SPL_USB_SDP_SUPPORT
1476 help
1477 Some boards have USB controller other than 0. Define this option
1478 so it can be used in compiled environment.
Stefan Agner0489c3b2016-11-21 10:58:53 -08001479endif
1480
Simon Glass1ba1d4e2021-07-10 21:14:28 -06001481config SPL_WATCHDOG
Simon Glass1e3911a2016-09-13 07:05:23 -06001482 bool "Support watchdog drivers"
Marek Vasut55ec91b2019-06-09 03:46:21 +02001483 imply SPL_WDT if !HW_WATCHDOG
Simon Glass1e3911a2016-09-13 07:05:23 -06001484 help
1485 Enable support for watchdog drivers in SPL. A watchdog is
1486 typically a hardware peripheral which can reset the system when it
1487 detects no activity for a while (such as a software crash). This
1488 enables the drivers in drivers/watchdog as part of an SPL build.
1489
1490config SPL_YMODEM_SUPPORT
1491 bool "Support loading using Ymodem"
Simon Glassf4d60392021-08-08 12:20:12 -06001492 depends on SPL_SERIAL
Simon Glass1e3911a2016-09-13 07:05:23 -06001493 help
1494 While loading from serial is slow it can be a useful backup when
1495 there is no other option. The Ymodem protocol provides a reliable
1496 means of transmitting U-Boot over a serial line for using in SPL,
1497 with a checksum to ensure correctness.
1498
Philipp Tomsichf6618812017-09-13 21:29:36 +02001499config SPL_ATF
Kever Yang6e79a912017-05-05 11:47:45 +08001500 bool "Support ARM Trusted Firmware"
Michal Simek38183e62020-09-03 11:23:39 +02001501 depends on ARM64 && SPL_FIT
Kever Yang6e79a912017-05-05 11:47:45 +08001502 help
Philipp Tomsichc4078af2018-01-02 21:16:43 +01001503 ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
1504 is loaded by SPL (which is considered as BL2 in ATF terminology).
Kever Yang6e79a912017-05-05 11:47:45 +08001505 More detail at: https://github.com/ARM-software/arm-trusted-firmware
1506
Michael Walleafaf6ea2020-11-18 17:45:58 +01001507config SPL_ATF_LOAD_IMAGE_V2
1508 bool "Use the new LOAD_IMAGE_V2 parameter passing"
1509 depends on SPL_ATF
1510 help
1511 Some platforms use the newer LOAD_IMAGE_V2 parameter passing.
1512
1513 If you want to load a bl31 image from the SPL and need the new
1514 method, say Y.
1515
Philipp Tomsichc4078af2018-01-02 21:16:43 +01001516config SPL_ATF_NO_PLATFORM_PARAM
Michal Simek0606f9e2021-05-20 13:08:44 +02001517 bool "Pass no platform parameter"
Philipp Tomsichc4078af2018-01-02 21:16:43 +01001518 depends on SPL_ATF
1519 help
1520 While we expect to call a pointer to a valid FDT (or NULL)
1521 as the platform parameter to an ATF, some ATF versions are
1522 not U-Boot aware and have an insufficiently robust parameter
1523 validation to gracefully reject a FDT being passed.
1524
1525 If this option is enabled, the spl_atf os-type handler will
1526 always pass NULL for the platform parameter.
1527
1528 If your ATF is affected, say Y.
1529
Alex Kiernan10238ef2018-03-15 22:11:46 +00001530config SPL_AM33XX_ENABLE_RTC32K_OSC
1531 bool "Enable the RTC32K OSC on AM33xx based platforms"
1532 default y if AM33XX
1533 help
1534 Enable access to the AM33xx RTC and select the external 32kHz clock
1535 source.
1536
Patrick Delaunaya7ca4802021-09-02 11:56:16 +02001537config SPL_OPTEE_IMAGE
1538 bool "Support OP-TEE Trusted OS image in SPL"
Kever Yanga28d42c2018-08-23 17:17:59 +08001539 depends on ARM
1540 help
Patrick Delaunaya7ca4802021-09-02 11:56:16 +02001541 OP-TEE is an open source Trusted OS which is loaded by SPL.
Kever Yanga28d42c2018-08-23 17:17:59 +08001542 More detail at: https://github.com/OP-TEE/optee_os
1543
Lukas Auer515b9342019-08-21 21:14:44 +02001544config SPL_OPENSBI
1545 bool "Support RISC-V OpenSBI"
1546 depends on RISCV && SPL_RISCV_MMODE && RISCV_SMODE
1547 help
1548 OpenSBI is an open-source implementation of the RISC-V Supervisor Binary
1549 Interface (SBI) specification. U-Boot supports the OpenSBI FW_DYNAMIC
1550 firmware. It is loaded and started by U-Boot SPL.
1551
1552 More details are available at https://github.com/riscv/opensbi and
1553 https://github.com/riscv/riscv-sbi-doc
1554
1555config SPL_OPENSBI_LOAD_ADDR
1556 hex "OpenSBI load address"
1557 depends on SPL_OPENSBI
1558 help
1559 Load address of the OpenSBI binary.
1560
Tom Rini3c82f982017-05-22 19:21:57 +00001561config TPL
1562 bool
1563 depends on SUPPORT_TPL
1564 prompt "Enable TPL"
1565 help
1566 If you want to build TPL as well as the normal image and SPL, say Y.
1567
1568if TPL
1569
Simon Glassdb372a82019-10-20 21:31:52 -06001570config TPL_SIZE_LIMIT
1571 hex "Maximum size of TPL image"
1572 depends on TPL
Ovidiu Panaitb7232622020-09-25 21:12:56 +03001573 default 0x0
Simon Glassdb372a82019-10-20 21:31:52 -06001574 help
1575 Specifies the maximum length of the U-Boot TPL image.
1576 If this value is zero, it is ignored.
1577
Simon Glass02b87002022-02-08 11:49:48 -07001578config TPL_BINMAN_SYMBOLS
Simon Glass42c5ecc2022-03-05 20:18:55 -07001579 bool "Declare binman symbols in TPL"
Simon Glass02b87002022-02-08 11:49:48 -07001580 depends on SPL_FRAMEWORK && BINMAN
1581 default y
1582 help
Simon Glass42c5ecc2022-03-05 20:18:55 -07001583 This enables use of symbols in TPL which refer to U-Boot, enabling TPL
Simon Glass02b87002022-02-08 11:49:48 -07001584 to obtain the location of U-Boot simply by calling spl_get_image_pos()
1585 and spl_get_image_size().
1586
1587 For this to work, you must have a U-Boot image in the binman image, so
Simon Glass42c5ecc2022-03-05 20:18:55 -07001588 binman can update TPL with the location of it.
Simon Glass02b87002022-02-08 11:49:48 -07001589
Heiko Stuebner4a0da7c2019-07-16 10:12:02 +02001590config TPL_FRAMEWORK
1591 bool "Support TPL based upon the common SPL framework"
1592 default y if SPL_FRAMEWORK
1593 help
1594 Enable the SPL framework under common/spl/ for TPL builds.
1595 This framework supports MMC, NAND and YMODEM and other methods
1596 loading of U-Boot's SPL stage. If unsure, say Y.
1597
Simon Glasse14f1a22018-11-15 18:44:09 -07001598config TPL_HANDOFF
1599 bool "Pass hand-off information from TPL to SPL and U-Boot proper"
Simon Glass540ee8d2019-09-25 08:11:17 -06001600 depends on HANDOFF && TPL_BLOBLIST
Simon Glasse14f1a22018-11-15 18:44:09 -07001601 default y
1602 help
1603 This option enables TPL to write handoff information. This can be
1604 used to pass information like the size of SDRAM from TPL to U-Boot
1605 proper. The information is also available to SPL if it is useful
1606 there.
1607
Kever Yang2b5994b2018-01-20 18:00:26 +08001608config TPL_BOARD_INIT
1609 bool "Call board-specific initialization in TPL"
1610 help
1611 If this option is enabled, U-Boot will call the function
1612 spl_board_init() from board_init_r(). This function should be
1613 provided by the board.
1614
Philippe Reynes8d82a202020-12-11 19:56:47 +01001615config TPL_BOOTCOUNT_LIMIT
1616 bool "Support bootcount in TPL"
1617 depends on TPL_ENV_SUPPORT
1618 help
1619 If this option is enabled, the TPL will support bootcount.
1620 For example, it may be useful to choose the device to boot.
1621
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +02001622config TPL_LDSCRIPT
Michal Simek0606f9e2021-05-20 13:08:44 +02001623 string "Linker script for the TPL stage"
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +02001624 depends on TPL
Tom Rini2aaa27d2019-01-22 17:09:26 -05001625 default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
Tom Rini067b9ff2020-03-11 18:11:11 -04001626 default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
Philipp Tomsichbe1c53a2017-07-28 19:20:49 +02001627 help
1628 The TPL stage will usually require a different linker-script
1629 (as it runs from a different memory region) than the regular
1630 U-Boot stage. Set this to the path of the linker-script to
1631 be used for TPL.
1632
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001633 May be left empty to trigger the Makefile infrastructure to
1634 fall back to the linker-script used for the SPL stage.
1635
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001636config TPL_NEEDS_SEPARATE_STACK
Michal Simek0606f9e2021-05-20 13:08:44 +02001637 bool "TPL needs a separate initial stack-pointer"
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001638 depends on TPL
1639 help
1640 Enable, if the TPL stage should not inherit its initial
1641 stack-pointer from the settings for the SPL stage.
1642
Simon Glassa0e44872021-08-08 12:20:29 -06001643config TPL_POWER
1644 bool "Support power drivers"
1645 help
1646 Enable support for power control in TPL. This includes support
1647 for PMICs (Power-management Integrated Circuits) and some of the
1648 features provided by PMICs. In particular, voltage regulators can
1649 be used to enable/disable power and vary its voltage. That can be
1650 useful in TPL to turn on boot peripherals and adjust CPU voltage
1651 so that the clock speed can be increased. This enables the drivers
1652 in drivers/power, drivers/power/pmic and drivers/power/regulator
1653 as part of an TPL build.
1654
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001655config TPL_TEXT_BASE
Michal Simek0606f9e2021-05-20 13:08:44 +02001656 hex "Base address for the .text section of the TPL stage"
Simon Glass9b68f4b2022-02-28 12:08:30 -07001657 default 0
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001658 help
1659 The base address for the .text section of the TPL stage.
1660
1661config TPL_MAX_SIZE
Tom Riniabb0f522022-05-16 17:20:26 -04001662 hex "Maximum size (in bytes) for the TPL stage"
1663 default 0x2e000 if ROCKCHIP_RK3399
1664 default 0x8000 if ROCKCHIP_RK3288
1665 default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
1666 default 0x2800 if ROCKCHIP_PX30
1667 default 0x0
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001668 help
1669 The maximum size (in bytes) of the TPL stage.
1670
Tom Riniabb0f522022-05-16 17:20:26 -04001671config TPL_PAD_TO
1672 hex "Offset to which the TPL should be padded before appending the TPL payload"
1673 depends on !TPL_FRAMEWORK && PPC
1674 default TPL_MAX_SIZE
1675 help
1676 Image offset to which the TPL should be padded before appending the
1677 TPL payload. By default, this is defined as CONFIG_TPL_MAX_SIZE, or 0 if
1678 CONFIG_TPL_MAX_SIZE is undefined. CONFIG_TPL_PAD_TO must be either
1679 0, meaning to append the TPL payload without any padding, or >=
1680 CONFIG_TPL_MAX_SIZE.
1681
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001682config TPL_STACK
Michal Simek0606f9e2021-05-20 13:08:44 +02001683 hex "Address of the initial stack-pointer for the TPL stage"
Philipp Tomsichdeff59a2017-07-28 20:02:34 +02001684 depends on TPL_NEEDS_SEPARATE_STACK
1685 help
1686 The address of the initial stack-pointer for the TPL stage.
1687 Usually this will be the (aligned) top-of-stack.
1688
Simon Glass5b21b342021-03-15 17:25:35 +13001689config TPL_READ_ONLY
1690 bool
1691 depends on TPL_OF_PLATDATA
1692 select TPL_OF_PLATDATA_NO_BIND
1693 select TPL_OF_PLATDATA_RT
1694 help
1695 Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
1696 section of memory. This means that of-platdata must make a copy (in
1697 writeable memory) of anything it wants to modify, such as
1698 device-private data.
1699
Philipp Tomsich2706fb12017-07-04 14:24:53 +02001700config TPL_BOOTROM_SUPPORT
Michal Simek0606f9e2021-05-20 13:08:44 +02001701 bool "Support returning to the BOOTROM (from TPL)"
Philipp Tomsich2706fb12017-07-04 14:24:53 +02001702 help
1703 Some platforms (e.g. the Rockchip RK3368) provide support in their
1704 ROM for loading the next boot-stage after performing basic setup
1705 from the TPL stage.
1706
1707 Enable this option, to return to the BOOTROM through the
1708 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
1709 boot device list, if not implemented for a given board)
1710
Simon Glass577226c2021-09-25 19:43:24 -06001711config TPL_CRC32
1712 bool "Support CRC32 in TPL"
1713 default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
1714 help
1715 Enable this to support CRC32 in uImages or FIT images within SPL.
1716 This is a 32-bit checksum value that can be used to verify images.
1717 For FIT images, this is the least secure type of checksum, suitable
1718 for detected accidental image corruption. For secure applications you
1719 should consider SHA1 or SHA256.
1720
Simon Glass284cb9c2021-07-10 21:14:31 -06001721config TPL_DRIVERS_MISC
Philipp Tomsich0e221882017-07-04 14:27:02 +02001722 bool "Support misc drivers in TPL"
1723 help
1724 Enable miscellaneous drivers in TPL. These drivers perform various
1725 tasks that don't fall nicely into other categories, Enable this
1726 option to build the drivers in drivers/misc as part of an TPL
1727 build, for those that support building in TPL (not all drivers do).
1728
Simon Glass688be332016-09-12 23:18:27 -06001729config TPL_ENV_SUPPORT
1730 bool "Support an environment"
Simon Glass688be332016-09-12 23:18:27 -06001731 help
1732 Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
1733
Simon Glass035939e2021-07-10 21:14:30 -06001734config TPL_GPIO
Simon Glass592d5b92018-11-15 18:43:55 -07001735 bool "Support GPIO in TPL"
1736 help
1737 Enable support for GPIOs (General-purpose Input/Output) in TPL.
1738 GPIOs allow U-Boot to read the state of an input line (high or
1739 low) and set the state of an output line. This can be used to
1740 drive LEDs, control power to various system parts and read user
1741 input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
1742 for example. Enable this option to build the drivers in
1743 drivers/gpio as part of an TPL build.
1744
Simon Glassbccfc2e2021-07-10 21:14:36 -06001745config TPL_I2C
Simon Glass688be332016-09-12 23:18:27 -06001746 bool "Support I2C"
Simon Glass688be332016-09-12 23:18:27 -06001747 help
Simon Glassbccfc2e2021-07-10 21:14:36 -06001748 Enable support for the I2C bus in TPL. See SPL_I2C for
Simon Glass688be332016-09-12 23:18:27 -06001749 details.
1750
1751config TPL_LIBCOMMON_SUPPORT
1752 bool "Support common libraries"
Simon Glass688be332016-09-12 23:18:27 -06001753 help
1754 Enable support for common U-Boot libraries within TPL. See
1755 SPL_LIBCOMMON_SUPPORT for details.
1756
1757config TPL_LIBGENERIC_SUPPORT
1758 bool "Support generic libraries"
Simon Glass688be332016-09-12 23:18:27 -06001759 help
1760 Enable support for generic U-Boot libraries within TPL. See
1761 SPL_LIBGENERIC_SUPPORT for details.
1762
Simon Glass64571062021-08-08 12:20:16 -06001763config TPL_MPC8XXX_INIT_DDR
Simon Glass688be332016-09-12 23:18:27 -06001764 bool "Support MPC8XXX DDR init"
Simon Glass688be332016-09-12 23:18:27 -06001765 help
1766 Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
Simon Glass64571062021-08-08 12:20:16 -06001767 SPL_MPC8XXX_INIT_DDR for details.
Simon Glass688be332016-09-12 23:18:27 -06001768
Simon Glassb58bfe02021-08-08 12:20:09 -06001769config TPL_MMC
Simon Glass688be332016-09-12 23:18:27 -06001770 bool "Support MMC"
Tom Rini3c82f982017-05-22 19:21:57 +00001771 depends on MMC
Simon Glass688be332016-09-12 23:18:27 -06001772 help
Simon Glassb58bfe02021-08-08 12:20:09 -06001773 Enable support for MMC within TPL. See SPL_MMC for details.
Simon Glass688be332016-09-12 23:18:27 -06001774
1775config TPL_NAND_SUPPORT
1776 bool "Support NAND flash"
Simon Glass688be332016-09-12 23:18:27 -06001777 help
Philipp Tomsich6c7a88e2017-07-28 17:03:03 +02001778 Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
Simon Glass688be332016-09-12 23:18:27 -06001779
Sekhar Nori9108d922018-12-06 15:40:08 +05301780config TPL_PCI
Simon Glass592d5b92018-11-15 18:43:55 -07001781 bool "Support PCI drivers"
1782 help
1783 Enable support for PCI in TPL. For platforms that need PCI to boot,
1784 or must perform some init using PCI in SPL, this provides the
1785 necessary driver support. This enables the drivers in drivers/pci
1786 as part of a TPL build.
1787
Simon Glassff67f232021-08-08 12:20:10 -06001788config TPL_PCH
Simon Glass592d5b92018-11-15 18:43:55 -07001789 bool "Support PCH drivers"
1790 help
1791 Enable support for PCH (Platform Controller Hub) devices in TPL.
1792 These are used to set up GPIOs and the SPI peripheral early in
1793 boot. This enables the drivers in drivers/pch as part of a TPL
1794 build.
1795
Marek Vasut84493722018-04-07 17:03:45 +02001796config TPL_RAM_SUPPORT
1797 bool "Support booting from RAM"
1798 help
1799 Enable booting of an image in RAM. The image can be preloaded or
1800 it can be loaded by TPL directly into RAM (e.g. using USB).
1801
1802config TPL_RAM_DEVICE
1803 bool "Support booting from preloaded image in RAM"
1804 depends on TPL_RAM_SUPPORT
1805 help
1806 Enable booting of an image already loaded in RAM. The image has to
1807 be already in memory when TPL takes over, e.g. loaded by the boot
1808 ROM.
1809
Simon Glass31985312021-08-08 12:20:11 -06001810config TPL_RTC
Simon Glass592d5b92018-11-15 18:43:55 -07001811 bool "Support RTC drivers"
1812 help
1813 Enable RTC (Real-time Clock) support in TPL. This includes support
1814 for reading and setting the time. Some RTC devices also have some
1815 non-volatile (battery-backed) memory which is accessible if
1816 needed. This enables the drivers in drivers/rtc as part of an TPL
1817 build.
1818
Simon Glassf4d60392021-08-08 12:20:12 -06001819config TPL_SERIAL
Simon Glass688be332016-09-12 23:18:27 -06001820 bool "Support serial"
Alex Kiernan5b404282018-04-19 04:32:54 +00001821 select TPL_PRINTF
1822 select TPL_STRTO
Simon Glass688be332016-09-12 23:18:27 -06001823 help
Simon Glassf4d60392021-08-08 12:20:12 -06001824 Enable support for serial in TPL. See SPL_SERIAL for
Simon Glass688be332016-09-12 23:18:27 -06001825 details.
1826
1827config TPL_SPI_FLASH_SUPPORT
1828 bool "Support SPI flash drivers"
Simon Glass688be332016-09-12 23:18:27 -06001829 help
Philipp Tomsich6c7a88e2017-07-28 17:03:03 +02001830 Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
Simon Glass688be332016-09-12 23:18:27 -06001831 for details.
1832
Simon Glass4ec73132020-07-19 10:15:31 -06001833config TPL_SPI_FLASH_TINY
1834 bool "Enable low footprint TPL SPI Flash support"
1835 depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
1836 default y if SPI_FLASH
1837 help
1838 Enable lightweight TPL SPI Flash support that supports just reading
1839 data/images from flash. No support to write/erase flash. Enable
1840 this if you have TPL size limitations and don't need full-fledged
1841 SPI flash support.
1842
Marek Vasute6b94da2018-04-07 16:05:46 +02001843config TPL_SPI_LOAD
1844 bool "Support loading from SPI flash"
1845 depends on TPL_SPI_FLASH_SUPPORT
1846 help
1847 Enable support for loading next stage, U-Boot or otherwise, from
1848 SPI NOR in U-Boot TPL.
1849
Simon Glassa5820472021-08-08 12:20:14 -06001850config TPL_SPI
Simon Glass688be332016-09-12 23:18:27 -06001851 bool "Support SPI drivers"
Simon Glass688be332016-09-12 23:18:27 -06001852 help
Simon Glassa5820472021-08-08 12:20:14 -06001853 Enable support for using SPI in TPL. See SPL_SPI for
Simon Glass688be332016-09-12 23:18:27 -06001854 details.
1855
Lukasz Majewski76f442982020-06-04 23:11:53 +08001856config TPL_DM_SPI
1857 bool "Support SPI DM drivers in TPL"
1858 help
1859 Enable support for SPI DM drivers in TPL.
1860
1861config TPL_DM_SPI_FLASH
1862 bool "Support SPI DM FLASH drivers in TPL"
1863 help
1864 Enable support for SPI DM flash drivers in TPL.
1865
Marek Vasut04774242018-04-07 16:06:11 +02001866config TPL_YMODEM_SUPPORT
1867 bool "Support loading using Ymodem"
Simon Glassf4d60392021-08-08 12:20:12 -06001868 depends on TPL_SERIAL
Marek Vasut04774242018-04-07 16:06:11 +02001869 help
1870 While loading from serial is slow it can be a useful backup when
1871 there is no other option. The Ymodem protocol provides a reliable
1872 means of transmitting U-Boot over a serial line for using in TPL,
1873 with a checksum to ensure correctness.
1874
Tom Rini3c82f982017-05-22 19:21:57 +00001875endif # TPL
1876
Simon Glasse7ca7da2022-04-30 00:56:53 -06001877config VPL
1878 bool
1879 depends on SUPPORT_SPL
1880 prompt "Enable VPL"
1881 help
1882 If you want to build VPL as well as the normal image, TPL and SPL,
1883 say Y.
1884
1885if VPL
1886
1887config VPL_BANNER_PRINT
1888 bool "Enable output of the VPL banner 'U-Boot VPL ...'"
1889 depends on VPL
1890 default y
1891 help
1892 If this option is enabled, VPL will print the banner with version
1893 info. Disabling this option could be useful to reduce VPL boot time
1894 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
1895
1896config VPL_BOARD_INIT
1897 bool "Call board-specific initialization in VPL"
1898 help
1899 If this option is enabled, U-Boot will call the function
1900 spl_board_init() from board_init_r(). This function should be
1901 provided by the board.
1902
1903config VPL_CACHE
1904 depends on CACHE
1905 bool "Support cache drivers in VPL"
1906 help
1907 Enable support for cache drivers in VPL.
1908
1909config VPL_CRC32
1910 bool "Support CRC32 in VPL"
1911 default y if VPL_ENV_SUPPORT || VPL_BLOBLIST
1912 help
1913 Enable this to support CRC32 in uImages or FIT images within VPL.
1914 This is a 32-bit checksum value that can be used to verify images.
1915 For FIT images, this is the least secure type of checksum, suitable
1916 for detected accidental image corruption. For secure applications you
1917 should consider SHA1 or SHA256.
1918
1919config VPL_DM_SPI
1920 bool "Support SPI DM drivers in VPL"
1921 help
1922 Enable support for SPI DM drivers in VPL.
1923
1924config VPL_DM_SPI_FLASH
1925 bool "Support SPI DM FLASH drivers in VPL"
1926 help
1927 Enable support for SPI DM flash drivers in VPL.
1928
1929config VPL_FRAMEWORK
1930 bool "Support VPL based upon the common SPL framework"
1931 default y
1932 help
1933 Enable the SPL framework under common/spl/ for VPL builds.
1934 This framework supports MMC, NAND and YMODEM and other methods
1935 loading of U-Boot's next stage. If unsure, say Y.
1936
1937config VPL_HANDOFF
1938 bool "Pass hand-off information from VPL to SPL"
1939 depends on HANDOFF && VPL_BLOBLIST
1940 default y
1941 help
1942 This option enables VPL to write handoff information. This can be
1943 used to pass information like the size of SDRAM from VPL to SPL. Also
1944 VPL can receive information from TPL in the same place if that is
1945 enabled.
1946
1947config VPL_LIBCOMMON_SUPPORT
1948 bool "Support common libraries"
1949 default y if SPL_LIBCOMMON_SUPPORT
1950 help
1951 Enable support for common U-Boot libraries within VPL. See
1952 SPL_LIBCOMMON_SUPPORT for details.
1953
1954config VPL_LIBGENERIC_SUPPORT
1955 bool "Support generic libraries"
1956 default y if SPL_LIBGENERIC_SUPPORT
1957 help
1958 Enable support for generic U-Boot libraries within VPL. These
1959 libraries include generic code to deal with device tree, hashing,
1960 printf(), compression and the like. This option is enabled on many
1961 boards. Enable this option to build the code in lib/ as part of a
1962 VPL build.
1963
1964config VPL_DRIVERS_MISC
1965 bool "Support misc drivers"
1966 default y if TPL_DRIVERS_MISC
1967 help
1968 Enable miscellaneous drivers in VPL. These drivers perform various
1969 tasks that don't fall nicely into other categories, Enable this
1970 option to build the drivers in drivers/misc as part of a VPL
1971 build, for those that support building in VPL (not all drivers do).
1972
1973config VPL_ENV_SUPPORT
1974 bool "Support an environment"
1975 help
1976 Enable environment support in VPL. The U-Boot environment provides
1977 a number of settings (essentially name/value pairs) which can
1978 control many aspects of U-Boot's operation. Enabling this option will
1979 make env_get() and env_set() available in VSPL.
1980
1981config VPL_GPIO
1982 bool "Support GPIO in VPL"
1983 default y if SPL_GPIO
1984 help
1985 Enable support for GPIOs (General-purpose Input/Output) in VPL.
1986 GPIOs allow U-Boot to read the state of an input line (high or
1987 low) and set the state of an output line. This can be used to
1988 drive LEDs, control power to various system parts and read user
1989 input. GPIOs can be useful in VPL to enable a 'sign-of-life' LED,
1990 for example. Enable this option to build the drivers in
1991 drivers/gpio as part of a VPL build.
1992
1993config VPL_HANDOFF
1994 bool "Pass hand-off information from VPL to SPL and U-Boot proper"
1995 depends on HANDOFF && VPL_BLOBLIST
1996 default y
1997 help
1998 This option enables VPL to write handoff information. This can be
1999 used to pass information like the size of SDRAM from VPL to U-Boot
2000 proper. The information is also available to VPL if it is useful
2001 there.
2002
2003config VPL_HASH
2004 bool "Support hashing drivers in VPL"
2005 depends on VPL
2006 select SHA1
2007 select SHA256
2008 help
2009 Enable hashing drivers in VPL. These drivers can be used to
2010 accelerate secure boot processing in secure applications. Enable
2011 this option to build system-specific drivers for hash acceleration
2012 as part of a VPL build.
2013
2014config VPL_I2C_SUPPORT
2015 bool "Support I2C in VPL"
2016 default y if SPL_I2C_SUPPORT
2017 help
2018 Enable support for the I2C bus in VPL. Vee SPL_I2C_SUPPORT for
2019 details.
2020
2021config VPL_PCH_SUPPORT
2022 bool "Support PCH drivers"
2023 default y if TPL_PCH_SUPPORT
2024 help
2025 Enable support for PCH (Platform Controller Hub) devices in VPL.
2026 These are used to set up GPIOs and the SPI peripheral early in
2027 boot. This enables the drivers in drivers/pch as part of a VPL
2028 build.
2029
2030config VPL_PCI
2031 bool "Support PCI drivers"
2032 default y if SPL_PCI
2033 help
2034 Enable support for PCI in VPL. For platforms that need PCI to boot,
2035 or must perform some init using PCI in VPL, this provides the
2036 necessary driver support. This enables the drivers in drivers/pci
2037 as part of a VPL build.
2038
2039config VPL_RTC
2040 bool "Support RTC drivers"
2041 help
2042 Enable RTC (Real-time Clock) support in VPL. This includes support
2043 for reading and setting the time. Some RTC devices also have some
2044 non-volatile (battery-backed) memory which is accessible if
2045 needed. This enables the drivers in drivers/rtc as part of a VPL
2046 build.
2047
2048config VPL_SERIAL
2049 bool "Support serial"
2050 default y if TPL_SERIAL
2051 select VPL_PRINTF
2052 select VPL_STRTO
2053 help
2054 Enable support for serial in VPL. See SPL_SERIAL_SUPPORT for
2055 details.
2056
2057config VPL_SIZE_LIMIT
2058 hex "Maximum size of VPL image"
2059 depends on VPL
2060 default 0x0
2061 help
2062 Specifies the maximum length of the U-Boot VPL image.
2063 If this value is zero, it is ignored.
2064
2065config VPL_SPI
2066 bool "Support SPI drivers"
2067 help
2068 Enable support for using SPI in VPL. See SPL_SPI_SUPPORT for
2069 details.
2070
2071config VPL_SPI_FLASH_SUPPORT
2072 bool "Support SPI flash drivers"
2073 help
2074 Enable support for using SPI flash in VPL, and loading U-Boot from
2075 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
2076 the SPI bus that is used to connect it to a system. It is a simple
2077 but fast bidirectional 4-wire bus (clock, chip select and two data
2078 lines). This enables the drivers in drivers/mtd/spi as part of a
2079 VPL build. This normally requires VPL_SPI_SUPPORT.
2080
2081config VPL_TEXT_BASE
2082 hex "VPL Text Base"
2083 default 0x0
2084 help
2085 The address in memory that VPL will be running from.
2086
2087endif # VPL
2088
Eugen Hristevfdd833e2019-05-24 09:38:10 +03002089config SPL_AT91_MCK_BYPASS
2090 bool "Use external clock signal as a source of main clock for AT91 platforms"
2091 depends on ARCH_AT91
Eugen Hristevfdd833e2019-05-24 09:38:10 +03002092 help
2093 Use external 8 to 24 Mhz clock signal as source of main clock instead
2094 of an external crystal oscillator.
2095 This option disables the internal driving on the XOUT pin.
2096 The external source has to provide a stable clock on the XIN pin.
2097 If this option is disabled, the SoC expects a crystal oscillator
2098 that needs driving on both XIN and XOUT lines.
2099
Tom Rini3c82f982017-05-22 19:21:57 +00002100endif # SPL
Simon Glass1e3911a2016-09-13 07:05:23 -06002101endmenu