336c1ad7d2
RTC is 24 bit width and k_timer is 64 bit. It is hard to test corner cases but RTC hardware feature can help here. There is a task which moves counter to 0xfffff0 which is close to overflow. However, there is an internal driver state that also needs to be aligned to shift the time properly. Adding optional function which triggers overflow and updates internal state. This can be used for testing corner cases. Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
76 lines
2.5 KiB
Plaintext
76 lines
2.5 KiB
Plaintext
# 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 3 if NRF_802154_RADIO_DRIVER
|
|
default 0
|
|
help
|
|
Use nrf_rtc_timer.h API. Driver is not managing allocation of channels.
|
|
|
|
config NRF_RTC_TIMER_LOCK_ZERO_LATENCY_IRQS
|
|
# hidden option
|
|
bool
|
|
depends on ZERO_LATENCY_IRQS
|
|
default y if !BT_LL_SW_SPLIT
|
|
help
|
|
Enable use of __disable_irq() to disable Zero Latency IRQs to prevent
|
|
higher priority contexts (including ZLIs) that might preempt the
|
|
handler and call nrf_rtc_timer API from destroying the internal state
|
|
in nrf_rtc_timer.
|
|
|
|
config NRF_RTC_TIMER_TRIGGER_OVERFLOW
|
|
bool "Trigger overflow"
|
|
help
|
|
When enabled, a function can be used to trigger RTC overflow and
|
|
effectively shift time into the future.
|
|
|
|
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
|