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 || ARCH_ARM
	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.

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

endchoice

source "payloads/external/*/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
	default COMPRESSED_PAYLOAD_NONE if PAYLOAD_LINUX || PAYLOAD_LINUXBOOT || PAYLOAD_FIT
	depends on !PAYLOAD_NONE && !PAYLOAD_LINUX && !PAYLOAD_LINUXBOOT && !PAYLOAD_FIT
	help
	  Choose the compression algorithm for the chosen payloads.
	  You can choose between None, LZMA, or LZ4.

config COMPRESSED_PAYLOAD_NONE
	bool "Use no compression for payloads"
	help
	  Do not compress the payload.

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 || ARCH_ARM
	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 GRUB2_SECONDARY_PAYLOAD
	bool "Load GRUB2 as a secondary payload"
	default n
	depends on !PAYLOAD_GRUB2
	select PAYLOAD_BUILD_GRUB2
	help
	  GRUB2 can be loaded as a secondary payload under SeaBIOS 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 && HAVE_OPTION_TABLE
	help
	  nvramcui can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

config SEABIOS_SECONDARY_PAYLOAD
	bool "Load SeaBIOS as a secondary payload"
	default n
	depends on ARCH_X86
	depends on !PAYLOAD_SEABIOS
	depends on !PAYLOAD_SEAGRUB
	select PAYLOAD_BUILD_SEABIOS
	help
	  SeaBIOS can be loaded as a secondary payload under 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.

config COREDOOM_SECONDARY_PAYLOAD
	bool "Load coreDOOM as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  coreDOOM can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads. Requires a
	  linear framebuffer. If built as a secondary payload for SeaBIOS, the
	  generated VGA BIOS option rom is also required.

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

endmenu # "Secondary Payloads"
endmenu
