atmel_tc clocksource/clockevent code
authorDavid Brownell <david-b@pacbell.net>
Sat, 23 Feb 2008 01:28:37 +0000 (17:28 -0800)
committerHaavard Skinnemoen <hskinnemoen@atmel.com>
Tue, 4 Mar 2008 12:42:24 +0000 (13:42 +0100)
commit4d243f92e48a7913938f48fa9ebea5239168bb11
tree8068f70eda76ff21839f9672771d3bd0ab9deb58
parent2a341f5cf57dce9d89b41484a69e88adc6422f6c
atmel_tc clocksource/clockevent code

Clocksource and clockevent device based on the Atmel TC blocks.

The clockevent device handles both periodic and oneshot modes, so this
enables NO_HZ and high res timers on some platforms that previously
couldn't use those mechanisms.

This works on both AVR32 and AT91 chips, given relevant patches for
tclib support (always) and clockevents (or else this will only look
like a higher precision clocksource).  It's an updated and modularized
version of an AT91-only patch that has circulated for some time now.

Changes relative to the original patch:
  * Update to use new tclib API
  * Replace open-coded do-while loop using goto with a real do-while loop
  * Minor irq handler optimization: Load register base address from
    dev_id instead of a global variable.
  * Aggressively turn off clocks when the clockevent isn't being used
  * Include the clockevent code on AT91RM9200 as well. The rating is
    lower than the System Timer, so the clock will usually stay off.
  * Don't assume that the number of clocks is always equal to the
    number of irqs.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
drivers/clocksource/Makefile
drivers/clocksource/tcb_clksrc.c [new file with mode: 0644]
drivers/misc/Kconfig