Skip to content

Commit

Permalink
Bluetooth: Redo checks in IRQ handler for shared IRQ support
Browse files Browse the repository at this point in the history
Commit ac01936 changed the irq handler logic to BUG_ON rather than
returning IRQ_NONE when the incoming argument is invalid.  While this
works in most cases, it doesn't work when the IRQ is shared with other
devices (or when DEBUG_SHIRQ is enabled).

So revert the previous change and replace the warning message with a
comment explaining that we want this behavior.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
  • Loading branch information
Mike Frysinger authored and Marcel Holtmann committed Jan 30, 2010
1 parent e420aba commit 7427847
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 4 deletions.
4 changes: 3 additions & 1 deletion drivers/bluetooth/bluecard_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,9 @@ static irqreturn_t bluecard_interrupt(int irq, void *dev_inst)
unsigned int iobase;
unsigned char reg;

BUG_ON(!info->hdev);
if (!info || !info->hdev)
/* our irq handler is shared */
return IRQ_NONE;

if (!test_bit(CARD_READY, &(info->hw_state)))
return IRQ_HANDLED;
Expand Down
4 changes: 3 additions & 1 deletion drivers/bluetooth/bt3c_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,9 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
int iir;
irqreturn_t r = IRQ_NONE;

BUG_ON(!info->hdev);
if (!info || !info->hdev)
/* our irq handler is shared */
return IRQ_NONE;

iobase = info->p_dev->io.BasePort1;

Expand Down
4 changes: 3 additions & 1 deletion drivers/bluetooth/btuart_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,9 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst)
int iir, lsr;
irqreturn_t r = IRQ_NONE;

BUG_ON(!info->hdev);
if (!info || !info->hdev)
/* our irq handler is shared */
return IRQ_NONE;

iobase = info->p_dev->io.BasePort1;

Expand Down
4 changes: 3 additions & 1 deletion drivers/bluetooth/dtl1_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,9 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst)
int iir, lsr;
irqreturn_t r = IRQ_NONE;

BUG_ON(!info->hdev);
if (!info || !info->hdev)
/* our irq handler is shared */
return IRQ_NONE;

iobase = info->p_dev->io.BasePort1;

Expand Down

0 comments on commit 7427847

Please sign in to comment.