]> Git Repo - u-boot.git/blame - common/spl/Kconfig
Convert CONFIG_SYS_SPL_ARGS_ADDR to Kconfig
[u-boot.git] / common / spl / Kconfig
CommitLineData
f86ca5ad 1menu "SPL / TPL / VPL"
11bde1cd 2
c2ae7d82
SG
3config SUPPORT_SPL
4 bool
5
6config SUPPORT_TPL
7 bool
8
f86ca5ad
SG
9config SUPPORT_VPL
10 bool
11
66928afb
R
12config SPL_DFU_NO_RESET
13 bool
14
c2ae7d82
SG
15config 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
75670c81
TR
22config 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
a9a3aada
PR
31config 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
2577015d 40config SPL_SIZE_LIMIT
b51882d0 41 hex "Maximum size of SPL image"
2577015d 42 depends on SPL
2dfdd0c4
OP
43 default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB
44 default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
45 default 0x0
2577015d
SG
46 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
ca8a329a
TR
78config 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
6600b355
TR
108config 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
9b5f9aeb
TR
123choice
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
d8c03320
SG
161config 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
7d84fbb5
SG
180config 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
38c04d8e
SG
190config 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
5d168adf 202menu "PowerPC and LayerScape SPL Boot options"
db4080d5
TR
203
204config SPL_NAND_BOOT
205 bool "Load SPL from NAND flash"
5d168adf 206 depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
db4080d5
TR
207
208config SPL_MMC_BOOT
209 bool "Load SPL from SD Card / eMMC"
5d168adf 210 depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
db4080d5
TR
211
212config SPL_SPI_BOOT
213 bool "Load SPL from SPI flash"
5d168adf 214 depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
db4080d5
TR
215
216config SPL_FSL_PBL
217 bool "Create SPL in Freescale PBI format"
5d168adf
AW
218 depends on (PPC || ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && \
219 SUPPORT_SPL
db4080d5
TR
220 help
221 Create boot binary having SPL binary in PBI format concatenated with
222 u-boot binary.
223
6074a536
TR
224config 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
db4080d5
TR
235endmenu
236
55cf860b
TR
237menu "PowerPC SPL / TPL specific options"
238 depends on PPC && (SPL && !SPL_FRAMEWORK)
b35316fb
TR
239
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
7f2c91e5
TR
249config SPL_GD_ADDR
250 hex "Address to use for global data (gd) in SPL"
251 depends on !SPL_INIT_MINIMAL
252
55cf860b
TR
253config SPL_RELOC_TEXT_BASE
254 hex "Address to relocate SPL to"
255 default SPL_TEXT_BASE
256 help
257 If unspecified, this is equal to CONFIG_SPL_TEXT_BASE (i.e. no
258 relocation is done).
259
260config SPL_RELOC_STACK
261 hex "Address of the start of the stack SPL will use after relocation."
262 help
263 If unspecified, this is equal to CONFIG_SYS_SPL_MALLOC_START. Starting
264 address of the malloc pool used in SPL. When this option is set the full
265 malloc is used in SPL and it is set up by spl_init() and before that, the
266 simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
267
268config SPL_RELOC_MALLOC
269 bool "SPL has malloc pool after relocation"
270
271config SPL_RELOC_MALLOC_ADDR
272 hex "Address of malloc pool in SPL"
273 depends on SPL_RELOC_MALLOC
274
275config SPL_RELOC_MALLOC_SIZE
276 hex "Size of malloc pool in SPL"
277 depends on SPL_RELOC_MALLOC
278
7f2c91e5
TR
279config TPL_GD_ADDR
280 hex "Address to use for global data (gd) in TPL"
281 depends on TPL
282
55cf860b
TR
283config TPL_RELOC_TEXT_BASE
284 hex "Address to relocate TPL to"
285 depends on TPL
286 default TPL_TEXT_BASE
287 help
288 If unspecified, this is equal to CONFIG_TPL_TEXT_BASE (i.e. no
289 relocation is done).
290
291config TPL_RELOC_STACK
292 hex "Address of the start of the stack TPL will use after relocation."
293 depends on TPL
294 help
295 If unspecified, this is equal to CONFIG_SYS_TPL_MALLOC_START. Starting
296 address of the malloc pool used in TPL. When this option is set the full
297 malloc is used in TPL and it is set up by spl_init() and before that, the
298 simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
299
300config TPL_RELOC_MALLOC
301 bool "TPL has malloc pool after relocation"
302 depends on TPL
303
304config TPL_RELOC_MALLOC_ADDR
305 hex "Address of malloc pool in TPL"
306 depends on TPL_RELOC_MALLOC
307
308config TPL_RELOC_MALLOC_SIZE
309 hex "Size of malloc pool in TPL"
310 depends on TPL_RELOC_MALLOC
311
b35316fb
TR
312endmenu
313
b0edea3c
SG
314config HANDOFF
315 bool "Pass hand-off information from SPL to U-Boot proper"
2a7c9ab4 316 depends on SPL && BLOBLIST
b0edea3c
SG
317 help
318 It is useful to be able to pass information from SPL to U-Boot
319 proper to preserve state that is known in SPL and is needed in U-Boot.
320 Enable this to locate the handoff information in U-Boot proper, early
321 in boot. It is available in gd->handoff. The state state is set up
322 in SPL (or TPL if that is being used).
323
226498b8
TR
324if SPL
325
b0edea3c
SG
326config SPL_HANDOFF
327 bool "Pass hand-off information from SPL to U-Boot proper"
a7da3d98 328 depends on HANDOFF && SPL_BLOBLIST
b0edea3c
SG
329 default y
330 help
331 This option enables SPL to write handoff information. This can be
332 used to pass information like the size of SDRAM from SPL to U-Boot
333 proper. Also SPL can receive information from TPL in the same place
334 if that is enabled.
335
dd6fbcb9
PT
336config SPL_LDSCRIPT
337 string "Linker script for the SPL stage"
a356e7a8 338 default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
dd6fbcb9
PT
339 help
340 The SPL stage will usually require a different linker-script
341 (as it runs from a different memory region) than the regular
342 U-Boot stage. Set this to the path of the linker-script to
343 be used for SPL.
344
f89d6133
SG
345config SPL_TEXT_BASE
346 hex "SPL Text Base"
347 default ISW_ENTRY_ADDR if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
9340d8fe 348 default 0x10060 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN9I
44726096 349 default 0x20060 if SUN50I_GEN_H6
9340d8fe 350 default 0x00060 if ARCH_SUNXI
0413f9c3 351 default 0xfffc0000 if ARCH_ZYNQMP
f89d6133
SG
352 default 0x0
353 help
354 The address in memory that SPL will be running from.
355
0680f1b1 356config SPL_BOARD_INIT
0680f1b1
LFT
357 bool "Call board-specific initialization in SPL"
358 help
359 If this option is enabled, U-Boot will call the function
360 spl_board_init() from board_init_r(). This function should be
361 provided by the board.
362
747093dd
SG
363config VPL_BOARD_INIT
364 bool "Call board-specific initialization in VPL"
365 help
366 If this option is enabled, U-Boot will call the function
367 spl_board_init() from board_init_r(). This function should be
368 provided by the board.
369
225d30b7 370config SPL_BOOTROM_SUPPORT
ce869b55 371 bool "Support returning to the BOOTROM"
225d30b7
PT
372 help
373 Some platforms (e.g. the Rockchip RK3368) provide support in their
374 ROM for loading the next boot-stage after performing basic setup
375 from the SPL stage.
376
377 Enable this option, to return to the BOOTROM through the
378 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
379 boot device list, if not implemented for a given board)
380
afa9609e
LM
381config SPL_BOOTCOUNT_LIMIT
382 bool "Support bootcount in SPL"
4d145f26 383 depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
afa9609e
LM
384 help
385 On some boards, which use 'falcon' mode, it is necessary to check
386 and increment the number of boot attempts. Such boards do not
387 use proper U-Boot for normal boot flow and hence needs those
388 adjustments to be done in the SPL.
389
24eb39b5
AD
390config SPL_RAW_IMAGE_SUPPORT
391 bool "Support SPL loading and booting of RAW images"
f7560376 392 default n if (ARCH_MX6 && (SPL_MMC || SPL_SATA))
11f32da7
AD
393 default y
394 depends on !TI_SECURE_DEVICE
24eb39b5
AD
395 help
396 SPL will support loading and booting a RAW image when this option
397 is y. If this is not set, SPL will move on to other available
398 boot media to find a suitable image.
399
6665ab17 400config SPL_LEGACY_IMAGE_FORMAT
722a6b17 401 bool "Support SPL loading and booting of Legacy images"
11f32da7
AD
402 default y if !SPL_LOAD_FIT
403 depends on !TI_SECURE_DEVICE
722a6b17
AD
404 help
405 SPL will support loading and booting Legacy images when this option
406 is y. If this is not set, SPL will move on to other available
407 boot media to find a suitable image.
408
dae5c2dc
SG
409config SPL_LEGACY_IMAGE_CRC_CHECK
410 bool "Check CRC of Legacy images"
6665ab17 411 depends on SPL_LEGACY_IMAGE_FORMAT
1e52db67 412 select SPL_CRC32
dae5c2dc
SG
413 help
414 Enable this to check the CRC of Legacy images. While this increases
415 reliability, it affects both code size and boot duration.
416 If disabled, Legacy images are booted if the image magic and size
417 are correct, without further integrity checks.
418
c2ae7d82
SG
419config SPL_SYS_MALLOC_SIMPLE
420 bool
c2ae7d82
SG
421 prompt "Only use malloc_simple functions in the SPL"
422 help
423 Say Y here to only use the *_simple malloc functions from
424 malloc_simple.c, rather then using the versions from dlmalloc.c;
425 this will make the SPL binary smaller at the cost of more heap
426 usage as the *_simple malloc functions do not re-use free-ed mem.
427
d60b5f74
PT
428config TPL_SYS_MALLOC_SIMPLE
429 bool
430 prompt "Only use malloc_simple functions in the TPL"
05705566 431 depends on TPL
d60b5f74
PT
432 help
433 Say Y here to only use the *_simple malloc functions from
434 malloc_simple.c, rather then using the versions from dlmalloc.c;
435 this will make the TPL binary smaller at the cost of more heap
436 usage as the *_simple malloc functions do not re-use free-ed mem.
437
f113d7d3
TR
438config SPL_SHARES_INIT_SP_ADDR
439 bool "SPL and U-Boot use the same initial stack pointer location"
440 depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
8b83b53a 441 default n if ARCH_SUNXI || ARCH_MX6 || ARCH_MX7
f113d7d3
TR
442 default y
443 help
444 In many cases, we can use the same initial stack pointer address for
445 both SPL and U-Boot itself. If you need to specify a different address
446 however, say N here and then set a different value in CONFIG_SPL_STACK.
447
448config SPL_STACK
449 hex "Initial stack pointer location"
450 depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
451 depends on !SPL_SHARES_INIT_SP_ADDR
8b83b53a 452 default 0x946bb8 if ARCH_MX7
23780398
TR
453 default 0x93ffb8 if ARCH_MX6 && MX6_OCRAM_256KB
454 default 0x91ffb8 if ARCH_MX6 && !MX6_OCRAM_256KB
f113d7d3
TR
455 help
456 Address of the start of the stack SPL will use before SDRAM is
457 initialized.
458
c2ae7d82 459config SPL_STACK_R
c2ae7d82
SG
460 bool "Enable SDRAM location for SPL stack"
461 help
462 SPL starts off execution in SRAM and thus typically has only a small
463 stack available. Since SPL sets up DRAM while in its board_init_f()
464 function, it is possible for the stack to move there before
465 board_init_r() is reached. This option enables a special SDRAM
466 location for the SPL stack. U-Boot SPL switches to this after
467 board_init_f() completes, and before board_init_r() starts.
468
469config SPL_STACK_R_ADDR
470 depends on SPL_STACK_R
471 hex "SDRAM location for SPL stack"
ff6c3125 472 default 0x82000000 if ARCH_OMAP2PLUS
c2ae7d82
SG
473 help
474 Specify the address in SDRAM for the SPL stack. This will be set up
475 before board_init_r() is called.
476
477config SPL_STACK_R_MALLOC_SIMPLE_LEN
478 depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
479 hex "Size of malloc_simple heap after switching to DRAM SPL stack"
480 default 0x100000
481 help
482 Specify the amount of the stack to use as memory pool for
483 malloc_simple after switching the stack to DRAM. This may be set
484 to give board_init_r() a larger heap then the initial heap in
485 SRAM which is limited to SYS_MALLOC_F_LEN bytes.
486
487config SPL_SEPARATE_BSS
c2ae7d82
SG
488 bool "BSS section is in a different memory region from text"
489 help
490 Some platforms need a large BSS region in SPL and can provide this
491 because RAM is already set up. In this case BSS can be moved to RAM.
492 This option should then be enabled so that the correct device tree
493 location is used. Normally we put the device tree at the end of BSS
494 but with this option enabled, it goes at _image_binary_end.
495
10f6e4dc
TR
496config SYS_SPL_MALLOC
497 bool "Enable malloc pool in SPL"
498 depends on SPL_FRAMEWORK
499
500config HAS_CUSTOM_SPL_MALLOC_START
501 bool "For the SPL malloc pool, define a custom starting address"
502 depends on SYS_SPL_MALLOC
503
504config CUSTOM_SYS_SPL_MALLOC_ADDR
505 hex "SPL malloc addr"
506 depends on HAS_CUSTOM_SPL_MALLOC_START
507
508config SYS_SPL_MALLOC_SIZE
509 hex "Size of the SPL malloc pool"
510 depends on SYS_SPL_MALLOC
511 default 0x100000
512
95a5825f
SG
513config SPL_READ_ONLY
514 bool
515 depends on SPL_OF_PLATDATA
516 # Bind cannot be supported because the udevice structs are in read-only
517 # memory so we cannot update the linked lists.
518 select SPL_OF_PLATDATA_NO_BIND
519 select SPL_OF_PLATDATA_RT
520 help
521 Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
522 section of memory. This means that of-platdata must make a copy (in
523 writeable memory) of anything it wants to modify, such as
524 device-private data.
525
f86ca5ad
SG
526config TPL_SEPARATE_BSS
527 bool "BSS section is in a different memory region from text"
528 default y if SPL_SEPARATE_BSS
529 help
530 Some platforms need a large BSS region in TPL and can provide this
531 because RAM is already set up. In this case BSS can be moved to RAM.
532 This option should then be enabled so that the correct device tree
533 location is used. Normally we put the device tree at the end of BSS
534 but with this option enabled, it goes at _image_binary_end.
535
aedc08b2
SG
536config SPL_BANNER_PRINT
537 bool "Enable output of the SPL banner 'U-Boot SPL ...'"
538 default y
539 help
540 If this option is enabled, SPL will print the banner with version
32f2ca2a 541 info. Disabling this option could be useful to reduce SPL boot time
aedc08b2
SG
542 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
543
544config TPL_BANNER_PRINT
545 bool "Enable output of the TPL banner 'U-Boot TPL ...'"
05705566 546 depends on TPL
aedc08b2 547 default y
0292bc0d 548 help
32f2ca2a
TH
549 If this option is enabled, TPL will print the banner with version
550 info. Disabling this option could be useful to reduce TPL boot time
aedc08b2 551 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
0292bc0d 552
a5a5d997
AD
553config SPL_EARLY_BSS
554 depends on ARM && !ARM64
555 bool "Allows initializing BSS early before entering board_init_f"
556 help
557 On some platform we have sufficient memory available early on to
558 allow setting up and using a basic BSS prior to entering
559 board_init_f. Activating this option will also de-activate the
560 clearing of BSS during the SPL relocation process, thus allowing
561 to carry state from board_init_f to board_init_r by way of BSS.
562
a807ab33 563config SPL_DISPLAY_PRINT
a807ab33
SG
564 bool "Display a board-specific message in SPL"
565 help
566 If this option is enabled, U-Boot will call the function
567 spl_display_print() immediately after displaying the SPL console
568 banner ("U-Boot SPL ..."). This function should be provided by
569 the board.
570
38fed8ab
SP
571config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
572 bool "MMC raw mode: by sector"
1da1938d
FE
573 default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
574 ARCH_MX6 || ARCH_MX7 || \
38fed8ab
SP
575 ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \
576 ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
ae2d9506 577 OMAP44XX || OMAP54XX || AM33XX || AM43XX || \
70415e1e 578 TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
38fed8ab
SP
579 help
580 Use sector number for specifying U-Boot location on MMC/SD in
581 raw mode.
582
583config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
584 hex "Address on the MMC to load U-Boot from"
226498b8 585 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
c0b417b2 586 default 0x40 if ARCH_SUNXI
38fed8ab 587 default 0x75 if ARCH_DAVINCI
1da1938d 588 default 0x8a if ARCH_MX6 || ARCH_MX7
8f4d62b4 589 default 0x100 if ARCH_UNIPHIER
2226ca17 590 default 0x0 if ARCH_MVEBU
38fed8ab
SP
591 default 0x200 if ARCH_SOCFPGA || ARCH_AT91
592 default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
586bde93 593 OMAP54XX || AM33XX || AM43XX || ARCH_K3
8f4d62b4 594 default 0x4000 if ARCH_ROCKCHIP
70415e1e 595 default 0x822 if TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
38fed8ab
SP
596 help
597 Address on the MMC to load U-Boot from, when the MMC is being used
598 in raw mode. Units: MMC sectors (1 sector = 512 bytes).
599
e42afd84
BS
600config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
601 hex "U-Boot main hardware partition image offset"
602 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
c0b417b2 603 default 0x10 if ARCH_SUNXI
e42afd84
BS
604 default 0x0
605 help
606 On some platforms SPL location depends on hardware partition. The ROM
607 code skips the MBR sector when loading SPL from main hardware data
608 partition. This adds offset to the main U-Boot image. Set this symbol
609 to the number of skipped sectors.
610
611 If unsure, leave the default.
612
949123e3
DW
613config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
614 bool "MMC Raw mode: by partition"
949123e3
DW
615 help
616 Use a partition for loading U-Boot when using MMC/SD in raw mode.
617
618config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
619 hex "Partition to use to load U-Boot from"
226498b8 620 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
949123e3
DW
621 default 1
622 help
623 Partition on the MMC to load U-Boot from when the MMC is being
624 used in raw mode
625
f0fb4fa7
DW
626config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
627 bool "MMC raw mode: by partition type"
226498b8 628 depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
f0fb4fa7
DW
629 help
630 Use partition type for specifying U-Boot partition on MMC/SD in
631 raw mode. U-Boot will be loaded from the first partition of this
632 type to be found.
633
634config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
635 hex "Partition Type on the MMC to load U-Boot from"
226498b8 636 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
f0fb4fa7
DW
637 help
638 Partition Type on the MMC to load U-Boot from, when the MMC is being
639 used in raw mode.
640
32ded502
AG
641config SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
642 bool "Override eMMC EXT_CSC_PART_CONFIG by user defined partition"
643 depends on SUPPORT_EMMC_BOOT
644 help
645 eMMC boot partition is normally configured by the bits of the EXT_CSD
646 register (EXT_CSC_PART_CONFIG), BOOT_PARTITION_ENABLE field. In some
647 cases it might be required in SPL to load the image from different
648 partition than the partition selected by EXT_CSC_PART_CONFIG register.
649 Enable this option if you intend to use an eMMC boot partition other
650 then selected via EXT_CSC_PART_CONFIG register and specify the custom
651 partition number by the CONFIG_SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
652 option.
653
654config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
655 int "Number of the eMMC boot partition to use"
656 depends on SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
657 default 1
658 help
659 eMMC boot partition number to use when the eMMC in raw mode and
660 the eMMC EXT_CSC_PART_CONFIG selection should be overridden in SPL
661 by user defined partition number.
662
1e52db67 663config SPL_CRC32
11bde1cd 664 bool "Support CRC32"
6665ab17 665 default y if SPL_LEGACY_IMAGE_FORMAT || SPL_EFI_PARTITION
e7d285b2 666 default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
11bde1cd 667 help
dae5c2dc
SG
668 Enable this to support CRC32 in uImages or FIT images within SPL.
669 This is a 32-bit checksum value that can be used to verify images.
670 For FIT images, this is the least secure type of checksum, suitable
671 for detected accidental image corruption. For secure applications you
672 should consider SHA1 or SHA256.
11bde1cd 673
4b00fd1a 674config SPL_MD5
11bde1cd
SG
675 bool "Support MD5"
676 depends on SPL_FIT
677 help
678 Enable this to support MD5 in FIT images within SPL. An MD5
679 checksum is a 128-bit hash value used to check that the image
680 contents have not been corrupted. Note that MD5 is not considered
681 secure as it is possible (with a brute-force attack) to adjust the
682 image while still retaining the same MD5 hash value. For secure
683 applications where images may be changed maliciously, you should
d16b38f4 684 consider SHA256 or SHA384.
11bde1cd 685
337bbb62
PT
686config SPL_FIT_IMAGE_TINY
687 bool "Remove functionality from SPL FIT loading to reduce size"
688 depends on SPL_FIT
44726096 689 default y if MACH_SUN50I || MACH_SUN50I_H5 || SUN50I_GEN_H6
f6282cdd 690 default y if ARCH_IMX8M
337bbb62
PT
691 help
692 Enable this to reduce the size of the FIT image loading code
693 in SPL, if space for the SPL binary is very tight.
694
cf70553e 695 This skips the recording of each loaded payload
337bbb62
PT
696 (i.e. loadable) into the FDT (modifying the loaded FDT to
697 ensure this information is available to the next image
698 invoked).
699
de213c71 700config SPL_CACHE
31dae22f
RC
701 bool "Support CACHE drivers"
702 help
703 Enable CACHE drivers in SPL. These drivers can keep data so that
704 future requests for that data can be served faster. Enable this option
705 to build the drivers in drivers/cache as part of an SPL build.
706
529d5f96 707config SPL_CPU
5e148df9 708 bool "Support CPU drivers"
5e148df9
SG
709 help
710 Enable this to support CPU drivers in SPL. These drivers can set
711 up CPUs and provide information about them such as the model and
712 name. This can be useful in SPL since setting up the CPUs earlier
713 may improve boot performance. Enable this option to build the
714 drivers in drivers/cpu as part of an SPL build.
715
0c6bdbb9 716config SPL_CRYPTO
11bde1cd 717 bool "Support crypto drivers"
11bde1cd
SG
718 help
719 Enable crypto drivers in SPL. These drivers can be used to
720 accelerate secure boot processing in secure applications. Enable
721 this option to build the drivers in drivers/crypto as part of an
722 SPL build.
723
74326a32 724config SPL_DMA
11bde1cd 725 bool "Support DMA drivers"
11bde1cd
SG
726 help
727 Enable DMA (direct-memory-access) drivers in SPL. These drivers
728 can be used to handle memory-to-peripheral data transfer without
729 the CPU moving the data. Enable this option to build the drivers
730 in drivers/dma as part of an SPL build.
731
9ca00684 732config SPL_DRIVERS_MISC
11bde1cd 733 bool "Support misc drivers"
11bde1cd
SG
734 help
735 Enable miscellaneous drivers in SPL. These drivers perform various
736 tasks that don't fall nicely into other categories, Enable this
737 option to build the drivers in drivers/misc as part of an SPL
738 build, for those that support building in SPL (not all drivers do).
739
740config SPL_ENV_SUPPORT
741 bool "Support an environment"
11bde1cd
SG
742 help
743 Enable environment support in SPL. The U-Boot environment provides
744 a number of settings (essentially name/value pairs) which can
745 control many aspects of U-Boot's operation. Normally this is not
746 needed in SPL as it has a much simpler task with less
747 configuration. But some boards use this to support 'Falcon' boot
748 on EXT2 and FAT, where SPL boots directly into Linux without
00caae6d 749 starting U-Boot first. Enabling this option will make env_get()
382bee57 750 and env_set() available in SPL.
11bde1cd 751
d2d9bdfc
R
752config SPL_SAVEENV
753 bool "Support save environment"
226498b8 754 depends on SPL_ENV_SUPPORT
d6400c3f 755 select SPL_MMC_WRITE if ENV_IS_IN_MMC
d2d9bdfc
R
756 help
757 Enable save environment support in SPL after setenv. By default
758 the saveenv option is not provided in SPL, but some boards need
759 this support in 'Falcon' boot, where SPL need to boot from
760 different images based on environment variable set by OS. For
761 example OS may set "reboot_image" environment variable to
762 "recovery" inorder to boot recovery image by SPL. The SPL read
763 "reboot_image" and act accordingly and change the reboot_image
919d25c9 764 to default mode using setenv and save the environment.
d2d9bdfc 765
f2d7a36e 766config SPL_ETH
11bde1cd
SG
767 bool "Support Ethernet"
768 depends on SPL_ENV_SUPPORT
9f664920 769 depends on SPL_NET
11bde1cd
SG
770 help
771 Enable access to the network subsystem and associated Ethernet
772 drivers in SPL. This permits SPL to load U-Boot over an Ethernet
773 link rather than from an on-board peripheral. Environment support
774 is required since the network stack uses a number of environment
5ed16a95 775 variables. See also SPL_NET.
11bde1cd 776
f4b40924 777config SPL_FS_EXT4
11bde1cd 778 bool "Support EXT filesystems"
11bde1cd
SG
779 help
780 Enable support for EXT2/3/4 filesystems with SPL. This permits
781 U-Boot (or Linux in Falcon mode) to be loaded from an EXT
782 filesystem from within SPL. Support for the underlying block
783 device (e.g. MMC or USB) must be enabled separately.
784
c5100613
JMC
785config SPL_FS_SQUASHFS
786 bool "Support SquashFS filesystems"
787 select FS_SQUASHFS
788 help
789 Enable support for SquashFS filesystems with SPL. This permits
790 U-Boot (or Linux in Falcon mode) to be loaded from a SquashFS
791 filesystem from within SPL. Support for the underlying block
792 device (e.g. MMC or USB) must be enabled separately.
793
0c3a9ed4 794config SPL_FS_FAT
11bde1cd 795 bool "Support FAT filesystems"
eedfb89e 796 select FS_FAT
11bde1cd
SG
797 help
798 Enable support for FAT and VFAT filesystems with SPL. This
799 permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
800 filesystem from within SPL. Support for the underlying block
801 device (e.g. MMC or USB) must be enabled separately.
802
4a11e34b
TR
803config SPL_FS_LOAD_PAYLOAD_NAME
804 string "File to load for U-Boot from the filesystem"
805 depends on SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS
806 default "tispl.bin" if SYS_K3_SPL_ATF
807 default "u-boot.itb" if SPL_LOAD_FIT
808 default "u-boot.img"
809 help
810 Filename to read to load U-Boot when reading from filesystem.
811
812config SPL_FS_LOAD_KERNEL_NAME
813 string "File to load for the OS kernel from the filesystem"
814 depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
815 default "uImage"
816 help
817 Filename to read to load for the OS kernel when reading from the
818 filesystem.
819
820config SPL_FS_LOAD_ARGS_NAME
821 string "File to load for the OS kernel argument parameters from the filesystem"
822 depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
823 default "args"
824 help
825 Filename to read to load for the OS kernel argument parameters from
826 the filesystem.
827
d8c3ea99
TFC
828config SPL_FAT_WRITE
829 bool "Support write for FAT filesystems"
830 help
831 Enable write support for FAT and VFAT filesystems with SPL.
832 Support for the underlying block device (e.g. MMC or USB) must be
833 enabled separately.
834
29bd8ada 835config SPL_FPGA
11bde1cd 836 bool "Support FPGAs"
11bde1cd
SG
837 help
838 Enable support for FPGAs in SPL. Field-programmable Gate Arrays
839 provide software-configurable hardware which is typically used to
840 implement peripherals (such as UARTs, LCD displays, MMC) or
841 accelerate custom processing functions, such as image processing
842 or machine learning. Sometimes it is useful to program the FPGA
843 as early as possible during boot, and this option can enable that
844 within SPL.
845
83061dbd 846config SPL_GPIO
2d424eb0 847 bool "Support GPIO in SPL"
11bde1cd
SG
848 help
849 Enable support for GPIOs (General-purpose Input/Output) in SPL.
850 GPIOs allow U-Boot to read the state of an input line (high or
851 low) and set the state of an output line. This can be used to
852 drive LEDs, control power to various system parts and read user
853 input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
854 for example. Enable this option to build the drivers in
855 drivers/gpio as part of an SPL build.
856
975e7cf3 857config SPL_I2C
11bde1cd 858 bool "Support I2C"
11bde1cd
SG
859 help
860 Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
861 I2C works with a clock and data line which can be driven by a
862 one or more masters or slaves. It is a fairly complex bus but is
863 widely used as it only needs two lines for communication. Speeds of
864 400kbps are typical but up to 3.4Mbps is supported by some
865 hardware. I2C can be useful in SPL to configure power management
866 ICs (PMICs) before raising the CPU clock speed, for example.
867 Enable this option to build the drivers in drivers/i2c as part of
868 an SPL build.
869
870config SPL_LIBCOMMON_SUPPORT
871 bool "Support common libraries"
11bde1cd
SG
872 help
873 Enable support for common U-Boot libraries within SPL. These
874 libraries include common code to deal with U-Boot images,
875 environment and USB, for example. This option is enabled on many
876 boards. Enable this option to build the code in common/ as part of
877 an SPL build.
878
879config SPL_LIBDISK_SUPPORT
00416704 880 bool "Support disk partitions"
91ff6865 881 select PARTITIONS
11bde1cd
SG
882 help
883 Enable support for disk partitions within SPL. 'Disk' is something
884 of a misnomer as it includes non-spinning media such as flash (as
885 used in MMC and USB sticks). Partitions provide a way for a disk
886 to be split up into separate regions, with a partition table placed
887 at the start or end which describes the location and size of each
888 'partition'. These partitions are typically uses as individual block
889 devices, typically with an EXT2 or FAT filesystem in each. This
890 option enables whatever partition support has been enabled in
891 U-Boot to also be used in SPL. It brings in the code in disk/.
892
893config SPL_LIBGENERIC_SUPPORT
894 bool "Support generic libraries"
11bde1cd
SG
895 help
896 Enable support for generic U-Boot libraries within SPL. These
897 libraries include generic code to deal with device tree, hashing,
898 printf(), compression and the like. This option is enabled on many
899 boards. Enable this option to build the code in lib/ as part of an
900 SPL build.
901
88027419
LV
902config SPL_DM_MAILBOX
903 bool "Support Mailbox"
904 help
905 Enable support for Mailbox within SPL. This enable the inter
906 processor communication protocols tobe used within SPL. Enable
907 this option to build the drivers in drivers/mailbox as part of
908 SPL build.
909
103c5f18 910config SPL_MMC
11bde1cd 911 bool "Support MMC"
226498b8 912 depends on MMC
91ff6865 913 select HAVE_BLOCK_DEVICE
11bde1cd
SG
914 help
915 Enable support for MMC (Multimedia Card) within SPL. This enables
916 the MMC protocol implementation and allows any enabled drivers to
917 be used within SPL. MMC can be used with or without disk partition
918 support depending on the application (SPL_LIBDISK_SUPPORT). Enable
919 this option to build the drivers in drivers/mmc as part of an SPL
920 build.
921
acc415ac
AF
922config SYS_MMCSD_FS_BOOT_PARTITION
923 int "MMC Boot Partition"
924 default 1
925 help
926 Partition on the MMC to load U-Boot from when the MMC is being
5fa973eb
JC
927 used in fs mode.
928 Use -1 as a special value to use the first bootable partition.
acc415ac 929
bf7c01d9
EG
930config SPL_MMC_TINY
931 bool "Tiny MMC framework in SPL"
103c5f18 932 depends on SPL_MMC
bf7c01d9
EG
933 help
934 Enable MMC framework tinification support. This option is useful if
935 if your SPL is extremely size constrained. Heed the warning, enable
936 this option if and only if you know exactly what you are doing, if
937 you are reading this help text, you most likely have no idea :-)
938
939 The MMC framework is reduced to bare minimum to be useful. No malloc
940 support is needed for the MMC framework operation with this option
941 enabled. The framework supports exactly one MMC device and exactly
942 one MMC driver. The MMC driver can be adjusted to avoid any malloc
943 operations too, which can remove the need for malloc support in SPL
944 and thus further reduce footprint.
945
d6400c3f
JJH
946config SPL_MMC_WRITE
947 bool "MMC/SD/SDIO card support for write operations in SPL"
103c5f18 948 depends on SPL_MMC
d6400c3f
JJH
949 help
950 Enable write access to MMC and SD Cards in SPL
951
952
6f004ada 953config SPL_MPC8XXX_INIT_DDR
11bde1cd 954 bool "Support MPC8XXX DDR init"
11bde1cd
SG
955 help
956 Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
957 random-access memory) on the MPC8XXX family within SPL. This
958 allows DRAM to be set up before loading U-Boot into that DRAM,
959 where it can run.
960
961config SPL_MTD_SUPPORT
962 bool "Support MTD drivers"
11bde1cd
SG
963 help
964 Enable support for MTD (Memory Technology Device) within SPL. MTD
965 provides a block interface over raw NAND and can also be used with
966 SPI flash. This allows SPL to load U-Boot from supported MTD
967 devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
968 to enable specific MTD drivers.
969
89ddb0bf 970config SPL_MUSB_NEW
11bde1cd 971 bool "Support new Mentor Graphics USB"
11bde1cd
SG
972 help
973 Enable support for Mentor Graphics USB in SPL. This is a new
974 driver used by some boards. Enable this option to build
975 the drivers in drivers/usb/musb-new as part of an SPL build. The
976 old drivers are in drivers/usb/musb.
977
978config SPL_NAND_SUPPORT
979 bool "Support NAND flash"
11bde1cd
SG
980 help
981 Enable support for NAND (Negative AND) flash in SPL. NAND flash
982 can be used to allow SPL to load U-Boot from supported devices.
a430fa06 983 This enables the drivers in drivers/mtd/nand/raw as part of an SPL
11bde1cd
SG
984 build.
985
bab1b35c
TR
986config SPL_NAND_RAW_ONLY
987 bool "Support to boot only raw u-boot.bin images"
988 depends on SPL_NAND_SUPPORT
989 help
990 Use this only if you need to save space.
991
0c4a6343
AF
992config SPL_NAND_DRIVERS
993 bool "Use standard NAND driver"
994 help
995 SPL uses normal NAND drivers, not minimal drivers.
996
997config SPL_NAND_ECC
bab1b35c
TR
998 bool "Include standard ECC in SPL"
999
1000config SPL_NAND_SOFTECC
1001 bool "Use software ECC in SPL"
1002 depends on SPL_NAND_ECC
0c4a6343
AF
1003
1004config SPL_NAND_SIMPLE
1005 bool "Support simple NAND drivers in SPL"
1006 help
1007 Support for NAND boot using simple NAND drivers that
1008 expose the cmd_ctrl() interface.
1009
38791064
AF
1010config SPL_NAND_BASE
1011 depends on SPL_NAND_DRIVERS
1012 bool "Use Base NAND Driver"
ce869b55
MS
1013 help
1014 Include nand_base.c in the SPL.
38791064
AF
1015
1016config SPL_NAND_IDENT
1017 depends on SPL_NAND_BASE
1018 bool "Use chip ID to identify NAND flash"
1019 help
1020 SPL uses the chip ID list to identify the NAND flash.
1021
c67c3492
MK
1022config SPL_UBI
1023 bool "Support UBI"
1024 help
1025 Enable support for loading payloads from UBI. See
1026 README.ubispl for more info.
1027
f18845c2
LM
1028if SPL_DM
1029config SPL_DM_SPI
1030 bool "Support SPI DM drivers in SPL"
1031 help
1032 Enable support for SPI DM drivers in SPL.
1033
56c40460
LM
1034config SPL_DM_SPI_FLASH
1035 bool "Support SPI DM FLASH drivers in SPL"
1036 help
1037 Enable support for SPI DM flash drivers in SPL.
1038
f18845c2 1039endif
c67c3492 1040if SPL_UBI
6ea31cce
HG
1041config SPL_UBI_LOAD_BY_VOLNAME
1042 bool "Support loading volumes by name"
1043 help
1044 This enables support for loading UBI volumes by name. When this
1045 is set, CONFIG_SPL_UBI_LOAD_MONITOR_VOLNAME can be used to
1046 configure the volume name from which to load U-Boot.
1047
c67c3492
MK
1048config SPL_UBI_MAX_VOL_LEBS
1049 int "Maximum number of LEBs per volume"
1050 depends on SPL_UBI
1051 help
1052 The maximum number of logical eraseblocks which a static volume
1053 to load can contain. Used for sizing the scan data structure.
1054
1055config SPL_UBI_MAX_PEB_SIZE
1056 int "Maximum PEB size"
1057 depends on SPL_UBI
1058 help
1059 The maximum physical erase block size.
1060
1061config SPL_UBI_MAX_PEBS
1062 int "Maximum number of PEBs"
1063 depends on SPL_UBI
1064 help
1065 The maximum physical erase block size. If not overridden by
1066 board code, this value will be used as the actual number of PEBs.
1067
1068config SPL_UBI_PEB_OFFSET
1069 int "Offset to first UBI PEB"
1070 depends on SPL_UBI
1071 help
1072 The offset in number of PEBs from the start of flash to the first
1073 PEB part of the UBI image.
1074
1075config SPL_UBI_VID_OFFSET
1076 int "Offset to VID header"
1077 depends on SPL_UBI
1078
1079config SPL_UBI_LEB_START
1080 int "Offset to LEB in PEB"
1081 depends on SPL_UBI
1082 help
1083 The offset in bytes to the LEB within a PEB.
1084
1085config SPL_UBI_INFO_ADDR
1086 hex "Address to place UBI scan info"
1087 depends on SPL_UBI
1088 help
1089 Address for ubispl to place the scan info. Read README.ubispl to
1090 determine the required size
1091
1092config SPL_UBI_VOL_IDS
1093 int "Maximum volume id"
1094 depends on SPL_UBI
1095 help
1096 The maximum volume id which can be loaded. Used for sizing the
1097 scan data structure.
1098
1099config SPL_UBI_LOAD_MONITOR_ID
1100 int "id of U-Boot volume"
1101 depends on SPL_UBI
1102 help
1103 The UBI volume id from which to load U-Boot
1104
6ea31cce
HG
1105config SPL_UBI_LOAD_MONITOR_VOLNAME
1106 string "volume name of U-Boot volume"
1107 depends on SPL_UBI_LOAD_BY_VOLNAME
1108 help
1109 The UBI volume name from which to load U-Boot
1110
c67c3492
MK
1111config SPL_UBI_LOAD_KERNEL_ID
1112 int "id of kernel volume"
1113 depends on SPL_OS_BOOT && SPL_UBI
1114 help
1115 The UBI volume id from which to load the kernel
1116
1117config SPL_UBI_LOAD_ARGS_ID
1118 int "id of kernel args volume"
1119 depends on SPL_OS_BOOT && SPL_UBI
1120 help
1121 The UBI volume id from which to load the device tree
1122
a2257d37
MK
1123config UBI_SPL_SILENCE_MSG
1124 bool "silence UBI SPL messages"
a2257d37
MK
1125 help
1126 Disable messages from UBI SPL. This leaves warnings
1127 and errors enabled.
c67c3492
MK
1128
1129endif # if SPL_UBI
1130
5ed16a95 1131config SPL_NET
11bde1cd 1132 bool "Support networking"
11bde1cd
SG
1133 help
1134 Enable support for network devices (such as Ethernet) in SPL.
1135 This permits SPL to load U-Boot over a network link rather than
1136 from an on-board peripheral. Environment support is required since
1137 the network stack uses a number of environment variables. See also
f2d7a36e 1138 SPL_ETH.
11bde1cd 1139
5ed16a95 1140if SPL_NET
11bde1cd
SG
1141config SPL_NET_VCI_STRING
1142 string "BOOTP Vendor Class Identifier string sent by SPL"
1143 help
1144 As defined by RFC 2132 the vendor class identifier field can be
1145 sent by the client to identify the vendor type and configuration
1146 of a client. This is often used in practice to allow for the DHCP
1147 server to specify different files to load depending on if the ROM,
1148 SPL or U-Boot itself makes the request
5ed16a95 1149endif # if SPL_NET
11bde1cd
SG
1150
1151config SPL_NO_CPU_SUPPORT
1152 bool "Drop CPU code in SPL"
11bde1cd
SG
1153 help
1154 This is specific to the ARM926EJ-S CPU. It disables the standard
1155 start.S start-up code, presumably so that a replacement can be
1156 used on that CPU. You should not enable it unless you know what
1157 you are doing.
1158
1159config SPL_NOR_SUPPORT
1160 bool "Support NOR flash"
11bde1cd
SG
1161 help
1162 Enable support for loading U-Boot from memory-mapped NOR (Negative
1163 OR) flash in SPL. NOR flash is slow to write but fast to read, and
1164 a memory-mapped device makes it very easy to access. Loading from
1165 NOR is typically achieved with just a memcpy().
1166
c6d9e9db
VM
1167config SPL_XIP_SUPPORT
1168 bool "Support XIP"
1169 depends on SPL
1170 help
1171 Enable support for execute in place of U-Boot or kernel image. There
1172 is no need to copy image from flash to ram if flash supports execute
1173 in place. Its very useful in systems having enough flash but not
1174 enough ram to load the image.
1175
11bde1cd
SG
1176config SPL_ONENAND_SUPPORT
1177 bool "Support OneNAND flash"
11bde1cd
SG
1178 help
1179 Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
1180 a type of NAND flash and therefore can be used to allow SPL to
1181 load U-Boot from supported devices. This enables the drivers in
1182 drivers/mtd/onenand as part of an SPL build.
1183
c20ae2ff
HS
1184config SPL_OS_BOOT
1185 bool "Activate Falcon Mode"
226498b8 1186 depends on !TI_SECURE_DEVICE
c20ae2ff
HS
1187 help
1188 Enable booting directly to an OS from SPL.
1189 for more info read doc/README.falcon
1190
b4b9a00e
TR
1191config SYS_SPL_ARGS_ADDR
1192 hex "Address in memory to load 'args' file for Falcon Mode to"
1193 depends on SPL_OS_BOOT
1194 default 0x88000000 if ARCH_OMAP2PLUS
1195 help
1196 Address in memory where the 'args' file, typically a device tree
1197 will be loaded in to memory.
1198
29d3bc79
HS
1199if SPL_OS_BOOT
1200config SYS_OS_BASE
1201 hex "addr, where OS is found"
226498b8 1202 depends on SPL_NOR_SUPPORT
29d3bc79
HS
1203 help
1204 Specify the address, where the OS image is found, which
1205 gets booted.
1206
1207endif # SPL_OS_BOOT
1208
22eb1526
AG
1209config SPL_FALCON_BOOT_MMCSD
1210 bool "Enable Falcon boot from MMC or SD media"
1211 depends on SPL_OS_BOOT && SPL_MMC
1212 help
1213 Select this if the Falcon mode OS image mode is on MMC or SD media.
1214
1215config SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
1216 hex "Falcon mode: Sector to load kernel uImage from MMC"
1217 depends on SPL_FALCON_BOOT_MMCSD
1218 help
1219 When Falcon mode is used with an MMC or SD media, SPL needs to know
1220 where to look for the kernel uImage. The image is expected to begin
1221 at the raw MMC specified in this config.
1222 Note that the Falcon mode image can also be a FIT, if FIT support is
1223 enabled.
1224
7550dbe3
YS
1225config SPL_PAYLOAD
1226 string "SPL payload"
1227 default "tpl/u-boot-with-tpl.bin" if TPL
1228 default "u-boot.bin"
1229 help
2dcfa058 1230 Payload for SPL boot. For backward compatibility, default to
7550dbe3
YS
1231 u-boot.bin, i.e. RAW image without any header. In case of
1232 TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
1233 use u-boot.img.
1234
d50d6817 1235config SPL_PCI
2446b6b8 1236 bool "Support PCI drivers"
2446b6b8
SG
1237 help
1238 Enable support for PCI in SPL. For platforms that need PCI to boot,
1239 or must perform some init using PCI in SPL, this provides the
1240 necessary driver support. This enables the drivers in drivers/pci
1241 as part of an SPL build.
1242
15042e7b 1243config SPL_PCH
bbe41abf 1244 bool "Support PCH drivers"
bbe41abf
SG
1245 help
1246 Enable support for PCH (Platform Controller Hub) devices in SPL.
1247 These are used to set up GPIOs and the SPI peripheral early in
1248 boot. This enables the drivers in drivers/pch as part of an SPL
1249 build.
1250
11bde1cd
SG
1251config SPL_POST_MEM_SUPPORT
1252 bool "Support POST drivers"
11bde1cd
SG
1253 help
1254 Enable support for POST (Power-on Self Test) in SPL. POST is a
1255 procedure that checks that the hardware (CPU or board) appears to
1256 be functionally correctly. It is a sanity check that can be
1257 performed before booting. This enables the drivers in post/drivers
1258 as part of an SPL build.
1259
bfc6bae8 1260config SPL_DM_RESET
0e373c0a
PD
1261 bool "Support reset drivers"
1262 depends on SPL
1263 help
1264 Enable support for reset control in SPL.
1265 That can be useful in SPL to handle IP reset in driver, as in U-Boot,
1266 by using the generic reset API provided by driver model.
1267 This enables the drivers in drivers/reset as part of an SPL build.
1268
933b2f09 1269config SPL_POWER
11bde1cd 1270 bool "Support power drivers"
11bde1cd
SG
1271 help
1272 Enable support for power control in SPL. This includes support
1273 for PMICs (Power-management Integrated Circuits) and some of the
1274 features provided by PMICs. In particular, voltage regulators can
1275 be used to enable/disable power and vary its voltage. That can be
1276 useful in SPL to turn on boot peripherals and adjust CPU voltage
1277 so that the clock speed can be increased. This enables the drivers
1278 in drivers/power, drivers/power/pmic and drivers/power/regulator
1279 as part of an SPL build.
1280
e13278c9
PF
1281config SPL_POWER_DOMAIN
1282 bool "Support power domain drivers"
a4faf1f5 1283 select SPL_POWER
e13278c9
PF
1284 help
1285 Enable support for power domain control in SPL. Many SoCs allow
1286 power to be applied to or removed from portions of the SoC (power
1287 domains). This may be used to save power. This API provides the
1288 means to control such power management hardware. This enables
1289 the drivers in drivers/power/domain as part of a SPL build.
1290
22802f4e
SA
1291config SPL_RAM_SUPPORT
1292 bool "Support booting from RAM"
18138ab2 1293 default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
22802f4e
SA
1294 help
1295 Enable booting of an image in RAM. The image can be preloaded or
1296 it can be loaded by SPL directly into RAM (e.g. using USB).
1297
f417d40f
SA
1298config SPL_RAM_DEVICE
1299 bool "Support booting from preloaded image in RAM"
22802f4e 1300 depends on SPL_RAM_SUPPORT
18138ab2 1301 default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
f417d40f
SA
1302 help
1303 Enable booting of an image already loaded in RAM. The image has to
1304 be already in memory when SPL takes over, e.g. loaded by the boot
1305 ROM.
1306
08c45314
LV
1307config SPL_REMOTEPROC
1308 bool "Support REMOTEPROCS"
1309 help
1310 Enable support for REMOTEPROCs in SPL. This permits to load
1311 a remote processor firmware in SPL.
1312
73c6ff6a 1313config SPL_RTC
30bf8a0d 1314 bool "Support RTC drivers"
30bf8a0d
SG
1315 help
1316 Enable RTC (Real-time Clock) support in SPL. This includes support
1317 for reading and setting the time. Some RTC devices also have some
1318 non-volatile (battery-backed) memory which is accessible if
1319 needed. This enables the drivers in drivers/rtc as part of an SPL
1320 build.
1321
f7560376 1322config SPL_SATA
11bde1cd 1323 bool "Support loading from SATA"
11bde1cd
SG
1324 help
1325 Enable support for SATA (Serial AT attachment) in SPL. This allows
1326 use of SATA devices such as hard drives and flash drivers for
1327 loading U-Boot. SATA is used in higher-end embedded systems and
1328 can provide higher performance than MMC , at somewhat higher
1329 expense and power consumption. This enables loading from SATA
1330 using a configured device.
1331
60ca969a
BS
1332config SPL_SATA_RAW_U_BOOT_USE_SECTOR
1333 bool "SATA raw mode: by sector"
f7560376 1334 depends on SPL_SATA
2226ca17 1335 default y if ARCH_MVEBU
60ca969a
BS
1336 help
1337 Use sector number for specifying U-Boot location on SATA disk in
1338 raw mode.
1339
1340config SPL_SATA_RAW_U_BOOT_SECTOR
1341 hex "Sector on the SATA disk to load U-Boot from"
1342 depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
2226ca17 1343 default 0x1 if ARCH_MVEBU
60ca969a
BS
1344 help
1345 Sector on the SATA disk to load U-Boot from, when the SATA disk is being
1346 used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
1347
2a736066 1348config SPL_SERIAL
11bde1cd 1349 bool "Support serial"
14ad44ab
AK
1350 select SPL_PRINTF
1351 select SPL_STRTO
11bde1cd
SG
1352 help
1353 Enable support for serial in SPL. This allows use of a serial UART
1354 for displaying messages while SPL is running. It also brings in
1355 printf() and panic() functions. This should normally be enabled
1356 unless there are space reasons not to. Even then, consider
27084c03 1357 enabling SPL_USE_TINY_PRINTF which is a small printf() version.
11bde1cd 1358
ea2ca7e1 1359config SPL_SPI
d024e992
SG
1360 bool "Support SPI drivers"
1361 help
1362 Enable support for using SPI in SPL. This is used for connecting
1363 to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
1364 more details on that. The SPI driver provides the transport for
1365 data between the SPI flash and the CPU. This option can be used to
1366 enable SPI drivers that are needed for other purposes also, such
1367 as a SPI PMIC.
1368
11bde1cd
SG
1369config SPL_SPI_FLASH_SUPPORT
1370 bool "Support SPI flash drivers"
ea2ca7e1 1371 depends on SPL_SPI
11bde1cd
SG
1372 help
1373 Enable support for using SPI flash in SPL, and loading U-Boot from
1374 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
1375 the SPI bus that is used to connect it to a system. It is a simple
1376 but fast bidirectional 4-wire bus (clock, chip select and two data
1377 lines). This enables the drivers in drivers/mtd/spi as part of an
ea2ca7e1 1378 SPL build. This normally requires SPL_SPI.
11bde1cd 1379
0c6f187c
V
1380if SPL_SPI_FLASH_SUPPORT
1381
778572d7
V
1382config SPL_SPI_FLASH_TINY
1383 bool "Enable low footprint SPL SPI Flash support"
1384 depends on !SPI_FLASH_BAR
72875978 1385 default y if SPI_FLASH
778572d7
V
1386 help
1387 Enable lightweight SPL SPI Flash support that supports just reading
1388 data/images from flash. No support to write/erase flash. Enable
1389 this if you have SPL size limitations and don't need full
1390 fledged SPI flash support.
1391
0c6f187c
V
1392config SPL_SPI_FLASH_SFDP_SUPPORT
1393 bool "SFDP table parsing support for SPI NOR flashes"
778572d7 1394 depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
0c6f187c
V
1395 help
1396 Enable support for parsing and auto discovery of parameters for
1397 SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
1398 tables as per JESD216 standard in SPL.
1399
56c40460
LM
1400config SPL_SPI_FLASH_MTD
1401 bool "Support for SPI flash MTD drivers in SPL"
1402 help
1403 Enable support for SPI flash MTD drivers in SPL.
1404
55500438
MV
1405config SPL_SPI_LOAD
1406 bool "Support loading from SPI flash"
55500438
MV
1407 help
1408 Enable support for loading next stage, U-Boot or otherwise, from
1409 SPI NOR in U-Boot SPL.
1410
0c6f187c
V
1411endif # SPL_SPI_FLASH_SUPPORT
1412
1ee774d2
HS
1413config SYS_SPI_U_BOOT_OFFS
1414 hex "address of u-boot payload in SPI flash"
671d64fe 1415 default 0x8000 if ARCH_SUNXI
1ee774d2
HS
1416 default 0x0
1417 depends on SPL_SPI_LOAD || SPL_SPI_SUNXI
1418 help
1419 Address within SPI-Flash from where the u-boot payload is fetched
1420 from.
1421
8502f9f6
FA
1422config SPL_THERMAL
1423 bool "Driver support for thermal devices"
1424 help
1425 Enable support for temperature-sensing devices. Some SoCs have on-chip
1426 temperature sensors to permit warnings, speed throttling or even
1427 automatic power-off when the temperature gets too high or low. Other
1428 devices may be discrete but connected on a suitable bus.
1429
333e4a62 1430config SPL_USB_HOST
11bde1cd 1431 bool "Support USB host drivers"
91ff6865 1432 select HAVE_BLOCK_DEVICE
11bde1cd
SG
1433 help
1434 Enable access to USB (Universal Serial Bus) host devices so that
1435 SPL can load U-Boot from a connected USB peripheral, such as a USB
1436 flash stick. While USB takes a little longer to start up than most
1437 buses, it is very flexible since many different types of storage
1438 device can be attached. This option enables the drivers in
1439 drivers/usb/host as part of an SPL build.
1440
79536013 1441config SPL_USB_STORAGE
11bde1cd 1442 bool "Support loading from USB"
333e4a62 1443 depends on SPL_USB_HOST && !(BLK && !DM_USB)
11bde1cd
SG
1444 help
1445 Enable support for USB devices in SPL. This allows use of USB
1446 devices such as hard drives and flash drivers for loading U-Boot.
1447 The actual drivers are enabled separately using the normal U-Boot
1448 config options. This enables loading from USB using a configured
1449 device.
1450
f811e976 1451config SPL_USB_GADGET
e94793c8 1452 bool "Suppport USB Gadget drivers"
e94793c8
SA
1453 help
1454 Enable USB Gadget API which allows to enable USB device functions
1455 in SPL.
1456
f811e976 1457if SPL_USB_GADGET
e94793c8 1458
b432b1eb 1459config SPL_USB_ETHER
e94793c8 1460 bool "Support USB Ethernet drivers"
9f664920 1461 depends on SPL_NET
e94793c8
SA
1462 help
1463 Enable access to the USB network subsystem and associated
1464 drivers in SPL. This permits SPL to load U-Boot over a
1465 USB-connected Ethernet link (such as a USB Ethernet dongle) rather
1466 than from an onboard peripheral. Environment support is required
1467 since the network stack uses a number of environment variables.
5ed16a95 1468 See also SPL_NET and SPL_ETH.
e94793c8 1469
6536ca4d 1470config SPL_DFU
c3c19c27 1471 bool "Support DFU (Device Firmware Upgrade)"
07212096 1472 select SPL_HASH
66928afb 1473 select SPL_DFU_NO_RESET
1b19cbdb 1474 depends on SPL_RAM_SUPPORT
5991703e 1475 help
c3c19c27 1476 This feature enables the DFU (Device Firmware Upgrade) in SPL with
5991703e
SA
1477 RAM memory device support. The ROM code will load and execute
1478 the SPL built with dfu. The user can load binaries (u-boot/kernel) to
1479 selected device partition from host-pc using dfu-utils.
1480 This feature is useful to flash the binaries to factory or bare-metal
1481 boards using USB interface.
1482
1483choice
1484 bool "DFU device selection"
6536ca4d 1485 depends on SPL_DFU
5991703e
SA
1486
1487config SPL_DFU_RAM
1488 bool "RAM device"
6536ca4d 1489 depends on SPL_DFU && SPL_RAM_SUPPORT
5991703e
SA
1490 help
1491 select RAM/DDR memory device for loading binary images
1492 (u-boot/kernel) to the selected device partition using
1493 DFU and execute the u-boot/kernel from RAM.
1494
1495endchoice
1496
a3774c1c
SA
1497config SPL_USB_SDP_SUPPORT
1498 bool "Support SDP (Serial Download Protocol)"
2a736066 1499 depends on SPL_SERIAL
a3774c1c
SA
1500 help
1501 Enable Serial Download Protocol (SDP) device support in SPL. This
1502 allows to download images into memory and execute (jump to) them
1503 using the same protocol as implemented by the i.MX family's boot ROM.
407e3844
YL
1504
1505config SPL_SDP_USB_DEV
1506 int "SDP USB controller index"
1507 default 0
1508 depends on SPL_USB_SDP_SUPPORT
1509 help
1510 Some boards have USB controller other than 0. Define this option
1511 so it can be used in compiled environment.
e94793c8
SA
1512endif
1513
078111b9 1514config SPL_WATCHDOG
11bde1cd 1515 bool "Support watchdog drivers"
6874cb72 1516 imply SPL_WDT if !HW_WATCHDOG
11bde1cd
SG
1517 help
1518 Enable support for watchdog drivers in SPL. A watchdog is
1519 typically a hardware peripheral which can reset the system when it
1520 detects no activity for a while (such as a software crash). This
1521 enables the drivers in drivers/watchdog as part of an SPL build.
1522
1523config SPL_YMODEM_SUPPORT
1524 bool "Support loading using Ymodem"
2a736066 1525 depends on SPL_SERIAL
11bde1cd
SG
1526 help
1527 While loading from serial is slow it can be a useful backup when
1528 there is no other option. The Ymodem protocol provides a reliable
1529 means of transmitting U-Boot over a serial line for using in SPL,
1530 with a checksum to ensure correctness.
1531
aa122f6b 1532config SPL_ATF
bcc1726a 1533 bool "Support ARM Trusted Firmware"
975bacc1 1534 depends on ARM64 && SPL_FIT
bcc1726a 1535 help
d21fb63d
PT
1536 ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
1537 is loaded by SPL (which is considered as BL2 in ATF terminology).
bcc1726a
KY
1538 More detail at: https://github.com/ARM-software/arm-trusted-firmware
1539
7b866825
MW
1540config SPL_ATF_LOAD_IMAGE_V2
1541 bool "Use the new LOAD_IMAGE_V2 parameter passing"
1542 depends on SPL_ATF
1543 help
1544 Some platforms use the newer LOAD_IMAGE_V2 parameter passing.
1545
1546 If you want to load a bl31 image from the SPL and need the new
1547 method, say Y.
1548
d21fb63d 1549config SPL_ATF_NO_PLATFORM_PARAM
ce869b55 1550 bool "Pass no platform parameter"
d21fb63d
PT
1551 depends on SPL_ATF
1552 help
1553 While we expect to call a pointer to a valid FDT (or NULL)
1554 as the platform parameter to an ATF, some ATF versions are
1555 not U-Boot aware and have an insufficiently robust parameter
1556 validation to gracefully reject a FDT being passed.
1557
1558 If this option is enabled, the spl_atf os-type handler will
1559 always pass NULL for the platform parameter.
1560
1561 If your ATF is affected, say Y.
1562
3bf5f13c
AK
1563config SPL_AM33XX_ENABLE_RTC32K_OSC
1564 bool "Enable the RTC32K OSC on AM33xx based platforms"
1565 default y if AM33XX
1566 help
1567 Enable access to the AM33xx RTC and select the external 32kHz clock
1568 source.
1569
51827f9a
PD
1570config SPL_OPTEE_IMAGE
1571 bool "Support OP-TEE Trusted OS image in SPL"
70fe2876
KY
1572 depends on ARM
1573 help
51827f9a 1574 OP-TEE is an open source Trusted OS which is loaded by SPL.
70fe2876
KY
1575 More detail at: https://github.com/OP-TEE/optee_os
1576
5e30e45c
LA
1577config SPL_OPENSBI
1578 bool "Support RISC-V OpenSBI"
1579 depends on RISCV && SPL_RISCV_MMODE && RISCV_SMODE
1580 help
1581 OpenSBI is an open-source implementation of the RISC-V Supervisor Binary
1582 Interface (SBI) specification. U-Boot supports the OpenSBI FW_DYNAMIC
1583 firmware. It is loaded and started by U-Boot SPL.
1584
1585 More details are available at https://github.com/riscv/opensbi and
1586 https://github.com/riscv/riscv-sbi-doc
1587
1588config SPL_OPENSBI_LOAD_ADDR
1589 hex "OpenSBI load address"
1590 depends on SPL_OPENSBI
1591 help
1592 Load address of the OpenSBI binary.
1593
a62b7f0c
TR
1594config SPL_TARGET
1595 string "Addtional build targets for 'make'"
1596 default "spl/u-boot-spl.srec" if RCAR_GEN2
1597 default "spl/u-boot-spl.scif" if RCAR_GEN3
1598 default ""
1599 help
1600 On some platforms we need to have 'make' run additional build target
1601 rules. If required on your platform, enter it here, otherwise leave blank.
1602
226498b8
TR
1603config TPL
1604 bool
1605 depends on SUPPORT_TPL
1606 prompt "Enable TPL"
1607 help
1608 If you want to build TPL as well as the normal image and SPL, say Y.
1609
1610if TPL
1611
c52b5e8e
SG
1612config TPL_SIZE_LIMIT
1613 hex "Maximum size of TPL image"
1614 depends on TPL
2dfdd0c4 1615 default 0x0
c52b5e8e
SG
1616 help
1617 Specifies the maximum length of the U-Boot TPL image.
1618 If this value is zero, it is ignored.
1619
38c04d8e 1620config TPL_BINMAN_SYMBOLS
b13114cd 1621 bool "Declare binman symbols in TPL"
38c04d8e
SG
1622 depends on SPL_FRAMEWORK && BINMAN
1623 default y
1624 help
b13114cd 1625 This enables use of symbols in TPL which refer to U-Boot, enabling TPL
38c04d8e
SG
1626 to obtain the location of U-Boot simply by calling spl_get_image_pos()
1627 and spl_get_image_size().
1628
1629 For this to work, you must have a U-Boot image in the binman image, so
b13114cd 1630 binman can update TPL with the location of it.
38c04d8e 1631
22b7b860
HS
1632config TPL_FRAMEWORK
1633 bool "Support TPL based upon the common SPL framework"
1634 default y if SPL_FRAMEWORK
1635 help
1636 Enable the SPL framework under common/spl/ for TPL builds.
1637 This framework supports MMC, NAND and YMODEM and other methods
1638 loading of U-Boot's SPL stage. If unsure, say Y.
1639
b0edea3c
SG
1640config TPL_HANDOFF
1641 bool "Pass hand-off information from TPL to SPL and U-Boot proper"
a7da3d98 1642 depends on HANDOFF && TPL_BLOBLIST
b0edea3c
SG
1643 default y
1644 help
1645 This option enables TPL to write handoff information. This can be
1646 used to pass information like the size of SDRAM from TPL to U-Boot
1647 proper. The information is also available to SPL if it is useful
1648 there.
1649
af2f4426
KY
1650config TPL_BOARD_INIT
1651 bool "Call board-specific initialization in TPL"
1652 help
1653 If this option is enabled, U-Boot will call the function
1654 spl_board_init() from board_init_r(). This function should be
1655 provided by the board.
1656
4d145f26
PR
1657config TPL_BOOTCOUNT_LIMIT
1658 bool "Support bootcount in TPL"
1659 depends on TPL_ENV_SUPPORT
1660 help
1661 If this option is enabled, the TPL will support bootcount.
1662 For example, it may be useful to choose the device to boot.
1663
dd6fbcb9 1664config TPL_LDSCRIPT
ce869b55 1665 string "Linker script for the TPL stage"
dd6fbcb9 1666 depends on TPL
2f41ade7 1667 default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
a356e7a8 1668 default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
dd6fbcb9
PT
1669 help
1670 The TPL stage will usually require a different linker-script
1671 (as it runs from a different memory region) than the regular
1672 U-Boot stage. Set this to the path of the linker-script to
1673 be used for TPL.
1674
b3ed6ce7
PT
1675 May be left empty to trigger the Makefile infrastructure to
1676 fall back to the linker-script used for the SPL stage.
1677
b3ed6ce7 1678config TPL_NEEDS_SEPARATE_STACK
ce869b55 1679 bool "TPL needs a separate initial stack-pointer"
b3ed6ce7
PT
1680 depends on TPL
1681 help
1682 Enable, if the TPL stage should not inherit its initial
1683 stack-pointer from the settings for the SPL stage.
1684
a4faf1f5
SG
1685config TPL_POWER
1686 bool "Support power drivers"
1687 help
1688 Enable support for power control in TPL. This includes support
1689 for PMICs (Power-management Integrated Circuits) and some of the
1690 features provided by PMICs. In particular, voltage regulators can
1691 be used to enable/disable power and vary its voltage. That can be
1692 useful in TPL to turn on boot peripherals and adjust CPU voltage
1693 so that the clock speed can be increased. This enables the drivers
1694 in drivers/power, drivers/power/pmic and drivers/power/regulator
1695 as part of an TPL build.
1696
b3ed6ce7 1697config TPL_TEXT_BASE
ce869b55 1698 hex "Base address for the .text section of the TPL stage"
8e6c1299 1699 default 0
b3ed6ce7
PT
1700 help
1701 The base address for the .text section of the TPL stage.
1702
1703config TPL_MAX_SIZE
ca8a329a
TR
1704 hex "Maximum size (in bytes) for the TPL stage"
1705 default 0x2e000 if ROCKCHIP_RK3399
1706 default 0x8000 if ROCKCHIP_RK3288
1707 default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
1708 default 0x2800 if ROCKCHIP_PX30
1709 default 0x0
b3ed6ce7
PT
1710 help
1711 The maximum size (in bytes) of the TPL stage.
1712
ca8a329a
TR
1713config TPL_PAD_TO
1714 hex "Offset to which the TPL should be padded before appending the TPL payload"
1715 depends on !TPL_FRAMEWORK && PPC
1716 default TPL_MAX_SIZE
1717 help
1718 Image offset to which the TPL should be padded before appending the
1719 TPL payload. By default, this is defined as CONFIG_TPL_MAX_SIZE, or 0 if
1720 CONFIG_TPL_MAX_SIZE is undefined. CONFIG_TPL_PAD_TO must be either
1721 0, meaning to append the TPL payload without any padding, or >=
1722 CONFIG_TPL_MAX_SIZE.
1723
b3ed6ce7 1724config TPL_STACK
ce869b55 1725 hex "Address of the initial stack-pointer for the TPL stage"
b3ed6ce7
PT
1726 depends on TPL_NEEDS_SEPARATE_STACK
1727 help
1728 The address of the initial stack-pointer for the TPL stage.
1729 Usually this will be the (aligned) top-of-stack.
1730
95a5825f
SG
1731config TPL_READ_ONLY
1732 bool
1733 depends on TPL_OF_PLATDATA
1734 select TPL_OF_PLATDATA_NO_BIND
1735 select TPL_OF_PLATDATA_RT
1736 help
1737 Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
1738 section of memory. This means that of-platdata must make a copy (in
1739 writeable memory) of anything it wants to modify, such as
1740 device-private data.
1741
a954fa32 1742config TPL_BOOTROM_SUPPORT
ce869b55 1743 bool "Support returning to the BOOTROM (from TPL)"
a954fa32
PT
1744 help
1745 Some platforms (e.g. the Rockchip RK3368) provide support in their
1746 ROM for loading the next boot-stage after performing basic setup
1747 from the TPL stage.
1748
1749 Enable this option, to return to the BOOTROM through the
1750 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
1751 boot device list, if not implemented for a given board)
1752
e7d285b2
SG
1753config TPL_CRC32
1754 bool "Support CRC32 in TPL"
1755 default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
1756 help
1757 Enable this to support CRC32 in uImages or FIT images within SPL.
1758 This is a 32-bit checksum value that can be used to verify images.
1759 For FIT images, this is the least secure type of checksum, suitable
1760 for detected accidental image corruption. For secure applications you
1761 should consider SHA1 or SHA256.
1762
9ca00684 1763config TPL_DRIVERS_MISC
c3916e7b
PT
1764 bool "Support misc drivers in TPL"
1765 help
1766 Enable miscellaneous drivers in TPL. These drivers perform various
1767 tasks that don't fall nicely into other categories, Enable this
1768 option to build the drivers in drivers/misc as part of an TPL
1769 build, for those that support building in TPL (not all drivers do).
1770
f73329ee
SG
1771config TPL_ENV_SUPPORT
1772 bool "Support an environment"
f73329ee
SG
1773 help
1774 Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
1775
83061dbd 1776config TPL_GPIO
2d424eb0
SG
1777 bool "Support GPIO in TPL"
1778 help
1779 Enable support for GPIOs (General-purpose Input/Output) in TPL.
1780 GPIOs allow U-Boot to read the state of an input line (high or
1781 low) and set the state of an output line. This can be used to
1782 drive LEDs, control power to various system parts and read user
1783 input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
1784 for example. Enable this option to build the drivers in
1785 drivers/gpio as part of an TPL build.
1786
975e7cf3 1787config TPL_I2C
f73329ee 1788 bool "Support I2C"
f73329ee 1789 help
975e7cf3 1790 Enable support for the I2C bus in TPL. See SPL_I2C for
f73329ee
SG
1791 details.
1792
1793config TPL_LIBCOMMON_SUPPORT
1794 bool "Support common libraries"
f73329ee
SG
1795 help
1796 Enable support for common U-Boot libraries within TPL. See
1797 SPL_LIBCOMMON_SUPPORT for details.
1798
1799config TPL_LIBGENERIC_SUPPORT
1800 bool "Support generic libraries"
f73329ee
SG
1801 help
1802 Enable support for generic U-Boot libraries within TPL. See
1803 SPL_LIBGENERIC_SUPPORT for details.
1804
6f004ada 1805config TPL_MPC8XXX_INIT_DDR
f73329ee 1806 bool "Support MPC8XXX DDR init"
f73329ee
SG
1807 help
1808 Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
6f004ada 1809 SPL_MPC8XXX_INIT_DDR for details.
f73329ee 1810
103c5f18 1811config TPL_MMC
f73329ee 1812 bool "Support MMC"
226498b8 1813 depends on MMC
f73329ee 1814 help
103c5f18 1815 Enable support for MMC within TPL. See SPL_MMC for details.
f73329ee
SG
1816
1817config TPL_NAND_SUPPORT
1818 bool "Support NAND flash"
f73329ee 1819 help
616bd09e 1820 Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
f73329ee 1821
d50d6817 1822config TPL_PCI
2d424eb0
SG
1823 bool "Support PCI drivers"
1824 help
1825 Enable support for PCI in TPL. For platforms that need PCI to boot,
1826 or must perform some init using PCI in SPL, this provides the
1827 necessary driver support. This enables the drivers in drivers/pci
1828 as part of a TPL build.
1829
15042e7b 1830config TPL_PCH
2d424eb0
SG
1831 bool "Support PCH drivers"
1832 help
1833 Enable support for PCH (Platform Controller Hub) devices in TPL.
1834 These are used to set up GPIOs and the SPI peripheral early in
1835 boot. This enables the drivers in drivers/pch as part of a TPL
1836 build.
1837
d79dfd45
MV
1838config TPL_RAM_SUPPORT
1839 bool "Support booting from RAM"
1840 help
1841 Enable booting of an image in RAM. The image can be preloaded or
1842 it can be loaded by TPL directly into RAM (e.g. using USB).
1843
1844config TPL_RAM_DEVICE
1845 bool "Support booting from preloaded image in RAM"
1846 depends on TPL_RAM_SUPPORT
1847 help
1848 Enable booting of an image already loaded in RAM. The image has to
1849 be already in memory when TPL takes over, e.g. loaded by the boot
1850 ROM.
1851
73c6ff6a 1852config TPL_RTC
2d424eb0
SG
1853 bool "Support RTC drivers"
1854 help
1855 Enable RTC (Real-time Clock) support in TPL. This includes support
1856 for reading and setting the time. Some RTC devices also have some
1857 non-volatile (battery-backed) memory which is accessible if
1858 needed. This enables the drivers in drivers/rtc as part of an TPL
1859 build.
1860
2a736066 1861config TPL_SERIAL
f73329ee 1862 bool "Support serial"
14ad44ab
AK
1863 select TPL_PRINTF
1864 select TPL_STRTO
f73329ee 1865 help
2a736066 1866 Enable support for serial in TPL. See SPL_SERIAL for
f73329ee
SG
1867 details.
1868
1869config TPL_SPI_FLASH_SUPPORT
1870 bool "Support SPI flash drivers"
f73329ee 1871 help
616bd09e 1872 Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
f73329ee
SG
1873 for details.
1874
f38a2999
SG
1875config TPL_SPI_FLASH_TINY
1876 bool "Enable low footprint TPL SPI Flash support"
1877 depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
1878 default y if SPI_FLASH
1879 help
1880 Enable lightweight TPL SPI Flash support that supports just reading
1881 data/images from flash. No support to write/erase flash. Enable
1882 this if you have TPL size limitations and don't need full-fledged
1883 SPI flash support.
1884
1e725e27
MV
1885config TPL_SPI_LOAD
1886 bool "Support loading from SPI flash"
1887 depends on TPL_SPI_FLASH_SUPPORT
1888 help
1889 Enable support for loading next stage, U-Boot or otherwise, from
1890 SPI NOR in U-Boot TPL.
1891
ea2ca7e1 1892config TPL_SPI
f73329ee 1893 bool "Support SPI drivers"
f73329ee 1894 help
ea2ca7e1 1895 Enable support for using SPI in TPL. See SPL_SPI for
f73329ee
SG
1896 details.
1897
56c40460
LM
1898config TPL_DM_SPI
1899 bool "Support SPI DM drivers in TPL"
1900 help
1901 Enable support for SPI DM drivers in TPL.
1902
1903config TPL_DM_SPI_FLASH
1904 bool "Support SPI DM FLASH drivers in TPL"
1905 help
1906 Enable support for SPI DM flash drivers in TPL.
1907
6ce3d67c
MV
1908config TPL_YMODEM_SUPPORT
1909 bool "Support loading using Ymodem"
2a736066 1910 depends on TPL_SERIAL
6ce3d67c
MV
1911 help
1912 While loading from serial is slow it can be a useful backup when
1913 there is no other option. The Ymodem protocol provides a reliable
1914 means of transmitting U-Boot over a serial line for using in TPL,
1915 with a checksum to ensure correctness.
1916
226498b8
TR
1917endif # TPL
1918
747093dd
SG
1919config VPL
1920 bool
1921 depends on SUPPORT_SPL
1922 prompt "Enable VPL"
1923 help
1924 If you want to build VPL as well as the normal image, TPL and SPL,
1925 say Y.
1926
1927if VPL
1928
1929config VPL_BANNER_PRINT
1930 bool "Enable output of the VPL banner 'U-Boot VPL ...'"
1931 depends on VPL
1932 default y
1933 help
1934 If this option is enabled, VPL will print the banner with version
1935 info. Disabling this option could be useful to reduce VPL boot time
1936 (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
1937
1938config VPL_BOARD_INIT
1939 bool "Call board-specific initialization in VPL"
1940 help
1941 If this option is enabled, U-Boot will call the function
1942 spl_board_init() from board_init_r(). This function should be
1943 provided by the board.
1944
1945config VPL_CACHE
1946 depends on CACHE
1947 bool "Support cache drivers in VPL"
1948 help
1949 Enable support for cache drivers in VPL.
1950
1951config VPL_CRC32
1952 bool "Support CRC32 in VPL"
1953 default y if VPL_ENV_SUPPORT || VPL_BLOBLIST
1954 help
1955 Enable this to support CRC32 in uImages or FIT images within VPL.
1956 This is a 32-bit checksum value that can be used to verify images.
1957 For FIT images, this is the least secure type of checksum, suitable
1958 for detected accidental image corruption. For secure applications you
1959 should consider SHA1 or SHA256.
1960
1961config VPL_DM_SPI
1962 bool "Support SPI DM drivers in VPL"
1963 help
1964 Enable support for SPI DM drivers in VPL.
1965
1966config VPL_DM_SPI_FLASH
1967 bool "Support SPI DM FLASH drivers in VPL"
1968 help
1969 Enable support for SPI DM flash drivers in VPL.
1970
1971config VPL_FRAMEWORK
1972 bool "Support VPL based upon the common SPL framework"
1973 default y
1974 help
1975 Enable the SPL framework under common/spl/ for VPL builds.
1976 This framework supports MMC, NAND and YMODEM and other methods
1977 loading of U-Boot's next stage. If unsure, say Y.
1978
1979config VPL_HANDOFF
1980 bool "Pass hand-off information from VPL to SPL"
1981 depends on HANDOFF && VPL_BLOBLIST
1982 default y
1983 help
1984 This option enables VPL to write handoff information. This can be
1985 used to pass information like the size of SDRAM from VPL to SPL. Also
1986 VPL can receive information from TPL in the same place if that is
1987 enabled.
1988
1989config VPL_LIBCOMMON_SUPPORT
1990 bool "Support common libraries"
1991 default y if SPL_LIBCOMMON_SUPPORT
1992 help
1993 Enable support for common U-Boot libraries within VPL. See
1994 SPL_LIBCOMMON_SUPPORT for details.
1995
1996config VPL_LIBGENERIC_SUPPORT
1997 bool "Support generic libraries"
1998 default y if SPL_LIBGENERIC_SUPPORT
1999 help
2000 Enable support for generic U-Boot libraries within VPL. These
2001 libraries include generic code to deal with device tree, hashing,
2002 printf(), compression and the like. This option is enabled on many
2003 boards. Enable this option to build the code in lib/ as part of a
2004 VPL build.
2005
2006config VPL_DRIVERS_MISC
2007 bool "Support misc drivers"
2008 default y if TPL_DRIVERS_MISC
2009 help
2010 Enable miscellaneous drivers in VPL. These drivers perform various
2011 tasks that don't fall nicely into other categories, Enable this
2012 option to build the drivers in drivers/misc as part of a VPL
2013 build, for those that support building in VPL (not all drivers do).
2014
2015config VPL_ENV_SUPPORT
2016 bool "Support an environment"
2017 help
2018 Enable environment support in VPL. The U-Boot environment provides
2019 a number of settings (essentially name/value pairs) which can
2020 control many aspects of U-Boot's operation. Enabling this option will
2021 make env_get() and env_set() available in VSPL.
2022
2023config VPL_GPIO
2024 bool "Support GPIO in VPL"
2025 default y if SPL_GPIO
2026 help
2027 Enable support for GPIOs (General-purpose Input/Output) in VPL.
2028 GPIOs allow U-Boot to read the state of an input line (high or
2029 low) and set the state of an output line. This can be used to
2030 drive LEDs, control power to various system parts and read user
2031 input. GPIOs can be useful in VPL to enable a 'sign-of-life' LED,
2032 for example. Enable this option to build the drivers in
2033 drivers/gpio as part of a VPL build.
2034
2035config VPL_HANDOFF
2036 bool "Pass hand-off information from VPL to SPL and U-Boot proper"
2037 depends on HANDOFF && VPL_BLOBLIST
2038 default y
2039 help
2040 This option enables VPL to write handoff information. This can be
2041 used to pass information like the size of SDRAM from VPL to U-Boot
2042 proper. The information is also available to VPL if it is useful
2043 there.
2044
2045config VPL_HASH
2046 bool "Support hashing drivers in VPL"
2047 depends on VPL
2048 select SHA1
2049 select SHA256
2050 help
2051 Enable hashing drivers in VPL. These drivers can be used to
2052 accelerate secure boot processing in secure applications. Enable
2053 this option to build system-specific drivers for hash acceleration
2054 as part of a VPL build.
2055
2056config VPL_I2C_SUPPORT
2057 bool "Support I2C in VPL"
2058 default y if SPL_I2C_SUPPORT
2059 help
2060 Enable support for the I2C bus in VPL. Vee SPL_I2C_SUPPORT for
2061 details.
2062
2063config VPL_PCH_SUPPORT
2064 bool "Support PCH drivers"
2065 default y if TPL_PCH_SUPPORT
2066 help
2067 Enable support for PCH (Platform Controller Hub) devices in VPL.
2068 These are used to set up GPIOs and the SPI peripheral early in
2069 boot. This enables the drivers in drivers/pch as part of a VPL
2070 build.
2071
2072config VPL_PCI
2073 bool "Support PCI drivers"
2074 default y if SPL_PCI
2075 help
2076 Enable support for PCI in VPL. For platforms that need PCI to boot,
2077 or must perform some init using PCI in VPL, this provides the
2078 necessary driver support. This enables the drivers in drivers/pci
2079 as part of a VPL build.
2080
2081config VPL_RTC
2082 bool "Support RTC drivers"
2083 help
2084 Enable RTC (Real-time Clock) support in VPL. This includes support
2085 for reading and setting the time. Some RTC devices also have some
2086 non-volatile (battery-backed) memory which is accessible if
2087 needed. This enables the drivers in drivers/rtc as part of a VPL
2088 build.
2089
2090config VPL_SERIAL
2091 bool "Support serial"
2092 default y if TPL_SERIAL
2093 select VPL_PRINTF
2094 select VPL_STRTO
2095 help
2096 Enable support for serial in VPL. See SPL_SERIAL_SUPPORT for
2097 details.
2098
2099config VPL_SIZE_LIMIT
2100 hex "Maximum size of VPL image"
2101 depends on VPL
2102 default 0x0
2103 help
2104 Specifies the maximum length of the U-Boot VPL image.
2105 If this value is zero, it is ignored.
2106
2107config VPL_SPI
2108 bool "Support SPI drivers"
2109 help
2110 Enable support for using SPI in VPL. See SPL_SPI_SUPPORT for
2111 details.
2112
2113config VPL_SPI_FLASH_SUPPORT
2114 bool "Support SPI flash drivers"
2115 help
2116 Enable support for using SPI flash in VPL, and loading U-Boot from
2117 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
2118 the SPI bus that is used to connect it to a system. It is a simple
2119 but fast bidirectional 4-wire bus (clock, chip select and two data
2120 lines). This enables the drivers in drivers/mtd/spi as part of a
2121 VPL build. This normally requires VPL_SPI_SUPPORT.
2122
2123config VPL_TEXT_BASE
2124 hex "VPL Text Base"
2125 default 0x0
2126 help
2127 The address in memory that VPL will be running from.
2128
2129endif # VPL
2130
0be07872
EH
2131config SPL_AT91_MCK_BYPASS
2132 bool "Use external clock signal as a source of main clock for AT91 platforms"
2133 depends on ARCH_AT91
0be07872
EH
2134 help
2135 Use external 8 to 24 Mhz clock signal as source of main clock instead
2136 of an external crystal oscillator.
2137 This option disables the internal driving on the XOUT pin.
2138 The external source has to provide a stable clock on the XIN pin.
2139 If this option is disabled, the SoC expects a crystal oscillator
2140 that needs driving on both XIN and XOUT lines.
2141
226498b8 2142endif # SPL
11bde1cd 2143endmenu
This page took 0.519401 seconds and 4 git commands to generate.