1# Copyright (c) 2023 Antmicro <www.antmicro.com>
2# SPDX-License-Identifier: Apache-2.0
3
4config GECKO_BURTC_TIMER
5	bool "SiLabs Gecko BURTC system clock driver"
6	depends on SOC_FAMILY_SILABS_S2
7	depends on DT_HAS_SILABS_GECKO_BURTC_ENABLED
8	select SOC_GECKO_BURTC
9	select TICKLESS_CAPABLE
10	select TIMER_READS_ITS_FREQUENCY_AT_RUNTIME
11	help
12	  If you enable this, BURTC will be used to provide hw_cycles and
13	  kernel ticks instead of Cortex-M SysTick. You need this for system
14	  to be able to keep track of time and wake up from EM2 & EM3 sleep
15	  states.
16
17	  NOTE:
18	  Using BURTC instead of SysTick has a large impact on kernel timing
19	  precision.
20	  1. You won't be able to use the usual 0.1ms-granularity tickless
21	     scheduling. Kernel tick duration should be at least 6 BURTC clock
22	     cycles, that is ~183 us @ 32768 Hz (LFXO, LFRCO) or
23	     ~6 ms @ 1000 Hz (ULFRCO).
24	  2. In general, accuracy of real-time scheduling by kernel will be
25	     degraded: all timeout-based facilities, such as timers, delayable
26	     work, k_sleep, will issue thread wake ups less precisely than when
27	     using SysTick timer.
28	  3. hw_cycles granularity will be equal to 1 BURTC clock, that is
29	     ~31 us @ 32768 Hz or ~1 ms @ 1000 Hz. This reduces timing
30	     precision of all code which relies on cycles API, e.g.
31	     k_cycle_get_32() and similar functions.
32
33	  If unsure, say 'N'.
34