[ARM] 4539/1: clocksource and clockevents for at91rm9200
GENERIC_TIME and GENERIC_CLOCKEVENTS support for the at91rm9200.
- Oneshot mode (used for NO_HZ and high res timers) uses the
alarm to emulate a real oneshot timer; the trickiest bit is
how to avoid some lowlevel races. Thanks to Remy Bohmer for
various fixes to this code.
- Tighten up periodic mode support using the PIT.
- Streamline reads of the 32KHz counter. Thanks to Marc Pignat
for some testing results: the CRTR register has *very* odd
behavior. The reread appears to work around stranger glitches
than just getting an old clock value (which would quickly
self-correct).
- Remove the rounding-up of tick_usec to 10.009 msec (32KiHz/100),
since that no longer acts correct (time increases too fast).
Note that the at91sam9 and at91x40 chips need other solutions,
since they don't have the same system timer module.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Bill Gatliff <bgat@billgatliff.com>
Acked-by:Remy Bohmer <linux@bohmer.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>