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.

config VPL_BINMAN_SYMBOLS
	bool "Declare binman symbols in VPL"
	depends on VPL_FRAMEWORK && BINMAN
	default y
	help
	  This enables use of symbols in VPL which refer to other entries in
	  the same binman image as the VPL. These can be declared with the
	  binman_sym_declare(type, entry, prop) macro and accessed by the
	  binman_sym(type, entry, prop) macro defined in binman_sym.h.

	  See tools/binman/binman.rst for a detailed explanation.

config VPL_BINMAN_UBOOT_SYMBOLS
	bool "Declare binman symbols for U-Boot phases in VPL"
	depends on VPL_BINMAN_SYMBOLS
	default n if ARCH_IMX8M
	default y
	help
	  This enables use of symbols in VPL which refer to U-Boot phases,
	  enabling VPL to obtain the location and size of its next phase simply
	  by calling spl_get_image_pos() and spl_get_image_size().

	  For this to work, you must have all U-Boot phases in the same binman
	  image, so binman can update VPL with the locations of everything.

endmenu
