# 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"
	depends on SOC_FAMILY_NRF
	depends on !FLASH_NRF_FORCE_ALT
	select FLASH_HAS_PAGE_LAYOUT
	select FLASH_HAS_DRIVER_ENABLED
	select NRFX_NVMC
	default y
	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_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
