##
## This file is part of the coreboot project.
##
## Copyright (C) 2012 The Chromium OS Authors.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

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.

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_RW_NOMMAP_EARLY
	bool
	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_INCLUDE_ALL_DRIVERS
	bool
	default n if COMMON_CBFS_SPI_WRAPPER
	default y

config SPI_ATOMIC_SEQUENCING
	bool
	default y if ARCH_X86
	default n if !ARCH_X86
	help
	  Select this option if the SPI controller uses "atomic sequencing."
	  Atomic sequencing is when the sequence of commands is pre-programmed
	  in the SPI controller. Hardware manages the transaction instead of
	  software. This is common on x86 platforms.

config SPI_FLASH_SMM
	bool "SPI flash driver support in SMM"
	default n
	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_FAST_READ_DUAL_OUTPUT_3B
	bool
	default n
	depends on SPI_FLASH
	help
	  Select this option if your SPI flash supports the fast read dual-
	  output command (opcode 0x3b) where the opcode and address are sent
	  to the chip on MOSI and data is received on both MOSI and MISO.

endif # SPI_FLASH

config HAVE_SPI_CONSOLE_SUPPORT
	def_bool n