#define FLAG_IRQCONTEXT (1 << 2)
 #define FLAG_STARTED (1 << 3)
 
-#define ONESHOT  0
-#define PERIODIC 1
-
 #define SCALE 64
 
 struct timer8_priv {
        return container_of(ced, struct timer8_priv, ced);
 }
 
-static void timer8_clock_event_start(struct timer8_priv *p, int periodic)
+static void timer8_clock_event_start(struct timer8_priv *p, unsigned long delta)
 {
        struct clock_event_device *ced = &p->ced;
 
        ced->max_delta_ns = clockevent_delta2ns(0xffff, ced);
        ced->min_delta_ns = clockevent_delta2ns(0x0001, ced);
 
-       timer8_set_next(p, periodic?(p->rate + HZ/2) / HZ:0x10000);
+       timer8_set_next(p, delta);
 }
 
 static int timer8_clock_event_shutdown(struct clock_event_device *ced)
 
        pr_info("%s: used for periodic clock events\n", ced->name);
        timer8_stop(p);
-       timer8_clock_event_start(p, PERIODIC);
+       timer8_clock_event_start(p, (p->rate + HZ/2) / HZ);
 
        return 0;
 }
 
        pr_info("%s: used for oneshot clock events\n", ced->name);
        timer8_stop(p);
-       timer8_clock_event_start(p, ONESHOT);
+       timer8_clock_event_start(p, 0x10000);
 
        return 0;
 }