# Nordic Semiconductor nRFx MCU line

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

if SOC_FAMILY_NRF

source "soc/arm/nordic_nrf/*/Kconfig.defconfig.series"

# If the kernel has timer support, enable both clock control and timer
if SYS_CLOCK_EXISTS

config CLOCK_CONTROL
	default y

config NRF_RTC_TIMER
	default y

endif # SYS_CLOCK_EXISTS

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 32768

config SYS_CLOCK_TICKS_PER_SEC
	default 32768

config ARCH_HAS_CUSTOM_BUSY_WAIT
	default y

config PM
	default y if SYS_CLOCK_EXISTS && !HAS_NO_SYS_PM && MULTITHREADING

config BUILD_OUTPUT_HEX
	default y

if !CORTEX_M_DWT && NRF_RTC_TIMER
config SOC_HAS_TIMING_FUNCTIONS
	default y
endif

config GPIO
	default y
	depends on SPI

choice NULL_POINTER_EXCEPTION_DETECTION
	default NULL_POINTER_EXCEPTION_DETECTION_DWT if TEST_ARM_CORTEX_M && !ARM_NONSECURE_FIRMWARE && CPU_CORTEX_M_HAS_DWT
endchoice

endif # SOC_FAMILY_NRF
