# Kconfig - timer driver configuration options

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


menu "Timer Drivers"

config HPET_TIMER
	bool "HPET timer"
	default n
	depends on X86
	select IOAPIC
	select LOAPIC
	select TIMER_READS_ITS_FREQUENCY_AT_RUNTIME
	help
	  This option selects High Precision Event Timer (HPET) as a
	  system timer.

config HPET_TIMER_LEGACY_EMULATION
	bool "HPET timer legacy emulation mode"
	default n
	depends on HPET_TIMER
	help
	  This option switches HPET to legacy emulation mode.
	  In this mode 8254 PIT is disabled, HPET timer0 is connected
	  to IOAPIC IRQ2, timer1 -- to IOAPIC IRQ8.

config HPET_TIMER_DEBUG
	bool "Enable HPET debug output"
	default n
	depends on HPET_TIMER && PRINTK
	help
	  This option enables HPET debugging output.

config HPET_TIMER_BASE_ADDRESS
	hex "HPET Base Address"
	default 0xFED00000
	depends on HPET_TIMER
	help
	  This options specifies the base address of the HPET timer device.

config HPET_TIMER_IRQ
	int "HPET Timer IRQ"
	default 20
	depends on HPET_TIMER
	help
	  This option specifies the IRQ used by the HPET timer.

config HPET_TIMER_IRQ_PRIORITY
	int "HPET Timer IRQ Priority"
	default 4
	depends on HPET_TIMER
	help
	  This option specifies the IRQ priority used by the HPET timer.

choice
depends on HPET_TIMER
prompt "HPET Interrupt Trigger Condition"
default HPET_TIMER_FALLING_EDGE

config HPET_TIMER_FALLING_EDGE
	bool "Falling Edge"
	help
	  This option signifies that the HPET timer uses falling edge interrupts.

config HPET_TIMER_RISING_EDGE
	bool "Rising Edge"
	help
	  This option signifies that the HPET timer uses rising edge interrupts.

config HPET_TIMER_LEVEL_HIGH
	bool "Level High"
	help
	  This option signifies that the HPET timer uses level high interrupts.

config HPET_TIMER_LEVEL_LOW
	bool "Level Low"
	help
	  This option signifies that the HPET timer uses level low interrupts.

endchoice

config LOAPIC_TIMER
	bool "LOAPIC timer"
	depends on (LOAPIC || MVIC) && X86
	default n
	help
	  This option selects LOAPIC timer as a system timer.

config LOAPIC_TIMER_IRQ
	int "Local APIC Timer IRQ"
	default 24
	depends on LOAPIC_TIMER
	help
	  This option specifies the IRQ used by the LOAPIC timer.

config LOAPIC_TIMER_IRQ_PRIORITY
	int "Local APIC Timer IRQ Priority"
	default 2
	depends on LOAPIC_TIMER
	help
	  This options specifies the IRQ priority used by the LOAPIC timer.

config TSC_CYCLES_PER_SEC
	int
	prompt "Frequency of x86 CPU timestamp counter"
	default 0
	depends on LOAPIC_TIMER
	help
	  The x86 implementation of LOAPIC k_cycle_get_32() relies on the x86 TSC.
	  This runs at the CPU speed and not the bus speed. If set to 0, the
	  value of CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC will be used instead;
	  many MCUs these values are the same.

config ARCV2_TIMER
	bool "ARC Timer"
	default y
	depends on ARC
	help
	  This module implements a kernel device driver for the ARCv2 processor timer 0
	  and provides the standard "system clock driver" interfaces.

config ARCV2_TIMER_IRQ_PRIORITY
	int "ARC timer interrupt priority"
	default 0
	depends on ARCV2_TIMER
	help
	  This option specifies the IRQ priority used by the ARC timer. Lower
	  values have higher priority.

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

config ALTERA_AVALON_TIMER
	bool "Altera Avalon Interval Timer"
	default y
	depends on NIOS2
	help
	  This module implements a kernel device driver for the Altera Avalon
	  Interval Timer as described in the Embedded IP documentation, for use
	  with Nios II and possibly other Altera soft CPUs. It provides the
	  standard "system clock driver" interfaces.

config NRF_RTC_TIMER
	bool "nRF Real Time Counter (NRF_RTC1) Timer"
	default y
	depends on SOC_FAMILY_NRF5 && CLOCK_CONTROL_NRF5
	help
	  This module implements a kernel device driver for the nRF Real Time
	  Counter NRF_RTC1 and provides the standard "system clock driver"
	  interfaces.

config PULPINO_TIMER
	bool "pulpino Timer"
	default y
	depends on SOC_RISCV32_PULPINO
	help
	  This module implements a kernel device driver for the pulpino processor
	  timer driver. It provides the standard "system clock driver" interfaces.

config RISCV_MACHINE_TIMER
	bool "RISCV Machine Timer"
	default n
	depends on SOC_FAMILY_RISCV_PRIVILEGE
	help
	  This module implements a kernel device driver for the generic RISCV machine
	  timer driver. It provides the standard "system clock driver" interfaces.

config XTENSA_TIMER
	bool "Xtensa timer support"
	depends on XTENSA
	default y
	help
	  This module implements a kernel device driver for the Xtensa processor and
	  provides the standard "system clock driver" interfaces.
	  If unchecked, no timer will be used.
	  If checked it will use either an internal timer (default option) or an
	  external timer. In that case one shall unselect XTENSA_INTERNAL_TIMER and
	  define XTENSA_TIMER_IRQ and XTENSA_TIMER_IRQ_PRIORITY.

config XTENSA_INTERNAL_TIMER
	bool "Xtensa internal timer"
	depends on XTENSA_TIMER
	default y
	help
	  This module implements a kernel device driver for the Xtensa processor
	  internal timer and provides the standard "system clock driver" interfaces.
	  If unchecked, an external timer will be used. It will rely on a tick
	  interrupt connected to an IRQ line. In this case one shall define
	  both XTENSA_TIMER_IRQ and XTENSA_TIMER_IRQ_PRIORITY.

config XTENSA_TIMER_IRQ
	int "Xtensa external timer interrupt number"
	depends on XTENSA_TIMER && !XTENSA_INTERNAL_TIMER
	range -1 31
	default -1
	help
	  This is the number of interrupt line used by the external timer.
	  The special value of -1 allows using the internal timer in order to
	  emulate an external timer. This is generally useful for running the project on
	  a simulator	where it is hard to emulate an external interrupt.

config XTENSA_TIMER_IRQ_PRIORITY
	int "Xtensa external timer interrupt priority"
	depends on XTENSA_TIMER && !XTENSA_INTERNAL_TIMER
	range 1 6
	default 1
	help
	  This is the priority of interrupt line.

config SYSTEM_CLOCK_DISABLE
	bool "API to disable system clock"
	default n
	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"
	default n
	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_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).
endmenu
