Commit 664399e1fbdceb18da9c9c5534dedd62327c63e8
Committed by
Russell King
1 parent
7801907b8c
Exists in
master
and in
4 other branches
[ARM] Wrap calls to descriptor handlers
This is part of Thomas Gleixner's generic IRQ patch, which converts ARM to use the generic IRQ subsystem. Here, we wrap calls to desc->handler() in an inline function, desc_handle_irq(). This reduces the size of Thomas' patch since the changes become more localised. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Showing 24 changed files with 49 additions and 41 deletions Side-by-side Diff
- arch/arm/common/locomo.c
- arch/arm/kernel/ecard.c
- arch/arm/kernel/irq.c
- arch/arm/mach-footbridge/isa-irq.c
- arch/arm/mach-h720x/common.c
- arch/arm/mach-h720x/cpu-h7202.c
- arch/arm/mach-imx/irq.c
- arch/arm/mach-integrator/integrator_cp.c
- arch/arm/mach-ixp2000/core.c
- arch/arm/mach-ixp2000/ixdp2x00.c
- arch/arm/mach-ixp2000/ixdp2x01.c
- arch/arm/mach-lh7a40x/common.h
- arch/arm/mach-omap1/fpga.c
- arch/arm/mach-pxa/irq.c
- arch/arm/mach-pxa/lubbock.c
- arch/arm/mach-pxa/mainstone.c
- arch/arm/mach-s3c2410/bast-irq.c
- arch/arm/mach-s3c2410/irq.c
- arch/arm/mach-s3c2410/s3c2440-irq.c
- arch/arm/mach-sa1100/irq.c
- arch/arm/mach-sa1100/neponset.c
- arch/arm/mach-versatile/core.c
- arch/arm/plat-omap/gpio.c
- include/asm-arm/mach/irq.h
arch/arm/common/locomo.c
| ... | ... | @@ -177,7 +177,7 @@ |
| 177 | 177 | d = irq_desc + irq; |
| 178 | 178 | for (i = 0; i <= 3; i++, d++, irq++) { |
| 179 | 179 | if (req & (0x0100 << i)) { |
| 180 | - d->handle(irq, d, regs); | |
| 180 | + desc_handle_irq(irq, d, regs); | |
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | } |
| ... | ... | @@ -220,7 +220,7 @@ |
| 220 | 220 | |
| 221 | 221 | if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { |
| 222 | 222 | d = irq_desc + LOCOMO_IRQ_KEY_START; |
| 223 | - d->handle(LOCOMO_IRQ_KEY_START, d, regs); | |
| 223 | + desc_handle_irq(LOCOMO_IRQ_KEY_START, d, regs); | |
| 224 | 224 | } |
| 225 | 225 | } |
| 226 | 226 | |
| ... | ... | @@ -273,7 +273,7 @@ |
| 273 | 273 | d = irq_desc + LOCOMO_IRQ_GPIO_START; |
| 274 | 274 | for (i = 0; i <= 15; i++, irq++, d++) { |
| 275 | 275 | if (req & (0x0001 << i)) { |
| 276 | - d->handle(irq, d, regs); | |
| 276 | + desc_handle_irq(irq, d, regs); | |
| 277 | 277 | } |
| 278 | 278 | } |
| 279 | 279 | } |
| ... | ... | @@ -328,7 +328,7 @@ |
| 328 | 328 | |
| 329 | 329 | if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { |
| 330 | 330 | d = irq_desc + LOCOMO_IRQ_LT_START; |
| 331 | - d->handle(LOCOMO_IRQ_LT_START, d, regs); | |
| 331 | + desc_handle_irq(LOCOMO_IRQ_LT_START, d, regs); | |
| 332 | 332 | } |
| 333 | 333 | } |
| 334 | 334 | |
| ... | ... | @@ -379,7 +379,7 @@ |
| 379 | 379 | |
| 380 | 380 | for (i = 0; i <= 3; i++, irq++, d++) { |
| 381 | 381 | if (req & (0x0001 << i)) { |
| 382 | - d->handle(irq, d, regs); | |
| 382 | + desc_handle_irq(irq, d, regs); | |
| 383 | 383 | } |
| 384 | 384 | } |
| 385 | 385 | } |
arch/arm/kernel/ecard.c
| ... | ... | @@ -585,7 +585,7 @@ |
| 585 | 585 | |
| 586 | 586 | if (pending) { |
| 587 | 587 | struct irqdesc *d = irq_desc + ec->irq; |
| 588 | - d->handle(ec->irq, d, regs); | |
| 588 | + desc_handle_irq(ec->irq, d, regs); | |
| 589 | 589 | called ++; |
| 590 | 590 | } |
| 591 | 591 | } |
| ... | ... | @@ -632,7 +632,7 @@ |
| 632 | 632 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 |
| 633 | 633 | * otherwise you will lose serial data at high speeds! |
| 634 | 634 | */ |
| 635 | - d->handle(ec->irq, d, regs); | |
| 635 | + desc_handle_irq(ec->irq, d, regs); | |
| 636 | 636 | } else { |
| 637 | 637 | printk(KERN_WARNING "card%d: interrupt from unclaimed " |
| 638 | 638 | "card???\n", slot); |
arch/arm/kernel/irq.c
| ... | ... | @@ -517,7 +517,7 @@ |
| 517 | 517 | list_for_each_safe(l, n, &head) { |
| 518 | 518 | desc = list_entry(l, struct irqdesc, pend); |
| 519 | 519 | list_del_init(&desc->pend); |
| 520 | - desc->handle(desc - irq_desc, desc, regs); | |
| 520 | + desc_handle_irq(desc - irq_desc, desc, regs); | |
| 521 | 521 | } |
| 522 | 522 | |
| 523 | 523 | /* |
| ... | ... | @@ -545,7 +545,7 @@ |
| 545 | 545 | |
| 546 | 546 | irq_enter(); |
| 547 | 547 | spin_lock(&irq_controller_lock); |
| 548 | - desc->handle(irq, desc, regs); | |
| 548 | + desc_handle_irq(irq, desc, regs); | |
| 549 | 549 | |
| 550 | 550 | /* |
| 551 | 551 | * Now re-run any pending interrupts. |
arch/arm/mach-footbridge/isa-irq.c
arch/arm/mach-h720x/common.c
arch/arm/mach-h720x/cpu-h7202.c
arch/arm/mach-imx/irq.c
arch/arm/mach-integrator/integrator_cp.c
arch/arm/mach-ixp2000/core.c
arch/arm/mach-ixp2000/ixdp2x00.c
arch/arm/mach-ixp2000/ixdp2x01.c
arch/arm/mach-lh7a40x/common.h
arch/arm/mach-omap1/fpga.c
arch/arm/mach-pxa/irq.c
| ... | ... | @@ -157,7 +157,7 @@ |
| 157 | 157 | mask >>= 2; |
| 158 | 158 | do { |
| 159 | 159 | if (mask & 1) |
| 160 | - desc->handle(irq, desc, regs); | |
| 160 | + desc_handle_irq(irq, desc, regs); | |
| 161 | 161 | irq++; |
| 162 | 162 | desc++; |
| 163 | 163 | mask >>= 1; |
| ... | ... | @@ -172,7 +172,7 @@ |
| 172 | 172 | desc = irq_desc + irq; |
| 173 | 173 | do { |
| 174 | 174 | if (mask & 1) |
| 175 | - desc->handle(irq, desc, regs); | |
| 175 | + desc_handle_irq(irq, desc, regs); | |
| 176 | 176 | irq++; |
| 177 | 177 | desc++; |
| 178 | 178 | mask >>= 1; |
| ... | ... | @@ -187,7 +187,7 @@ |
| 187 | 187 | desc = irq_desc + irq; |
| 188 | 188 | do { |
| 189 | 189 | if (mask & 1) |
| 190 | - desc->handle(irq, desc, regs); | |
| 190 | + desc_handle_irq(irq, desc, regs); | |
| 191 | 191 | irq++; |
| 192 | 192 | desc++; |
| 193 | 193 | mask >>= 1; |
| ... | ... | @@ -203,7 +203,7 @@ |
| 203 | 203 | desc = irq_desc + irq; |
| 204 | 204 | do { |
| 205 | 205 | if (mask & 1) |
| 206 | - desc->handle(irq, desc, regs); | |
| 206 | + desc_handle_irq(irq, desc, regs); | |
| 207 | 207 | irq++; |
| 208 | 208 | desc++; |
| 209 | 209 | mask >>= 1; |
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-s3c2410/bast-irq.c
arch/arm/mach-s3c2410/irq.c
| ... | ... | @@ -496,11 +496,11 @@ |
| 496 | 496 | if (subsrc != 0) { |
| 497 | 497 | if (subsrc & 1) { |
| 498 | 498 | mydesc = irq_desc + IRQ_TC; |
| 499 | - mydesc->handle( IRQ_TC, mydesc, regs); | |
| 499 | + desc_handle_irq(IRQ_TC, mydesc, regs); | |
| 500 | 500 | } |
| 501 | 501 | if (subsrc & 2) { |
| 502 | 502 | mydesc = irq_desc + IRQ_ADC; |
| 503 | - mydesc->handle(IRQ_ADC, mydesc, regs); | |
| 503 | + desc_handle_irq(IRQ_ADC, mydesc, regs); | |
| 504 | 504 | } |
| 505 | 505 | } |
| 506 | 506 | } |
| 507 | 507 | |
| 508 | 508 | |
| ... | ... | @@ -529,17 +529,17 @@ |
| 529 | 529 | desc = irq_desc + start; |
| 530 | 530 | |
| 531 | 531 | if (subsrc & 1) |
| 532 | - desc->handle(start, desc, regs); | |
| 532 | + desc_handle_irq(start, desc, regs); | |
| 533 | 533 | |
| 534 | 534 | desc++; |
| 535 | 535 | |
| 536 | 536 | if (subsrc & 2) |
| 537 | - desc->handle(start+1, desc, regs); | |
| 537 | + desc_handle_irq(start+1, desc, regs); | |
| 538 | 538 | |
| 539 | 539 | desc++; |
| 540 | 540 | |
| 541 | 541 | if (subsrc & 4) |
| 542 | - desc->handle(start+2, desc, regs); | |
| 542 | + desc_handle_irq(start+2, desc, regs); | |
| 543 | 543 | } |
| 544 | 544 | } |
| 545 | 545 |
arch/arm/mach-s3c2410/s3c2440-irq.c
| ... | ... | @@ -64,11 +64,11 @@ |
| 64 | 64 | if (subsrc != 0) { |
| 65 | 65 | if (subsrc & 1) { |
| 66 | 66 | mydesc = irq_desc + IRQ_S3C2440_WDT; |
| 67 | - mydesc->handle( IRQ_S3C2440_WDT, mydesc, regs); | |
| 67 | + desc_handle_irq(IRQ_S3C2440_WDT, mydesc, regs); | |
| 68 | 68 | } |
| 69 | 69 | if (subsrc & 2) { |
| 70 | 70 | mydesc = irq_desc + IRQ_S3C2440_AC97; |
| 71 | - mydesc->handle(IRQ_S3C2440_AC97, mydesc, regs); | |
| 71 | + desc_handle_irq(IRQ_S3C2440_AC97, mydesc, regs); | |
| 72 | 72 | } |
| 73 | 73 | } |
| 74 | 74 | } |
| 75 | 75 | |
| ... | ... | @@ -122,11 +122,11 @@ |
| 122 | 122 | if (subsrc != 0) { |
| 123 | 123 | if (subsrc & 1) { |
| 124 | 124 | mydesc = irq_desc + IRQ_S3C2440_CAM_C; |
| 125 | - mydesc->handle( IRQ_S3C2440_WDT, mydesc, regs); | |
| 125 | + desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc, regs); | |
| 126 | 126 | } |
| 127 | 127 | if (subsrc & 2) { |
| 128 | 128 | mydesc = irq_desc + IRQ_S3C2440_CAM_P; |
| 129 | - mydesc->handle(IRQ_S3C2440_AC97, mydesc, regs); | |
| 129 | + desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc, regs); | |
| 130 | 130 | } |
| 131 | 131 | } |
| 132 | 132 | } |
arch/arm/mach-sa1100/irq.c
arch/arm/mach-sa1100/neponset.c
| ... | ... | @@ -61,12 +61,12 @@ |
| 61 | 61 | |
| 62 | 62 | if (irr & IRR_ETHERNET) { |
| 63 | 63 | d = irq_desc + IRQ_NEPONSET_SMC9196; |
| 64 | - d->handle(IRQ_NEPONSET_SMC9196, d, regs); | |
| 64 | + desc_handle_irq(IRQ_NEPONSET_SMC9196, d, regs); | |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | 67 | if (irr & IRR_USAR) { |
| 68 | 68 | d = irq_desc + IRQ_NEPONSET_USAR; |
| 69 | - d->handle(IRQ_NEPONSET_USAR, d, regs); | |
| 69 | + desc_handle_irq(IRQ_NEPONSET_USAR, d, regs); | |
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | desc->chip->unmask(irq); |
| ... | ... | @@ -74,7 +74,7 @@ |
| 74 | 74 | |
| 75 | 75 | if (irr & IRR_SA1111) { |
| 76 | 76 | d = irq_desc + IRQ_NEPONSET_SA1111; |
| 77 | - d->handle(IRQ_NEPONSET_SA1111, d, regs); | |
| 77 | + desc_handle_irq(IRQ_NEPONSET_SA1111, d, regs); | |
| 78 | 78 | } |
| 79 | 79 | } |
| 80 | 80 | } |
arch/arm/mach-versatile/core.c
arch/arm/plat-omap/gpio.c
include/asm-arm/mach/irq.h
| ... | ... | @@ -92,6 +92,14 @@ |
| 92 | 92 | extern struct irqdesc irq_desc[]; |
| 93 | 93 | |
| 94 | 94 | /* |
| 95 | + * Helpful inline function for calling irq descriptor handlers. | |
| 96 | + */ | |
| 97 | +static inline void desc_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | |
| 98 | +{ | |
| 99 | + desc->handle(irq, desc, regs); | |
| 100 | +} | |
| 101 | + | |
| 102 | +/* | |
| 95 | 103 | * This is internal. Do not use it. |
| 96 | 104 | */ |
| 97 | 105 | extern void (*init_arch_irq)(void); |