aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-imx/time.c')
-rw-r--r--arch/arm/mach-imx/time.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index f017302f6d09..fea91313678b 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -152,7 +152,8 @@ static int v2_set_next_event(unsigned long evt,
152 152
153 __raw_writel(tcmp, timer_base + V2_TCMP); 153 __raw_writel(tcmp, timer_base + V2_TCMP);
154 154
155 return (int)(tcmp - __raw_readl(timer_base + V2_TCN)) < 0 ? 155 return evt < 0x7fffffff &&
156 (int)(tcmp - __raw_readl(timer_base + V2_TCN)) < 0 ?
156 -ETIME : 0; 157 -ETIME : 0;
157} 158}
158 159
@@ -256,7 +257,6 @@ static struct irqaction mxc_timer_irq = {
256static struct clock_event_device clockevent_mxc = { 257static struct clock_event_device clockevent_mxc = {
257 .name = "mxc_timer1", 258 .name = "mxc_timer1",
258 .features = CLOCK_EVT_FEAT_ONESHOT, 259 .features = CLOCK_EVT_FEAT_ONESHOT,
259 .shift = 32,
260 .set_mode = mxc_set_mode, 260 .set_mode = mxc_set_mode,
261 .set_next_event = mx1_2_set_next_event, 261 .set_next_event = mx1_2_set_next_event,
262 .rating = 200, 262 .rating = 200,
@@ -264,21 +264,13 @@ static struct clock_event_device clockevent_mxc = {
264 264
265static int __init mxc_clockevent_init(struct clk *timer_clk) 265static int __init mxc_clockevent_init(struct clk *timer_clk)
266{ 266{
267 unsigned int c = clk_get_rate(timer_clk);
268
269 if (timer_is_v2()) 267 if (timer_is_v2())
270 clockevent_mxc.set_next_event = v2_set_next_event; 268 clockevent_mxc.set_next_event = v2_set_next_event;
271 269
272 clockevent_mxc.mult = div_sc(c, NSEC_PER_SEC,
273 clockevent_mxc.shift);
274 clockevent_mxc.max_delta_ns =
275 clockevent_delta2ns(0xfffffffe, &clockevent_mxc);
276 clockevent_mxc.min_delta_ns =
277 clockevent_delta2ns(0xff, &clockevent_mxc);
278
279 clockevent_mxc.cpumask = cpumask_of(0); 270 clockevent_mxc.cpumask = cpumask_of(0);
280 271 clockevents_config_and_register(&clockevent_mxc,
281 clockevents_register_device(&clockevent_mxc); 272 clk_get_rate(timer_clk),
273 0xff, 0xfffffffe);
282 274
283 return 0; 275 return 0;
284} 276}