0001 ===========================================
0002 High Precision Event Timer Driver for Linux
0003 ===========================================
0004
0005 The High Precision Event Timer (HPET) hardware follows a specification
0006 by Intel and Microsoft, revision 1.
0007
0008 Each HPET has one fixed-rate counter (at 10+ MHz, hence "High Precision")
0009 and up to 32 comparators. Normally three or more comparators are provided,
0010 each of which can generate oneshot interrupts and at least one of which has
0011 additional hardware to support periodic interrupts. The comparators are
0012 also called "timers", which can be misleading since usually timers are
0013 independent of each other ... these share a counter, complicating resets.
0014
0015 HPET devices can support two interrupt routing modes. In one mode, the
0016 comparators are additional interrupt sources with no particular system
0017 role. Many x86 BIOS writers don't route HPET interrupts at all, which
0018 prevents use of that mode. They support the other "legacy replacement"
0019 mode where the first two comparators block interrupts from 8254 timers
0020 and from the RTC.
0021
0022 The driver supports detection of HPET driver allocation and initialization
0023 of the HPET before the driver module_init routine is called. This enables
0024 platform code which uses timer 0 or 1 as the main timer to intercept HPET
0025 initialization. An example of this initialization can be found in
0026 arch/x86/kernel/hpet.c.
0027
0028 The driver provides a userspace API which resembles the API found in the
0029 RTC driver framework. An example user space program is provided in
0030 file:samples/timers/hpet_example.c