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

config RISCV_CORE_NORDIC_VPR
	bool
	select RISCV
	select RISCV_PRIVILEGED
	select RISCV_VECTORED_MODE
	select RISCV_SOC_HAS_ISR_STACKING
	select RISCV_SOC_HAS_GP_RELATIVE_ADDRESSING
	select RISCV_HAS_CLIC
	select RISCV_SOC_CONTEXT_SAVE
	select HAS_FLASH_LOAD_OFFSET
	select ARCH_HAS_CUSTOM_CPU_IDLE
	select ARCH_HAS_CUSTOM_CPU_ATOMIC_IDLE
	select INCLUDE_RESET_VECTOR
	imply XIP
	imply SHELL_REMOTE_CLI_SKIP_RO_STRINGS
	help
	  Enable support for the RISC-V Nordic VPR core.

choice NORDIC_VPR_SLEEP_MODE
	prompt "Default sleep mode"
	depends on RISCV_CORE_NORDIC_VPR
	default NORDIC_VPR_SLEEP if SOC_NRF54H20_CPUFLPR
	default NORDIC_VPR_DEEPSLEEP if SOC_NRF54H20_CPUPPR
	default NORDIC_VPR_HIBERNATE

config NORDIC_VPR_SLEEP
	bool "Sleep"
	help
	  Significantly higher power consumption but very short wake up time.

config NORDIC_VPR_DEEPSLEEP
	bool "Deep sleep"
	depends on SOC_NRF54H20_CPUPPR
	help
	  Deep sleep can reach less than 5 uA in system-on-idle state only on nRF54H20.
	  Wake up time is comparable to the 'sleep' mode.

config NORDIC_VPR_HIBERNATE
	bool "Hibernation"
	depends on !SOC_SERIES_NRF54H && !SOC_SERIES_NRF92
	help
	  It has the lowest power consumption and it must be used to reach less than 5 uA in
	  the system-on-idle state on targets other than nRF54H20. It has slightly longer
	  wake up time (additional 1 us). Hibernation is using a RAM block to store the VPR
	  state and parent core must configure the memory so that it is powered on and retained.

endchoice
