# Copyright (c) Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

menuconfig RETAINED_MEM
	bool "Retained memory drivers"
	help
	  Enables support for drivers that can retain their data whilst the
	  device is powered (may be lost in low power states).

if RETAINED_MEM

config RETAINED_MEM_INIT_PRIORITY
	int "Retained memory devices init priority"
	default 40
	help
	  Retained memory devices initialization priority,

config RETAINED_MEM_MUTEXES
	bool
	default y
	depends on MULTITHREADING
	depends on !RETAINED_MEM_MUTEX_FORCE_DISABLE

config RETAINED_MEM_MUTEX_FORCE_DISABLE
	bool "Disable retained memory mutex support"
	depends on MULTITHREADING
	help
	  Disable use of mutexes which prevent issues with concurrent retained
	  memory access. This option should only be enabled when retained
	  memory access is required in an ISR or for special use cases.

module = RETAINED_MEM
module-str = retained_mem
source "subsys/logging/Kconfig.template.log_config"

source "drivers/retained_mem/Kconfig.nrf"

source "drivers/retained_mem/Kconfig.zephyr"

endif # RETAINED_MEM
