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