# 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 !NRF_HW_TIMER0_RESERVED
	select COUNTER_NRF_TIMER

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

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

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

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

config COUNTER_RTC0
	bool "Enable Counter on RTC0"
	depends on HAS_HW_NRF_RTC0
	depends on !NRF_HW_RTC0_RESERVED
	select COUNTER_NRF_RTC

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

config COUNTER_RTC2
	bool "Enable Counter on RTC2"
	depends on HAS_HW_NRF_RTC2
	depends on !NRF_HW_RTC2_RESERVED
	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)
