static struct clock_event_device ckevt_sa1100_osmr0 = {
        .name           = "osmr0",
        .features       = CLOCK_EVT_FEAT_ONESHOT,
-       .shift          = 32,
        .rating         = 200,
        .set_next_event = sa1100_osmr0_set_next_event,
        .set_mode       = sa1100_osmr0_set_mode,
 
 static void __init sa1100_timer_init(void)
 {
-       OIER = 0;               /* disable any timer interrupts */
-       OSSR = 0xf;             /* clear status on all timers */
+       OIER = 0;
+       OSSR = OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3;
 
        init_fixed_sched_clock(&cd, sa1100_update_sched_clock, 32,
                               3686400, SC_MULT, SC_SHIFT);
 
-       ckevt_sa1100_osmr0.mult =
-               div_sc(3686400, NSEC_PER_SEC, ckevt_sa1100_osmr0.shift);
+       clockevents_calc_mult_shift(&ckevt_sa1100_osmr0, 3686400, 4);
        ckevt_sa1100_osmr0.max_delta_ns =
                clockevent_delta2ns(0x7fffffff, &ckevt_sa1100_osmr0);
        ckevt_sa1100_osmr0.min_delta_ns =