# 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 128 if !TICKLESS_KERNEL
	default 32768

config ARCH_HAS_CUSTOM_BUSY_WAIT
	default y if !QEMU_TARGET

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

endif # SOC_FAMILY_NRF
