static struct clock_event_device ckevt_puv3_osmr0 = {
        .name           = "osmr0",
        .features       = CLOCK_EVT_FEAT_ONESHOT,
-#ifdef CONFIG_ARCH_FPGA
-       .shift          = 18, /* correct shift val: 16, but warn_on_slowpath */
-#else
-       .shift          = 30,
-#endif
        .rating         = 200,
        .set_next_event = puv3_osmr0_set_next_event,
        .set_mode       = puv3_osmr0_set_mode,
        OST_OIER = 0;           /* disable any timer interrupts */
        OST_OSSR = 0;           /* clear status on all timers */
 
-       ckevt_puv3_osmr0.mult =
-               div_sc(CLOCK_TICK_RATE, NSEC_PER_SEC, ckevt_puv3_osmr0.shift);
+       clockevents_calc_mult_shift(&ckevt_puv3_osmr0, CLOCK_TICK_RATE, 5);
+
        ckevt_puv3_osmr0.max_delta_ns =
                clockevent_delta2ns(0x7fffffff, &ckevt_puv3_osmr0);
        ckevt_puv3_osmr0.min_delta_ns =