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