Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / Documentation / timers / hpet.txt
blob895345ec513b5cfe90ac3a2d7c95d355ecce121a
1                 High Precision Event Timer Driver for Linux
3 The High Precision Event Timer (HPET) hardware follows a specification
4 by Intel and Microsoft, revision 1.
6 Each HPET has one fixed-rate counter (at 10+ MHz, hence "High Precision")
7 and up to 32 comparators.  Normally three or more comparators are provided,
8 each of which can generate oneshot interrupts and at least one of which has
9 additional hardware to support periodic interrupts.  The comparators are
10 also called "timers", which can be misleading since usually timers are
11 independent of each other ... these share a counter, complicating resets.
13 HPET devices can support two interrupt routing modes.  In one mode, the
14 comparators are additional interrupt sources with no particular system
15 role.  Many x86 BIOS writers don't route HPET interrupts at all, which
16 prevents use of that mode.  They support the other "legacy replacement"
17 mode where the first two comparators block interrupts from 8254 timers
18 and from the RTC.
20 The driver supports detection of HPET driver allocation and initialization
21 of the HPET before the driver module_init routine is called.  This enables
22 platform code which uses timer 0 or 1 as the main timer to intercept HPET
23 initialization.  An example of this initialization can be found in
24 arch/x86/kernel/hpet.c.
26 The driver provides a userspace API which resembles the API found in the
27 RTC driver framework.  An example user space program is provided in
28 file:samples/timers/hpet_example.c