## SPDX-License-Identifier: GPL-2.0-only

config COMMON_CBFS_SPI_WRAPPER
	bool
	default n
	depends on !ARCH_X86
	depends on BOOT_DEVICE_SPI_FLASH
	select BOOT_DEVICE_SUPPORTS_WRITES
	help
	 Use common wrapper to interface CBFS to SPI bootrom.

config SPI_FLASH
	bool
	default y if BOOT_DEVICE_SPI_FLASH && BOOT_DEVICE_SUPPORTS_WRITES
	default n
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash.

config SPI_SDCARD
	bool
	default n
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI sdcard.

if SPI_FLASH

# Keep at 0 because lots of boards assume this default.
config BOOT_DEVICE_SPI_FLASH_BUS
	int
	default 0
	help
	  Which SPI bus the boot device is connected to.

config BOOT_DEVICE_SPI_FLASH_RW_NOMMAP
	bool
	default y if !COMMON_CBFS_SPI_WRAPPER
	default n
	depends on BOOT_DEVICE_SPI_FLASH
	help
	  Provide common implementation of the RW boot device that
	  doesn't provide mmap() operations.

config BOOT_DEVICE_SPI_FLASH_NO_EARLY_WRITES
	bool
	default n
	depends on BOOT_DEVICE_SPI_FLASH_RW_NOMMAP
	help
	  For platforms who do not allow writes to SPI flash in early
	  stages like romstage.  Not selecting this config will result
	  in the auto-selection of
	  BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY if
	  BOOT_DEVICE_SPI_FLASH_RW_NOMMAP is selected by the platform.

config BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY
	bool
	default y if BOOT_DEVICE_SPI_FLASH_RW_NOMMAP && !BOOT_DEVICE_SPI_FLASH_NO_EARLY_WRITES
	default n
	depends on BOOT_DEVICE_SPI_FLASH_RW_NOMMAP
	help
	  Include the common implementation in all stages, including the
	  early ones.

config SPI_FLASH_DONT_INCLUDE_ALL_DRIVERS
	bool
	default y if COMMON_CBFS_SPI_WRAPPER
	default n

config SPI_FLASH_INCLUDE_ALL_DRIVERS
	bool
	default n if SPI_FLASH_DONT_INCLUDE_ALL_DRIVERS
	default y

config SPI_FLASH_SMM
	bool
	depends on HAVE_SMI_HANDLER
	help
	  Select this option if you want SPI flash support in SMM.

config SPI_FLASH_NO_FAST_READ
	bool "Disable Fast Read command"
	default n
	help
	  Select this option if your setup requires to avoid "fast read"s
	  from the SPI flash parts.

config SPI_FLASH_ADESTO
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by Adesto Technologies.

config SPI_FLASH_AMIC
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by AMIC.

config SPI_FLASH_ATMEL
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by Atmel.

config SPI_FLASH_EON
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by EON.

config SPI_FLASH_GIGADEVICE
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by Gigadevice.

config SPI_FLASH_MACRONIX
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by Macronix.

config SPI_FLASH_SPANSION
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by Spansion.

config SPI_FLASH_SST
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by SST.

config SPI_FLASH_STMICRO
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by ST MICRO.

config SPI_FLASH_WINBOND
	bool
	default y if SPI_FLASH_INCLUDE_ALL_DRIVERS
	help
	  Select this option if your chipset driver needs to store certain
	  data in the SPI flash and your SPI flash is made by Winbond.

config SPI_FLASH_HAS_VOLATILE_GROUP
	bool
	default n
	help
	  Allows chipset to group write/erase operations under a single volatile
	  group.

config SPI_FLASH_EXIT_4_BYTE_ADDR_MODE
	bool
	default n
	help
	  This will send an Exit 4-Byte Address Mode (E9h) command before the first
	  access to the SPI flash. On some platforms with SPI flashes larger than 32MB,
	  the SPI flash may power up in 4-byte addressing mode and this command needs
	  to be sent before coreboot's 3-byte address commands can be interpreted correctly.
	  On flashes that don't support 4-byte addressing mode or where it is already
	  disabled, this command should be a no-op.

endif # SPI_FLASH

config HAVE_EM100PRO_SPI_CONSOLE_SUPPORT
	def_bool n