| .. | .. |
|---|
| 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, |
|---|