# Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#
config COUNTER_NRF_TIMER
	bool
	select NRFX_TIMER

config COUNTER_NRF_RTC
	bool
	select NRFX_RTC

config COUNTER_TIMER0
	bool "Enable Counter on TIMER0"
	depends on HAS_HW_NRF_TIMER0
	depends on !BT_LL_SW
	select COUNTER_NRF_TIMER
	select NRFX_TIMER0

if COUNTER_TIMER0

config COUNTER_TIMER0_NAME
	string "Counter device name"
	default "Counter 0"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_TIMER0_IRQ_PRI
	int "Counter interrupt priority"
	default 0

config COUNTER_TIMER0_PRESCALER
	int "Timer prescaler"
	default 0
	range 0 9
	help
	  Frequency = 16 Mhz / 2^prescaler.

endif #COUNTER_TIMER0

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

if COUNTER_TIMER1

config COUNTER_TIMER1_NAME
	string "Counter device name"
	default "Counter 1"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_TIMER1_IRQ_PRI
	int "Counter interrupt priority"
	default 0

config COUNTER_TIMER1_PRESCALER
	int "Timer prescaler"
	default 0
	range 0 9
	help
	  Frequency = 16 Mhz / 2^prescaler.

endif #COUNTER_TIMER1

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

if COUNTER_TIMER2

config COUNTER_TIMER2_NAME
	string "Counter device name"
	default "Counter 2"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_TIMER2_IRQ_PRI
	int "Counter interrupt priority"
	default 0


config COUNTER_TIMER2_PRESCALER
	int "Timer prescaler"
	default 0
	range 0 9
	help
	  Frequency = 16 Mhz / 2^prescaler.

endif #COUNTER_TIMER2

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

if COUNTER_TIMER3

config COUNTER_TIMER3_NAME
	string "Counter device name"
	default "Counter 3"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_TIMER3_IRQ_PRI
	int "Counter interrupt priority"
	default 0


config COUNTER_TIMER3_PRESCALER
	int "Timer prescaler"
	default 0
	range 0 9
	help
	  Frequency = 16 Mhz / 2^prescaler.

endif #COUNTER_TIMER3

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

if COUNTER_TIMER4

config COUNTER_TIMER4_NAME
	string "Counter device name"
	default "Counter 4"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_TIMER4_IRQ_PRI
	int "Counter interrupt priority"
	default 0


config COUNTER_TIMER4_PRESCALER
	int "Timer prescaler"
	default 0
	range 0 9
	help
	  Frequency = 16 Mhz / 2^prescaler.

endif #COUNTER_TIMER4

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

if COUNTER_RTC0

config COUNTER_RTC0_NAME
	string "Counter device name"
	default "RTC Counter 0"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_RTC0_IRQ_PRI
	int "Counter interrupt priority"
	default 0

config COUNTER_RTC0_PRESCALER
	int "RTC prescaler"
	default 0
	range 0 2047
	help
	  Frequency = 32768 / (prescaler+1).

endif #COUNTER_RTC0

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

if COUNTER_RTC1

config COUNTER_RTC1_NAME
	string "Counter device name"
	default "RTC Counter 1"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_RTC1_IRQ_PRI
	int "Counter interrupt priority"
	default 0

config COUNTER_RTC1_PRESCALER
	int "RTC prescaler"
	default 0
	range 0 2047
	help
	  Frequency = 32768 / (prescaler+1).

endif #COUNTER_RTC1

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

if COUNTER_RTC2

config COUNTER_RTC2_NAME
	string "Counter device name"
	default "RTC Counter 2"
	help
	  Specify the device name for Counter driver instance.

config COUNTER_RTC2_IRQ_PRI
	int "Counter interrupt priority"
	default 0

config COUNTER_RTC2_PRESCALER
	int "RTC prescaler"
	default 0
	range 0 2047
	help
	  Frequency = 32768 / (prescaler+1).

endif #COUNTER_RTC2



