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