# Nordic Semiconductor nRF54H MCU line

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

config SOC_SERIES_NRF54HX
	select HAS_NRFX
	select HAS_NORDIC_DRIVERS

config SOC_NRF54H20_CPUAPP
	select ARM
	select ARMV8_M_DSP
	select CPU_CORTEX_M33
	select CPU_HAS_ARM_MPU
	select CPU_HAS_ARM_SAU
	select CPU_HAS_DCACHE
	select CPU_HAS_ICACHE
	select CPU_HAS_FPU
	select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE

config SOC_NRF54H20_CPURAD
	select ARM
	select ARMV8_M_DSP
	select CPU_CORTEX_M33
	select CPU_HAS_ARM_MPU
	select CPU_HAS_ARM_SAU
	select CPU_HAS_DCACHE
	select CPU_HAS_ICACHE
	select CPU_HAS_FPU
	select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE

config SOC_NRF54H20_CPUPPR
	depends on RISCV_CORE_NORDIC_VPR

if SOC_NRF54H20

config NRF_ENABLE_ICACHE
	bool "Instruction cache (I-Cache)"
	default y

endif # SOC_NRF54H20
