Commit 6d8ce7129f6c4c2f8716d6a771d59f263deab898

Authored by Linus Walleij
Committed by Russell King
1 parent 02f5632122

ARM: 7086/2: mach-integrator: modernize clock event registration

Drop mult, shift and delta calculations and let the
clockevent core scale this as appropriate.

Set the minimum interval to 1 rather than 15 (0xf), there
is nothing in the data sheets I have indicating that 15
should be some minimum value.

Acked-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

Showing 1 changed file with 5 additions and 10 deletions Side-by-side Diff

arch/arm/mach-integrator/integrator_ap.c
... ... @@ -398,12 +398,10 @@
398 398  
399 399 static struct clock_event_device integrator_clockevent = {
400 400 .name = "timer1",
401   - .shift = 34,
402 401 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
403 402 .set_mode = clkevt_set_mode,
404 403 .set_next_event = clkevt_set_next_event,
405 404 .rating = 300,
406   - .cpumask = cpu_all_mask,
407 405 };
408 406  
409 407 static struct irqaction integrator_timer_irq = {
410 408  
... ... @@ -415,9 +413,9 @@
415 413  
416 414 static void integrator_clockevent_init(u32 khz)
417 415 {
418   - struct clock_event_device *evt = &integrator_clockevent;
419 416 unsigned int ctrl = 0;
420 417  
  418 + /* Calculate and program a divisor */
421 419 if (khz * 1000 > 0x100000 * HZ) {
422 420 khz /= 256;
423 421 ctrl |= TIMER_CTRL_DIV256;
424 422  
425 423  
... ... @@ -425,17 +423,14 @@
425 423 khz /= 16;
426 424 ctrl |= TIMER_CTRL_DIV16;
427 425 }
428   -
429 426 timer_reload = khz * 1000 / HZ;
430 427 writel(ctrl, clkevt_base + TIMER_CTRL);
431 428  
432   - evt->irq = IRQ_TIMERINT1;
433   - evt->mult = div_sc(khz, NSEC_PER_MSEC, evt->shift);
434   - evt->max_delta_ns = clockevent_delta2ns(0xffff, evt);
435   - evt->min_delta_ns = clockevent_delta2ns(0xf, evt);
436   -
437 429 setup_irq(IRQ_TIMERINT1, &integrator_timer_irq);
438   - clockevents_register_device(evt);
  430 + clockevents_config_and_register(&integrator_clockevent,
  431 + khz * 1000,
  432 + 1,
  433 + 0xffffU);
439 434 }
440 435  
441 436 /*