menu "SPI Flash Support"

config DM_SPI_FLASH
	bool "Enable Driver Model for SPI flash"
	depends on DM_SPI
	imply SPI_FLASH
	help
	  Enable driver model for SPI flash. This SPI flash interface
	  (spi_flash_probe(), spi_flash_write(), etc.) is then
	  implemented by the SPI flash uclass. There is one standard
	  SPI flash driver which knows how to probe most chips
	  supported by U-Boot. The uclass interface is defined in
	  include/spi_flash.h, but is currently fully compatible
	  with the old interface to avoid confusion and duplication
	  during the transition parent. SPI and SPI flash must be
	  enabled together (it is not possible to use driver model
	  for one and not the other).

config SPI_FLASH_SANDBOX
	bool "Support sandbox SPI flash device"
	depends on SANDBOX && DM_SPI_FLASH
	help
	  Since sandbox cannot access real devices, an emulation mechanism is
	  provided instead. Drivers can be connected up to the sandbox SPI
	  bus (see CONFIG_SANDBOX_SPI) and SPI traffic will be routed to this
	  device. Typically the contents of the emulated SPI flash device is
	  stored in a file on the host filesystem.

config SPI_FLASH
	bool "SPI Flash Core Interface support"
	select SPI_MEM
	help
	  Enable the SPI flash Core support. This will include basic
	  standard support for things like probing, read / write, and
	  erasing through cmd_sf interface.

	  If unsure, say N

config SF_DEFAULT_BUS
	int "SPI Flash default bus identifier"
	depends on SPI_FLASH || DM_SPI_FLASH
	default 0
	help
	  The default bus may be provided by the platform
	  to handle the common case when only a single serial
	  flash is present on the system.

config SF_DEFAULT_CS
	int "SPI Flash default Chip-select"
	depends on SPI_FLASH || DM_SPI_FLASH
	default 0
	help
	  The default chip select may be provided by the platform
	  to handle the common case when only a single serial
	  flash is present on the system.

config SF_DEFAULT_MODE
	hex "SPI Flash default mode (see include/spi.h)"
	depends on SPI_FLASH || DM_SPI_FLASH
	default 0x0
	help
	  The default mode may be provided by the platform
	  to handle the common case when only a single serial
	  flash is present on the system.
	  Not used for boot with device tree; the SPI driver reads
	  speed and mode from plat values computed from
	  available node.

config SF_DEFAULT_SPEED
	int "SPI Flash default speed in Hz"
	depends on SPI_FLASH || DM_SPI_FLASH
	default 1000000
	help
	  The default speed may be provided by the platform
	  to handle the common case when only a single serial
	  flash is present on the system.
	  Not used for boot with device tree; the SPI driver reads
	  speed and mode from plat values computed from
	  available node.

if SPI_FLASH

config BOOTDEV_SPI_FLASH
	bool "SPI Flash bootdev support"
	depends on BOOTSTD
	help
	  Enable a boot device for SPI flash. This allows reading a script
	  from SPI flash so that it can be used to boot an Operating System.

	  If unsure, say N

config SPI_FLASH_SFDP_SUPPORT
	bool "SFDP table parsing support for SPI NOR flashes"
	depends on !SPI_FLASH_BAR
	help
	 Enable support for parsing and auto discovery of parameters for
	 SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
	 tables as per JESD216 standard.

config SPI_FLASH_SMART_HWCAPS
	bool "Smart hardware capability detection based on SPI MEM supports_op() hook"
	default y
	help
	 Enable support for smart hardware capability detection based on SPI
	 MEM supports_op() hook that lets controllers express whether they
	 can support a type of operation in a much more refined way compared
	 to using flags like SPI_RX_DUAL, SPI_TX_QUAD, etc.

config SPI_NOR_BOOT_SOFT_RESET_EXT_INVERT
	bool "Command extension type is INVERT for Software Reset on boot"
	help
	 Because of SFDP information can not be get before boot.
	 So define command extension type is INVERT when Software Reset on boot only.

config SPI_FLASH_SOFT_RESET
	bool "Software Reset support for SPI NOR flashes"
	help
	 Enable support for xSPI Software Reset. It will be used to switch from
	 Octal DTR mode to legacy mode on shutdown and boot (if enabled).

config SPI_FLASH_SOFT_RESET_ON_BOOT
	bool "Perform a Software Reset on boot on flashes that boot in stateful mode"
	depends on SPI_FLASH_SOFT_RESET
	help
	 Perform a Software Reset on boot to allow detecting flashes that are
	 handed to us in Octal DTR mode. Do not enable this config on flashes
	 that are not supposed to be handed to U-Boot in Octal DTR mode, even
	 if they _do_ support the Soft Reset sequence.

config SPI_FLASH_BAR
	bool "SPI flash Bank/Extended address register support"
	help
	  Enable the SPI flash Bank/Extended address register support.
	  Bank/Extended address registers are used to access the flash
	  which has size > 16MiB in 3-byte addressing.

config SPI_FLASH_LOCK
	bool "Enable the Locking feature"
	default y
	help
	 Enable the SPI flash lock support. By default this is set to y.
	 If you intend not to use the lock support you should say n here.

config SPI_FLASH_UNLOCK_ALL
	bool "Unlock the entire SPI flash on u-boot startup"
	default y
	help
	 Some flashes tend to power up with the software write protection
	 bits set. If this option is set, the whole flash will be unlocked.

	 For legacy reasons, this option default to y. But if you intend to
	 actually use the software protection bits you should say n here.

config SPI_FLASH_ATMEL
	bool "Atmel SPI flash support"
	help
	  Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx)

config SPI_FLASH_EON
	bool "EON SPI flash support"
	help
	  Add support for various EON SPI flash chips (EN25xxx)

config SPI_FLASH_GIGADEVICE
	bool "GigaDevice SPI flash support"
	help
	  Add support for various GigaDevice SPI flash chips (GD25xxx)

config SPI_FLASH_ISSI
	bool "ISSI SPI flash support"
	help
	  Add support for various ISSI SPI flash chips (ISxxx)

config SPI_FLASH_MACRONIX
	bool "Macronix SPI flash support"
	help
	  Add support for various Macronix SPI flash chips (MX25Lxxx)

config SPI_FLASH_PUYA
	bool "Puya Semiconductor SPI flash support"
	help
	  Add support for various Puya Semiconductor SPI flash chips (P25xxx)

config SPI_FLASH_SILICONKAISER
	bool "Silicon Kaiser SPI flash support"
	help
	  Add support for various Silicon Kaiser SPI flash chips (SK25Lxxx)

config SPI_FLASH_SPANSION
	bool "Spansion SPI flash support"
	help
	  Add support for various Spansion SPI flash chips (S25FLxxx)

config SPI_FLASH_S28HX_T
	bool "Cypress SEMPER Octal (S28) chip support"
	depends on SPI_FLASH_SPANSION
	help
	 Add support for the Cypress S28HL-T and S28HS-T chip. This is a separate
	 config because the fixup hooks for this flash add extra size overhead.
	 Boards that don't use the flash can disable this to save space.

config SPI_FLASH_STMICRO
	bool "STMicro SPI flash support"
	help
	  Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx)

config SPI_FLASH_MT35XU
	bool "Micron MT35XU chip support"
	depends on SPI_FLASH_STMICRO
	help
	 Add support for the Micron MT35XU chip. This is a separate config
	 because the fixup hooks for this flash add extra size overhead. Boards
	 that don't use the flash can disable this to save space.

config SPI_FLASH_SST
	bool "SST SPI flash support"
	help
	  Add support for various SST SPI flash chips (SST25xxx)

config SPI_FLASH_WINBOND
	bool "Winbond SPI flash support"
	help
	  Add support for various Winbond SPI flash chips (W25xxx)

config SPI_FLASH_XMC
	bool "XMC SPI flash support"
	help
	  Add support for various XMC (Wuhan Xinxin Semiconductor
	  Manufacturing Corp.) SPI flash chips (XM25xxx)

config SPI_FLASH_XTX
	bool "XTX SPI flash support"
	help
	  Add support for various XTX (XTX Technology Limited)
	  SPI flash chips (XT25xxx).

config SPI_FLASH_ZBIT
	bool "ZBIT SPI flash support"
	help
	  Add support for Zbit Semiconductor Inc. SPI flash chips (ZB25xxx).

endif

config SPI_FLASH_USE_4K_SECTORS
	bool "Use small 4096 B erase sectors"
	depends on SPI_FLASH
	default y
	help
	  Many flash memories support erasing small (4096 B) sectors. Depending
	  on the usage this feature may provide performance gain in comparison
	  to erasing whole blocks (32/64 KiB).
	  Changing a small part of the flash's contents is usually faster with
	  small sectors. On the other hand erasing should be faster when using
	  64 KiB block instead of 16 x 4 KiB sectors.

	  Please note that some tools/drivers/filesystems may not work with
	  4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).

config SPI_FLASH_DATAFLASH
	bool "AT45xxx DataFlash support"
	depends on SPI_FLASH && DM_SPI_FLASH
	help
	  Enable the access for SPI-flash-based AT45xxx DataFlash chips.
	  DataFlash is a kind of SPI flash. Most AT45 chips have two buffers
	  in each chip, which may be used for double buffered I/O; but this
	  driver doesn't (yet) use these for any kind of i/o overlap or prefetching.

	  Sometimes DataFlash is packaged in MMC-format cards, although the
	  MMC stack can't (yet?) distinguish between MMC and DataFlash
	  protocols during enumeration.

	  If unsure, say N

config SPI_FLASH_MTD
	bool "SPI Flash MTD support"
	depends on SPI_FLASH && MTD
	help
          Enable the MTD support for spi flash layer, this adapter is for
	  translating mtd_read/mtd_write commands into spi_flash_read/write
	  commands. It is not intended to use it within sf_cmd or the SPI
	  flash subsystem. Such an adapter is needed for subsystems like
	  UBI which can only operate on top of the MTD layer.

	  If unsure, say N

config SPL_SPI_FLASH_MTD
	bool "SPI flash MTD support for SPL"
	depends on SPI_FLASH && SPL
	help
          Enable the MTD support for the SPI flash layer in SPL.

	  If unsure, say N

endmenu # menu "SPI Flash Support"
