# Copyright (c) 2018 Savoir-Faire Linux.
# SPDX-License-Identifier: Apache-2.0

menuconfig SPI_NOR
	bool "SPI NOR Flash"
	default y
	depends on DT_HAS_JEDEC_SPI_NOR_ENABLED
	select FLASH_HAS_DRIVER_ENABLED
	select FLASH_HAS_PAGE_LAYOUT
	select FLASH_JESD216
	depends on SPI

if SPI_NOR

choice SPI_NOR_SFDP
	prompt "Source for Serial Flash Discoverable Parameters"
	default SPI_NOR_SFDP_MINIMAL

config SPI_NOR_SFDP_MINIMAL
	bool "Fixed flash configuration"
	help
	  Synthesize a minimal configuration assuming 256 By page size and
	  standard 4 KiBy and 64 KiBy erase instructions.  Requires the size and
	  jedec-id properties in the devicetree jedec,spi-nor node.

config SPI_NOR_SFDP_DEVICETREE
	bool "Basic Flash Parameters from devicetree node"
	help
	  The JESD216 Basic Flash Parameters table must be provided in the
	  sfdp-bfp property in devicetree.  The size and jedec-id properties are
	  also required.

config SPI_NOR_SFDP_RUNTIME
	bool "Read flash parameters at runtime"
	help
	  Read all flash device characteristics from the device at runtime.
	  This option is the most flexible as it should provide functionality
	  for all supported JESD216-compatible devices.

endchoice

config SPI_NOR_INIT_PRIORITY
	int
	default 80
	help
	  Device driver initialization priority.
	  Device is connected to SPI bus, it has to
	  be initialized after SPI driver.

config SPI_NOR_CS_WAIT_DELAY
	int "Delay time in us"
	default 0
	help
	  This is the wait delay (in us) to allow for CS switching to take effect

config SPI_NOR_FLASH_LAYOUT_PAGE_SIZE
	int "Page size to use for FLASH_LAYOUT feature"
	default 65536
	help
	  When CONFIG_FLASH_PAGE_LAYOUT is used this driver will support
	  that API.  By default the page size corresponds to the block
	  size (65536).  Other options include the 32K-byte erase size
	  (32768), the sector size (4096), or any non-zero multiple of the
	  sector size.

config SPI_NOR_IDLE_IN_DPD
	bool "Use Deep Power-Down mode when flash is not being accessed."
	help
	  Where supported deep power-down mode can reduce current draw
	  to as little as 0.1% of standby current.  However it takes
	  some milliseconds to enter and exit from this mode.

	  Select this option for applications where device power
	  management is not enabled, the flash remains inactive for
	  long periods, and when used the impact of waiting for mode
	  enter and exit delays is acceptable.

endif # SPI_NOR
