diff options
Diffstat (limited to 'kernel/irq/spurious.c')
| -rw-r--r-- | kernel/irq/spurious.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c index 89fb90ae534f..3089d3b9d5f3 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #include <linux/moduleparam.h> | 14 | #include <linux/moduleparam.h> |
| 15 | #include <linux/timer.h> | 15 | #include <linux/timer.h> |
| 16 | 16 | ||
| 17 | #include "internals.h" | ||
| 18 | |||
| 17 | static int irqfixup __read_mostly; | 19 | static int irqfixup __read_mostly; |
| 18 | 20 | ||
| 19 | #define POLL_SPURIOUS_IRQ_INTERVAL (HZ/10) | 21 | #define POLL_SPURIOUS_IRQ_INTERVAL (HZ/10) |
| @@ -78,8 +80,8 @@ static int try_one_irq(int irq, struct irq_desc *desc) | |||
| 78 | * If we did actual work for the real IRQ line we must let the | 80 | * If we did actual work for the real IRQ line we must let the |
| 79 | * IRQ controller clean up too | 81 | * IRQ controller clean up too |
| 80 | */ | 82 | */ |
| 81 | if (work && desc->chip && desc->chip->end) | 83 | if (work) |
| 82 | desc->chip->end(irq); | 84 | irq_end(irq, desc); |
| 83 | raw_spin_unlock(&desc->lock); | 85 | raw_spin_unlock(&desc->lock); |
| 84 | 86 | ||
| 85 | return ok; | 87 | return ok; |
| @@ -254,7 +256,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, | |||
| 254 | printk(KERN_EMERG "Disabling IRQ #%d\n", irq); | 256 | printk(KERN_EMERG "Disabling IRQ #%d\n", irq); |
| 255 | desc->status |= IRQ_DISABLED | IRQ_SPURIOUS_DISABLED; | 257 | desc->status |= IRQ_DISABLED | IRQ_SPURIOUS_DISABLED; |
| 256 | desc->depth++; | 258 | desc->depth++; |
| 257 | desc->chip->disable(irq); | 259 | desc->irq_data.chip->irq_disable(&desc->irq_data); |
| 258 | 260 | ||
| 259 | mod_timer(&poll_spurious_irq_timer, | 261 | mod_timer(&poll_spurious_irq_timer, |
| 260 | jiffies + POLL_SPURIOUS_IRQ_INTERVAL); | 262 | jiffies + POLL_SPURIOUS_IRQ_INTERVAL); |
