e61863099f
Documentation/timers/hpet.txt: Expose example and tool source files in the Documentation/timers/ directory in their own files instead of being buried (almost hidden) in readme/txt files. This should help to prevent bitrot. This will make them more visible/usable to users who may need to use them, to developers who may need to test with them, and to anyone who would fix/update them if they were more visible. Also, if any of these possibly should not be in the kernel tree at all, it will be clearer that they are here and we can discuss if they should be removed. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
30 lines
1.5 KiB
Text
30 lines
1.5 KiB
Text
High Precision Event Timer Driver for Linux
|
|
|
|
The High Precision Event Timer (HPET) hardware follows a specification
|
|
by Intel and Microsoft which can be found at
|
|
|
|
http://www.intel.com/hardwaredesign/hpetspec_1.pdf
|
|
|
|
Each HPET has one fixed-rate counter (at 10+ MHz, hence "High Precision")
|
|
and up to 32 comparators. Normally three or more comparators are provided,
|
|
each of which can generate oneshot interrupts and at least one of which has
|
|
additional hardware to support periodic interrupts. The comparators are
|
|
also called "timers", which can be misleading since usually timers are
|
|
independent of each other ... these share a counter, complicating resets.
|
|
|
|
HPET devices can support two interrupt routing modes. In one mode, the
|
|
comparators are additional interrupt sources with no particular system
|
|
role. Many x86 BIOS writers don't route HPET interrupts at all, which
|
|
prevents use of that mode. They support the other "legacy replacement"
|
|
mode where the first two comparators block interrupts from 8254 timers
|
|
and from the RTC.
|
|
|
|
The driver supports detection of HPET driver allocation and initialization
|
|
of the HPET before the driver module_init routine is called. This enables
|
|
platform code which uses timer 0 or 1 as the main timer to intercept HPET
|
|
initialization. An example of this initialization can be found in
|
|
arch/x86/kernel/hpet.c.
|
|
|
|
The driver provides a userspace API which resembles the API found in the
|
|
RTC driver framework. An example user space program is provided in
|
|
file:Documentation/timers/hpet_example.c
|