# Nordic Semiconductor nRF91 MCU line

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

config SOC_SERIES_NRF91X
	bool "Nordic Semiconductor nRF91 series MCU"
	select ARM
	select CPU_CORTEX_M33
	select CPU_CORTEX_M_HAS_DWT
	select CPU_HAS_ARM_MPU
	select CPU_HAS_NRF_IDAU
	select CPU_HAS_FPU
	select ARMV8_M_DSP
	select SOC_FAMILY_NRF
	imply XIP
	select HAS_NRFX
	select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
	select HAS_POWEROFF
	help
	  Enable support for NRF91 MCU series

if SOC_SERIES_NRF91X
config NRF_SPU_FLASH_REGION_SIZE
	hex
	default 0x8000
	help
	  FLASH region size for the NRF_SPU peripheral

config NRF_SPU_RAM_REGION_SIZE
	hex
	default 0x2000
	help
	  RAM region size for the NRF_SPU peripheral
endif
