213 lines
7.1 KiB
Plaintext
213 lines
7.1 KiB
Plaintext
# 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
|