usb: musb: Fix handling of spurious SESSREQ
authorHeikki Krogerus <heikki.krogerus@nokia.com>
Fri, 29 Oct 2010 09:23:27 +0000 (04:23 -0500)
committerFelipe Balbi <balbi@ti.com>
Fri, 5 Nov 2010 12:17:35 +0000 (14:17 +0200)
Rely on VBUS being valid on top off B device.

Signed-off-by: Heikki Krogerus <heikki.krogerus@nokia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_core.c

index 78277170275b10cb62a6e814eeddbd9c930ff889..e6669fc3b8048c3dfdbbbf5ee1e1a2048561cfaf 100644 (file)
@@ -552,7 +552,8 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
        if (int_usb & MUSB_INTR_SESSREQ) {
                void __iomem *mbase = musb->mregs;
 
-               if (devctl & MUSB_DEVCTL_BDEVICE) {
+               if ((devctl & MUSB_DEVCTL_VBUS) == MUSB_DEVCTL_VBUS
+                               && (devctl & MUSB_DEVCTL_BDEVICE)) {
                        DBG(3, "SessReq while on B state\n");
                        return IRQ_HANDLED;
                }