# Flash driver configuration options

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

#
# Flash driver
#
config FLASH_HAS_DRIVER_ENABLED
	bool
	help
	  This option is enabled when any flash driver is enabled.

config FLASH_HAS_PAGE_LAYOUT
	bool
	help
	  This option is enabled when the SoC flash driver supports
	  retrieving the layout of flash memory pages.

config FLASH_JESD216
	bool
	help
	 Selected by drivers that support JESD216-compatible flash
	 devices to enable building a common support module.

config FLASH_JESD216_API
	bool "Provide API to read JESD216 flash parameters"
	depends on FLASH_JESD216
	help
	  This option extends the Zephyr flash API with the ability
	  to access the Serial Flash Discoverable Parameter section
	  allowing runtime determination of serial flash parameters
	  for flash drivers that expose this capability.

menuconfig FLASH
	bool "Flash hardware support"
	help
	  Enable support for the flash hardware.

if FLASH

module = FLASH
module-str = flash
source "subsys/logging/Kconfig.template.log_config"

config FLASH_SHELL
	bool "Flash shell"
	depends on SHELL && FLASH_PAGE_LAYOUT
	default y
	help
	  Enable the flash shell with flash related commands such as test,
	  write, read and erase.

config FLASH_PAGE_LAYOUT
	bool "API for retrieving the layout of pages"
	depends on FLASH_HAS_PAGE_LAYOUT
	default y
	help
	  Enables API for retrieving the layout of flash memory pages.

config FLASH_INIT_PRIORITY
	int "Flash init priority"
	default KERNEL_INIT_PRIORITY_DEVICE
	help
	  Flash driver device initialization priority. This initialization
	  priority is used unless the driver implementation has its own
	  initialization priority

source "drivers/flash/Kconfig.b91"

source "drivers/flash/Kconfig.at45"

source "drivers/flash/Kconfig.esp32"

source "drivers/flash/Kconfig.it8xxx2"

source "drivers/flash/Kconfig.nrf"

source "drivers/flash/Kconfig.lpc"

source "drivers/flash/Kconfig.mcux"

source "drivers/flash/Kconfig.nios2_qspi"

source "drivers/flash/Kconfig.gecko"

source "drivers/flash/Kconfig.nor"

source "drivers/flash/Kconfig.stm32"

source "drivers/flash/Kconfig.stm32_qspi"

source "drivers/flash/Kconfig.sam0"

source "drivers/flash/Kconfig.sam"

source "drivers/flash/Kconfig.simulator"

source "drivers/flash/Kconfig.rv32m1"

source "drivers/flash/Kconfig.nordic_qspi_nor"

endif # FLASH
