Revert "USB: isp1760-hcd: move imask clear after pending work is done"
authorGreg Kroah-Hartman <gregkh@suse.de>
Thu, 14 Apr 2011 20:37:07 +0000 (13:37 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 14 Apr 2011 20:37:07 +0000 (13:37 -0700)
This reverts commit 5808544690300071f09eef9ab83a0fb1f60cf1cd.

To quote Richard:
I don't think this should be mainlined. It was a
misunderstanding on my part.  If you see all the other hdc
drivers in the same location, they all do the same thing (i.e.
clear the interrupt status first, then do the work) that
"glitch" I think I saw was actually two back-to-back
interrupts.

Sebastian (the original author of isp1760) explained it to me a
few days after my submission.

sorry for the confusion

Cc: Richard Retanubun <RichardRetanubun@ruggedcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/isp1760-hcd.c

index 564b03337e7e1904fe4bc9567a66eabf8abc0fa9..795345ad45e62881fb8e28a1abce639a3088cac8 100644 (file)
@@ -1676,15 +1676,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);