# 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.

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_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.

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.cc13xx_cc26xx"

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.stm32_ospi"

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"

source "drivers/flash/Kconfig.smartbond"

source "drivers/flash/Kconfig.cadence_qspi_nor"

source "drivers/flash/Kconfig.gd32"

endif # FLASH
