]> Pileus Git - ~andy/linux/blobdiff - drivers/usb/host/isp1760-hcd.c
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[~andy/linux] / drivers / usb / host / isp1760-hcd.c
index 564b03337e7e1904fe4bc9567a66eabf8abc0fa9..7b2e69aa2e98fdf2e803bb9d1c26d25ba74cb63e 100644 (file)
@@ -1633,6 +1633,7 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
                        ints[i].qh = NULL;
                        ints[i].qtd = NULL;
 
+                       urb->status = status;
                        isp1760_urb_done(hcd, urb);
                        if (qtd)
                                pe(hcd, qh, qtd);
@@ -1676,15 +1677,13 @@ 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);