# 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 FLASH_PAGE_LAYOUT
	bool "API for retrieving the layout of pages"
	depends on FLASH && FLASH_HAS_PAGE_LAYOUT
	default n
	help
	  Enables API for retrieving the layout of flash memory pages.

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
	select FLASH_HAS_PAGE_LAYOUT
	help
	  Enables Nordic Semiconductor nRF5X flash driver.

config SOC_FLASH_NRF5_RADIO_SYNC
	bool "Nordic nRF5x flash driver synchronized with radio"
	depends on SOC_FLASH_NRF5 && BT_CTLR
	default y
	help
	  Enable synchronization between flash memory driver and radio.

config SOC_FLASH_MCUX
	bool "MCUX flash shim driver"
	depends on FLASH && HAS_MCUX
	select FLASH_HAS_PAGE_LAYOUT
	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_NIOS2_QSPI
	bool "Nios-II QSPI flash driver"
	depends on FLASH && HAS_ALTERA_HAL
	default n
	help
	  Enables the Nios-II QSPI flash driver.

config SOC_FLASH_NIOS2_QSPI_DEV_NAME
	string "Nios-II QSPI flash device name"
	depends on SOC_FLASH_NIOS2_QSPI
	default "NIOS2_QSPI_FLASH"
	help
	  Specify the device name for the QSPI flash driver.

source "drivers/flash/Kconfig.stm32"

source "drivers/flash/Kconfig.sam0"
