Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7427847d authored by Mike Frysinger's avatar Mike Frysinger Committed by Marcel Holtmann
Browse files

Bluetooth: Redo checks in IRQ handler for shared IRQ support



Commit ac019360 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: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent e420aba3
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -503,7 +503,9 @@ static irqreturn_t bluecard_interrupt(int irq, void *dev_inst)
	unsigned int iobase;
	unsigned int iobase;
	unsigned char reg;
	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)))
	if (!test_bit(CARD_READY, &(info->hw_state)))
		return IRQ_HANDLED;
		return IRQ_HANDLED;
+3 −1
Original line number Original line Diff line number Diff line
@@ -345,7 +345,9 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
	int iir;
	int iir;
	irqreturn_t r = IRQ_NONE;
	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;
	iobase = info->p_dev->io.BasePort1;


+3 −1
Original line number Original line Diff line number Diff line
@@ -295,7 +295,9 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst)
	int iir, lsr;
	int iir, lsr;
	irqreturn_t r = IRQ_NONE;
	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;
	iobase = info->p_dev->io.BasePort1;


+3 −1
Original line number Original line Diff line number Diff line
@@ -299,7 +299,9 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst)
	int iir, lsr;
	int iir, lsr;
	irqreturn_t r = IRQ_NONE;
	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;
	iobase = info->p_dev->io.BasePort1;