blob: 48c4e0d3fb94b53a0d71aedd4b4eb706048336a3 [file] [log] [blame]
# SPDX-License-Identifier: Apache-2.0
config FLASH_NRF_FORCE_ALT
bool
depends on SOC_COMPATIBLE_NRF
help
This option can be enabled to force an alternative implementation
of the flash driver.
menuconfig SOC_FLASH_NRF
bool "Nordic Semiconductor nRF flash driver"
default y
depends on DT_HAS_NORDIC_NRF51_FLASH_CONTROLLER_ENABLED || \
DT_HAS_NORDIC_NRF52_FLASH_CONTROLLER_ENABLED || \
DT_HAS_NORDIC_NRF53_FLASH_CONTROLLER_ENABLED || \
DT_HAS_NORDIC_NRF91_FLASH_CONTROLLER_ENABLED
depends on !FLASH_NRF_FORCE_ALT
select FLASH_HAS_PAGE_LAYOUT
select FLASH_HAS_DRIVER_ENABLED
select FLASH_HAS_EXPLICIT_ERASE
select NRFX_NVMC
select MPU_ALLOW_FLASH_WRITE if ARM_MPU
help
Enables Nordic Semiconductor nRF flash driver.
if SOC_FLASH_NRF
choice SOC_FLASH_NRF_RADIO_SYNC_CHOICE
prompt "Nordic nRFx flash driver synchronization"
default SOC_FLASH_NRF_RADIO_SYNC_TICKER if BT_LL_SW_SPLIT
default SOC_FLASH_NRF_RADIO_SYNC_NONE
help
synchronization between flash memory driver and radio.
config SOC_FLASH_NRF_RADIO_SYNC_TICKER
bool "Nordic nRFx flash driver synchronized with radio"
depends on BT_LL_SW_SPLIT
help
Enable synchronization between flash memory driver and radio using
BLE LL controller ticker API.
config SOC_FLASH_NRF_RADIO_SYNC_NONE
bool "none"
help
disable synchronization between flash memory driver and radio.
endchoice
config SOC_FLASH_NRF_PARTIAL_ERASE
bool "Nordic nRFx flash driver partial erase"
depends on HAS_HW_NRF_NVMC_PE
help
Enable partial erase feature. Partial erase is performed in time
slices instead of blocking MCU, for the time it is needed to
complete operation over given area.
This allows interrupting flash erase between operations
to perform other task by MCU.
This feature may also be used for better syncing flash erase
operations, when compiled with SOC_FLASH_NRF_RADIO_SYNC_TICKER,
with Bluetooth.
config SOC_FLASH_NRF_PARTIAL_ERASE_MS
int "Partial erase timeout in MS"
depends on SOC_FLASH_NRF_PARTIAL_ERASE
default 3
help
This is maximum time, in ms, that NVMC will use to erase part
of Flash, before stopping to let CPU resume operation.
Minimal timeout is 2ms maximum should not exceed half of
FLASH_PAGE_ERASE_MAX_TIME_US im ms.
config SOC_FLASH_NRF_TIMEOUT_MULTIPLIER
int "Multiplier for flash operation timeouts [x0.1]"
depends on !SOC_FLASH_NRF_RADIO_SYNC_NONE
default 15 if SOC_FLASH_NRF_PARTIAL_ERASE && SOC_FLASH_NRF_RADIO_SYNC_TICKER
default 10
help
This is a multiplier that will be divided by 10 that is applied
to the flash erase and write operations timeout. The base for
the multiplication would allow erasing all nRF flash pages in
blocking mode.
config SOC_FLASH_NRF_UICR
bool "Access to UICR"
depends on !TRUSTED_EXECUTION_NONSECURE
help
Enable operations on UICR. Once enabled UICR are written or read as
ordinary flash memory. Erase is possible for whole UICR at once.
config SOC_FLASH_NRF_EMULATE_ONE_BYTE_WRITE_ACCESS
bool "8-bit write block size emulation"
help
When this option is enabled writing chunks less than minimal write
block size parameter (imposed by manufacturer) is possible but operation
is more complex and requires basic user knowledge about NVMC controller.
endif # SOC_FLASH_NRF