blob: bc9f6e69d7e35003eae09d5eede50712448f3664 [file] [log] [blame]
# 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 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
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 function"
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 a multiple 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
# zephyr-keep-sorted-start
source "drivers/flash/Kconfig.ambiq"
source "drivers/flash/Kconfig.andes"
source "drivers/flash/Kconfig.at45"
source "drivers/flash/Kconfig.b91"
source "drivers/flash/Kconfig.cadence_nand"
source "drivers/flash/Kconfig.cadence_qspi_nor"
source "drivers/flash/Kconfig.cc13xx_cc26xx"
source "drivers/flash/Kconfig.esp32"
source "drivers/flash/Kconfig.gd32"
source "drivers/flash/Kconfig.gecko"
source "drivers/flash/Kconfig.ifx_cat1"
source "drivers/flash/Kconfig.it8xxx2"
source "drivers/flash/Kconfig.lpc"
source "drivers/flash/Kconfig.max32"
source "drivers/flash/Kconfig.mcux"
source "drivers/flash/Kconfig.mspi"
source "drivers/flash/Kconfig.nios2_qspi"
source "drivers/flash/Kconfig.nor"
source "drivers/flash/Kconfig.nordic_qspi_nor"
source "drivers/flash/Kconfig.npcx_fiu"
source "drivers/flash/Kconfig.nrf"
source "drivers/flash/Kconfig.nrf_mram"
source "drivers/flash/Kconfig.nrf_rram"
source "drivers/flash/Kconfig.numaker"
source "drivers/flash/Kconfig.numaker_rmc"
source "drivers/flash/Kconfig.nxp_s32"
source "drivers/flash/Kconfig.renesas_ra"
source "drivers/flash/Kconfig.rpi_pico"
source "drivers/flash/Kconfig.rv32m1"
source "drivers/flash/Kconfig.sam"
source "drivers/flash/Kconfig.sam0"
source "drivers/flash/Kconfig.si32"
source "drivers/flash/Kconfig.simulator"
source "drivers/flash/Kconfig.smartbond"
source "drivers/flash/Kconfig.stm32"
source "drivers/flash/Kconfig.stm32_ospi"
source "drivers/flash/Kconfig.stm32_qspi"
source "drivers/flash/Kconfig.stm32_xspi"
source "drivers/flash/Kconfig.xmc4xxx"
# zephyr-keep-sorted-stop
module = FLASH
module-str = flash
source "subsys/logging/Kconfig.template.log_config"
endif # FLASH