# Copyright (c) 2023 Antmicro <www.antmicro.com>
# SPDX-License-Identifier: Apache-2.0

config GECKO_BURTC_TIMER
	bool "SiLabs Gecko BURTC system clock driver"
	depends on SOC_GECKO_SERIES2
	depends on DT_HAS_SILABS_GECKO_BURTC_ENABLED
	select SOC_GECKO_BURTC
	select TICKLESS_CAPABLE
	select TIMER_READS_ITS_FREQUENCY_AT_RUNTIME
	help
	  If you enable this, BURTC will be used to provide hw_cycles and
	  kernel ticks instead of Cortex-M SysTick. You need this for system
	  to be able to keep track of time and wake up from EM2 & EM3 sleep
	  states.

	  NOTE:
	  Using BURTC instead of SysTick has a large impact on kernel timing
	  precision.
	  1. You won't be able to use the usual 0.1ms-granularity tickless
	     scheduling. Kernel tick duration should be at least 6 BURTC clock
	     cycles, that is ~183 us @ 32768 Hz (LFXO, LFRCO) or
	     ~6 ms @ 1000 Hz (ULFRCO).
	  2. In general, accuracy of real-time scheduling by kernel will be
	     degraded: all timeout-based facilities, such as timers, delayable
	     work, k_sleep, will issue thread wake ups less precisely than when
	     using SysTick timer.
	  3. hw_cycles granularity will be equal to 1 BURTC clock, that is
	     ~31 us @ 32768 Hz or ~1 ms @ 1000 Hz. This reduces timing
	     precision of all code which relies on cycles API, e.g.
	     k_cycle_get_32() and similar functions.

	  If unsure, say 'N'.
