diff options
-rw-r--r-- | drivers/dahdi/wct4xxp/base.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/drivers/dahdi/wct4xxp/base.c b/drivers/dahdi/wct4xxp/base.c index 420354b..c1367b4 100644 --- a/drivers/dahdi/wct4xxp/base.c +++ b/drivers/dahdi/wct4xxp/base.c @@ -3772,7 +3772,7 @@ static inline void t4_framer_interrupt(struct t4 *wc, int span) } #ifdef SUPPORT_GEN1 -DAHDI_IRQ_HANDLER(t4_interrupt) +static irqreturn_t _t4_interrupt(int irq, void *dev_id) { struct t4 *wc = dev_id; unsigned long flags; @@ -3840,6 +3840,16 @@ DAHDI_IRQ_HANDLER(t4_interrupt) return IRQ_RETVAL(1); } + +DAHDI_IRQ_HANDLER(t4_interrupt) +{ + irqreturn_t ret; + unsigned long flags; + local_irq_save(flags); + ret = _t4_interrupt(irq, dev_id); + local_irq_restore(flags); + return ret; +} #endif static int t4_allocate_buffers(struct t4 *wc, int numbufs, @@ -3957,7 +3967,7 @@ static void t4_isr_bh(unsigned long data) #endif } -DAHDI_IRQ_HANDLER(t4_interrupt_gen2) +static irqreturn_t _t4_interrupt_gen2(int irq, void *dev_id) { struct t4 *wc = dev_id; unsigned int status; @@ -4153,6 +4163,16 @@ out: return IRQ_RETVAL(1); } +DAHDI_IRQ_HANDLER(t4_interrupt_gen2) +{ + irqreturn_t ret; + unsigned long flags; + local_irq_save(flags); + ret = _t4_interrupt_gen2(irq, dev_id); + local_irq_restore(flags); + return ret; +} + #ifdef SUPPORT_GEN1 static int t4_reset_dma(struct t4 *wc) { @@ -5183,7 +5203,7 @@ t4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) #ifdef SUPPORT_GEN1 if (request_irq(pdev->irq, (wc->devtype->flags & FLAG_2NDGEN) ? t4_interrupt_gen2 : t4_interrupt, - DAHDI_IRQ_SHARED_DISABLED, + DAHDI_IRQ_SHARED, (wc->numspans == 8) ? "wct8xxp" : (wc->numspans == 2) ? "wct2xxp" : "wct4xxp", @@ -5195,7 +5215,7 @@ t4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) free_wc(wc); return -ENODEV; } - if (request_irq(pdev->irq, t4_interrupt_gen2, DAHDI_IRQ_SHARED_DISABLED, "t4xxp", wc)) + if (request_irq(pdev->irq, t4_interrupt_gen2, DAHDI_IRQ_SHARED, "t4xxp", wc)) #endif { dev_notice(&wc->dev->dev, "t4xxp: Unable to request IRQ %d\n", |