# Copyright (c) 2014-2015 Wind River Systems, Inc.
# Copyright (c) 2016 Cadence Design Systems, Inc.
# Copyright (c) 2019 Intel Corp.
# SPDX-License-Identifier: Apache-2.0

config NRF_RTC_TIMER
	bool "nRF Real Time Counter (NRF_RTC1) Timer"
	depends on CLOCK_CONTROL
	depends on SOC_COMPATIBLE_NRF
	select TICKLESS_CAPABLE
	select NRF_HW_RTC1_RESERVED
	help
	  This module implements a kernel device driver for the nRF Real Time
	  Counter NRF_RTC1 and provides the standard "system clock driver"
	  interfaces.

if NRF_RTC_TIMER

config NRF_RTC_TIMER_USER_CHAN_COUNT
	int "Additional channels that can be used"
	default 0
	help
	  Use nrf_rtc_timer.h API. Driver is not managing allocation of channels.

choice
	prompt "Clock startup policy"
	default SYSTEM_CLOCK_WAIT_FOR_STABILITY

config SYSTEM_CLOCK_NO_WAIT
	bool "No wait"
	help
	  System clock source is initiated but does not wait for clock readiness.
	  When this option is picked, system clock may not be ready when code relying
	  on kernel API is executed. Requested timeouts will be prolonged by the
	  remaining startup time.

config SYSTEM_CLOCK_WAIT_FOR_AVAILABILITY
	bool "Wait for availability"
	help
	  System clock source initialization waits until clock is available. In some
	  systems, clock initially runs from less accurate source which has faster
	  startup time and then seamlessly switches to the target clock source when
	  it is ready. When this option is picked, system clock is available after
	  system clock driver initialization but it may be less accurate. Option is
	  equivalent to waiting for stability if clock source does not have
	  intermediate state.

config SYSTEM_CLOCK_WAIT_FOR_STABILITY
	bool "Wait for stability"
	help
	  System clock source initialization waits until clock is stable. When this
	  option is picked, system clock is available and stable after system clock
	  driver initialization.

endchoice

endif # NRF_RTC_TIMER
