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