diff options
author | Jonas Aaberg <jonas.aberg@stericsson.com> | 2011-04-21 08:54:22 +0200 |
---|---|---|
committer | Jonas ABERG <jonas.aberg@stericsson.com> | 2011-04-21 09:53:04 +0200 |
commit | a8545d02f49cd8822572991f3bc86a855027e35d (patch) | |
tree | 974f8ccbb80e6ba437f87fc983434cd5f89ea0cd /arch | |
parent | e536b0ba3be6daecee07da0661d64ff13ebd828c (diff) |
ARM: ux500: timer-rtt: Fix clockevent configuration
The clockevent was set to schedule events at mimumum
8 ms a head in time.
ST-Ericsson Linux next: Not tested, ask SSM for ER
ST-Ericsson ID: ER336512
ST-Ericsson FOSS-OUT ID: Trivial
Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Change-Id: I3d1da4c818b1edb82247c69b89cce5f666291634
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21301
Reviewed-by: Mattias WALLIN <mattias.wallin@stericsson.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-ux500/timer-rtt.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/mach-ux500/timer-rtt.c b/arch/arm/mach-ux500/timer-rtt.c index da2a9d26bdc..e13ea25195f 100644 --- a/arch/arm/mach-ux500/timer-rtt.c +++ b/arch/arm/mach-ux500/timer-rtt.c @@ -97,7 +97,6 @@ void smp_timer_broadcast(const struct cpumask *mask); struct clock_event_device u8500_rtt_clkevt = { .name = "rtc-rtt", .features = CLOCK_EVT_FEAT_ONESHOT, - .shift = 32, /* This timer is not working except from cpuidle */ .rating = 0, .set_next_event = u8500_rtc_set_event, @@ -133,11 +132,13 @@ void u8500_rtc_init(unsigned int cpu) writel(RTC_ICR_TIC, rtc_base + RTC_ICR); writel(RTC_IMSC_TIMSC, rtc_base + RTC_IMSC); - u8500_rtt_clkevt.mult = div_sc(RATE_32K, NSEC_PER_SEC, - u8500_rtt_clkevt.shift); + /* We can sleep for max 10s (actually max is longer) */ + clockevents_calc_mult_shift(&u8500_rtt_clkevt, RATE_32K, 10); + u8500_rtt_clkevt.max_delta_ns = clockevent_delta2ns(0xffffffff, &u8500_rtt_clkevt); - u8500_rtt_clkevt.min_delta_ns = clockevent_delta2ns(0xff, + /* Don't program times less than eight cycles */ + u8500_rtt_clkevt.min_delta_ns = clockevent_delta2ns(8, &u8500_rtt_clkevt); setup_irq(u8500_rtc_irq.irq, &u8500_rtc_irq); clockevents_register_device(&u8500_rtt_clkevt); |