Skip to content

Commit d5c6a1e

Browse files
morimotoFelipe Balbi
authored andcommitted
usb: renesas_usbhs: fixup interrupt status clear method
When interrupt happened, renesas_usbhs driver gets irq status by usbhs_status_get_each_irq(), and cleared all status by using 0. But, this method is incorrect, since extra interrupt might occur between them. This patch cleared corresponding bits only Signed-off-by: Kuninori Morimoto <[email protected]> Signed-off-by: Felipe Balbi <[email protected]>
1 parent c2fa3ed commit d5c6a1e

File tree

1 file changed

+3
-3
lines changed
  • drivers/usb/renesas_usbhs

1 file changed

+3
-3
lines changed

drivers/usb/renesas_usbhs/mod.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,9 @@ static irqreturn_t usbhs_interrupt(int irq, void *data)
273273
usbhs_write(priv, INTSTS0, ~irq_state.intsts0 & INTSTS0_MAGIC);
274274
usbhs_write(priv, INTSTS1, ~irq_state.intsts1 & INTSTS1_MAGIC);
275275

276-
usbhs_write(priv, BRDYSTS, 0);
277-
usbhs_write(priv, NRDYSTS, 0);
278-
usbhs_write(priv, BEMPSTS, 0);
276+
usbhs_write(priv, BRDYSTS, ~irq_state.brdysts);
277+
usbhs_write(priv, NRDYSTS, ~irq_state.nrdysts);
278+
usbhs_write(priv, BEMPSTS, ~irq_state.bempsts);
279279

280280
/*
281281
* call irq callback functions

0 commit comments

Comments
 (0)