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