menu "Payload"

config PAYLOAD_NONE
	bool "Don't add a payload"
	default y if !ARCH_X86
	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.

if !PAYLOAD_NONE
choice
	prompt "Payload to add"
	default PAYLOAD_SEABIOS if ARCH_X86

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_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"

endif # !PAYLOAD_NONE

endmenu
