245 lines
6.8 KiB
Plaintext
245 lines
6.8 KiB
Plaintext
# 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 RISCV32
|
|
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
|