summary refs log tree commit diff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/host/isp1760-hcd.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c
index 795345ad45e6..564b03337e7e 100644
--- a/drivers/usb/host/isp1760-hcd.c
+++ b/drivers/usb/host/isp1760-hcd.c
@@ -1676,13 +1676,15 @@ static irqreturn_t isp1760_irq(struct usb_hcd *hcd)
 	if (unlikely(!imask))
 		goto leave;
 
-	reg_write32(hcd->regs, HC_INTERRUPT_REG, imask);
 	if (imask & (HC_ATL_INT | HC_SOT_INT))
 		do_atl_int(hcd);
 
 	if (imask & HC_INTL_INT)
 		do_intl_int(hcd);
 
+	/* Clear interrupt mask on device after the work is done */
+	reg_write32(hcd->regs, HC_INTERRUPT_REG, imask);
+
 	irqret = IRQ_HANDLED;
 leave:
 	spin_unlock(&priv->lock);