diff options
Diffstat (limited to 'arch/arm')
42 files changed, 72 insertions, 162 deletions
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index 5fe9588db077..2793447621c3 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c | |||
@@ -66,14 +66,6 @@ static void it8152_unmask_irq(unsigned int irq) | |||
66 | } | 66 | } |
67 | } | 67 | } |
68 | 68 | ||
69 | static inline void it8152_irq(int irq) | ||
70 | { | ||
71 | struct irq_desc *desc; | ||
72 | |||
73 | desc = irq_desc + irq; | ||
74 | desc_handle_irq(irq, desc); | ||
75 | } | ||
76 | |||
77 | static struct irq_chip it8152_irq_chip = { | 69 | static struct irq_chip it8152_irq_chip = { |
78 | .name = "it8152", | 70 | .name = "it8152", |
79 | .ack = it8152_mask_irq, | 71 | .ack = it8152_mask_irq, |
@@ -128,21 +120,21 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc) | |||
128 | bits_pd &= ((1 << IT8152_PD_IRQ_COUNT) - 1); | 120 | bits_pd &= ((1 << IT8152_PD_IRQ_COUNT) - 1); |
129 | while (bits_pd) { | 121 | while (bits_pd) { |
130 | i = __ffs(bits_pd); | 122 | i = __ffs(bits_pd); |
131 | it8152_irq(IT8152_PD_IRQ(i)); | 123 | generic_handle_irq(IT8152_PD_IRQ(i)); |
132 | bits_pd &= ~(1 << i); | 124 | bits_pd &= ~(1 << i); |
133 | } | 125 | } |
134 | 126 | ||
135 | bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1); | 127 | bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1); |
136 | while (bits_lp) { | 128 | while (bits_lp) { |
137 | i = __ffs(bits_lp); | 129 | i = __ffs(bits_lp); |
138 | it8152_irq(IT8152_LP_IRQ(i)); | 130 | generic_handle_irq(IT8152_LP_IRQ(i)); |
139 | bits_lp &= ~(1 << i); | 131 | bits_lp &= ~(1 << i); |
140 | } | 132 | } |
141 | 133 | ||
142 | bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1); | 134 | bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1); |
143 | while (bits_ld) { | 135 | while (bits_ld) { |
144 | i = __ffs(bits_ld); | 136 | i = __ffs(bits_ld); |
145 | it8152_irq(IT8152_LD_IRQ(i)); | 137 | generic_handle_irq(IT8152_LD_IRQ(i)); |
146 | bits_ld &= ~(1 << i); | 138 | bits_ld &= ~(1 << i); |
147 | } | 139 | } |
148 | } | 140 | } |
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c index 283051eaf931..8f473b7c3494 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c | |||
@@ -169,7 +169,6 @@ static struct locomo_dev_info locomo_devices[] = { | |||
169 | static void locomo_handler(unsigned int irq, struct irq_desc *desc) | 169 | static void locomo_handler(unsigned int irq, struct irq_desc *desc) |
170 | { | 170 | { |
171 | int req, i; | 171 | int req, i; |
172 | struct irq_desc *d; | ||
173 | void __iomem *mapbase = get_irq_chip_data(irq); | 172 | void __iomem *mapbase = get_irq_chip_data(irq); |
174 | 173 | ||
175 | /* Acknowledge the parent IRQ */ | 174 | /* Acknowledge the parent IRQ */ |
@@ -181,10 +180,9 @@ static void locomo_handler(unsigned int irq, struct irq_desc *desc) | |||
181 | if (req) { | 180 | if (req) { |
182 | /* generate the next interrupt(s) */ | 181 | /* generate the next interrupt(s) */ |
183 | irq = LOCOMO_IRQ_START; | 182 | irq = LOCOMO_IRQ_START; |
184 | d = irq_desc + irq; | 183 | for (i = 0; i <= 3; i++, irq++) { |
185 | for (i = 0; i <= 3; i++, d++, irq++) { | ||
186 | if (req & (0x0100 << i)) { | 184 | if (req & (0x0100 << i)) { |
187 | desc_handle_irq(irq, d); | 185 | generic_handle_irq(irq); |
188 | } | 186 | } |
189 | 187 | ||
190 | } | 188 | } |
@@ -222,12 +220,10 @@ static struct irq_chip locomo_chip = { | |||
222 | 220 | ||
223 | static void locomo_key_handler(unsigned int irq, struct irq_desc *desc) | 221 | static void locomo_key_handler(unsigned int irq, struct irq_desc *desc) |
224 | { | 222 | { |
225 | struct irq_desc *d; | ||
226 | void __iomem *mapbase = get_irq_chip_data(irq); | 223 | void __iomem *mapbase = get_irq_chip_data(irq); |
227 | 224 | ||
228 | if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { | 225 | if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { |
229 | d = irq_desc + LOCOMO_IRQ_KEY_START; | 226 | generic_handle_irq(LOCOMO_IRQ_KEY_START); |
230 | desc_handle_irq(LOCOMO_IRQ_KEY_START, d); | ||
231 | } | 227 | } |
232 | } | 228 | } |
233 | 229 | ||
@@ -268,7 +264,6 @@ static struct irq_chip locomo_key_chip = { | |||
268 | static void locomo_gpio_handler(unsigned int irq, struct irq_desc *desc) | 264 | static void locomo_gpio_handler(unsigned int irq, struct irq_desc *desc) |
269 | { | 265 | { |
270 | int req, i; | 266 | int req, i; |
271 | struct irq_desc *d; | ||
272 | void __iomem *mapbase = get_irq_chip_data(irq); | 267 | void __iomem *mapbase = get_irq_chip_data(irq); |
273 | 268 | ||
274 | req = locomo_readl(mapbase + LOCOMO_GIR) & | 269 | req = locomo_readl(mapbase + LOCOMO_GIR) & |
@@ -277,10 +272,9 @@ static void locomo_gpio_handler(unsigned int irq, struct irq_desc *desc) | |||
277 | 272 | ||
278 | if (req) { | 273 | if (req) { |
279 | irq = LOCOMO_IRQ_GPIO_START; | 274 | irq = LOCOMO_IRQ_GPIO_START; |
280 | d = irq_desc + LOCOMO_IRQ_GPIO_START; | 275 | for (i = 0; i <= 15; i++, irq++) { |
281 | for (i = 0; i <= 15; i++, irq++, d++) { | ||
282 | if (req & (0x0001 << i)) { | 276 | if (req & (0x0001 << i)) { |
283 | desc_handle_irq(irq, d); | 277 | generic_handle_irq(irq); |
284 | } | 278 | } |
285 | } | 279 | } |
286 | } | 280 | } |
@@ -361,12 +355,10 @@ static struct irq_chip locomo_gpio_chip = { | |||
361 | 355 | ||
362 | static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc) | 356 | static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc) |
363 | { | 357 | { |
364 | struct irq_desc *d; | ||
365 | void __iomem *mapbase = get_irq_chip_data(irq); | 358 | void __iomem *mapbase = get_irq_chip_data(irq); |
366 | 359 | ||
367 | if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { | 360 | if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { |
368 | d = irq_desc + LOCOMO_IRQ_LT_START; | 361 | generic_handle_irq(LOCOMO_IRQ_LT_START); |
369 | desc_handle_irq(LOCOMO_IRQ_LT_START, d); | ||
370 | } | 362 | } |
371 | } | 363 | } |
372 | 364 | ||
@@ -407,17 +399,15 @@ static struct irq_chip locomo_lt_chip = { | |||
407 | static void locomo_spi_handler(unsigned int irq, struct irq_desc *desc) | 399 | static void locomo_spi_handler(unsigned int irq, struct irq_desc *desc) |
408 | { | 400 | { |
409 | int req, i; | 401 | int req, i; |
410 | struct irq_desc *d; | ||
411 | void __iomem *mapbase = get_irq_chip_data(irq); | 402 | void __iomem *mapbase = get_irq_chip_data(irq); |
412 | 403 | ||
413 | req = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIR) & 0x000F; | 404 | req = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIR) & 0x000F; |
414 | if (req) { | 405 | if (req) { |
415 | irq = LOCOMO_IRQ_SPI_START; | 406 | irq = LOCOMO_IRQ_SPI_START; |
416 | d = irq_desc + irq; | ||
417 | 407 | ||
418 | for (i = 0; i <= 3; i++, irq++, d++) { | 408 | for (i = 0; i <= 3; i++, irq++) { |
419 | if (req & (0x0001 << i)) { | 409 | if (req & (0x0001 << i)) { |
420 | desc_handle_irq(irq, d); | 410 | generic_handle_irq(irq); |
421 | } | 411 | } |
422 | } | 412 | } |
423 | } | 413 | } |
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index 7a50575a8d4d..60c079d85355 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c | |||
@@ -587,8 +587,7 @@ ecard_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
587 | pending = ecard_default_ops.irqpending(ec); | 587 | pending = ecard_default_ops.irqpending(ec); |
588 | 588 | ||
589 | if (pending) { | 589 | if (pending) { |
590 | struct irq_desc *d = irq_desc + ec->irq; | 590 | generic_handle_irq(ec->irq); |
591 | desc_handle_irq(ec->irq, d); | ||
592 | called ++; | 591 | called ++; |
593 | } | 592 | } |
594 | } | 593 | } |
@@ -622,7 +621,6 @@ ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc) | |||
622 | ecard_t *ec = slot_to_ecard(slot); | 621 | ecard_t *ec = slot_to_ecard(slot); |
623 | 622 | ||
624 | if (ec->claimed) { | 623 | if (ec->claimed) { |
625 | struct irq_desc *d = irq_desc + ec->irq; | ||
626 | /* | 624 | /* |
627 | * this ugly code is so that we can operate a | 625 | * this ugly code is so that we can operate a |
628 | * prioritorising system: | 626 | * prioritorising system: |
@@ -635,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc) | |||
635 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 | 633 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 |
636 | * otherwise you will lose serial data at high speeds! | 634 | * otherwise you will lose serial data at high speeds! |
637 | */ | 635 | */ |
638 | desc_handle_irq(ec->irq, d); | 636 | generic_handle_irq(ec->irq); |
639 | } else { | 637 | } else { |
640 | printk(KERN_WARNING "card%d: interrupt from unclaimed " | 638 | printk(KERN_WARNING "card%d: interrupt from unclaimed " |
641 | "card???\n", slot); | 639 | "card???\n", slot); |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index f88efb135b70..2f3eb795fa6e 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -112,18 +112,17 @@ static struct irq_desc bad_irq_desc = { | |||
112 | asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | 112 | asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) |
113 | { | 113 | { |
114 | struct pt_regs *old_regs = set_irq_regs(regs); | 114 | struct pt_regs *old_regs = set_irq_regs(regs); |
115 | struct irq_desc *desc = irq_desc + irq; | 115 | |
116 | irq_enter(); | ||
116 | 117 | ||
117 | /* | 118 | /* |
118 | * Some hardware gives randomly wrong interrupts. Rather | 119 | * Some hardware gives randomly wrong interrupts. Rather |
119 | * than crashing, do something sensible. | 120 | * than crashing, do something sensible. |
120 | */ | 121 | */ |
121 | if (irq >= NR_IRQS) | 122 | if (irq >= NR_IRQS) |
122 | desc = &bad_irq_desc; | 123 | handle_bad_irq(irq, &bad_irq_desc); |
123 | 124 | else | |
124 | irq_enter(); | 125 | generic_handle_irq(irq); |
125 | |||
126 | desc_handle_irq(irq, desc); | ||
127 | 126 | ||
128 | /* AT91 specific workaround */ | 127 | /* AT91 specific workaround */ |
129 | irq_finish(irq); | 128 | irq_finish(irq); |
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 8392d5b517f1..94c2f96811f9 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -404,7 +404,6 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
404 | } | 404 | } |
405 | 405 | ||
406 | pin = bank->chipbase; | 406 | pin = bank->chipbase; |
407 | gpio = &irq_desc[pin]; | ||
408 | 407 | ||
409 | while (isr) { | 408 | while (isr) { |
410 | if (isr & 1) { | 409 | if (isr & 1) { |
@@ -417,7 +416,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
417 | gpio_irq_mask(pin); | 416 | gpio_irq_mask(pin); |
418 | } | 417 | } |
419 | else | 418 | else |
420 | desc_handle_irq(pin, gpio); | 419 | generic_handle_irq(pin); |
421 | } | 420 | } |
422 | pin++; | 421 | pin++; |
423 | gpio++; | 422 | gpio++; |
diff --git a/arch/arm/mach-davinci/gpio.c b/arch/arm/mach-davinci/gpio.c index c9cb4f09b18f..574cb810a500 100644 --- a/arch/arm/mach-davinci/gpio.c +++ b/arch/arm/mach-davinci/gpio.c | |||
@@ -201,7 +201,6 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
201 | desc->chip->ack(irq); | 201 | desc->chip->ack(irq); |
202 | while (1) { | 202 | while (1) { |
203 | u32 status; | 203 | u32 status; |
204 | struct irq_desc *gpio; | ||
205 | int n; | 204 | int n; |
206 | int res; | 205 | int res; |
207 | 206 | ||
@@ -215,12 +214,10 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc) | |||
215 | 214 | ||
216 | /* now demux them to the right lowlevel handler */ | 215 | /* now demux them to the right lowlevel handler */ |
217 | n = (int)get_irq_data(irq); | 216 | n = (int)get_irq_data(irq); |
218 | gpio = &irq_desc[n]; | ||
219 | while (status) { | 217 | while (status) { |
220 | res = ffs(status); | 218 | res = ffs(status); |
221 | n += res; | 219 | n += res; |
222 | gpio += res; | 220 | generic_handle_irq(n - 1); |
223 | desc_handle_irq(n - 1, gpio - 1); | ||
224 | status >>= res; | 221 | status >>= res; |
225 | } | 222 | } |
226 | } | 223 | } |
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index f99f43669392..68ee82b49597 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c | |||
@@ -192,8 +192,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
192 | for (i = 0; i < 8; i++) { | 192 | for (i = 0; i < 8; i++) { |
193 | if (status & (1 << i)) { | 193 | if (status & (1 << i)) { |
194 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_A(0)) + i; | 194 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_A(0)) + i; |
195 | desc = irq_desc + gpio_irq; | 195 | generic_handle_irq(gpio_irq); |
196 | desc_handle_irq(gpio_irq, desc); | ||
197 | } | 196 | } |
198 | } | 197 | } |
199 | 198 | ||
@@ -202,7 +201,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
202 | if (status & (1 << i)) { | 201 | if (status & (1 << i)) { |
203 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_B(0)) + i; | 202 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_B(0)) + i; |
204 | desc = irq_desc + gpio_irq; | 203 | desc = irq_desc + gpio_irq; |
205 | desc_handle_irq(gpio_irq, desc); | 204 | generic_handle_irq(gpio_irq); |
206 | } | 205 | } |
207 | } | 206 | } |
208 | } | 207 | } |
@@ -217,7 +216,7 @@ static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
217 | int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */ | 216 | int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */ |
218 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx; | 217 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx; |
219 | 218 | ||
220 | desc_handle_irq(gpio_irq, irq_desc + gpio_irq); | 219 | generic_handle_irq(gpio_irq); |
221 | } | 220 | } |
222 | 221 | ||
223 | static void ep93xx_gpio_irq_ack(unsigned int irq) | 222 | static void ep93xx_gpio_irq_ack(unsigned int irq) |
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c index 7132e522c366..d5a29a0e7d9d 100644 --- a/arch/arm/mach-footbridge/isa-irq.c +++ b/arch/arm/mach-footbridge/isa-irq.c | |||
@@ -94,8 +94,7 @@ isa_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
94 | return; | 94 | return; |
95 | } | 95 | } |
96 | 96 | ||
97 | desc = irq_desc + isa_irq; | 97 | generic_handle_irq(isa_irq); |
98 | desc_handle_irq(isa_irq, desc); | ||
99 | } | 98 | } |
100 | 99 | ||
101 | static struct irqaction irq_cascade = { | 100 | static struct irqaction irq_cascade = { |
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c index b5f9741ae13c..c1fa44cff38d 100644 --- a/arch/arm/mach-h720x/common.c +++ b/arch/arm/mach-h720x/common.c | |||
@@ -104,14 +104,12 @@ h720x_gpio_handler(unsigned int mask, unsigned int irq, | |||
104 | struct irq_desc *desc) | 104 | struct irq_desc *desc) |
105 | { | 105 | { |
106 | IRQDBG("%s irq: %d\n", __func__, irq); | 106 | IRQDBG("%s irq: %d\n", __func__, irq); |
107 | desc = irq_desc + irq; | ||
108 | while (mask) { | 107 | while (mask) { |
109 | if (mask & 1) { | 108 | if (mask & 1) { |
110 | IRQDBG("handling irq %d\n", irq); | 109 | IRQDBG("handling irq %d\n", irq); |
111 | desc_handle_irq(irq, desc); | 110 | generic_handle_irq(irq); |
112 | } | 111 | } |
113 | irq++; | 112 | irq++; |
114 | desc++; | ||
115 | mask >>= 1; | 113 | mask >>= 1; |
116 | } | 114 | } |
117 | } | 115 | } |
diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c index 53e1f62f2e79..fd33a19c813a 100644 --- a/arch/arm/mach-h720x/cpu-h7202.c +++ b/arch/arm/mach-h720x/cpu-h7202.c | |||
@@ -120,12 +120,10 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
120 | 120 | ||
121 | mask >>= 1; | 121 | mask >>= 1; |
122 | irq = IRQ_TIMER1; | 122 | irq = IRQ_TIMER1; |
123 | desc = irq_desc + irq; | ||
124 | while (mask) { | 123 | while (mask) { |
125 | if (mask & 1) | 124 | if (mask & 1) |
126 | desc_handle_irq(irq, desc); | 125 | generic_handle_irq(irq); |
127 | irq++; | 126 | irq++; |
128 | desc++; | ||
129 | mask >>= 1; | 127 | mask >>= 1; |
130 | } | 128 | } |
131 | } | 129 | } |
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c index 798f221eb3b7..cbdd7d1dac92 100644 --- a/arch/arm/mach-imx/irq.c +++ b/arch/arm/mach-imx/irq.c | |||
@@ -182,14 +182,12 @@ static void | |||
182 | imx_gpio_handler(unsigned int mask, unsigned int irq, | 182 | imx_gpio_handler(unsigned int mask, unsigned int irq, |
183 | struct irq_desc *desc) | 183 | struct irq_desc *desc) |
184 | { | 184 | { |
185 | desc = irq_desc + irq; | ||
186 | while (mask) { | 185 | while (mask) { |
187 | if (mask & 1) { | 186 | if (mask & 1) { |
188 | DEBUG_IRQ("handling irq %d\n", irq); | 187 | DEBUG_IRQ("handling irq %d\n", irq); |
189 | desc_handle_irq(irq, desc); | 188 | generic_handle_irq(irq); |
190 | } | 189 | } |
191 | irq++; | 190 | irq++; |
192 | desc++; | ||
193 | mask >>= 1; | 191 | mask >>= 1; |
194 | } | 192 | } |
195 | } | 193 | } |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 6b99e9c258bd..0c9a91d6ec83 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
@@ -217,8 +217,7 @@ sic_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
217 | 217 | ||
218 | irq += IRQ_SIC_START; | 218 | irq += IRQ_SIC_START; |
219 | 219 | ||
220 | desc = irq_desc + irq; | 220 | generic_handle_irq(irq); |
221 | desc_handle_irq(irq, desc); | ||
222 | } while (status); | 221 | } while (status); |
223 | } | 222 | } |
224 | 223 | ||
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c index 63ef1124ca5c..f34b0ed80630 100644 --- a/arch/arm/mach-iop13xx/msi.c +++ b/arch/arm/mach-iop13xx/msi.c | |||
@@ -110,8 +110,7 @@ static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc) | |||
110 | do { | 110 | do { |
111 | j = find_first_bit(&status, 32); | 111 | j = find_first_bit(&status, 32); |
112 | (write_imipr[i])(1 << j); /* write back to clear bit */ | 112 | (write_imipr[i])(1 << j); /* write back to clear bit */ |
113 | desc = irq_desc + IRQ_IOP13XX_MSI_0 + j + (32*i); | 113 | generic_handle_irq(IRQ_IOP13XX_MSI_0 + j + (32*i)); |
114 | desc_handle_irq(IRQ_IOP13XX_MSI_0 + j + (32*i), desc); | ||
115 | status = (read_imipr[i])(); | 114 | status = (read_imipr[i])(); |
116 | } while (status); | 115 | } while (status); |
117 | } | 116 | } |
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c index a6a4f93085fd..e193a34e4175 100644 --- a/arch/arm/mach-ixp2000/core.c +++ b/arch/arm/mach-ixp2000/core.c | |||
@@ -311,8 +311,7 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
311 | 311 | ||
312 | for (i = 0; i <= 7; i++) { | 312 | for (i = 0; i <= 7; i++) { |
313 | if (status & (1<<i)) { | 313 | if (status & (1<<i)) { |
314 | desc = irq_desc + i + IRQ_IXP2000_GPIO0; | 314 | generic_handle_irq(i + IRQ_IXP2000_GPIO0); |
315 | desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc); | ||
316 | } | 315 | } |
317 | } | 316 | } |
318 | } | 317 | } |
@@ -404,8 +403,7 @@ static void ixp2000_err_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
404 | 403 | ||
405 | for(i = 31; i >= 0; i--) { | 404 | for(i = 31; i >= 0; i--) { |
406 | if(status & (1 << i)) { | 405 | if(status & (1 << i)) { |
407 | desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i; | 406 | generic_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i); |
408 | desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc); | ||
409 | } | 407 | } |
410 | } | 408 | } |
411 | } | 409 | } |
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c index 5a781fd9757a..4c749d490241 100644 --- a/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/arch/arm/mach-ixp2000/ixdp2x00.c | |||
@@ -129,10 +129,8 @@ static void ixdp2x00_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
129 | 129 | ||
130 | for(i = 0; i < board_irq_count; i++) { | 130 | for(i = 0; i < board_irq_count; i++) { |
131 | if(ex_interrupt & (1 << i)) { | 131 | if(ex_interrupt & (1 << i)) { |
132 | struct irq_desc *cpld_desc; | ||
133 | int cpld_irq = IXP2000_BOARD_IRQ(0) + i; | 132 | int cpld_irq = IXP2000_BOARD_IRQ(0) + i; |
134 | cpld_desc = irq_desc + cpld_irq; | 133 | generic_handle_irq(cpld_irq); |
135 | desc_handle_irq(cpld_irq, cpld_desc); | ||
136 | } | 134 | } |
137 | } | 135 | } |
138 | 136 | ||
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c index 78a2341dee2c..b78c08d1f638 100644 --- a/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/arch/arm/mach-ixp2000/ixdp2x01.c | |||
@@ -79,10 +79,8 @@ static void ixdp2x01_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
79 | 79 | ||
80 | for (i = 0; i < IXP2000_BOARD_IRQS; i++) { | 80 | for (i = 0; i < IXP2000_BOARD_IRQS; i++) { |
81 | if (ex_interrupt & (1 << i)) { | 81 | if (ex_interrupt & (1 << i)) { |
82 | struct irq_desc *cpld_desc; | ||
83 | int cpld_irq = IXP2000_BOARD_IRQ(0) + i; | 82 | int cpld_irq = IXP2000_BOARD_IRQ(0) + i; |
84 | cpld_desc = irq_desc + cpld_irq; | 83 | generic_handle_irq(cpld_irq); |
85 | desc_handle_irq(cpld_irq, cpld_desc); | ||
86 | } | 84 | } |
87 | } | 85 | } |
88 | 86 | ||
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c index 68b4ac5b2481..aa4c4420ff3d 100644 --- a/arch/arm/mach-ixp23xx/core.c +++ b/arch/arm/mach-ixp23xx/core.c | |||
@@ -253,7 +253,6 @@ static void pci_handler(unsigned int irq, struct irq_desc *desc) | |||
253 | { | 253 | { |
254 | u32 pci_interrupt; | 254 | u32 pci_interrupt; |
255 | unsigned int irqno; | 255 | unsigned int irqno; |
256 | struct irq_desc *int_desc; | ||
257 | 256 | ||
258 | pci_interrupt = *IXP23XX_PCI_XSCALE_INT_STATUS; | 257 | pci_interrupt = *IXP23XX_PCI_XSCALE_INT_STATUS; |
259 | 258 | ||
@@ -268,8 +267,7 @@ static void pci_handler(unsigned int irq, struct irq_desc *desc) | |||
268 | BUG(); | 267 | BUG(); |
269 | } | 268 | } |
270 | 269 | ||
271 | int_desc = irq_desc + irqno; | 270 | generic_handle_irq(irqno); |
272 | desc_handle_irq(irqno, int_desc); | ||
273 | 271 | ||
274 | desc->chip->unmask(irq); | 272 | desc->chip->unmask(irq); |
275 | } | 273 | } |
diff --git a/arch/arm/mach-ixp23xx/ixdp2351.c b/arch/arm/mach-ixp23xx/ixdp2351.c index b6e0bfa44df9..f1b124a709ab 100644 --- a/arch/arm/mach-ixp23xx/ixdp2351.c +++ b/arch/arm/mach-ixp23xx/ixdp2351.c | |||
@@ -68,11 +68,9 @@ static void ixdp2351_inta_handler(unsigned int irq, struct irq_desc *desc) | |||
68 | 68 | ||
69 | for (i = 0; i < IXDP2351_INTA_IRQ_NUM; i++) { | 69 | for (i = 0; i < IXDP2351_INTA_IRQ_NUM; i++) { |
70 | if (ex_interrupt & (1 << i)) { | 70 | if (ex_interrupt & (1 << i)) { |
71 | struct irq_desc *cpld_desc; | ||
72 | int cpld_irq = | 71 | int cpld_irq = |
73 | IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i); | 72 | IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i); |
74 | cpld_desc = irq_desc + cpld_irq; | 73 | generic_handle_irq(cpld_irq); |
75 | desc_handle_irq(cpld_irq, cpld_desc); | ||
76 | } | 74 | } |
77 | } | 75 | } |
78 | 76 | ||
@@ -105,11 +103,9 @@ static void ixdp2351_intb_handler(unsigned int irq, struct irq_desc *desc) | |||
105 | 103 | ||
106 | for (i = 0; i < IXDP2351_INTB_IRQ_NUM; i++) { | 104 | for (i = 0; i < IXDP2351_INTB_IRQ_NUM; i++) { |
107 | if (ex_interrupt & (1 << i)) { | 105 | if (ex_interrupt & (1 << i)) { |
108 | struct irq_desc *cpld_desc; | ||
109 | int cpld_irq = | 106 | int cpld_irq = |
110 | IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i); | 107 | IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i); |
111 | cpld_desc = irq_desc + cpld_irq; | 108 | generic_handle_irq(cpld_irq); |
112 | desc_handle_irq(cpld_irq, cpld_desc); | ||
113 | } | 109 | } |
114 | } | 110 | } |
115 | 111 | ||
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c index 551b97261826..3d7bd50b9095 100644 --- a/arch/arm/mach-lh7a40x/arch-kev7a400.c +++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c | |||
@@ -77,7 +77,7 @@ static void kev7a400_cpld_handler (unsigned int irq, struct irq_desc *desc) | |||
77 | irq = IRQ_KEV7A400_CPLD; | 77 | irq = IRQ_KEV7A400_CPLD; |
78 | for (; mask; mask >>= 1, ++irq) | 78 | for (; mask; mask >>= 1, ++irq) |
79 | if (mask & 1) | 79 | if (mask & 1) |
80 | desc_handle_irq(irq, desc); | 80 | generic_handle_irq(irq); |
81 | } | 81 | } |
82 | 82 | ||
83 | void __init lh7a40x_init_board_irq (void) | 83 | void __init lh7a40x_init_board_irq (void) |
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c index e373fb8e2699..cb15e5d32120 100644 --- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c | |||
@@ -214,11 +214,11 @@ static void lpd7a40x_cpld_handler (unsigned int irq, struct irq_desc *desc) | |||
214 | desc->chip->ack (irq); | 214 | desc->chip->ack (irq); |
215 | 215 | ||
216 | if ((mask & (1<<0)) == 0) /* WLAN */ | 216 | if ((mask & (1<<0)) == 0) /* WLAN */ |
217 | IRQ_DISPATCH (IRQ_LPD7A40X_ETH_INT); | 217 | generic_handle_irq(IRQ_LPD7A40X_ETH_INT); |
218 | 218 | ||
219 | #if defined (IRQ_TOUCH) | 219 | #if defined (IRQ_TOUCH) |
220 | if ((mask & (1<<1)) == 0) /* Touch */ | 220 | if ((mask & (1<<1)) == 0) /* Touch */ |
221 | IRQ_DISPATCH (IRQ_TOUCH); | 221 | generic_handle_irq(IRQ_TOUCH); |
222 | #endif | 222 | #endif |
223 | 223 | ||
224 | desc->chip->unmask (irq); /* Level-triggered need this */ | 224 | desc->chip->unmask (irq); /* Level-triggered need this */ |
diff --git a/arch/arm/mach-lh7a40x/common.h b/arch/arm/mach-lh7a40x/common.h index 0ca20c6c83b7..6ed3f6b6db76 100644 --- a/arch/arm/mach-lh7a40x/common.h +++ b/arch/arm/mach-lh7a40x/common.h | |||
@@ -15,4 +15,3 @@ extern void lh7a404_init_irq (void); | |||
15 | extern void lh7a40x_clcd_init (void); | 15 | extern void lh7a40x_clcd_init (void); |
16 | extern void lh7a40x_init_board_irq (void); | 16 | extern void lh7a40x_init_board_irq (void); |
17 | 17 | ||
18 | #define IRQ_DISPATCH(irq) desc_handle_irq((irq),(irq_desc + irq)) | ||
diff --git a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c index 0d5063ebda10..fd033bb4342f 100644 --- a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c | |||
@@ -63,10 +63,10 @@ static void lh7a40x_cpld_handler (unsigned int irq, struct irq_desc *desc) | |||
63 | desc->chip->ack (irq); | 63 | desc->chip->ack (irq); |
64 | 64 | ||
65 | if ((mask & 0x1) == 0) /* WLAN */ | 65 | if ((mask & 0x1) == 0) /* WLAN */ |
66 | IRQ_DISPATCH (IRQ_LPD7A40X_ETH_INT); | 66 | generic_handle_irq(IRQ_LPD7A40X_ETH_INT); |
67 | 67 | ||
68 | if ((mask & 0x2) == 0) /* Touch */ | 68 | if ((mask & 0x2) == 0) /* Touch */ |
69 | IRQ_DISPATCH (IRQ_LPD7A400_TS); | 69 | generic_handle_irq(IRQ_LPD7A400_TS); |
70 | 70 | ||
71 | desc->chip->unmask (irq); /* Level-triggered need this */ | 71 | desc->chip->unmask (irq); /* Level-triggered need this */ |
72 | } | 72 | } |
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c index 1b40483ea753..3830eca2438a 100644 --- a/arch/arm/mach-netx/generic.c +++ b/arch/arm/mach-netx/generic.c | |||
@@ -77,15 +77,12 @@ netx_hif_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
77 | stat = ((readl(NETX_DPMAS_INT_EN) & | 77 | stat = ((readl(NETX_DPMAS_INT_EN) & |
78 | readl(NETX_DPMAS_INT_STAT)) >> 24) & 0x1f; | 78 | readl(NETX_DPMAS_INT_STAT)) >> 24) & 0x1f; |
79 | 79 | ||
80 | desc = irq_desc + NETX_IRQ_HIF_CHAINED(0); | ||
81 | |||
82 | while (stat) { | 80 | while (stat) { |
83 | if (stat & 1) { | 81 | if (stat & 1) { |
84 | DEBUG_IRQ("handling irq %d\n", irq); | 82 | DEBUG_IRQ("handling irq %d\n", irq); |
85 | desc_handle_irq(irq, desc); | 83 | generic_handle_irq(irq); |
86 | } | 84 | } |
87 | irq++; | 85 | irq++; |
88 | desc++; | ||
89 | stat >>= 1; | 86 | stat >>= 1; |
90 | } | 87 | } |
91 | } | 88 | } |
diff --git a/arch/arm/mach-ns9xxx/board-a9m9750dev.c b/arch/arm/mach-ns9xxx/board-a9m9750dev.c index a22a608a7aba..b45bb3b802f1 100644 --- a/arch/arm/mach-ns9xxx/board-a9m9750dev.c +++ b/arch/arm/mach-ns9xxx/board-a9m9750dev.c | |||
@@ -86,13 +86,10 @@ static void a9m9750dev_fpga_demux_handler(unsigned int irq, | |||
86 | 86 | ||
87 | while (stat != 0) { | 87 | while (stat != 0) { |
88 | int irqno = fls(stat) - 1; | 88 | int irqno = fls(stat) - 1; |
89 | struct irq_desc *fpgadesc; | ||
90 | 89 | ||
91 | stat &= ~(1 << irqno); | 90 | stat &= ~(1 << irqno); |
92 | 91 | ||
93 | fpgadesc = irq_desc + FPGA_IRQ(irqno); | 92 | generic_handle_irq(FPGA_IRQ(irqno)); |
94 | |||
95 | desc_handle_irq(FPGA_IRQ(irqno), fpgadesc); | ||
96 | } | 93 | } |
97 | 94 | ||
98 | desc->chip->unmask(irq); | 95 | desc->chip->unmask(irq); |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 213b48787102..45a01311669a 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/reboot.h> | 21 | #include <linux/reboot.h> |
22 | #include <linux/serial_8250.h> | 22 | #include <linux/serial_8250.h> |
23 | #include <linux/serial_reg.h> | 23 | #include <linux/serial_reg.h> |
24 | #include <linux/irq.h> | ||
24 | 25 | ||
25 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
26 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index 4449d86095f6..23f2c3aeb384 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c | |||
@@ -86,7 +86,6 @@ static void fpga_mask_ack_irq(unsigned int irq) | |||
86 | 86 | ||
87 | void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc) | 87 | void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc) |
88 | { | 88 | { |
89 | struct irq_desc *d; | ||
90 | u32 stat; | 89 | u32 stat; |
91 | int fpga_irq; | 90 | int fpga_irq; |
92 | 91 | ||
@@ -99,8 +98,7 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc) | |||
99 | (fpga_irq < OMAP_FPGA_IRQ_END) && stat; | 98 | (fpga_irq < OMAP_FPGA_IRQ_END) && stat; |
100 | fpga_irq++, stat >>= 1) { | 99 | fpga_irq++, stat >>= 1) { |
101 | if (stat & 1) { | 100 | if (stat & 1) { |
102 | d = irq_desc + fpga_irq; | 101 | generic_handle_irq(fpga_irq); |
103 | desc_handle_irq(fpga_irq, d); | ||
104 | } | 102 | } |
105 | } | 103 | } |
106 | } | 104 | } |
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c index 2545ff9e5830..15f27aa7f53e 100644 --- a/arch/arm/mach-orion5x/irq.c +++ b/arch/arm/mach-orion5x/irq.c | |||
@@ -162,7 +162,7 @@ static void orion5x_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
162 | polarity ^= 1 << pin; | 162 | polarity ^= 1 << pin; |
163 | writel(polarity, GPIO_IN_POL); | 163 | writel(polarity, GPIO_IN_POL); |
164 | } | 164 | } |
165 | desc_handle_irq(irq, desc); | 165 | generic_handle_irq(irq); |
166 | } | 166 | } |
167 | } | 167 | } |
168 | } | 168 | } |
diff --git a/arch/arm/mach-pxa/gpio.c b/arch/arm/mach-pxa/gpio.c index 07acc1b23857..e92bec510e5e 100644 --- a/arch/arm/mach-pxa/gpio.c +++ b/arch/arm/mach-pxa/gpio.c | |||
@@ -275,7 +275,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc) | |||
275 | loop = 1; | 275 | loop = 1; |
276 | 276 | ||
277 | n = PXA_GPIO_IRQ_BASE + bit; | 277 | n = PXA_GPIO_IRQ_BASE + bit; |
278 | desc_handle_irq(n, irq_desc + n); | 278 | generic_handle_irq(n); |
279 | 279 | ||
280 | bit = find_next_bit(gedr, GEDR_BITS, bit + 1); | 280 | bit = find_next_bit(gedr, GEDR_BITS, bit + 1); |
281 | } | 281 | } |
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index 92728a37298a..de3f67daaacf 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c | |||
@@ -125,8 +125,7 @@ static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
125 | GEDR(0) = GPIO_bit(0); /* clear useless edge notification */ | 125 | GEDR(0) = GPIO_bit(0); /* clear useless edge notification */ |
126 | if (likely(pending)) { | 126 | if (likely(pending)) { |
127 | irq = LPD270_IRQ(0) + __ffs(pending); | 127 | irq = LPD270_IRQ(0) + __ffs(pending); |
128 | desc = irq_desc + irq; | 128 | generic_handle_irq(irq); |
129 | desc_handle_irq(irq, desc); | ||
130 | 129 | ||
131 | pending = __raw_readw(LPD270_INT_STATUS) & | 130 | pending = __raw_readw(LPD270_INT_STATUS) & |
132 | lpd270_irq_enabled; | 131 | lpd270_irq_enabled; |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index ecbfbb9f46a2..bff704354c1a 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -155,8 +155,7 @@ static void lubbock_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
155 | GEDR(0) = GPIO_bit(0); /* clear our parent irq */ | 155 | GEDR(0) = GPIO_bit(0); /* clear our parent irq */ |
156 | if (likely(pending)) { | 156 | if (likely(pending)) { |
157 | irq = LUBBOCK_IRQ(0) + __ffs(pending); | 157 | irq = LUBBOCK_IRQ(0) + __ffs(pending); |
158 | desc = irq_desc + irq; | 158 | generic_handle_irq(irq); |
159 | desc_handle_irq(irq, desc); | ||
160 | } | 159 | } |
161 | pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; | 160 | pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; |
162 | } while (pending); | 161 | } while (pending); |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index a02edfd4fc0a..f2c7ad8f2b6b 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -162,8 +162,7 @@ static void mainstone_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
162 | GEDR(0) = GPIO_bit(0); /* clear useless edge notification */ | 162 | GEDR(0) = GPIO_bit(0); /* clear useless edge notification */ |
163 | if (likely(pending)) { | 163 | if (likely(pending)) { |
164 | irq = MAINSTONE_IRQ(0) + __ffs(pending); | 164 | irq = MAINSTONE_IRQ(0) + __ffs(pending); |
165 | desc = irq_desc + irq; | 165 | generic_handle_irq(irq); |
166 | desc_handle_irq(irq, desc); | ||
167 | } | 166 | } |
168 | pending = MST_INTSETCLR & mainstone_irq_enabled; | 167 | pending = MST_INTSETCLR & mainstone_irq_enabled; |
169 | } while (pending); | 168 | } while (pending); |
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c index e9efb80bb339..f601425f1b1e 100644 --- a/arch/arm/mach-pxa/pcm990-baseboard.c +++ b/arch/arm/mach-pxa/pcm990-baseboard.c | |||
@@ -262,8 +262,7 @@ static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
262 | GPIO_bit(PCM990_CTRL_INT_IRQ_GPIO); | 262 | GPIO_bit(PCM990_CTRL_INT_IRQ_GPIO); |
263 | if (likely(pending)) { | 263 | if (likely(pending)) { |
264 | irq = PCM027_IRQ(0) + __ffs(pending); | 264 | irq = PCM027_IRQ(0) + __ffs(pending); |
265 | desc = irq_desc + irq; | 265 | generic_handle_irq(irq); |
266 | desc_handle_irq(irq, desc); | ||
267 | } | 266 | } |
268 | pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled; | 267 | pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled; |
269 | } while (pending); | 268 | } while (pending); |
diff --git a/arch/arm/mach-s3c2410/bast-irq.c b/arch/arm/mach-s3c2410/bast-irq.c index c66021b5fa4d..44140bd99ed3 100644 --- a/arch/arm/mach-s3c2410/bast-irq.c +++ b/arch/arm/mach-s3c2410/bast-irq.c | |||
@@ -130,8 +130,7 @@ bast_irq_pc104_demux(unsigned int irq, | |||
130 | for (i = 0; stat != 0; i++, stat >>= 1) { | 130 | for (i = 0; stat != 0; i++, stat >>= 1) { |
131 | if (stat & 1) { | 131 | if (stat & 1) { |
132 | irqno = bast_pc104_irqs[i]; | 132 | irqno = bast_pc104_irqs[i]; |
133 | desc = irq_desc + irqno; | 133 | generic_handle_irq(irqno); |
134 | desc_handle_irq(irqno, desc); | ||
135 | } | 134 | } |
136 | } | 135 | } |
137 | } | 136 | } |
diff --git a/arch/arm/mach-s3c2412/irq.c b/arch/arm/mach-s3c2412/irq.c index ac62b79044f4..72159d31966e 100644 --- a/arch/arm/mach-s3c2412/irq.c +++ b/arch/arm/mach-s3c2412/irq.c | |||
@@ -123,10 +123,10 @@ static void s3c2412_irq_demux_cfsdi(unsigned int irq, struct irq_desc *desc) | |||
123 | subsrc &= ~submsk; | 123 | subsrc &= ~submsk; |
124 | 124 | ||
125 | if (subsrc & INTBIT(IRQ_S3C2412_SDI)) | 125 | if (subsrc & INTBIT(IRQ_S3C2412_SDI)) |
126 | desc_handle_irq(IRQ_S3C2412_SDI, irq_desc + IRQ_S3C2412_SDI); | 126 | generic_handle_irq(IRQ_S3C2412_SDI); |
127 | 127 | ||
128 | if (subsrc & INTBIT(IRQ_S3C2412_CF)) | 128 | if (subsrc & INTBIT(IRQ_S3C2412_CF)) |
129 | desc_handle_irq(IRQ_S3C2412_CF, irq_desc + IRQ_S3C2412_CF); | 129 | generic_handle_irq(IRQ_S3C2412_CF); |
130 | } | 130 | } |
131 | 131 | ||
132 | #define INTMSK_CFSDI (1UL << (IRQ_S3C2412_CFSDI - IRQ_EINT0)) | 132 | #define INTMSK_CFSDI (1UL << (IRQ_S3C2412_CFSDI - IRQ_EINT0)) |
diff --git a/arch/arm/mach-s3c2440/irq.c b/arch/arm/mach-s3c2440/irq.c index 276b823f4e27..ad68b4d88353 100644 --- a/arch/arm/mach-s3c2440/irq.c +++ b/arch/arm/mach-s3c2440/irq.c | |||
@@ -44,7 +44,6 @@ static void s3c_irq_demux_wdtac97(unsigned int irq, | |||
44 | struct irq_desc *desc) | 44 | struct irq_desc *desc) |
45 | { | 45 | { |
46 | unsigned int subsrc, submsk; | 46 | unsigned int subsrc, submsk; |
47 | struct irq_desc *mydesc; | ||
48 | 47 | ||
49 | /* read the current pending interrupts, and the mask | 48 | /* read the current pending interrupts, and the mask |
50 | * for what it is available */ | 49 | * for what it is available */ |
@@ -58,12 +57,10 @@ static void s3c_irq_demux_wdtac97(unsigned int irq, | |||
58 | 57 | ||
59 | if (subsrc != 0) { | 58 | if (subsrc != 0) { |
60 | if (subsrc & 1) { | 59 | if (subsrc & 1) { |
61 | mydesc = irq_desc + IRQ_S3C2440_WDT; | 60 | generic_handle_irq(IRQ_S3C2440_WDT); |
62 | desc_handle_irq(IRQ_S3C2440_WDT, mydesc); | ||
63 | } | 61 | } |
64 | if (subsrc & 2) { | 62 | if (subsrc & 2) { |
65 | mydesc = irq_desc + IRQ_S3C2440_AC97; | 63 | generic_handle_irq(IRQ_S3C2440_AC97); |
66 | desc_handle_irq(IRQ_S3C2440_AC97, mydesc); | ||
67 | } | 64 | } |
68 | } | 65 | } |
69 | } | 66 | } |
diff --git a/arch/arm/mach-s3c2443/irq.c b/arch/arm/mach-s3c2443/irq.c index 9674de7223fd..1570d3a6e15f 100644 --- a/arch/arm/mach-s3c2443/irq.c +++ b/arch/arm/mach-s3c2443/irq.c | |||
@@ -44,7 +44,6 @@ static inline void s3c2443_irq_demux(unsigned int irq, unsigned int len) | |||
44 | { | 44 | { |
45 | unsigned int subsrc, submsk; | 45 | unsigned int subsrc, submsk; |
46 | unsigned int end; | 46 | unsigned int end; |
47 | struct irq_desc *mydesc; | ||
48 | 47 | ||
49 | /* read the current pending interrupts, and the mask | 48 | /* read the current pending interrupts, and the mask |
50 | * for what it is available */ | 49 | * for what it is available */ |
@@ -57,13 +56,11 @@ static inline void s3c2443_irq_demux(unsigned int irq, unsigned int len) | |||
57 | subsrc &= (1 << len)-1; | 56 | subsrc &= (1 << len)-1; |
58 | 57 | ||
59 | end = len + irq; | 58 | end = len + irq; |
60 | mydesc = irq_desc + irq; | ||
61 | 59 | ||
62 | for (; irq < end && subsrc; irq++) { | 60 | for (; irq < end && subsrc; irq++) { |
63 | if (subsrc & 1) | 61 | if (subsrc & 1) |
64 | desc_handle_irq(irq, mydesc); | 62 | generic_handle_irq(irq); |
65 | 63 | ||
66 | mydesc++; | ||
67 | subsrc >>= 1; | 64 | subsrc >>= 1; |
68 | } | 65 | } |
69 | } | 66 | } |
diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c index 86369a8f0cea..3093d46a9c6f 100644 --- a/arch/arm/mach-sa1100/irq.c +++ b/arch/arm/mach-sa1100/irq.c | |||
@@ -122,14 +122,12 @@ sa1100_high_gpio_handler(unsigned int irq, struct irq_desc *desc) | |||
122 | GEDR = mask; | 122 | GEDR = mask; |
123 | 123 | ||
124 | irq = IRQ_GPIO11; | 124 | irq = IRQ_GPIO11; |
125 | desc = irq_desc + irq; | ||
126 | mask >>= 11; | 125 | mask >>= 11; |
127 | do { | 126 | do { |
128 | if (mask & 1) | 127 | if (mask & 1) |
129 | desc_handle_irq(irq, desc); | 128 | generic_handle_irq(irq); |
130 | mask >>= 1; | 129 | mask >>= 1; |
131 | irq++; | 130 | irq++; |
132 | desc++; | ||
133 | } while (mask); | 131 | } while (mask); |
134 | 132 | ||
135 | mask = GEDR & 0xfffff800; | 133 | mask = GEDR & 0xfffff800; |
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index 4856a6bd2482..6ccd175bc4cf 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c | |||
@@ -33,8 +33,6 @@ neponset_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
33 | unsigned int irr; | 33 | unsigned int irr; |
34 | 34 | ||
35 | while (1) { | 35 | while (1) { |
36 | struct irq_desc *d; | ||
37 | |||
38 | /* | 36 | /* |
39 | * Acknowledge the parent IRQ. | 37 | * Acknowledge the parent IRQ. |
40 | */ | 38 | */ |
@@ -67,21 +65,18 @@ neponset_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
67 | desc->chip->ack(irq); | 65 | desc->chip->ack(irq); |
68 | 66 | ||
69 | if (irr & IRR_ETHERNET) { | 67 | if (irr & IRR_ETHERNET) { |
70 | d = irq_desc + IRQ_NEPONSET_SMC9196; | 68 | generic_handle_irq(IRQ_NEPONSET_SMC9196); |
71 | desc_handle_irq(IRQ_NEPONSET_SMC9196, d); | ||
72 | } | 69 | } |
73 | 70 | ||
74 | if (irr & IRR_USAR) { | 71 | if (irr & IRR_USAR) { |
75 | d = irq_desc + IRQ_NEPONSET_USAR; | 72 | generic_handle_irq(IRQ_NEPONSET_USAR); |
76 | desc_handle_irq(IRQ_NEPONSET_USAR, d); | ||
77 | } | 73 | } |
78 | 74 | ||
79 | desc->chip->unmask(irq); | 75 | desc->chip->unmask(irq); |
80 | } | 76 | } |
81 | 77 | ||
82 | if (irr & IRR_SA1111) { | 78 | if (irr & IRR_SA1111) { |
83 | d = irq_desc + IRQ_NEPONSET_SA1111; | 79 | generic_handle_irq(IRQ_NEPONSET_SA1111); |
84 | desc_handle_irq(IRQ_NEPONSET_SA1111, d); | ||
85 | } | 80 | } |
86 | } | 81 | } |
87 | } | 82 | } |
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index d75e795c893e..c3468bf2841e 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -95,8 +95,7 @@ sic_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
95 | 95 | ||
96 | irq += IRQ_SIC_START; | 96 | irq += IRQ_SIC_START; |
97 | 97 | ||
98 | desc = irq_desc + irq; | 98 | generic_handle_irq(irq); |
99 | desc_handle_irq(irq, desc); | ||
100 | } while (status); | 99 | } while (status); |
101 | } | 100 | } |
102 | 101 | ||
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 9e1341ebc14e..960040aa71f7 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -1051,13 +1051,10 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
1051 | 1051 | ||
1052 | gpio_irq = bank->virtual_irq_start; | 1052 | gpio_irq = bank->virtual_irq_start; |
1053 | for (; isr != 0; isr >>= 1, gpio_irq++) { | 1053 | for (; isr != 0; isr >>= 1, gpio_irq++) { |
1054 | struct irq_desc *d; | ||
1055 | |||
1056 | if (!(isr & 1)) | 1054 | if (!(isr & 1)) |
1057 | continue; | 1055 | continue; |
1058 | d = irq_desc + gpio_irq; | ||
1059 | 1056 | ||
1060 | desc_handle_irq(gpio_irq, d); | 1057 | generic_handle_irq(gpio_irq); |
1061 | } | 1058 | } |
1062 | } | 1059 | } |
1063 | /* if bank has any level sensitive GPIO pin interrupt | 1060 | /* if bank has any level sensitive GPIO pin interrupt |
diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c index 36cefe176835..b6c84f4f7a12 100644 --- a/arch/arm/plat-s3c24xx/irq.c +++ b/arch/arm/plat-s3c24xx/irq.c | |||
@@ -468,7 +468,6 @@ static void s3c_irq_demux_adc(unsigned int irq, | |||
468 | { | 468 | { |
469 | unsigned int subsrc, submsk; | 469 | unsigned int subsrc, submsk; |
470 | unsigned int offset = 9; | 470 | unsigned int offset = 9; |
471 | struct irq_desc *mydesc; | ||
472 | 471 | ||
473 | /* read the current pending interrupts, and the mask | 472 | /* read the current pending interrupts, and the mask |
474 | * for what it is available */ | 473 | * for what it is available */ |
@@ -482,12 +481,10 @@ static void s3c_irq_demux_adc(unsigned int irq, | |||
482 | 481 | ||
483 | if (subsrc != 0) { | 482 | if (subsrc != 0) { |
484 | if (subsrc & 1) { | 483 | if (subsrc & 1) { |
485 | mydesc = irq_desc + IRQ_TC; | 484 | generic_handle_irq(IRQ_TC); |
486 | desc_handle_irq(IRQ_TC, mydesc); | ||
487 | } | 485 | } |
488 | if (subsrc & 2) { | 486 | if (subsrc & 2) { |
489 | mydesc = irq_desc + IRQ_ADC; | 487 | generic_handle_irq(IRQ_ADC); |
490 | desc_handle_irq(IRQ_ADC, mydesc); | ||
491 | } | 488 | } |
492 | } | 489 | } |
493 | } | 490 | } |
@@ -496,7 +493,6 @@ static void s3c_irq_demux_uart(unsigned int start) | |||
496 | { | 493 | { |
497 | unsigned int subsrc, submsk; | 494 | unsigned int subsrc, submsk; |
498 | unsigned int offset = start - IRQ_S3CUART_RX0; | 495 | unsigned int offset = start - IRQ_S3CUART_RX0; |
499 | struct irq_desc *desc; | ||
500 | 496 | ||
501 | /* read the current pending interrupts, and the mask | 497 | /* read the current pending interrupts, and the mask |
502 | * for what it is available */ | 498 | * for what it is available */ |
@@ -512,20 +508,14 @@ static void s3c_irq_demux_uart(unsigned int start) | |||
512 | subsrc &= 7; | 508 | subsrc &= 7; |
513 | 509 | ||
514 | if (subsrc != 0) { | 510 | if (subsrc != 0) { |
515 | desc = irq_desc + start; | ||
516 | |||
517 | if (subsrc & 1) | 511 | if (subsrc & 1) |
518 | desc_handle_irq(start, desc); | 512 | generic_handle_irq(start); |
519 | |||
520 | desc++; | ||
521 | 513 | ||
522 | if (subsrc & 2) | 514 | if (subsrc & 2) |
523 | desc_handle_irq(start+1, desc); | 515 | generic_handle_irq(start+1); |
524 | |||
525 | desc++; | ||
526 | 516 | ||
527 | if (subsrc & 4) | 517 | if (subsrc & 4) |
528 | desc_handle_irq(start+2, desc); | 518 | generic_handle_irq(start+2); |
529 | } | 519 | } |
530 | } | 520 | } |
531 | 521 | ||
@@ -572,7 +562,7 @@ s3c_irq_demux_extint8(unsigned int irq, | |||
572 | eintpnd &= ~(1<<irq); | 562 | eintpnd &= ~(1<<irq); |
573 | 563 | ||
574 | irq += (IRQ_EINT4 - 4); | 564 | irq += (IRQ_EINT4 - 4); |
575 | desc_handle_irq(irq, irq_desc + irq); | 565 | generic_handle_irq(irq); |
576 | } | 566 | } |
577 | 567 | ||
578 | } | 568 | } |
@@ -595,7 +585,7 @@ s3c_irq_demux_extint4t7(unsigned int irq, | |||
595 | 585 | ||
596 | irq += (IRQ_EINT4 - 4); | 586 | irq += (IRQ_EINT4 - 4); |
597 | 587 | ||
598 | desc_handle_irq(irq, irq_desc + irq); | 588 | generic_handle_irq(irq); |
599 | } | 589 | } |
600 | } | 590 | } |
601 | 591 | ||
diff --git a/arch/arm/plat-s3c24xx/s3c244x-irq.c b/arch/arm/plat-s3c24xx/s3c244x-irq.c index f3dc38cf1de4..1e094fcb45a5 100644 --- a/arch/arm/plat-s3c24xx/s3c244x-irq.c +++ b/arch/arm/plat-s3c24xx/s3c244x-irq.c | |||
@@ -44,7 +44,6 @@ static void s3c_irq_demux_cam(unsigned int irq, | |||
44 | struct irq_desc *desc) | 44 | struct irq_desc *desc) |
45 | { | 45 | { |
46 | unsigned int subsrc, submsk; | 46 | unsigned int subsrc, submsk; |
47 | struct irq_desc *mydesc; | ||
48 | 47 | ||
49 | /* read the current pending interrupts, and the mask | 48 | /* read the current pending interrupts, and the mask |
50 | * for what it is available */ | 49 | * for what it is available */ |
@@ -58,12 +57,10 @@ static void s3c_irq_demux_cam(unsigned int irq, | |||
58 | 57 | ||
59 | if (subsrc != 0) { | 58 | if (subsrc != 0) { |
60 | if (subsrc & 1) { | 59 | if (subsrc & 1) { |
61 | mydesc = irq_desc + IRQ_S3C2440_CAM_C; | 60 | generic_handle_irq(IRQ_S3C2440_CAM_C); |
62 | desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc); | ||
63 | } | 61 | } |
64 | if (subsrc & 2) { | 62 | if (subsrc & 2) { |
65 | mydesc = irq_desc + IRQ_S3C2440_CAM_P; | 63 | generic_handle_irq(IRQ_S3C2440_CAM_P); |
66 | desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc); | ||
67 | } | 64 | } |
68 | } | 65 | } |
69 | } | 66 | } |