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