summaryrefslogtreecommitdiff
path: root/arch/arm/mach-at91/at91rm9200_time.c
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-05-21 10:25:08 +0400
committerOlof Johansson <olof@lixom.net>2013-05-21 10:30:50 +0400
commit8582df0f637140b94d54d297d07edc8d6702f35c (patch)
tree5f4a9b4103be4be69acc557181521b90a485f182 /arch/arm/mach-at91/at91rm9200_time.c
parent4ae608e137a8b0e5a34a4f4c409f8468b4685df9 (diff)
parentb7a8ca5173ef9aa55fa039d7c216426ff0b25a12 (diff)
downloadlinux-8582df0f637140b94d54d297d07edc8d6702f35c.tar.xz
Merge tag 'at91-fixes' of git://github.com/at91linux/linux-at91 into fixes
From Nicolas Ferre: An important revert on at91rm9200 platform related to timers that prevented the platform to boot properly. Then one pinctrl adjustments for SPI CS and a couple of trivial typos. * tag 'at91-fixes' of git://github.com/at91linux/linux-at91: ARM: at91: rm9200 fix time support ARM: at91: dts: request only spi cs-gpios used on sama5d3x cpu module ARM: at91/trivial: typo in GEM compatible string ARM: at91/trivial: fix model name for SAM9X25-EK Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-at91/at91rm9200_time.c')
-rw-r--r--arch/arm/mach-at91/at91rm9200_time.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
index 2acdff4c1dfe..180b3024bec3 100644
--- a/arch/arm/mach-at91/at91rm9200_time.c
+++ b/arch/arm/mach-at91/at91rm9200_time.c
@@ -174,6 +174,7 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev)
static struct clock_event_device clkevt = {
.name = "at91_tick",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
+ .shift = 32,
.rating = 150,
.set_next_event = clkevt32k_next_event,
.set_mode = clkevt32k_mode,
@@ -264,9 +265,11 @@ void __init at91rm9200_timer_init(void)
at91_st_write(AT91_ST_RTMR, 1);
/* Setup timer clockevent, with minimum of two ticks (important!!) */
+ clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift);
+ clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt);
+ clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1;
clkevt.cpumask = cpumask_of(0);
- clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK,
- 2, AT91_ST_ALMV);
+ clockevents_register_device(&clkevt);
/* register clocksource */
clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK);