diff options
Diffstat (limited to 'drivers/bluetooth/btuart_cs.c')
-rw-r--r-- | drivers/bluetooth/btuart_cs.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index 8e556b7ff9f6..efd689a062eb 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c | |||
@@ -293,6 +293,7 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst) | |||
293 | unsigned int iobase; | 293 | unsigned int iobase; |
294 | int boguscount = 0; | 294 | int boguscount = 0; |
295 | int iir, lsr; | 295 | int iir, lsr; |
296 | irqreturn_t r = IRQ_NONE; | ||
296 | 297 | ||
297 | BUG_ON(!info->hdev); | 298 | BUG_ON(!info->hdev); |
298 | 299 | ||
@@ -302,6 +303,7 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst) | |||
302 | 303 | ||
303 | iir = inb(iobase + UART_IIR) & UART_IIR_ID; | 304 | iir = inb(iobase + UART_IIR) & UART_IIR_ID; |
304 | while (iir) { | 305 | while (iir) { |
306 | r = IRQ_HANDLED; | ||
305 | 307 | ||
306 | /* Clear interrupt */ | 308 | /* Clear interrupt */ |
307 | lsr = inb(iobase + UART_LSR); | 309 | lsr = inb(iobase + UART_LSR); |
@@ -335,7 +337,7 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst) | |||
335 | 337 | ||
336 | spin_unlock(&(info->lock)); | 338 | spin_unlock(&(info->lock)); |
337 | 339 | ||
338 | return IRQ_HANDLED; | 340 | return r; |
339 | } | 341 | } |
340 | 342 | ||
341 | 343 | ||
@@ -586,7 +588,7 @@ static int btuart_probe(struct pcmcia_device *link) | |||
586 | 588 | ||
587 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 589 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
588 | link->io.NumPorts1 = 8; | 590 | link->io.NumPorts1 = 8; |
589 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 591 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT; |
590 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 592 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
591 | 593 | ||
592 | link->irq.Handler = btuart_interrupt; | 594 | link->irq.Handler = btuart_interrupt; |