14 #include <linux/errno.h>
17 #include <linux/timex.h>
20 #include <mach/hardware.h>
22 #define MIN_OSCR_DELTA 2
26 struct clock_event_device *
c =
dev_id;
37 puv3_osmr0_set_next_event(
unsigned long delta,
struct clock_event_device *
c)
39 unsigned long next, oscr;
50 puv3_osmr0_set_mode(
enum clock_event_mode
mode,
struct clock_event_device *c)
53 case CLOCK_EVT_MODE_ONESHOT:
54 case CLOCK_EVT_MODE_UNUSED:
55 case CLOCK_EVT_MODE_SHUTDOWN:
60 case CLOCK_EVT_MODE_RESUME:
61 case CLOCK_EVT_MODE_PERIODIC:
66 static struct clock_event_device ckevt_puv3_osmr0 = {
68 .features = CLOCK_EVT_FEAT_ONESHOT,
70 .set_next_event = puv3_osmr0_set_next_event,
71 .set_mode = puv3_osmr0_set_mode,
82 .read = puv3_read_oscr,
87 static struct irqaction puv3_timer_irq = {
90 .handler = puv3_ost0_interrupt,
91 .dev_id = &ckevt_puv3_osmr0,
101 ckevt_puv3_osmr0.max_delta_ns =
103 ckevt_puv3_osmr0.min_delta_ns =
114 unsigned long osmr[4], oier;