| .. | .. |
|---|
| 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 | | -}; |
|---|