# Kconfig - timer driver configuration options

#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


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 LOAPIC_TIMER_DIVIDER_UNSUPPORTED
	bool "LOAPIC timer divider unsupported"
	depends on LOAPIC_TIMER  && MVIC && X86
	default n
	help
	This option selects if Local Apic Timer divider register is supported.

	The MVIC interrupt controller does not provide the Timer Divide
	Configuration Register (TDC).

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_CORTEX_M
	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 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 drivers on nanokernel
	initialization level might need the clock to be running already, you
	should let the default value as it is (0).
endmenu
