27 #include <mach/hardware.h>
31 #define TIMER_CLOCKEVENT 0
32 #define TIMER_CLOCKSOURCE 1
34 static void netx_set_mode(
enum clock_event_mode
mode,
35 struct clock_event_device *
clk)
43 case CLOCK_EVT_MODE_PERIODIC:
50 case CLOCK_EVT_MODE_ONESHOT:
57 WARN(1,
"%s: unhandled mode %d\n", __func__, mode);
60 case CLOCK_EVT_MODE_SHUTDOWN:
61 case CLOCK_EVT_MODE_UNUSED:
62 case CLOCK_EVT_MODE_RESUME:
70 static int netx_set_next_event(
unsigned long evt,
71 struct clock_event_device *
clk)
77 static struct clock_event_device netx_clockevent = {
80 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
81 .set_next_event = netx_set_next_event,
82 .set_mode = netx_set_mode,
89 netx_timer_interrupt(
int irq,
void *
dev_id)
91 struct clock_event_device *evt = &netx_clockevent;
96 evt->event_handler(evt);
101 static struct irqaction netx_timer_irq = {
102 .name =
"NetX Timer Tick",
104 .handler = netx_timer_interrupt,
110 static void __init netx_timer_init(
void)
144 netx_clockevent.shift);
145 netx_clockevent.max_delta_ns =
149 netx_clockevent.min_delta_ns =
156 .init = netx_timer_init,