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

config COUNTER_NRF_TIMER
	bool

config COUNTER_NRF_RTC
	bool

config COUNTER_TIMER0
	bool "Enable Counter on TIMER0"
	depends on HAS_HW_NRF_TIMER0
	depends on !BT_LL_SW_LEGACY && !BT_LL_SW_SPLIT
	select COUNTER_NRF_TIMER

config COUNTER_TIMER1
	bool "Enable Counter on TIMER1"
	depends on HAS_HW_NRF_TIMER1
	select COUNTER_NRF_TIMER

config COUNTER_TIMER2
	bool "Enable Counter on TIMER2"
	depends on HAS_HW_NRF_TIMER2
	select COUNTER_NRF_TIMER

config COUNTER_TIMER3
	bool "Enable Counter on TIMER3"
	depends on HAS_HW_NRF_TIMER3
	select COUNTER_NRF_TIMER

config COUNTER_TIMER4
	bool "Enable Counter on TIMER4"
	depends on HAS_HW_NRF_TIMER4
	select COUNTER_NRF_TIMER

config COUNTER_RTC0
	bool "Enable Counter on RTC0"
	depends on HAS_HW_NRF_RTC0
	depends on !BT_LL_SW_LEGACY && !BT_LL_SW_SPLIT
	select COUNTER_NRF_RTC

config COUNTER_RTC1
	bool "Enable Counter on RTC1"
	depends on HAS_HW_NRF_RTC1
	depends on !NRF_RTC_TIMER
	select COUNTER_NRF_RTC

config COUNTER_RTC2
	bool "Enable Counter on RTC2"
	depends on HAS_HW_NRF_RTC2
	select COUNTER_NRF_RTC

# Internal flag which detects if PPI wrap feature is enabled for any instance
config COUNTER_RTC_WITH_PPI_WRAP
	def_bool ($(dt_node_has_bool_prop,rtc-0,ppi-wrap) && COUNTER_RTC0) || \
		 ($(dt_node_has_bool_prop,rtc-1,ppi-wrap) && COUNTER_RTC1) || \
		 ($(dt_node_has_bool_prop,rtc-2,ppi-wrap) && COUNTER_RTC2)
	select NRFX_PPI if HAS_HW_NRF_PPI
	select NRFX_DPPI if HAS_HW_NRF_DPPIC

# Internal flag which detects if fixed top feature is enabled for any instance
config COUNTER_RTC_CUSTOM_TOP_SUPPORT
	def_bool (!$(dt_node_has_bool_prop,rtc-0,fixed-top) && COUNTER_RTC0) || \
		 (!$(dt_node_has_bool_prop,rtc-1,fixed-top) && COUNTER_RTC1) || \
		 (!$(dt_node_has_bool_prop,rtc-2,fixed-top) && COUNTER_RTC2)
