.. | .. |
---|
213 | 213 | * The special RTC interrupt type. The interrupt itself was |
---|
214 | 214 | * processed by PALcode, and comes in via entInt vector 1. |
---|
215 | 215 | */ |
---|
216 | | - |
---|
217 | | -struct irqaction timer_irqaction = { |
---|
218 | | - .handler = rtc_timer_interrupt, |
---|
219 | | - .name = "timer", |
---|
220 | | -}; |
---|
221 | | - |
---|
222 | 216 | void __init |
---|
223 | | -init_rtc_irq(void) |
---|
| 217 | +init_rtc_irq(irq_handler_t handler) |
---|
224 | 218 | { |
---|
225 | 219 | irq_set_chip_and_handler_name(RTC_IRQ, &dummy_irq_chip, |
---|
226 | 220 | handle_percpu_irq, "RTC"); |
---|
227 | | - setup_irq(RTC_IRQ, &timer_irqaction); |
---|
| 221 | + if (!handler) |
---|
| 222 | + handler = rtc_timer_interrupt; |
---|
| 223 | + if (request_irq(RTC_IRQ, handler, 0, "timer", NULL)) |
---|
| 224 | + pr_err("Failed to register timer interrupt\n"); |
---|
228 | 225 | } |
---|
229 | | - |
---|
230 | | -/* Dummy irqactions. */ |
---|
231 | | -struct irqaction isa_cascade_irqaction = { |
---|
232 | | - .handler = no_action, |
---|
233 | | - .name = "isa-cascade" |
---|
234 | | -}; |
---|
235 | | - |
---|
236 | | -struct irqaction timer_cascade_irqaction = { |
---|
237 | | - .handler = no_action, |
---|
238 | | - .name = "timer-cascade" |
---|
239 | | -}; |
---|
240 | | - |
---|
241 | | -struct irqaction halt_switch_irqaction = { |
---|
242 | | - .handler = no_action, |
---|
243 | | - .name = "halt-switch" |
---|
244 | | -}; |
---|