spl: Move all VPL, TPL and PowerPC specific CONFIG options to separate files

- Move all PowerPC (and some shared with Layerscape) options to
  common/spl/Kconfig.nxp
- Move all other TPL related options to common/spl/Kconfig.tpl
- Move all VPL related options to common/spl/Kconfig.vpl

This makes the whole of common/spl/Kconfig slightly more readable.

Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2022-05-30 17:01:22 -04:00
parent 3ff2aa6d04
commit ba787bb458
4 changed files with 650 additions and 658 deletions

View File

@ -199,117 +199,7 @@ config SPL_BINMAN_SYMBOLS
For this to work, you must have a U-Boot image in the binman image, so
binman can update SPL with the location of it.
menu "PowerPC and LayerScape SPL Boot options"
config SPL_NAND_BOOT
bool "Load SPL from NAND flash"
depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
config SPL_MMC_BOOT
bool "Load SPL from SD Card / eMMC"
depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
config SPL_SPI_BOOT
bool "Load SPL from SPI flash"
depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
config SPL_FSL_PBL
bool "Create SPL in Freescale PBI format"
depends on (PPC || ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && \
SUPPORT_SPL
help
Create boot binary having SPL binary in PBI format concatenated with
u-boot binary.
config SPL_SYS_CCSR_DO_NOT_RELOCATE
bool "Ensures that CCSR is not relocated"
depends on PPC
help
If this is defined, then CONFIG_SYS_CCSRBAR_PHYS will be forced to a
value that ensures that CCSR is not relocated.
config TPL_SYS_CCSR_DO_NOT_RELOCATE
def_bool y
depends on SPL_SYS_CCSR_DO_NOT_RELOCATE
endmenu
menu "PowerPC SPL / TPL specific options"
depends on PPC && (SPL && !SPL_FRAMEWORK)
config SPL_INIT_MINIMAL
bool "Arch init code will be built for a very small image"
config SPL_FLUSH_IMAGE
bool "Clean dcache and invalidate icache after loading the image"
config SPL_SKIP_RELOCATE
bool "Skip relocating SPL"
config SPL_GD_ADDR
hex "Address to use for global data (gd) in SPL"
depends on !SPL_INIT_MINIMAL
config SPL_RELOC_TEXT_BASE
hex "Address to relocate SPL to"
default SPL_TEXT_BASE
help
If unspecified, this is equal to CONFIG_SPL_TEXT_BASE (i.e. no
relocation is done).
config SPL_RELOC_STACK
hex "Address of the start of the stack SPL will use after relocation."
help
If unspecified, this is equal to CONFIG_SYS_SPL_MALLOC_START. Starting
address of the malloc pool used in SPL. When this option is set the full
malloc is used in SPL and it is set up by spl_init() and before that, the
simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
config SPL_RELOC_MALLOC
bool "SPL has malloc pool after relocation"
config SPL_RELOC_MALLOC_ADDR
hex "Address of malloc pool in SPL"
depends on SPL_RELOC_MALLOC
config SPL_RELOC_MALLOC_SIZE
hex "Size of malloc pool in SPL"
depends on SPL_RELOC_MALLOC
config TPL_GD_ADDR
hex "Address to use for global data (gd) in TPL"
depends on TPL
config TPL_RELOC_TEXT_BASE
hex "Address to relocate TPL to"
depends on TPL
default TPL_TEXT_BASE
help
If unspecified, this is equal to CONFIG_TPL_TEXT_BASE (i.e. no
relocation is done).
config TPL_RELOC_STACK
hex "Address of the start of the stack TPL will use after relocation."
depends on TPL
help
If unspecified, this is equal to CONFIG_SYS_TPL_MALLOC_START. Starting
address of the malloc pool used in TPL. When this option is set the full
malloc is used in TPL and it is set up by spl_init() and before that, the
simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
config TPL_RELOC_MALLOC
bool "TPL has malloc pool after relocation"
depends on TPL
config TPL_RELOC_MALLOC_ADDR
hex "Address of malloc pool in TPL"
depends on TPL_RELOC_MALLOC
config TPL_RELOC_MALLOC_SIZE
hex "Size of malloc pool in TPL"
depends on TPL_RELOC_MALLOC
endmenu
source "common/spl/Kconfig.nxp"
config HANDOFF
bool "Pass hand-off information from SPL to U-Boot proper"
@ -360,13 +250,6 @@ config SPL_BOARD_INIT
spl_board_init() from board_init_r(). This function should be
provided by the board.
config VPL_BOARD_INIT
bool "Call board-specific initialization in VPL"
help
If this option is enabled, U-Boot will call the function
spl_board_init() from board_init_r(). This function should be
provided by the board.
config SPL_BOOTROM_SUPPORT
bool "Support returning to the BOOTROM"
help
@ -425,16 +308,6 @@ config SPL_SYS_MALLOC_SIMPLE
this will make the SPL binary smaller at the cost of more heap
usage as the *_simple malloc functions do not re-use free-ed mem.
config TPL_SYS_MALLOC_SIMPLE
bool
prompt "Only use malloc_simple functions in the TPL"
depends on TPL
help
Say Y here to only use the *_simple malloc functions from
malloc_simple.c, rather then using the versions from dlmalloc.c;
this will make the TPL binary smaller at the cost of more heap
usage as the *_simple malloc functions do not re-use free-ed mem.
config SPL_SHARES_INIT_SP_ADDR
bool "SPL and U-Boot use the same initial stack pointer location"
depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
@ -523,16 +396,6 @@ config SPL_READ_ONLY
writeable memory) of anything it wants to modify, such as
device-private data.
config TPL_SEPARATE_BSS
bool "BSS section is in a different memory region from text"
default y if SPL_SEPARATE_BSS
help
Some platforms need a large BSS region in TPL and can provide this
because RAM is already set up. In this case BSS can be moved to RAM.
This option should then be enabled so that the correct device tree
location is used. Normally we put the device tree at the end of BSS
but with this option enabled, it goes at _image_binary_end.
config SPL_BANNER_PRINT
bool "Enable output of the SPL banner 'U-Boot SPL ...'"
default y
@ -541,15 +404,6 @@ config SPL_BANNER_PRINT
info. Disabling this option could be useful to reduce SPL boot time
(e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
config TPL_BANNER_PRINT
bool "Enable output of the TPL banner 'U-Boot TPL ...'"
depends on TPL
default y
help
If this option is enabled, TPL will print the banner with version
info. Disabling this option could be useful to reduce TPL boot time
(e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
config SPL_EARLY_BSS
depends on ARM && !ARM64
bool "Allows initializing BSS early before entering board_init_f"
@ -1625,314 +1479,7 @@ config TPL
help
If you want to build TPL as well as the normal image and SPL, say Y.
if TPL
config TPL_SIZE_LIMIT
hex "Maximum size of TPL image"
depends on TPL
default 0x0
help
Specifies the maximum length of the U-Boot TPL image.
If this value is zero, it is ignored.
config TPL_BINMAN_SYMBOLS
bool "Declare binman symbols in TPL"
depends on SPL_FRAMEWORK && BINMAN
default y
help
This enables use of symbols in TPL which refer to U-Boot, enabling TPL
to obtain the location of U-Boot simply by calling spl_get_image_pos()
and spl_get_image_size().
For this to work, you must have a U-Boot image in the binman image, so
binman can update TPL with the location of it.
config TPL_FRAMEWORK
bool "Support TPL based upon the common SPL framework"
default y if SPL_FRAMEWORK
help
Enable the SPL framework under common/spl/ for TPL builds.
This framework supports MMC, NAND and YMODEM and other methods
loading of U-Boot's SPL stage. If unsure, say Y.
config TPL_HANDOFF
bool "Pass hand-off information from TPL to SPL and U-Boot proper"
depends on HANDOFF && TPL_BLOBLIST
default y
help
This option enables TPL to write handoff information. This can be
used to pass information like the size of SDRAM from TPL to U-Boot
proper. The information is also available to SPL if it is useful
there.
config TPL_BOARD_INIT
bool "Call board-specific initialization in TPL"
help
If this option is enabled, U-Boot will call the function
spl_board_init() from board_init_r(). This function should be
provided by the board.
config TPL_BOOTCOUNT_LIMIT
bool "Support bootcount in TPL"
depends on TPL_ENV_SUPPORT
help
If this option is enabled, the TPL will support bootcount.
For example, it may be useful to choose the device to boot.
config TPL_LDSCRIPT
string "Linker script for the TPL stage"
depends on TPL
default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
help
The TPL stage will usually require a different linker-script
(as it runs from a different memory region) than the regular
U-Boot stage. Set this to the path of the linker-script to
be used for TPL.
May be left empty to trigger the Makefile infrastructure to
fall back to the linker-script used for the SPL stage.
config TPL_NEEDS_SEPARATE_STACK
bool "TPL needs a separate initial stack-pointer"
depends on TPL
help
Enable, if the TPL stage should not inherit its initial
stack-pointer from the settings for the SPL stage.
config TPL_POWER
bool "Support power drivers"
help
Enable support for power control in TPL. This includes support
for PMICs (Power-management Integrated Circuits) and some of the
features provided by PMICs. In particular, voltage regulators can
be used to enable/disable power and vary its voltage. That can be
useful in TPL to turn on boot peripherals and adjust CPU voltage
so that the clock speed can be increased. This enables the drivers
in drivers/power, drivers/power/pmic and drivers/power/regulator
as part of an TPL build.
config TPL_TEXT_BASE
hex "Base address for the .text section of the TPL stage"
default 0
help
The base address for the .text section of the TPL stage.
config TPL_MAX_SIZE
hex "Maximum size (in bytes) for the TPL stage"
default 0x2e000 if ROCKCHIP_RK3399
default 0x8000 if ROCKCHIP_RK3288
default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
default 0x2800 if ROCKCHIP_PX30
default 0x0
help
The maximum size (in bytes) of the TPL stage.
config TPL_PAD_TO
hex "Offset to which the TPL should be padded before appending the TPL payload"
depends on !TPL_FRAMEWORK && PPC
default TPL_MAX_SIZE
help
Image offset to which the TPL should be padded before appending the
TPL payload. By default, this is defined as CONFIG_TPL_MAX_SIZE, or 0 if
CONFIG_TPL_MAX_SIZE is undefined. CONFIG_TPL_PAD_TO must be either
0, meaning to append the TPL payload without any padding, or >=
CONFIG_TPL_MAX_SIZE.
config TPL_STACK
hex "Address of the initial stack-pointer for the TPL stage"
depends on TPL_NEEDS_SEPARATE_STACK
help
The address of the initial stack-pointer for the TPL stage.
Usually this will be the (aligned) top-of-stack.
config TPL_READ_ONLY
bool
depends on TPL_OF_PLATDATA
select TPL_OF_PLATDATA_NO_BIND
select TPL_OF_PLATDATA_RT
help
Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
section of memory. This means that of-platdata must make a copy (in
writeable memory) of anything it wants to modify, such as
device-private data.
config TPL_BOOTROM_SUPPORT
bool "Support returning to the BOOTROM (from TPL)"
help
Some platforms (e.g. the Rockchip RK3368) provide support in their
ROM for loading the next boot-stage after performing basic setup
from the TPL stage.
Enable this option, to return to the BOOTROM through the
BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
boot device list, if not implemented for a given board)
config TPL_CRC32
bool "Support CRC32 in TPL"
default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
help
Enable this to support CRC32 in uImages or FIT images within SPL.
This is a 32-bit checksum value that can be used to verify images.
For FIT images, this is the least secure type of checksum, suitable
for detected accidental image corruption. For secure applications you
should consider SHA1 or SHA256.
config TPL_DRIVERS_MISC
bool "Support misc drivers in TPL"
help
Enable miscellaneous drivers in TPL. These drivers perform various
tasks that don't fall nicely into other categories, Enable this
option to build the drivers in drivers/misc as part of an TPL
build, for those that support building in TPL (not all drivers do).
config TPL_ENV_SUPPORT
bool "Support an environment"
help
Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
config TPL_GPIO
bool "Support GPIO in TPL"
help
Enable support for GPIOs (General-purpose Input/Output) in TPL.
GPIOs allow U-Boot to read the state of an input line (high or
low) and set the state of an output line. This can be used to
drive LEDs, control power to various system parts and read user
input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
for example. Enable this option to build the drivers in
drivers/gpio as part of an TPL build.
config TPL_I2C
bool "Support I2C"
help
Enable support for the I2C bus in TPL. See SPL_I2C for
details.
config TPL_LIBCOMMON_SUPPORT
bool "Support common libraries"
help
Enable support for common U-Boot libraries within TPL. See
SPL_LIBCOMMON_SUPPORT for details.
config TPL_LIBGENERIC_SUPPORT
bool "Support generic libraries"
help
Enable support for generic U-Boot libraries within TPL. See
SPL_LIBGENERIC_SUPPORT for details.
config TPL_MPC8XXX_INIT_DDR
bool "Support MPC8XXX DDR init"
help
Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
SPL_MPC8XXX_INIT_DDR for details.
config TPL_MMC
bool "Support MMC"
depends on MMC
help
Enable support for MMC within TPL. See SPL_MMC for details.
config TPL_NAND_SUPPORT
bool "Support NAND flash"
help
Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
config TPL_PCI
bool "Support PCI drivers"
help
Enable support for PCI in TPL. For platforms that need PCI to boot,
or must perform some init using PCI in SPL, this provides the
necessary driver support. This enables the drivers in drivers/pci
as part of a TPL build.
config TPL_PCH
bool "Support PCH drivers"
help
Enable support for PCH (Platform Controller Hub) devices in TPL.
These are used to set up GPIOs and the SPI peripheral early in
boot. This enables the drivers in drivers/pch as part of a TPL
build.
config TPL_RAM_SUPPORT
bool "Support booting from RAM"
help
Enable booting of an image in RAM. The image can be preloaded or
it can be loaded by TPL directly into RAM (e.g. using USB).
config TPL_RAM_DEVICE
bool "Support booting from preloaded image in RAM"
depends on TPL_RAM_SUPPORT
help
Enable booting of an image already loaded in RAM. The image has to
be already in memory when TPL takes over, e.g. loaded by the boot
ROM.
config TPL_RTC
bool "Support RTC drivers"
help
Enable RTC (Real-time Clock) support in TPL. This includes support
for reading and setting the time. Some RTC devices also have some
non-volatile (battery-backed) memory which is accessible if
needed. This enables the drivers in drivers/rtc as part of an TPL
build.
config TPL_SERIAL
bool "Support serial"
select TPL_PRINTF
select TPL_STRTO
help
Enable support for serial in TPL. See SPL_SERIAL for
details.
config TPL_SPI_FLASH_SUPPORT
bool "Support SPI flash drivers"
help
Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
for details.
config TPL_SPI_FLASH_TINY
bool "Enable low footprint TPL SPI Flash support"
depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
default y if SPI_FLASH
help
Enable lightweight TPL SPI Flash support that supports just reading
data/images from flash. No support to write/erase flash. Enable
this if you have TPL size limitations and don't need full-fledged
SPI flash support.
config TPL_SPI_LOAD
bool "Support loading from SPI flash"
depends on TPL_SPI_FLASH_SUPPORT
help
Enable support for loading next stage, U-Boot or otherwise, from
SPI NOR in U-Boot TPL.
config TPL_SPI
bool "Support SPI drivers"
help
Enable support for using SPI in TPL. See SPL_SPI for
details.
config TPL_DM_SPI
bool "Support SPI DM drivers in TPL"
help
Enable support for SPI DM drivers in TPL.
config TPL_DM_SPI_FLASH
bool "Support SPI DM FLASH drivers in TPL"
help
Enable support for SPI DM flash drivers in TPL.
config TPL_YMODEM_SUPPORT
bool "Support loading using Ymodem"
depends on TPL_SERIAL
help
While loading from serial is slow it can be a useful backup when
there is no other option. The Ymodem protocol provides a reliable
means of transmitting U-Boot over a serial line for using in TPL,
with a checksum to ensure correctness.
endif # TPL
source "common/spl/Kconfig.tpl"
config VPL
bool
@ -1942,209 +1489,7 @@ config VPL
If you want to build VPL as well as the normal image, TPL and SPL,
say Y.
if VPL
config VPL_BANNER_PRINT
bool "Enable output of the VPL banner 'U-Boot VPL ...'"
depends on VPL
default y
help
If this option is enabled, VPL will print the banner with version
info. Disabling this option could be useful to reduce VPL boot time
(e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
config VPL_BOARD_INIT
bool "Call board-specific initialization in VPL"
help
If this option is enabled, U-Boot will call the function
spl_board_init() from board_init_r(). This function should be
provided by the board.
config VPL_CACHE
depends on CACHE
bool "Support cache drivers in VPL"
help
Enable support for cache drivers in VPL.
config VPL_CRC32
bool "Support CRC32 in VPL"
default y if VPL_ENV_SUPPORT || VPL_BLOBLIST
help
Enable this to support CRC32 in uImages or FIT images within VPL.
This is a 32-bit checksum value that can be used to verify images.
For FIT images, this is the least secure type of checksum, suitable
for detected accidental image corruption. For secure applications you
should consider SHA1 or SHA256.
config VPL_DM_SPI
bool "Support SPI DM drivers in VPL"
help
Enable support for SPI DM drivers in VPL.
config VPL_DM_SPI_FLASH
bool "Support SPI DM FLASH drivers in VPL"
help
Enable support for SPI DM flash drivers in VPL.
config VPL_FRAMEWORK
bool "Support VPL based upon the common SPL framework"
default y
help
Enable the SPL framework under common/spl/ for VPL builds.
This framework supports MMC, NAND and YMODEM and other methods
loading of U-Boot's next stage. If unsure, say Y.
config VPL_HANDOFF
bool "Pass hand-off information from VPL to SPL"
depends on HANDOFF && VPL_BLOBLIST
default y
help
This option enables VPL to write handoff information. This can be
used to pass information like the size of SDRAM from VPL to SPL. Also
VPL can receive information from TPL in the same place if that is
enabled.
config VPL_LIBCOMMON_SUPPORT
bool "Support common libraries"
default y if SPL_LIBCOMMON_SUPPORT
help
Enable support for common U-Boot libraries within VPL. See
SPL_LIBCOMMON_SUPPORT for details.
config VPL_LIBGENERIC_SUPPORT
bool "Support generic libraries"
default y if SPL_LIBGENERIC_SUPPORT
help
Enable support for generic U-Boot libraries within VPL. These
libraries include generic code to deal with device tree, hashing,
printf(), compression and the like. This option is enabled on many
boards. Enable this option to build the code in lib/ as part of a
VPL build.
config VPL_DRIVERS_MISC
bool "Support misc drivers"
default y if TPL_DRIVERS_MISC
help
Enable miscellaneous drivers in VPL. These drivers perform various
tasks that don't fall nicely into other categories, Enable this
option to build the drivers in drivers/misc as part of a VPL
build, for those that support building in VPL (not all drivers do).
config VPL_ENV_SUPPORT
bool "Support an environment"
help
Enable environment support in VPL. The U-Boot environment provides
a number of settings (essentially name/value pairs) which can
control many aspects of U-Boot's operation. Enabling this option will
make env_get() and env_set() available in VSPL.
config VPL_GPIO
bool "Support GPIO in VPL"
default y if SPL_GPIO
help
Enable support for GPIOs (General-purpose Input/Output) in VPL.
GPIOs allow U-Boot to read the state of an input line (high or
low) and set the state of an output line. This can be used to
drive LEDs, control power to various system parts and read user
input. GPIOs can be useful in VPL to enable a 'sign-of-life' LED,
for example. Enable this option to build the drivers in
drivers/gpio as part of a VPL build.
config VPL_HANDOFF
bool "Pass hand-off information from VPL to SPL and U-Boot proper"
depends on HANDOFF && VPL_BLOBLIST
default y
help
This option enables VPL to write handoff information. This can be
used to pass information like the size of SDRAM from VPL to U-Boot
proper. The information is also available to VPL if it is useful
there.
config VPL_HASH
bool "Support hashing drivers in VPL"
depends on VPL
select SHA1
select SHA256
help
Enable hashing drivers in VPL. These drivers can be used to
accelerate secure boot processing in secure applications. Enable
this option to build system-specific drivers for hash acceleration
as part of a VPL build.
config VPL_I2C_SUPPORT
bool "Support I2C in VPL"
default y if SPL_I2C_SUPPORT
help
Enable support for the I2C bus in VPL. Vee SPL_I2C_SUPPORT for
details.
config VPL_PCH_SUPPORT
bool "Support PCH drivers"
default y if TPL_PCH_SUPPORT
help
Enable support for PCH (Platform Controller Hub) devices in VPL.
These are used to set up GPIOs and the SPI peripheral early in
boot. This enables the drivers in drivers/pch as part of a VPL
build.
config VPL_PCI
bool "Support PCI drivers"
default y if SPL_PCI
help
Enable support for PCI in VPL. For platforms that need PCI to boot,
or must perform some init using PCI in VPL, this provides the
necessary driver support. This enables the drivers in drivers/pci
as part of a VPL build.
config VPL_RTC
bool "Support RTC drivers"
help
Enable RTC (Real-time Clock) support in VPL. This includes support
for reading and setting the time. Some RTC devices also have some
non-volatile (battery-backed) memory which is accessible if
needed. This enables the drivers in drivers/rtc as part of a VPL
build.
config VPL_SERIAL
bool "Support serial"
default y if TPL_SERIAL
select VPL_PRINTF
select VPL_STRTO
help
Enable support for serial in VPL. See SPL_SERIAL_SUPPORT for
details.
config VPL_SIZE_LIMIT
hex "Maximum size of VPL image"
depends on VPL
default 0x0
help
Specifies the maximum length of the U-Boot VPL image.
If this value is zero, it is ignored.
config VPL_SPI
bool "Support SPI drivers"
help
Enable support for using SPI in VPL. See SPL_SPI_SUPPORT for
details.
config VPL_SPI_FLASH_SUPPORT
bool "Support SPI flash drivers"
help
Enable support for using SPI flash in VPL, and loading U-Boot from
SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
the SPI bus that is used to connect it to a system. It is a simple
but fast bidirectional 4-wire bus (clock, chip select and two data
lines). This enables the drivers in drivers/mtd/spi as part of a
VPL build. This normally requires VPL_SPI_SUPPORT.
config VPL_TEXT_BASE
hex "VPL Text Base"
default 0x0
help
The address in memory that VPL will be running from.
endif # VPL
source "common/spl/Kconfig.vpl"
config SPL_AT91_MCK_BYPASS
bool "Use external clock signal as a source of main clock for AT91 platforms"

124
common/spl/Kconfig.nxp Normal file
View File

@ -0,0 +1,124 @@
menu "PowerPC and LayerScape SPL Boot options"
depends on (PPC && SUPPORT_SPL && !SPL_FRAMEWORK) || \
((ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && SUPPORT_SPL)
config SPL_NAND_BOOT
bool "Load SPL from NAND flash"
depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
config SPL_MMC_BOOT
bool "Load SPL from SD Card / eMMC"
depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
config SPL_SPI_BOOT
bool "Load SPL from SPI flash"
depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
config SPL_FSL_PBL
bool "Create SPL in Freescale PBI format"
depends on (PPC || ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && \
SUPPORT_SPL
help
Create boot binary having SPL binary in PBI format concatenated with
u-boot binary.
config SPL_SYS_CCSR_DO_NOT_RELOCATE
bool "Ensures that CCSR is not relocated"
depends on PPC
help
If this is defined, then CONFIG_SYS_CCSRBAR_PHYS will be forced to a
value that ensures that CCSR is not relocated.
config TPL_SYS_CCSR_DO_NOT_RELOCATE
def_bool y
depends on SPL_SYS_CCSR_DO_NOT_RELOCATE
menu "PowerPC SPL / TPL specific options"
depends on PPC && (SPL && !SPL_FRAMEWORK)
config SPL_INIT_MINIMAL
bool "Arch init code will be built for a very small image"
config SPL_FLUSH_IMAGE
bool "Clean dcache and invalidate icache after loading the image"
config SPL_SKIP_RELOCATE
bool "Skip relocating SPL"
config SPL_GD_ADDR
hex "Address to use for global data (gd) in SPL"
depends on !SPL_INIT_MINIMAL
config SPL_RELOC_TEXT_BASE
hex "Address to relocate SPL to"
default SPL_TEXT_BASE
help
If unspecified, this is equal to CONFIG_SPL_TEXT_BASE (i.e. no
relocation is done).
config SPL_RELOC_STACK
hex "Address of the start of the stack SPL will use after relocation."
help
If unspecified, this is equal to CONFIG_SYS_SPL_MALLOC_START. Starting
address of the malloc pool used in SPL. When this option is set the full
malloc is used in SPL and it is set up by spl_init() and before that, the
simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
config SPL_RELOC_MALLOC
bool "SPL has malloc pool after relocation"
config SPL_RELOC_MALLOC_ADDR
hex "Address of malloc pool in SPL"
depends on SPL_RELOC_MALLOC
config SPL_RELOC_MALLOC_SIZE
hex "Size of malloc pool in SPL"
depends on SPL_RELOC_MALLOC
config TPL_GD_ADDR
hex "Address to use for global data (gd) in TPL"
depends on TPL
config TPL_RELOC_TEXT_BASE
hex "Address to relocate TPL to"
depends on TPL
default TPL_TEXT_BASE
help
If unspecified, this is equal to CONFIG_TPL_TEXT_BASE (i.e. no
relocation is done).
config TPL_RELOC_STACK
hex "Address of the start of the stack TPL will use after relocation."
depends on TPL
help
If unspecified, this is equal to CONFIG_SYS_TPL_MALLOC_START. Starting
address of the malloc pool used in TPL. When this option is set the full
malloc is used in TPL and it is set up by spl_init() and before that, the
simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
config TPL_RELOC_MALLOC
bool "TPL has malloc pool after relocation"
depends on TPL
config TPL_RELOC_MALLOC_ADDR
hex "Address of malloc pool in TPL"
depends on TPL_RELOC_MALLOC
config TPL_RELOC_MALLOC_SIZE
hex "Size of malloc pool in TPL"
depends on TPL_RELOC_MALLOC
config TPL_PAD_TO
hex "Offset to which the TPL should be padded before appending the TPL payload"
depends on TPL && !TPL_FRAMEWORK
default TPL_MAX_SIZE
help
Image offset to which the TPL should be padded before appending the
TPL payload. By default, this is defined as CONFIG_TPL_MAX_SIZE, or 0 if
CONFIG_TPL_MAX_SIZE is undefined. CONFIG_TPL_PAD_TO must be either
0, meaning to append the TPL payload without any padding, or >=
CONFIG_TPL_MAX_SIZE.
endmenu
endmenu

322
common/spl/Kconfig.tpl Normal file
View File

@ -0,0 +1,322 @@
menu "TPL configuration options"
depends on TPL
config TPL_SIZE_LIMIT
hex "Maximum size of TPL image"
default 0x0
help
Specifies the maximum length of the U-Boot TPL image.
If this value is zero, it is ignored.
config TPL_BINMAN_SYMBOLS
bool "Declare binman symbols in TPL"
depends on SPL_FRAMEWORK && BINMAN
default y
help
This enables use of symbols in TPL which refer to U-Boot, enabling TPL
to obtain the location of U-Boot simply by calling spl_get_image_pos()
and spl_get_image_size().
For this to work, you must have a U-Boot image in the binman image, so
binman can update TPL with the location of it.
config TPL_FRAMEWORK
bool "Support TPL based upon the common SPL framework"
default y if SPL_FRAMEWORK
help
Enable the SPL framework under common/spl/ for TPL builds.
This framework supports MMC, NAND and YMODEM and other methods
loading of U-Boot's SPL stage. If unsure, say Y.
config TPL_BANNER_PRINT
bool "Enable output of the TPL banner 'U-Boot TPL ...'"
default y
help
If this option is enabled, TPL will print the banner with version
info. Disabling this option could be useful to reduce TPL boot time
(e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
config TPL_HANDOFF
bool "Pass hand-off information from TPL to SPL and U-Boot proper"
depends on HANDOFF && TPL_BLOBLIST
default y
help
This option enables TPL to write handoff information. This can be
used to pass information like the size of SDRAM from TPL to U-Boot
proper. The information is also available to SPL if it is useful
there.
config TPL_BOARD_INIT
bool "Call board-specific initialization in TPL"
help
If this option is enabled, U-Boot will call the function
spl_board_init() from board_init_r(). This function should be
provided by the board.
config TPL_BOOTCOUNT_LIMIT
bool "Support bootcount in TPL"
depends on TPL_ENV_SUPPORT
help
If this option is enabled, the TPL will support bootcount.
For example, it may be useful to choose the device to boot.
config TPL_SYS_MALLOC_SIMPLE
bool
prompt "Only use malloc_simple functions in the TPL"
help
Say Y here to only use the *_simple malloc functions from
malloc_simple.c, rather then using the versions from dlmalloc.c;
this will make the TPL binary smaller at the cost of more heap
usage as the *_simple malloc functions do not re-use free-ed mem.
config TPL_SEPARATE_BSS
bool "BSS section is in a different memory region from text"
default y if SPL_SEPARATE_BSS
help
Some platforms need a large BSS region in TPL and can provide this
because RAM is already set up. In this case BSS can be moved to RAM.
This option should then be enabled so that the correct device tree
location is used. Normally we put the device tree at the end of BSS
but with this option enabled, it goes at _image_binary_end.
config TPL_LDSCRIPT
string "Linker script for the TPL stage"
default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
help
The TPL stage will usually require a different linker-script
(as it runs from a different memory region) than the regular
U-Boot stage. Set this to the path of the linker-script to
be used for TPL.
May be left empty to trigger the Makefile infrastructure to
fall back to the linker-script used for the SPL stage.
config TPL_NEEDS_SEPARATE_STACK
bool "TPL needs a separate initial stack-pointer"
help
Enable, if the TPL stage should not inherit its initial
stack-pointer from the settings for the SPL stage.
config TPL_POWER
bool "Support power drivers"
help
Enable support for power control in TPL. This includes support
for PMICs (Power-management Integrated Circuits) and some of the
features provided by PMICs. In particular, voltage regulators can
be used to enable/disable power and vary its voltage. That can be
useful in TPL to turn on boot peripherals and adjust CPU voltage
so that the clock speed can be increased. This enables the drivers
in drivers/power, drivers/power/pmic and drivers/power/regulator
as part of an TPL build.
config TPL_TEXT_BASE
hex "Base address for the .text section of the TPL stage"
default 0
help
The base address for the .text section of the TPL stage.
config TPL_MAX_SIZE
hex "Maximum size (in bytes) for the TPL stage"
default 0x2e000 if ROCKCHIP_RK3399
default 0x8000 if ROCKCHIP_RK3288
default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
default 0x2800 if ROCKCHIP_PX30
default 0x0
help
The maximum size (in bytes) of the TPL stage.
config TPL_STACK
hex "Address of the initial stack-pointer for the TPL stage"
depends on TPL_NEEDS_SEPARATE_STACK
help
The address of the initial stack-pointer for the TPL stage.
Usually this will be the (aligned) top-of-stack.
config TPL_READ_ONLY
bool
depends on TPL_OF_PLATDATA
select TPL_OF_PLATDATA_NO_BIND
select TPL_OF_PLATDATA_RT
help
Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
section of memory. This means that of-platdata must make a copy (in
writeable memory) of anything it wants to modify, such as
device-private data.
config TPL_BOOTROM_SUPPORT
bool "Support returning to the BOOTROM (from TPL)"
help
Some platforms (e.g. the Rockchip RK3368) provide support in their
ROM for loading the next boot-stage after performing basic setup
from the TPL stage.
Enable this option, to return to the BOOTROM through the
BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
boot device list, if not implemented for a given board)
config TPL_CRC32
bool "Support CRC32 in TPL"
default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
help
Enable this to support CRC32 in uImages or FIT images within SPL.
This is a 32-bit checksum value that can be used to verify images.
For FIT images, this is the least secure type of checksum, suitable
for detected accidental image corruption. For secure applications you
should consider SHA1 or SHA256.
config TPL_DRIVERS_MISC
bool "Support misc drivers in TPL"
help
Enable miscellaneous drivers in TPL. These drivers perform various
tasks that don't fall nicely into other categories, Enable this
option to build the drivers in drivers/misc as part of an TPL
build, for those that support building in TPL (not all drivers do).
config TPL_ENV_SUPPORT
bool "Support an environment"
help
Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
config TPL_GPIO
bool "Support GPIO in TPL"
help
Enable support for GPIOs (General-purpose Input/Output) in TPL.
GPIOs allow U-Boot to read the state of an input line (high or
low) and set the state of an output line. This can be used to
drive LEDs, control power to various system parts and read user
input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
for example. Enable this option to build the drivers in
drivers/gpio as part of an TPL build.
config TPL_I2C
bool "Support I2C"
help
Enable support for the I2C bus in TPL. See SPL_I2C for
details.
config TPL_LIBCOMMON_SUPPORT
bool "Support common libraries"
help
Enable support for common U-Boot libraries within TPL. See
SPL_LIBCOMMON_SUPPORT for details.
config TPL_LIBGENERIC_SUPPORT
bool "Support generic libraries"
help
Enable support for generic U-Boot libraries within TPL. See
SPL_LIBGENERIC_SUPPORT for details.
config TPL_MPC8XXX_INIT_DDR
bool "Support MPC8XXX DDR init"
help
Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
SPL_MPC8XXX_INIT_DDR for details.
config TPL_MMC
bool "Support MMC"
depends on MMC
help
Enable support for MMC within TPL. See SPL_MMC for details.
config TPL_NAND_SUPPORT
bool "Support NAND flash"
help
Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
config TPL_PCI
bool "Support PCI drivers"
help
Enable support for PCI in TPL. For platforms that need PCI to boot,
or must perform some init using PCI in SPL, this provides the
necessary driver support. This enables the drivers in drivers/pci
as part of a TPL build.
config TPL_PCH
bool "Support PCH drivers"
help
Enable support for PCH (Platform Controller Hub) devices in TPL.
These are used to set up GPIOs and the SPI peripheral early in
boot. This enables the drivers in drivers/pch as part of a TPL
build.
config TPL_RAM_SUPPORT
bool "Support booting from RAM"
help
Enable booting of an image in RAM. The image can be preloaded or
it can be loaded by TPL directly into RAM (e.g. using USB).
config TPL_RAM_DEVICE
bool "Support booting from preloaded image in RAM"
depends on TPL_RAM_SUPPORT
help
Enable booting of an image already loaded in RAM. The image has to
be already in memory when TPL takes over, e.g. loaded by the boot
ROM.
config TPL_RTC
bool "Support RTC drivers"
help
Enable RTC (Real-time Clock) support in TPL. This includes support
for reading and setting the time. Some RTC devices also have some
non-volatile (battery-backed) memory which is accessible if
needed. This enables the drivers in drivers/rtc as part of an TPL
build.
config TPL_SERIAL
bool "Support serial"
select TPL_PRINTF
select TPL_STRTO
help
Enable support for serial in TPL. See SPL_SERIAL for
details.
config TPL_SPI_FLASH_SUPPORT
bool "Support SPI flash drivers"
help
Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
for details.
config TPL_SPI_FLASH_TINY
bool "Enable low footprint TPL SPI Flash support"
depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
default y if SPI_FLASH
help
Enable lightweight TPL SPI Flash support that supports just reading
data/images from flash. No support to write/erase flash. Enable
this if you have TPL size limitations and don't need full-fledged
SPI flash support.
config TPL_SPI_LOAD
bool "Support loading from SPI flash"
depends on TPL_SPI_FLASH_SUPPORT
help
Enable support for loading next stage, U-Boot or otherwise, from
SPI NOR in U-Boot TPL.
config TPL_SPI
bool "Support SPI drivers"
help
Enable support for using SPI in TPL. See SPL_SPI for
details.
config TPL_DM_SPI
bool "Support SPI DM drivers in TPL"
help
Enable support for SPI DM drivers in TPL.
config TPL_DM_SPI_FLASH
bool "Support SPI DM FLASH drivers in TPL"
help
Enable support for SPI DM flash drivers in TPL.
config TPL_YMODEM_SUPPORT
bool "Support loading using Ymodem"
depends on TPL_SERIAL
help
While loading from serial is slow it can be a useful backup when
there is no other option. The Ymodem protocol provides a reliable
means of transmitting U-Boot over a serial line for using in TPL,
with a checksum to ensure correctness.
endmenu

201
common/spl/Kconfig.vpl Normal file
View File

@ -0,0 +1,201 @@
menu "VPL options"
depends on VPL
config VPL_BANNER_PRINT
bool "Enable output of the VPL banner 'U-Boot VPL ...'"
default y
help
If this option is enabled, VPL will print the banner with version
info. Disabling this option could be useful to reduce VPL boot time
(e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
config VPL_BOARD_INIT
bool "Call board-specific initialization in VPL"
help
If this option is enabled, U-Boot will call the function
spl_board_init() from board_init_r(). This function should be
provided by the board.
config VPL_CACHE
depends on CACHE
bool "Support cache drivers in VPL"
help
Enable support for cache drivers in VPL.
config VPL_CRC32
bool "Support CRC32 in VPL"
default y if VPL_ENV_SUPPORT || VPL_BLOBLIST
help
Enable this to support CRC32 in uImages or FIT images within VPL.
This is a 32-bit checksum value that can be used to verify images.
For FIT images, this is the least secure type of checksum, suitable
for detected accidental image corruption. For secure applications you
should consider SHA1 or SHA256.
config VPL_DM_SPI
bool "Support SPI DM drivers in VPL"
help
Enable support for SPI DM drivers in VPL.
config VPL_DM_SPI_FLASH
bool "Support SPI DM FLASH drivers in VPL"
help
Enable support for SPI DM flash drivers in VPL.
config VPL_FRAMEWORK
bool "Support VPL based upon the common SPL framework"
default y
help
Enable the SPL framework under common/spl/ for VPL builds.
This framework supports MMC, NAND and YMODEM and other methods
loading of U-Boot's next stage. If unsure, say Y.
config VPL_HANDOFF
bool "Pass hand-off information from VPL to SPL"
depends on HANDOFF && VPL_BLOBLIST
default y
help
This option enables VPL to write handoff information. This can be
used to pass information like the size of SDRAM from VPL to SPL. Also
VPL can receive information from TPL in the same place if that is
enabled.
config VPL_LIBCOMMON_SUPPORT
bool "Support common libraries"
default y if SPL_LIBCOMMON_SUPPORT
help
Enable support for common U-Boot libraries within VPL. See
SPL_LIBCOMMON_SUPPORT for details.
config VPL_LIBGENERIC_SUPPORT
bool "Support generic libraries"
default y if SPL_LIBGENERIC_SUPPORT
help
Enable support for generic U-Boot libraries within VPL. These
libraries include generic code to deal with device tree, hashing,
printf(), compression and the like. This option is enabled on many
boards. Enable this option to build the code in lib/ as part of a
VPL build.
config VPL_DRIVERS_MISC
bool "Support misc drivers"
default y if TPL_DRIVERS_MISC
help
Enable miscellaneous drivers in VPL. These drivers perform various
tasks that don't fall nicely into other categories, Enable this
option to build the drivers in drivers/misc as part of a VPL
build, for those that support building in VPL (not all drivers do).
config VPL_ENV_SUPPORT
bool "Support an environment"
help
Enable environment support in VPL. The U-Boot environment provides
a number of settings (essentially name/value pairs) which can
control many aspects of U-Boot's operation. Enabling this option will
make env_get() and env_set() available in VSPL.
config VPL_GPIO
bool "Support GPIO in VPL"
default y if SPL_GPIO
help
Enable support for GPIOs (General-purpose Input/Output) in VPL.
GPIOs allow U-Boot to read the state of an input line (high or
low) and set the state of an output line. This can be used to
drive LEDs, control power to various system parts and read user
input. GPIOs can be useful in VPL to enable a 'sign-of-life' LED,
for example. Enable this option to build the drivers in
drivers/gpio as part of a VPL build.
config VPL_HANDOFF
bool "Pass hand-off information from VPL to SPL and U-Boot proper"
depends on HANDOFF && VPL_BLOBLIST
default y
help
This option enables VPL to write handoff information. This can be
used to pass information like the size of SDRAM from VPL to U-Boot
proper. The information is also available to VPL if it is useful
there.
config VPL_HASH
bool "Support hashing drivers in VPL"
select SHA1
select SHA256
help
Enable hashing drivers in VPL. These drivers can be used to
accelerate secure boot processing in secure applications. Enable
this option to build system-specific drivers for hash acceleration
as part of a VPL build.
config VPL_I2C_SUPPORT
bool "Support I2C in VPL"
default y if SPL_I2C_SUPPORT
help
Enable support for the I2C bus in VPL. Vee SPL_I2C_SUPPORT for
details.
config VPL_PCH_SUPPORT
bool "Support PCH drivers"
default y if TPL_PCH_SUPPORT
help
Enable support for PCH (Platform Controller Hub) devices in VPL.
These are used to set up GPIOs and the SPI peripheral early in
boot. This enables the drivers in drivers/pch as part of a VPL
build.
config VPL_PCI
bool "Support PCI drivers"
default y if SPL_PCI
help
Enable support for PCI in VPL. For platforms that need PCI to boot,
or must perform some init using PCI in VPL, this provides the
necessary driver support. This enables the drivers in drivers/pci
as part of a VPL build.
config VPL_RTC
bool "Support RTC drivers"
help
Enable RTC (Real-time Clock) support in VPL. This includes support
for reading and setting the time. Some RTC devices also have some
non-volatile (battery-backed) memory which is accessible if
needed. This enables the drivers in drivers/rtc as part of a VPL
build.
config VPL_SERIAL
bool "Support serial"
default y if TPL_SERIAL
select VPL_PRINTF
select VPL_STRTO
help
Enable support for serial in VPL. See SPL_SERIAL_SUPPORT for
details.
config VPL_SIZE_LIMIT
hex "Maximum size of VPL image"
default 0x0
help
Specifies the maximum length of the U-Boot VPL image.
If this value is zero, it is ignored.
config VPL_SPI
bool "Support SPI drivers"
help
Enable support for using SPI in VPL. See SPL_SPI_SUPPORT for
details.
config VPL_SPI_FLASH_SUPPORT
bool "Support SPI flash drivers"
help
Enable support for using SPI flash in VPL, and loading U-Boot from
SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
the SPI bus that is used to connect it to a system. It is a simple
but fast bidirectional 4-wire bus (clock, chip select and two data
lines). This enables the drivers in drivers/mtd/spi as part of a
VPL build. This normally requires VPL_SPI_SUPPORT.
config VPL_TEXT_BASE
hex "VPL Text Base"
default 0x0
help
The address in memory that VPL will be running from.
endmenu