# 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_TIMER0_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_TIMER0
	depends on ZERO_LATENCY_IRQS

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_TIMER1_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_TIMER1
	depends on ZERO_LATENCY_IRQS

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_TIMER2_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_TIMER2
	depends on ZERO_LATENCY_IRQS

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_TIMER3_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_TIMER3
	depends on ZERO_LATENCY_IRQS

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_TIMER4_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_TIMER4
	depends on ZERO_LATENCY_IRQS

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_RTC0_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_RTC0
	depends on ZERO_LATENCY_IRQS

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_RTC1_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_RTC1
	depends on ZERO_LATENCY_IRQS

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

config COUNTER_RTC2_ZLI
	bool "Event in ZLI interrupt context"
	depends on COUNTER_RTC2
	depends on ZERO_LATENCY_IRQS

# 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)
