.. | .. |
---|
9 | 9 | #include <linux/io.h> |
---|
10 | 10 | #include <asm/mach/time.h> |
---|
11 | 11 | #include "soc.h" |
---|
| 12 | +#include "platform.h" |
---|
12 | 13 | |
---|
13 | 14 | /************************************************************************* |
---|
14 | 15 | * Timer handling for EP93xx |
---|
.. | .. |
---|
60 | 61 | return ret; |
---|
61 | 62 | } |
---|
62 | 63 | |
---|
63 | | -u64 ep93xx_clocksource_read(struct clocksource *c) |
---|
| 64 | +static u64 ep93xx_clocksource_read(struct clocksource *c) |
---|
64 | 65 | { |
---|
65 | 66 | u64 ret; |
---|
66 | 67 | |
---|
.. | .. |
---|
117 | 118 | return IRQ_HANDLED; |
---|
118 | 119 | } |
---|
119 | 120 | |
---|
120 | | -static struct irqaction ep93xx_timer_irq = { |
---|
121 | | - .name = "ep93xx timer", |
---|
122 | | - .flags = IRQF_TIMER | IRQF_IRQPOLL, |
---|
123 | | - .handler = ep93xx_timer_interrupt, |
---|
124 | | - .dev_id = &ep93xx_clockevent, |
---|
125 | | -}; |
---|
126 | | - |
---|
127 | 121 | void __init ep93xx_timer_init(void) |
---|
128 | 122 | { |
---|
| 123 | + int irq = IRQ_EP93XX_TIMER3; |
---|
| 124 | + unsigned long flags = IRQF_TIMER | IRQF_IRQPOLL; |
---|
| 125 | + |
---|
129 | 126 | /* Enable and register clocksource and sched_clock on timer 4 */ |
---|
130 | 127 | writel(EP93XX_TIMER4_VALUE_HIGH_ENABLE, |
---|
131 | 128 | EP93XX_TIMER4_VALUE_HIGH); |
---|
.. | .. |
---|
136 | 133 | EP93XX_TIMER4_RATE); |
---|
137 | 134 | |
---|
138 | 135 | /* Set up clockevent on timer 3 */ |
---|
139 | | - setup_irq(IRQ_EP93XX_TIMER3, &ep93xx_timer_irq); |
---|
| 136 | + if (request_irq(irq, ep93xx_timer_interrupt, flags, "ep93xx timer", |
---|
| 137 | + &ep93xx_clockevent)) |
---|
| 138 | + pr_err("Failed to request irq %d (ep93xx timer)\n", irq); |
---|
140 | 139 | clockevents_config_and_register(&ep93xx_clockevent, |
---|
141 | 140 | EP93XX_TIMER123_RATE, |
---|
142 | 141 | 1, |
---|