diff options
author | Kyle McMartin <kyle@dreadnought.i.jkkm.org> | 2010-10-13 21:00:55 -0400 |
---|---|---|
committer | Kyle McMartin <kyle@dreadnought.i.jkkm.org> | 2010-10-14 01:30:11 -0400 |
commit | ba20085c20f1c9e8af546dea6ad0efa421bdef32 (patch) | |
tree | a5f0574f6b1e60526eb7d1b1e1a50125f10d463c /arch | |
parent | caf96194c05cd97ce96546fbcb1f35ec06aaaac7 (diff) |
parisc: lay groundwork for killing __do_IRQ
Use proper accessors and handlers for generic irq cleanups. We just
call back into __do_IRQ through desc->handler now, and remove the
explicit calls.
Signed-off-by: Kyle McMartin <kyle@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/parisc/include/asm/irq.h | 3 | ||||
-rw-r--r-- | arch/parisc/kernel/irq.c | 26 |
2 files changed, 19 insertions, 10 deletions
diff --git a/arch/parisc/include/asm/irq.h b/arch/parisc/include/asm/irq.h index dfa26b67f919..47041d448d32 100644 --- a/arch/parisc/include/asm/irq.h +++ b/arch/parisc/include/asm/irq.h | |||
@@ -32,6 +32,9 @@ static __inline__ int irq_canonicalize(int irq) | |||
32 | } | 32 | } |
33 | 33 | ||
34 | struct irq_chip; | 34 | struct irq_chip; |
35 | struct irq_desc; | ||
36 | |||
37 | extern void parisc_do_IRQ(unsigned int irq, struct irq_desc *desc); | ||
35 | 38 | ||
36 | /* | 39 | /* |
37 | * Some useful "we don't have to do anything here" handlers. Should | 40 | * Some useful "we don't have to do anything here" handlers. Should |
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index efbcee5d2220..272c29a44f2a 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -151,7 +151,7 @@ static struct irq_chip cpu_interrupt_type = { | |||
151 | .enable = cpu_enable_irq, | 151 | .enable = cpu_enable_irq, |
152 | .disable = cpu_disable_irq, | 152 | .disable = cpu_disable_irq, |
153 | .ack = cpu_ack_irq, | 153 | .ack = cpu_ack_irq, |
154 | .end = cpu_end_irq, | 154 | .eoi = cpu_end_irq, |
155 | #ifdef CONFIG_SMP | 155 | #ifdef CONFIG_SMP |
156 | .set_affinity = cpu_set_affinity_irq, | 156 | .set_affinity = cpu_set_affinity_irq, |
157 | #endif | 157 | #endif |
@@ -247,10 +247,11 @@ int cpu_claim_irq(unsigned int irq, struct irq_chip *type, void *data) | |||
247 | if (irq_desc[irq].chip != &cpu_interrupt_type) | 247 | if (irq_desc[irq].chip != &cpu_interrupt_type) |
248 | return -EBUSY; | 248 | return -EBUSY; |
249 | 249 | ||
250 | /* for iosapic interrupts */ | ||
250 | if (type) { | 251 | if (type) { |
251 | irq_desc[irq].chip = type; | 252 | set_irq_chip_and_handler(irq, type, parisc_do_IRQ); |
252 | irq_desc[irq].chip_data = data; | 253 | set_irq_chip_data(irq, data); |
253 | cpu_interrupt_type.enable(irq); | 254 | cpu_enable_irq(irq); |
254 | } | 255 | } |
255 | return 0; | 256 | return 0; |
256 | } | 257 | } |
@@ -368,7 +369,7 @@ void do_cpu_irq_mask(struct pt_regs *regs) | |||
368 | goto set_out; | 369 | goto set_out; |
369 | } | 370 | } |
370 | #endif | 371 | #endif |
371 | __do_IRQ(irq); | 372 | generic_handle_irq(irq); |
372 | 373 | ||
373 | out: | 374 | out: |
374 | irq_exit(); | 375 | irq_exit(); |
@@ -398,14 +399,14 @@ static void claim_cpu_irqs(void) | |||
398 | { | 399 | { |
399 | int i; | 400 | int i; |
400 | for (i = CPU_IRQ_BASE; i <= CPU_IRQ_MAX; i++) { | 401 | for (i = CPU_IRQ_BASE; i <= CPU_IRQ_MAX; i++) { |
401 | irq_desc[i].chip = &cpu_interrupt_type; | 402 | set_irq_chip_and_handler(i, &cpu_interrupt_type, parisc_do_IRQ); |
402 | } | 403 | } |
403 | 404 | ||
404 | irq_desc[TIMER_IRQ].action = &timer_action; | 405 | set_irq_handler(TIMER_IRQ, handle_percpu_irq); |
405 | irq_desc[TIMER_IRQ].status = IRQ_PER_CPU; | 406 | setup_irq(TIMER_IRQ, &timer_action); |
406 | #ifdef CONFIG_SMP | 407 | #ifdef CONFIG_SMP |
407 | irq_desc[IPI_IRQ].action = &ipi_action; | 408 | set_irq_handler(IPI_IRQ, handle_percpu_irq); |
408 | irq_desc[IPI_IRQ].status = IRQ_PER_CPU; | 409 | setup_irq(IPI_IRQ, &ipi_action); |
409 | #endif | 410 | #endif |
410 | } | 411 | } |
411 | 412 | ||
@@ -423,3 +424,8 @@ void __init init_IRQ(void) | |||
423 | set_eiem(cpu_eiem); /* EIEM : enable all external intr */ | 424 | set_eiem(cpu_eiem); /* EIEM : enable all external intr */ |
424 | 425 | ||
425 | } | 426 | } |
427 | |||
428 | void parisc_do_IRQ(unsigned int irq, struct irq_desc *desc) | ||
429 | { | ||
430 | __do_IRQ(irq); | ||
431 | } | ||