# Timer driver configuration options

# 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

menu "Timer Drivers"

DT_COMPAT_ARM_V6M_SYSTICK := arm,armv6m-systick
DT_COMPAT_ARM_V7M_SYSTICK := arm,armv7m-systick
DT_COMPAT_ARM_V8M_SYSTICK := arm,armv8m-systick
DT_COMPAT_ARM_V8_1M_SYSTICK := arm,armv8.1m-systick

config CORTEX_M_SYSTICK
	bool "Cortex-M SYSTICK timer"
	depends on CPU_CORTEX_M_HAS_SYSTICK
	select TICKLESS_CAPABLE
	help
	  This module implements a kernel device driver for the Cortex-M processor
	  SYSTICK timer and provides the standard "system clock driver" interfaces.

source "drivers/timer/Kconfig.acts"

config NPCX_ITIM_TIMER
	bool "Nuvoton NPCX series internal 64/32-bit timers"
	default y
	depends on SOC_FAMILY_NPCX
	select TICKLESS_CAPABLE
	help
	  This module implements a kernel device driver for the Nuvoton NPCX
	  series internal 64/32-bit timers and provides the standard "system
	  clock driver" interfaces.

config SYSTEM_CLOCK_DISABLE
	bool "API to disable system clock"
	help
	  This option enables the sys_clock_disable() API in the kernel. It is
	  needed by some subsystems (which will automatically select it), but is
	  rarely needed by applications.

config TIMER_READS_ITS_FREQUENCY_AT_RUNTIME
	bool "Timer queries its hardware to find its frequency at runtime"
	help
	  The drivers select this option automatically when needed. Do not modify
	  this unless you have a very good reason for it.

config SYSTEM_CLOCK_SLOPPY_IDLE
	bool "Timer allowed to skew uptime clock during idle"
	help
	  When true, the timer driver is not required to maintain a
	  correct system uptime count when the system enters idle.
	  Some platforms may take advantage of this to reduce the
	  overhead from regular interrupts required to handle counter
	  wraparound conditions.

config SYSTEM_CLOCK_INIT_PRIORITY
	int "System clock driver initialization priority"
	default 0
	help
	  This options can be used to set a specific initialization priority
	  value for the system clock driver. As driver initialization  might need
	  the clock to be running already, you should let the default value as it
	  is (0).

# Hidden option to be selected by individual SoC.
config TICKLESS_CAPABLE
	bool
	help
	  Timer drivers should select this flag if they are capable of
	  supporting tickless operation.  That is, a call to
	  sys_clock_set_timeout() with a number of ticks greater than
	  one should be expected not to produce a call to
	  sys_clock_announce() (really, not to produce an interrupt at
	  all) until the specified expiration.

DT_COMPAT_NXP_OS_TIMER := nxp,os-timer

config MCUX_OS_TIMER
	bool "MCUX OS Event timer"
	depends on HAS_MCUX_OS_TIMER
	default $(dt_compat_enabled,$(DT_COMPAT_NXP_OS_TIMER))
	select TICKLESS_CAPABLE
	help
	  This module implements a kernel device driver for the NXP OS
	  event timer and provides the standard "system clock driver" interfaces.

config MCUX_LPTMR_TIMER
	bool "MCUX LPTMR timer"
	depends on HAS_MCUX_LPTMR && !COUNTER_MCUX_LPTMR
	help
	  This module implements a kernel device driver for the NXP MCUX Low
	  Power Timer (LPTMR) and provides the standard "system clock driver"
	  interfaces.

endmenu
