11 depends on SUPPORT_SPL
14 If you want to build SPL as well as the normal image, say Y.
16 config SPL_SYS_MALLOC_SIMPLE
19 prompt "Only use malloc_simple functions in the SPL"
21 Say Y here to only use the *_simple malloc functions from
22 malloc_simple.c, rather then using the versions from dlmalloc.c;
23 this will make the SPL binary smaller at the cost of more heap
24 usage as the *_simple malloc functions do not re-use free-ed mem.
28 bool "Enable SDRAM location for SPL stack"
30 SPL starts off execution in SRAM and thus typically has only a small
31 stack available. Since SPL sets up DRAM while in its board_init_f()
32 function, it is possible for the stack to move there before
33 board_init_r() is reached. This option enables a special SDRAM
34 location for the SPL stack. U-Boot SPL switches to this after
35 board_init_f() completes, and before board_init_r() starts.
37 config SPL_STACK_R_ADDR
38 depends on SPL_STACK_R
39 hex "SDRAM location for SPL stack"
41 Specify the address in SDRAM for the SPL stack. This will be set up
42 before board_init_r() is called.
44 config SPL_STACK_R_MALLOC_SIMPLE_LEN
45 depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
46 hex "Size of malloc_simple heap after switching to DRAM SPL stack"
49 Specify the amount of the stack to use as memory pool for
50 malloc_simple after switching the stack to DRAM. This may be set
51 to give board_init_r() a larger heap then the initial heap in
52 SRAM which is limited to SYS_MALLOC_F_LEN bytes.
54 config SPL_SEPARATE_BSS
56 bool "BSS section is in a different memory region from text"
58 Some platforms need a large BSS region in SPL and can provide this
59 because RAM is already set up. In this case BSS can be moved to RAM.
60 This option should then be enabled so that the correct device tree
61 location is used. Normally we put the device tree at the end of BSS
62 but with this option enabled, it goes at _image_binary_end.
64 config SPL_DISPLAY_PRINT
66 bool "Display a board-specific message in SPL"
68 If this option is enabled, U-Boot will call the function
69 spl_display_print() immediately after displaying the SPL console
70 banner ("U-Boot SPL ..."). This function should be provided by
73 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
74 bool "MMC raw mode: by sector"
76 default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER ||ARCH_MX6 || \
77 ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \
78 ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
79 OMAP44XX || OMAP54XX || AM33XX || AM43XX
81 Use sector number for specifying U-Boot location on MMC/SD in
84 config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
85 hex "Address on the MMC to load U-Boot from"
86 depends on SPL && SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
87 default 0x50 if ARCH_SUNXI
88 default 0x75 if ARCH_DAVINCI
89 default 0x8a if ARCH_MX6
90 default 0x100 if ARCH_ROCKCHIP || ARCH_UNIPHIER
91 default 0x140 if ARCH_MVEBU
92 default 0x200 if ARCH_SOCFPGA || ARCH_AT91
93 default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
94 OMAP54XX || AM33XX || AM43XX
96 Address on the MMC to load U-Boot from, when the MMC is being used
97 in raw mode. Units: MMC sectors (1 sector = 512 bytes).
101 depends on SPL && SUPPORT_TPL
104 If you want to build TPL as well as the normal image and SPL, say Y.
106 config SPL_CRC32_SUPPORT
110 Enable this to support CRC32 in FIT images within SPL. This is a
111 32-bit checksum value that can be used to verify images. This is
112 the least secure type of checksum, suitable for detected
113 accidental image corruption. For secure applications you should
114 consider SHA1 or SHA256.
116 config SPL_MD5_SUPPORT
120 Enable this to support MD5 in FIT images within SPL. An MD5
121 checksum is a 128-bit hash value used to check that the image
122 contents have not been corrupted. Note that MD5 is not considered
123 secure as it is possible (with a brute-force attack) to adjust the
124 image while still retaining the same MD5 hash value. For secure
125 applications where images may be changed maliciously, you should
126 consider SHA1 or SHA256.
128 config SPL_SHA1_SUPPORT
132 Enable this to support SHA1 in FIT images within SPL. A SHA1
133 checksum is a 160-bit (20-byte) hash value used to check that the
134 image contents have not been corrupted or maliciously altered.
135 While SHA1 is fairly secure it is coming to the end of its life
136 due to the expanding computing power avaiable to brute-force
137 attacks. For more security, consider SHA256.
139 config SPL_SHA256_SUPPORT
140 bool "Support SHA256"
143 Enable this to support SHA256 in FIT images within SPL. A SHA256
144 checksum is a 256-bit (32-byte) hash value used to check that the
145 image contents have not been corrupted. SHA256 is recommended for
146 use in secure applications since (as at 2016) there is no known
147 feasible attack that could produce a 'collision' with differing
148 input data. Use this for the highest security. Note that only the
149 SHA256 variant is supported: SHA512 and others are not currently
152 config SPL_CRYPTO_SUPPORT
153 bool "Support crypto drivers"
156 Enable crypto drivers in SPL. These drivers can be used to
157 accelerate secure boot processing in secure applications. Enable
158 this option to build the drivers in drivers/crypto as part of an
161 config SPL_HASH_SUPPORT
162 bool "Support hashing drivers"
165 Enable hashing drivers in SPL. These drivers can be used to
166 accelerate secure boot processing in secure applications. Enable
167 this option to build system-specific drivers for hash acceleration
168 as part of an SPL build.
170 config SPL_DMA_SUPPORT
171 bool "Support DMA drivers"
174 Enable DMA (direct-memory-access) drivers in SPL. These drivers
175 can be used to handle memory-to-peripheral data transfer without
176 the CPU moving the data. Enable this option to build the drivers
177 in drivers/dma as part of an SPL build.
179 config SPL_DRIVERS_MISC_SUPPORT
180 bool "Support misc drivers"
183 Enable miscellaneous drivers in SPL. These drivers perform various
184 tasks that don't fall nicely into other categories, Enable this
185 option to build the drivers in drivers/misc as part of an SPL
186 build, for those that support building in SPL (not all drivers do).
188 config SPL_ENV_SUPPORT
189 bool "Support an environment"
192 Enable environment support in SPL. The U-Boot environment provides
193 a number of settings (essentially name/value pairs) which can
194 control many aspects of U-Boot's operation. Normally this is not
195 needed in SPL as it has a much simpler task with less
196 configuration. But some boards use this to support 'Falcon' boot
197 on EXT2 and FAT, where SPL boots directly into Linux without
198 starting U-Boot first. Enabling this option will make getenv()
199 and setenv() available in SPL.
202 bool "Support save environment"
203 depends on SPL && SPL_ENV_SUPPORT
205 Enable save environment support in SPL after setenv. By default
206 the saveenv option is not provided in SPL, but some boards need
207 this support in 'Falcon' boot, where SPL need to boot from
208 different images based on environment variable set by OS. For
209 example OS may set "reboot_image" environment variable to
210 "recovery" inorder to boot recovery image by SPL. The SPL read
211 "reboot_image" and act accordingly and change the reboot_image
212 to default mode using setenv and save the environemnt.
214 config SPL_ETH_SUPPORT
215 bool "Support Ethernet"
216 depends on SPL_ENV_SUPPORT
218 Enable access to the network subsystem and associated Ethernet
219 drivers in SPL. This permits SPL to load U-Boot over an Ethernet
220 link rather than from an on-board peripheral. Environment support
221 is required since the network stack uses a number of environment
222 variables. See also SPL_NET_SUPPORT.
224 config SPL_EXT_SUPPORT
225 bool "Support EXT filesystems"
228 Enable support for EXT2/3/4 filesystems with SPL. This permits
229 U-Boot (or Linux in Falcon mode) to be loaded from an EXT
230 filesystem from within SPL. Support for the underlying block
231 device (e.g. MMC or USB) must be enabled separately.
233 config SPL_FAT_SUPPORT
234 bool "Support FAT filesystems"
237 Enable support for FAT and VFAT filesystems with SPL. This
238 permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
239 filesystem from within SPL. Support for the underlying block
240 device (e.g. MMC or USB) must be enabled separately.
242 config SPL_FPGA_SUPPORT
246 Enable support for FPGAs in SPL. Field-programmable Gate Arrays
247 provide software-configurable hardware which is typically used to
248 implement peripherals (such as UARTs, LCD displays, MMC) or
249 accelerate custom processing functions, such as image processing
250 or machine learning. Sometimes it is useful to program the FPGA
251 as early as possible during boot, and this option can enable that
254 config SPL_GPIO_SUPPORT
258 Enable support for GPIOs (General-purpose Input/Output) in SPL.
259 GPIOs allow U-Boot to read the state of an input line (high or
260 low) and set the state of an output line. This can be used to
261 drive LEDs, control power to various system parts and read user
262 input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
263 for example. Enable this option to build the drivers in
264 drivers/gpio as part of an SPL build.
266 config SPL_I2C_SUPPORT
270 Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
271 I2C works with a clock and data line which can be driven by a
272 one or more masters or slaves. It is a fairly complex bus but is
273 widely used as it only needs two lines for communication. Speeds of
274 400kbps are typical but up to 3.4Mbps is supported by some
275 hardware. I2C can be useful in SPL to configure power management
276 ICs (PMICs) before raising the CPU clock speed, for example.
277 Enable this option to build the drivers in drivers/i2c as part of
280 config SPL_LIBCOMMON_SUPPORT
281 bool "Support common libraries"
284 Enable support for common U-Boot libraries within SPL. These
285 libraries include common code to deal with U-Boot images,
286 environment and USB, for example. This option is enabled on many
287 boards. Enable this option to build the code in common/ as part of
290 config SPL_LIBDISK_SUPPORT
291 bool "Support disk paritions"
294 Enable support for disk partitions within SPL. 'Disk' is something
295 of a misnomer as it includes non-spinning media such as flash (as
296 used in MMC and USB sticks). Partitions provide a way for a disk
297 to be split up into separate regions, with a partition table placed
298 at the start or end which describes the location and size of each
299 'partition'. These partitions are typically uses as individual block
300 devices, typically with an EXT2 or FAT filesystem in each. This
301 option enables whatever partition support has been enabled in
302 U-Boot to also be used in SPL. It brings in the code in disk/.
304 config SPL_LIBGENERIC_SUPPORT
305 bool "Support generic libraries"
308 Enable support for generic U-Boot libraries within SPL. These
309 libraries include generic code to deal with device tree, hashing,
310 printf(), compression and the like. This option is enabled on many
311 boards. Enable this option to build the code in lib/ as part of an
314 config SPL_MMC_SUPPORT
318 Enable support for MMC (Multimedia Card) within SPL. This enables
319 the MMC protocol implementation and allows any enabled drivers to
320 be used within SPL. MMC can be used with or without disk partition
321 support depending on the application (SPL_LIBDISK_SUPPORT). Enable
322 this option to build the drivers in drivers/mmc as part of an SPL
325 config SPL_MPC8XXX_INIT_DDR_SUPPORT
326 bool "Support MPC8XXX DDR init"
329 Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
330 random-access memory) on the MPC8XXX family within SPL. This
331 allows DRAM to be set up before loading U-Boot into that DRAM,
334 config SPL_MTD_SUPPORT
335 bool "Support MTD drivers"
338 Enable support for MTD (Memory Technology Device) within SPL. MTD
339 provides a block interface over raw NAND and can also be used with
340 SPI flash. This allows SPL to load U-Boot from supported MTD
341 devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
342 to enable specific MTD drivers.
344 config SPL_MUSB_NEW_SUPPORT
345 bool "Support new Mentor Graphics USB"
348 Enable support for Mentor Graphics USB in SPL. This is a new
349 driver used by some boards. Enable this option to build
350 the drivers in drivers/usb/musb-new as part of an SPL build. The
351 old drivers are in drivers/usb/musb.
353 config SPL_NAND_SUPPORT
354 bool "Support NAND flash"
357 Enable support for NAND (Negative AND) flash in SPL. NAND flash
358 can be used to allow SPL to load U-Boot from supported devices.
359 This enables the drivers in drivers/mtd/nand as part of an SPL
362 config SPL_NET_SUPPORT
363 bool "Support networking"
366 Enable support for network devices (such as Ethernet) in SPL.
367 This permits SPL to load U-Boot over a network link rather than
368 from an on-board peripheral. Environment support is required since
369 the network stack uses a number of environment variables. See also
373 config SPL_NET_VCI_STRING
374 string "BOOTP Vendor Class Identifier string sent by SPL"
376 As defined by RFC 2132 the vendor class identifier field can be
377 sent by the client to identify the vendor type and configuration
378 of a client. This is often used in practice to allow for the DHCP
379 server to specify different files to load depending on if the ROM,
380 SPL or U-Boot itself makes the request
381 endif # if SPL_NET_SUPPORT
383 config SPL_NO_CPU_SUPPORT
384 bool "Drop CPU code in SPL"
387 This is specific to the ARM926EJ-S CPU. It disables the standard
388 start.S start-up code, presumably so that a replacement can be
389 used on that CPU. You should not enable it unless you know what
392 config SPL_NOR_SUPPORT
393 bool "Support NOR flash"
396 Enable support for loading U-Boot from memory-mapped NOR (Negative
397 OR) flash in SPL. NOR flash is slow to write but fast to read, and
398 a memory-mapped device makes it very easy to access. Loading from
399 NOR is typically achieved with just a memcpy().
401 config SPL_ONENAND_SUPPORT
402 bool "Support OneNAND flash"
405 Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
406 a type of NAND flash and therefore can be used to allow SPL to
407 load U-Boot from supported devices. This enables the drivers in
408 drivers/mtd/onenand as part of an SPL build.
411 bool "Activate Falcon Mode"
412 depends on SPL && !TI_SECURE_DEVICE
415 Enable booting directly to an OS from SPL.
416 for more info read doc/README.falcon
420 hex "addr, where OS is found"
421 depends on SPL && SPL_NOR_SUPPORT
423 Specify the address, where the OS image is found, which
428 config SPL_POST_MEM_SUPPORT
429 bool "Support POST drivers"
432 Enable support for POST (Power-on Self Test) in SPL. POST is a
433 procedure that checks that the hardware (CPU or board) appears to
434 be functionally correctly. It is a sanity check that can be
435 performed before booting. This enables the drivers in post/drivers
436 as part of an SPL build.
438 config SPL_POWER_SUPPORT
439 bool "Support power drivers"
442 Enable support for power control in SPL. This includes support
443 for PMICs (Power-management Integrated Circuits) and some of the
444 features provided by PMICs. In particular, voltage regulators can
445 be used to enable/disable power and vary its voltage. That can be
446 useful in SPL to turn on boot peripherals and adjust CPU voltage
447 so that the clock speed can be increased. This enables the drivers
448 in drivers/power, drivers/power/pmic and drivers/power/regulator
449 as part of an SPL build.
451 config SPL_RAM_SUPPORT
452 bool "Support booting from RAM"
454 default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
456 Enable booting of an image in RAM. The image can be preloaded or
457 it can be loaded by SPL directly into RAM (e.g. using USB).
459 config SPL_RAM_DEVICE
460 bool "Support booting from preloaded image in RAM"
461 depends on SPL_RAM_SUPPORT
462 default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
464 Enable booting of an image already loaded in RAM. The image has to
465 be already in memory when SPL takes over, e.g. loaded by the boot
468 config SPL_SATA_SUPPORT
469 bool "Support loading from SATA"
472 Enable support for SATA (Serial AT attachment) in SPL. This allows
473 use of SATA devices such as hard drives and flash drivers for
474 loading U-Boot. SATA is used in higher-end embedded systems and
475 can provide higher performance than MMC , at somewhat higher
476 expense and power consumption. This enables loading from SATA
477 using a configured device.
479 config SPL_SERIAL_SUPPORT
480 bool "Support serial"
483 Enable support for serial in SPL. This allows use of a serial UART
484 for displaying messages while SPL is running. It also brings in
485 printf() and panic() functions. This should normally be enabled
486 unless there are space reasons not to. Even then, consider
487 enabling USE_TINY_PRINTF which is a small printf() version.
489 config SPL_SPI_FLASH_SUPPORT
490 bool "Support SPI flash drivers"
493 Enable support for using SPI flash in SPL, and loading U-Boot from
494 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
495 the SPI bus that is used to connect it to a system. It is a simple
496 but fast bidirectional 4-wire bus (clock, chip select and two data
497 lines). This enables the drivers in drivers/mtd/spi as part of an
498 SPL build. This normally requires SPL_SPI_SUPPORT.
500 config SPL_SPI_SUPPORT
501 bool "Support SPI drivers"
504 Enable support for using SPI in SPL. This is used for connecting
505 to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
506 more details on that. The SPI driver provides the transport for
507 data between the SPI flash and the CPU. This option can be used to
508 enable SPI drivers that are needed for other purposes also, such
511 config SPL_USB_HOST_SUPPORT
512 bool "Support USB host drivers"
515 Enable access to USB (Universal Serial Bus) host devices so that
516 SPL can load U-Boot from a connected USB peripheral, such as a USB
517 flash stick. While USB takes a little longer to start up than most
518 buses, it is very flexible since many different types of storage
519 device can be attached. This option enables the drivers in
520 drivers/usb/host as part of an SPL build.
522 config SPL_USB_SUPPORT
523 bool "Support loading from USB"
524 depends on SPL_USB_HOST_SUPPORT
526 Enable support for USB devices in SPL. This allows use of USB
527 devices such as hard drives and flash drivers for loading U-Boot.
528 The actual drivers are enabled separately using the normal U-Boot
529 config options. This enables loading from USB using a configured
532 config SPL_USB_GADGET_SUPPORT
533 bool "Suppport USB Gadget drivers"
536 Enable USB Gadget API which allows to enable USB device functions
539 if SPL_USB_GADGET_SUPPORT
541 config SPL_USBETH_SUPPORT
542 bool "Support USB Ethernet drivers"
544 Enable access to the USB network subsystem and associated
545 drivers in SPL. This permits SPL to load U-Boot over a
546 USB-connected Ethernet link (such as a USB Ethernet dongle) rather
547 than from an onboard peripheral. Environment support is required
548 since the network stack uses a number of environment variables.
549 See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT.
551 config SPL_DFU_SUPPORT
552 bool "Support DFU (Device Firmware Upgarde)"
553 select SPL_HASH_SUPPORT
555 This feature enables the DFU (Device Firmware Upgarde) in SPL with
556 RAM memory device support. The ROM code will load and execute
557 the SPL built with dfu. The user can load binaries (u-boot/kernel) to
558 selected device partition from host-pc using dfu-utils.
559 This feature is useful to flash the binaries to factory or bare-metal
560 boards using USB interface.
563 bool "DFU device selection"
564 depends on SPL_DFU_SUPPORT
568 depends on SPL_DFU_SUPPORT && SPL_RAM_SUPPORT
570 select RAM/DDR memory device for loading binary images
571 (u-boot/kernel) to the selected device partition using
572 DFU and execute the u-boot/kernel from RAM.
578 config SPL_WATCHDOG_SUPPORT
579 bool "Support watchdog drivers"
582 Enable support for watchdog drivers in SPL. A watchdog is
583 typically a hardware peripheral which can reset the system when it
584 detects no activity for a while (such as a software crash). This
585 enables the drivers in drivers/watchdog as part of an SPL build.
587 config SPL_YMODEM_SUPPORT
588 bool "Support loading using Ymodem"
591 While loading from serial is slow it can be a useful backup when
592 there is no other option. The Ymodem protocol provides a reliable
593 means of transmitting U-Boot over a serial line for using in SPL,
594 with a checksum to ensure correctness.
596 config TPL_ENV_SUPPORT
597 bool "Support an environment"
600 Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
602 config TPL_I2C_SUPPORT
606 Enable support for the I2C bus in SPL. See SPL_I2C_SUPPORT for
609 config TPL_LIBCOMMON_SUPPORT
610 bool "Support common libraries"
613 Enable support for common U-Boot libraries within TPL. See
614 SPL_LIBCOMMON_SUPPORT for details.
616 config TPL_LIBGENERIC_SUPPORT
617 bool "Support generic libraries"
620 Enable support for generic U-Boot libraries within TPL. See
621 SPL_LIBGENERIC_SUPPORT for details.
623 config TPL_MPC8XXX_INIT_DDR_SUPPORT
624 bool "Support MPC8XXX DDR init"
627 Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
628 SPL_MPC8XXX_INIT_DDR_SUPPORT for details.
630 config TPL_MMC_SUPPORT
634 Enable support for MMC within TPL. See SPL_MMC_SUPPORT for details.
636 config TPL_NAND_SUPPORT
637 bool "Support NAND flash"
640 Enable support for NAND in SPL. See SPL_NAND_SUPPORT for details.
642 config TPL_SERIAL_SUPPORT
643 bool "Support serial"
646 Enable support for serial in SPL. See SPL_SERIAL_SUPPORT for
649 config TPL_SPI_FLASH_SUPPORT
650 bool "Support SPI flash drivers"
653 Enable support for using SPI flash in SPL. See SPL_SPI_FLASH_SUPPORT
656 config TPL_SPI_SUPPORT
657 bool "Support SPI drivers"
660 Enable support for using SPI in SPL. See SPL_SPI_SUPPORT for