aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorJonas Aaberg <jonas.aberg@stericsson.com>2011-04-21 08:54:22 +0200
committerJonas ABERG <jonas.aberg@stericsson.com>2011-04-21 09:53:04 +0200
commita8545d02f49cd8822572991f3bc86a855027e35d (patch)
tree974f8ccbb80e6ba437f87fc983434cd5f89ea0cd /arch
parente536b0ba3be6daecee07da0661d64ff13ebd828c (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.c9
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);