#include <asm/mach/time.h>
 #include <asm/sched_clock.h>
 
-/*
- * Guaranteed runtime conversion range in seconds for
- * the clocksource and clockevent.
- */
-#define MTU_MIN_RANGE 4
-
 /*
  * The MTU device hosts four different counters, with 4 set of
  * registers. These are register names.
 void nmdk_clkevt_reset(void)
 {
        if (clkevt_periodic) {
-
                /* Timer: configure load and background-load, and fire it up */
                writel(nmdk_cycle, mtu_base + MTU_LR(1));
                writel(nmdk_cycle, mtu_base + MTU_BGLR(1));
 static void nmdk_clkevt_mode(enum clock_event_mode mode,
                             struct clock_event_device *dev)
 {
-
        switch (mode) {
        case CLOCK_EVT_MODE_PERIODIC:
                clkevt_periodic = true;
        setup_sched_clock(nomadik_read_sched_clock, 32, rate);
 #endif
 
-       /* Timer 1 is used for events */
-
-       clockevents_calc_mult_shift(&nmdk_clkevt, rate, MTU_MIN_RANGE);
-
-       nmdk_clkevt.max_delta_ns =
-               clockevent_delta2ns(0xffffffff, &nmdk_clkevt);
-       nmdk_clkevt.min_delta_ns =
-               clockevent_delta2ns(0x00000002, &nmdk_clkevt);
-       nmdk_clkevt.cpumask     = cpumask_of(0);
-
-       /* Register irq and clockevents */
+       /* Timer 1 is used for events, register irq and clockevents */
        setup_irq(IRQ_MTU0, &nmdk_timer_irq);
-       clockevents_register_device(&nmdk_clkevt);
+       nmdk_clkevt.cpumask = cpumask_of(0);
+       clockevents_config_and_register(&nmdk_clkevt, rate, 2, 0xffffffffU);
 }