Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
# 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_EX_OP
	bool
	help
	  This option is selected by drivers that support flash extended
	  operations.

config FLASH_HAS_EXPLICIT_ERASE
	bool
	help
	  Device has does not do erase-on-write (erase-on-program, auto-erase
	  on write) and requires explicit erase procedure to be programmed
	  with random value, in place where it has already been programmed with
	  some other value, as program can only change bits from erased-value
	  to the opposite.
	  All pure Flash devices are evolution of EEPROM where erase has
	  been separated from write, EEPROM has erase-on-write, giving
	  it advantage of higher write speeds at a cost of larger erase block.
	  Note that explicit-erase capability does not warrants that
	  write without erase is not allowed, taking the above restrictions,
	  it only states that write of a random information will require
	  erase.
	  Erase is usually performed in pages, as we have chosen to name
	  the unit in Zephyr, that may have different naming in device
	  specifications, like pages, sectors or blocks, and may vary
	  in size, depending how they are named by vendor.
	  This option should be selected by drivers that serve devices with
	  such characteristic and is used and may be used by users to provide
	  paths in code that only serve such devices, and could be
	  optimized-out by compiler in case where there is no such device in
	  a system.

config FLASH_HAS_NO_EXPLICIT_ERASE
	bool
	help
	  Device does not require explicit erase before programming
	  a new random value at any location that has been previously
	  programmed with some other value.
	  Note that the device may have erase-on-write (auto-erase),
	  as for example in EEPROM devices, but may also have no erase
	  at all.
	  A device driver may still provide erase callback,
	  especially if it is able to perform erase to accelerate
	  further writes or is able to fill the area requested for
	  erase, with single value, faster than consecutive writes
	  that would be used to emulate erase.
	  This option should be selected by drivers that serve
	  devices with such characteristic and is used and may be
	  used by users to provide paths in code that only serve
	  such devices, and could be optimized-out by compiler in
	  case where there is no such device in a system.
	  This option should be selected for any device that
	  can change storage bits, by write, from any value to opposite
	  value at any time.
	  When your driver sets this option you also need to set
	  no_explicit_erase capability in your drivers flash_parameters.

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 drivers"
	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
	select MPU_ALLOW_FLASH_WRITE if ARM_MPU
	help
	  Enable the flash shell with flash related commands such as test,
	  write, read and erase.

if FLASH_SHELL

config FLASH_SHELL_TEST_COMMANDS
	bool "Flash read/write/erase test commands"
	select CBPRINTF_FP_SUPPORT
	help
	  Enable additional flash shell commands for performing
	  read/write/erase tests with speed output.

config FLASH_SHELL_BUFFER_SIZE
	hex "Flash shell buffer size"
	default 0x4000 if FLASH_SHELL_TEST_COMMANDS
	default 0x1000
	range 0x400 0x1000000
	help
	  Size of the buffer used for flash commands, will determine the
	  maximum size that can be used with a read/write test.

endif # FLASH_SHELL

config FLASH_FILL_BUFFER_SIZE
	int "Buffer size of flash_fill funciton"
	default 32
	help
	  Size of a buffer used by flash_fill function to fill a device with
	  specific value; this buffer is allocated on stack.
	  The buffer is needed as most devices have write-block alignment
	  requirements that which imposes minimal size of data, which can
	  be written to a device, and alignment of write offset.
	  Even if device does not have such requirement, filling device by
	  single bytes is not efficient.
	  Value selected here should be multiply of the largest write-block-size
	  among all the memory devices used in system.

if FLASH_HAS_PAGE_LAYOUT

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

endif

config FLASH_EX_OP_ENABLED
	bool "API for extended flash operations"
	depends on FLASH_HAS_EX_OP
	default n
	help
	  Enables flash extended operations API. It can be used to perform
	  non-standard operations e.g. manipulating flash protection.

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

source "drivers/flash/Kconfig.nios2_qspi"

source "drivers/flash/Kconfig.npcx_fiu"

source "drivers/flash/Kconfig.gecko"

source "drivers/flash/Kconfig.nor"

source "drivers/flash/Kconfig.rpi_pico"

source "drivers/flash/Kconfig.stm32"

source "drivers/flash/Kconfig.stm32_qspi"

source "drivers/flash/Kconfig.stm32_ospi"

source "drivers/flash/Kconfig.stm32_xspi"

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"

source "drivers/flash/Kconfig.xmc4xxx"

source "drivers/flash/Kconfig.ifx_cat1"
source "drivers/flash/Kconfig.cadence_nand"

source "drivers/flash/Kconfig.numaker"

source "drivers/flash/Kconfig.nxp_s32"

source "drivers/flash/Kconfig.andes"

source "drivers/flash/Kconfig.ambiq"

source "drivers/flash/Kconfig.nrf_rram"

source "drivers/flash/Kconfig.nrf_mram"

source "drivers/flash/Kconfig.numaker_rmc"

endif # FLASH