# Kconfig - flash driver configuration options

#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

#
# flash driver
#
menuconfig FLASH
	bool
	prompt "flash hardware support"
	default n
	help
	  Enable support for the flash hardware.

config SPI_FLASH_W25QXXDV
	bool
	prompt "SPI NOR Flash Winbond W25QXXDV"
	depends on SPI && FLASH

config SPI_FLASH_W25QXXDV_SPI_NAME
	string
	prompt "spi controller device name"
	depends on SPI_FLASH_W25QXXDV
	default ""

config SPI_FLASH_W25QXXDV_DRV_NAME
	string
	prompt "spi flash device name"
	depends on SPI_FLASH_W25QXXDV
	default "W25QXXDV"

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

config SPI_FLASH_W25QXXDV_SPI_FREQ_0
	int "SPI system frequency"
	depends on SPI_FLASH_W25QXXDV
	default 4
	help
	  This option sets the SPI controller's frequency. Beware this value
	  depends on the SPI controller being used and also on the system
	  clock.

config	SPI_FLASH_W25QXXDV_SPI_SLAVE
	int "SPI slave linked to spi flash"
	depends on SPI_FLASH_W25QXXDV
	help
	  This option sets the SPI slave number the SPI controller has to switch
	  to when dealing with WinBond SPI flash chip.

config SPI_FLASH_W25QXXDV_FLASH_SIZE
	int "flash size in bytes"
	depends on SPI_FLASH_W25QXXDV
	default 2097152
	help
	  This is the flash capacity in bytes.

config SPI_FLASH_W25QXXDV_MAX_DATA_LEN
	int
	range 1 256
	depends on SPI_FLASH_W25QXXDV
	default 256
	help
	  Maximum transmit or receive data length in one user data frame.

config SOC_FLASH_QMSI
	bool
	prompt "QMSI flash driver"
	depends on QMSI && FLASH
	default n
	help
	  Enable QMSI Quark flash driver.

config SOC_FLASH_QMSI_DEV_NAME
	string "QMSI flash device name"
	depends on SOC_FLASH_QMSI
	default "QUARK_FLASH"
	help
	  Specify the device name for the flash driver.

config SOC_FLASH_QMSI_CLK_COUNT_US
	int "system clk count per microsecond"
	depends on SOC_FLASH_QMSI
	default 32
	help
	  Specify the system clk cycles per microsecond.

config SOC_FLASH_QMSI_WAIT_STATES
	int "The number of flash wait states"
	depends on SOC_FLASH_QMSI
	default 1
	help
	  Specify the number of wait states for Quark flash.

config SOC_FLASH_QMSI_SYS_SIZE
	hex "SOC system flash size"
	depends on SOC_FLASH_QMSI
	help
	  Specify system flash size on the Quark SOC.

config SOC_FLASH_QMSI_API_REENTRANCY
	bool
	prompt "flash driver API reentrancy for QMSI shim driver"
	depends on SOC_FLASH_QMSI
	default n
	help
	 Enable support for QMSI flash driver API reentrancy.

config SOC_FLASH_NRF5
	bool "Nordic Semiconductor nRF5X flash driver"
	depends on FLASH && SOC_FAMILY_NRF5
	default n
	help
	  Enables Nordic Semiconductor nRF5X flash driver.

config SOC_FLASH_NRF5_DEV_NAME
	string "Nordic nRF5X flash device name"
	depends on SOC_FLASH_NRF5
	default "NRF5_FLASH"
	help
	  Specify the device name for the flash driver.

config SOC_FLASH_MCUX
	bool "MCUX flash shim driver"
	depends on FLASH && HAS_MCUX
	default n
	help
	  Enables the MCUX flash shim driver.
	  WARNING: This driver will disable the system interrupts for
	  the duration of the flash erase/write operations. This will
	  have an impact on the overall system performance - whether
	  this is acceptable or not will depend on the use case.

config SOC_FLASH_MCUX_DEV_NAME
	string "MCUX flash device name"
	depends on SOC_FLASH_MCUX
	default "MCUX_FLASH"
	help
	  Specify the device name for the flash driver.

source "drivers/flash/Kconfig.stm32fxx"
