zephyr/drivers/flash/Kconfig.nor
Jordan Yates a7ba06bedb flash: spi_nor: don't hard loop in wait_until_ready
Don't monopolise the CPU in `spi_nor_wait_until_ready`. For slow flash
chips, operations can take minutes (Full chip erase on MX25R is listed
as 120s typical, 240s max).

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2024-01-24 22:15:33 -06:00

91 lines
2.9 KiB
Plaintext

# Copyright (c) 2018 Savoir-Faire Linux.
# SPDX-License-Identifier: Apache-2.0
menuconfig SPI_NOR
bool "SPI NOR Flash"
default y
depends on DT_HAS_JEDEC_SPI_NOR_ENABLED
select FLASH_HAS_DRIVER_ENABLED
select FLASH_HAS_PAGE_LAYOUT
select FLASH_JESD216
select FLASH_HAS_EX_OP
select SPI
if SPI_NOR
choice SPI_NOR_SFDP
prompt "Source for Serial Flash Discoverable Parameters"
default SPI_NOR_SFDP_MINIMAL
config SPI_NOR_SFDP_MINIMAL
bool "Fixed flash configuration"
help
Synthesize a minimal configuration assuming 256 By page size (or as
set by the page-size devicetree property) and
standard 4 KiBy and 64 KiBy erase instructions. Requires the size and
jedec-id properties in the devicetree jedec,spi-nor node.
config SPI_NOR_SFDP_DEVICETREE
bool "Basic Flash Parameters from devicetree node"
help
The JESD216 Basic Flash Parameters table must be provided in the
sfdp-bfp property in devicetree. The size and jedec-id properties are
also required.
config SPI_NOR_SFDP_RUNTIME
bool "Read flash parameters at runtime"
help
Read all flash device characteristics from the device at runtime.
This option is the most flexible as it should provide functionality
for all supported JESD216-compatible devices.
endchoice
config SPI_NOR_INIT_PRIORITY
int
default 80
help
Device driver initialization priority.
Device is connected to SPI bus, it has to
be initialized after SPI driver.
config SPI_NOR_CS_WAIT_DELAY
int "Delay time in us"
default 0
help
This is the wait delay (in us) to allow for CS switching to take effect
config SPI_NOR_SLEEP_WHILE_WAITING_UNTIL_READY
bool "Sleep while waiting for flash operations to complete"
default y
help
Flash operations can take anywhere from 1ms to 240 seconds to
complete. Enabling this option adds a delay between polls on the
status register for slow operations. Disabling this option can
result in significant flash savings if this driver is the only user
of "k_sleep". This can be the case when building as a bootloader.
config SPI_NOR_FLASH_LAYOUT_PAGE_SIZE
int "Page size to use for FLASH_LAYOUT feature"
default 65536
help
When CONFIG_FLASH_PAGE_LAYOUT is used this driver will support
that API. By default the page size corresponds to the block
size (65536). Other options include the 32K-byte erase size
(32768), the sector size (4096), or any non-zero multiple of the
sector size.
config SPI_NOR_IDLE_IN_DPD
bool "Use Deep Power-Down mode when flash is not being accessed."
help
Where supported deep power-down mode can reduce current draw
to as little as 0.1% of standby current. However it takes
some milliseconds to enter and exit from this mode.
Select this option for applications where device power
management is not enabled, the flash remains inactive for
long periods, and when used the impact of waiting for mode
enter and exit delays is acceptable.
endif # SPI_NOR