Commit 664399e1fbdceb18da9c9c5534dedd62327c63e8

Authored by Russell King
Committed by Russell King
1 parent 7801907b8c

[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
... ... @@ -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
... ... @@ -95,7 +95,7 @@
95 95 }
96 96  
97 97 desc = irq_desc + isa_irq;
98   - desc->handle(isa_irq, desc, regs);
  98 + desc_handle_irq(isa_irq, desc, regs);
99 99 }
100 100  
101 101 static struct irqaction irq_cascade = { .handler = no_action, .name = "cascade", };
arch/arm/mach-h720x/common.c
... ... @@ -108,7 +108,7 @@
108 108 while (mask) {
109 109 if (mask & 1) {
110 110 IRQDBG("handling irq %d\n", irq);
111   - desc->handle(irq, desc, regs);
  111 + desc_handle_irq(irq, desc, regs);
112 112 }
113 113 irq++;
114 114 desc++;
arch/arm/mach-h720x/cpu-h7202.c
... ... @@ -126,7 +126,7 @@
126 126 desc = irq_desc + irq;
127 127 while (mask) {
128 128 if (mask & 1)
129   - desc->handle(irq, desc, regs);
  129 + desc_handle_irq(irq, desc, regs);
130 130 irq++;
131 131 desc++;
132 132 mask >>= 1;
arch/arm/mach-imx/irq.c
... ... @@ -152,7 +152,7 @@
152 152 while (mask) {
153 153 if (mask & 1) {
154 154 DEBUG_IRQ("handling irq %d\n", irq);
155   - desc->handle(irq, desc, regs);
  155 + desc_handle_irq(irq, desc, regs);
156 156 }
157 157 irq++;
158 158 desc++;
arch/arm/mach-integrator/integrator_cp.c
... ... @@ -170,7 +170,7 @@
170 170 irq += IRQ_SIC_START;
171 171  
172 172 desc = irq_desc + irq;
173   - desc->handle(irq, desc, regs);
  173 + desc_handle_irq(irq, desc, regs);
174 174 } while (status);
175 175 }
176 176  
arch/arm/mach-ixp2000/core.c
... ... @@ -317,7 +317,7 @@
317 317 for (i = 0; i <= 7; i++) {
318 318 if (status & (1<<i)) {
319 319 desc = irq_desc + i + IRQ_IXP2000_GPIO0;
320   - desc->handle(i + IRQ_IXP2000_GPIO0, desc, regs);
  320 + desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc, regs);
321 321 }
322 322 }
323 323 }
arch/arm/mach-ixp2000/ixdp2x00.c
... ... @@ -133,7 +133,7 @@
133 133 struct irqdesc *cpld_desc;
134 134 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
135 135 cpld_desc = irq_desc + cpld_irq;
136   - cpld_desc->handle(cpld_irq, cpld_desc, regs);
  136 + desc_handle_irq(cpld_irq, cpld_desc, regs);
137 137 }
138 138 }
139 139  
arch/arm/mach-ixp2000/ixdp2x01.c
... ... @@ -82,7 +82,7 @@
82 82 struct irqdesc *cpld_desc;
83 83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
84 84 cpld_desc = irq_desc + cpld_irq;
85   - cpld_desc->handle(cpld_irq, cpld_desc, regs);
  85 + desc_handle_irq(cpld_irq, cpld_desc, regs);
86 86 }
87 87 }
88 88  
arch/arm/mach-lh7a40x/common.h
... ... @@ -13,5 +13,5 @@
13 13 extern void lh7a400_init_irq (void);
14 14 extern void lh7a404_init_irq (void);
15 15  
16   -#define IRQ_DISPATCH(irq) irq_desc[irq].handle ((irq), &irq_desc[irq], regs)
  16 +#define IRQ_DISPATCH(irq) desc_handle_irq((irq),(irq_desc + irq), regs)
arch/arm/mach-omap1/fpga.c
... ... @@ -102,7 +102,7 @@
102 102 fpga_irq++, stat >>= 1) {
103 103 if (stat & 1) {
104 104 d = irq_desc + fpga_irq;
105   - d->handle(fpga_irq, d, regs);
  105 + desc_handle_irq(fpga_irq, d, regs);
106 106 }
107 107 }
108 108 }
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
... ... @@ -84,7 +84,7 @@
84 84 if (likely(pending)) {
85 85 irq = LUBBOCK_IRQ(0) + __ffs(pending);
86 86 desc = irq_desc + irq;
87   - desc->handle(irq, desc, regs);
  87 + desc_handle_irq(irq, desc, regs);
88 88 }
89 89 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
90 90 } while (pending);
arch/arm/mach-pxa/mainstone.c
... ... @@ -72,7 +72,7 @@
72 72 if (likely(pending)) {
73 73 irq = MAINSTONE_IRQ(0) + __ffs(pending);
74 74 desc = irq_desc + irq;
75   - desc->handle(irq, desc, regs);
  75 + desc_handle_irq(irq, desc, regs);
76 76 }
77 77 pending = MST_INTSETCLR & mainstone_irq_enabled;
78 78 } while (pending);
arch/arm/mach-s3c2410/bast-irq.c
... ... @@ -124,7 +124,7 @@
124 124 irqno = bast_pc104_irqs[i];
125 125 desc = irq_desc + irqno;
126 126  
127   - desc->handle(irqno, desc, regs);
  127 + desc_handle_irq(irqno, desc, regs);
128 128 }
129 129  
130 130 stat >>= 1;
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
... ... @@ -126,7 +126,7 @@
126 126 mask >>= 11;
127 127 do {
128 128 if (mask & 1)
129   - desc->handle(irq, desc, regs);
  129 + desc_handle_irq(irq, desc, regs);
130 130 mask >>= 1;
131 131 irq++;
132 132 desc++;
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
... ... @@ -108,7 +108,7 @@
108 108 irq += IRQ_SIC_START;
109 109  
110 110 desc = irq_desc + irq;
111   - desc->handle(irq, desc, regs);
  111 + desc_handle_irq(irq, desc, regs);
112 112 } while (status);
113 113 }
114 114  
arch/arm/plat-omap/gpio.c
... ... @@ -590,7 +590,7 @@
590 590 if (!(isr & 1))
591 591 continue;
592 592 d = irq_desc + gpio_irq;
593   - d->handle(gpio_irq, d, regs);
  593 + desc_handle_irq(gpio_irq, d, regs);
594 594 }
595 595 }
596 596  
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);