menu "Payload"

config NO_DEFAULT_PAYLOAD
	bool

choice
	prompt "Add a payload"
	default PAYLOAD_NONE if NO_DEFAULT_PAYLOAD || !ARCH_X86
	default PAYLOAD_SEABIOS if ARCH_X86

config PAYLOAD_NONE
	bool "None"
	help
	  Select this option if you want to create an "empty" coreboot
	  ROM image for a certain mainboard, i.e. a coreboot ROM image
	  which does not yet contain a payload.

	  For such an image to be useful, you have to use 'cbfstool'
	  to add a payload to the ROM image later.

config PAYLOAD_ELF
	bool "An ELF executable payload"
	help
	  Select this option if you have a payload image (an ELF file)
	  which coreboot should run as soon as the basic hardware
	  initialization is completed.

	  You will be able to specify the location and file name of the
	  payload image later.

config PAYLOAD_FIT
	bool "A FIT payload"
	depends on ARCH_ARM64 || ARCH_RISCV
	select PAYLOAD_FIT_SUPPORT
	help
	  Select this option if you have a payload image (a FIT file) which
	  coreboot should run as soon as the basic hardware initialization
	  is completed.

	  You will be able to specify the location and file name of the
	  payload image later.

config PAYLOAD_BAYOU
	bool "Bayou"
	depends on ARCH_X86
	help
	  Select this option if you want to set bayou as your primary
	  payload.

source "payloads/external/*/Kconfig.name"

endchoice

source "payloads/external/*/Kconfig"

source "payloads/bayou/Kconfig"

config PAYLOAD_FILE
	string "Payload path and filename"
	depends on PAYLOAD_ELF || PAYLOAD_FIT
	default "payload.elf" if PAYLOAD_ELF
	default "uImage" if PAYLOAD_FIT
	help
	  The path and filename of the ELF executable file to use as payload.

choice
	prompt "Payload compression algorithm"
	default COMPRESSED_PAYLOAD_LZMA
	depends on !PAYLOAD_NONE && !PAYLOAD_LINUX && !PAYLOAD_LINUXBOOT && !PAYLOAD_FIT
	help
	  Choose the compression algorithm for the chosen payloads.
	  You can choose between LZMA and LZ4.

config COMPRESSED_PAYLOAD_LZMA
	bool "Use LZMA compression for payloads"
	help
	  In order to reduce the size payloads take up in the ROM chip
	  coreboot can compress them using the LZMA algorithm.

config COMPRESSED_PAYLOAD_LZ4
	bool "Use LZ4 compression for payloads"
	help
	  In order to reduce the size payloads take up in the ROM chip
	  coreboot can compress them using the LZ4 algorithm.
endchoice

config PAYLOAD_OPTIONS
	string
	default ""
	help
	  Additional cbfstool options for the payload

config PAYLOAD_IS_FLAT_BINARY
	def_bool n
	help
	  Add the payload to cbfs as a flat binary type instead of as an
	  elf payload

config PAYLOAD_FIT_SUPPORT
	bool "FIT support"
	default n
	default y if PAYLOAD_LINUX && (ARCH_ARM || ARCH_ARM64 || ARCH_RISCV)
	depends on ARCH_ARM64 || ARCH_RISCV
	select FLATTENED_DEVICE_TREE
	help
	  Select this option if your payload is of type FIT.
	  Enables FIT parser and devicetree patching. The FIT is non
	  self-extracting and needs to have a compatible compression format.

config COMPRESS_SECONDARY_PAYLOAD
	bool "Use LZMA compression for secondary payloads"
	default y
	help
	  In order to reduce the size secondary payloads take up in the
	  ROM chip they can be compressed using the LZMA algorithm.

menu "Secondary Payloads"

config COREINFO_SECONDARY_PAYLOAD
	bool "Load coreinfo as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  coreinfo can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

config MEMTEST_SECONDARY_PAYLOAD
	bool "Load Memtest86+ as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  Memtest86+ can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

config NVRAMCUI_SECONDARY_PAYLOAD
	bool "Load nvramcui as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  nvramcui can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

config TINT_SECONDARY_PAYLOAD
	bool "Load tint as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  tint can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

source "payloads/external/*/Kconfig.secondary"

endmenu # "Secondary Payloads"
endmenu
