usb: musb: remove 'ignore_disconnect' flag
authorFelipe Balbi <balbi@ti.com>
Mon, 29 Apr 2013 09:02:24 +0000 (12:02 +0300)
committerFelipe Balbi <balbi@ti.com>
Tue, 28 May 2013 16:02:57 +0000 (19:02 +0300)
This was related to an old bug on early versions
of TUSB6010 which we don't support anymore.

It's known to cause issues on several other
situations with more recent devices so we
better remove this flag now and come up
with a better workaround should one be deemed
necessary.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_core.c
drivers/usb/musb/musb_core.h
drivers/usb/musb/musb_virthub.c

index 37a261a6bb6aa1d75d8e9a0b27e787d0cffeff41..fc4d97e2bc3dc7ec41eee1d9759429022c653556 100644 (file)
@@ -380,7 +380,6 @@ static void musb_otg_timer_func(unsigned long data)
                dev_dbg(musb->controller, "HNP: Unhandled mode %s\n",
                        usb_otg_state_string(musb->xceiv->state));
        }
-       musb->ignore_disconnect = 0;
        spin_unlock_irqrestore(&musb->lock, flags);
 }
 
@@ -727,7 +726,6 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
 b_host:
                        musb->xceiv->state = OTG_STATE_B_HOST;
                        hcd->self.is_b_host = 1;
-                       musb->ignore_disconnect = 0;
                        del_timer(&musb->otg_timer);
                        break;
                default:
@@ -750,7 +748,7 @@ b_host:
                                usb_otg_state_string(musb->xceiv->state), devctl);
        }
 
-       if ((int_usb & MUSB_INTR_DISCONNECT) && !musb->ignore_disconnect) {
+       if (int_usb & MUSB_INTR_DISCONNECT) {
                dev_dbg(musb->controller, "DISCONNECT (%s) as %s, devctl %02x\n",
                                usb_otg_state_string(musb->xceiv->state),
                                MUSB_MODE(musb), devctl);
@@ -818,11 +816,6 @@ b_host:
                                usb_otg_state_string(musb->xceiv->state));
                        switch (musb->xceiv->state) {
                        case OTG_STATE_A_SUSPEND:
-                               /* We need to ignore disconnect on suspend
-                                * otherwise tusb 2.0 won't reconnect after a
-                                * power cycle, which breaks otg compliance.
-                                */
-                               musb->ignore_disconnect = 1;
                                musb_g_reset(musb);
                                /* FALLTHROUGH */
                        case OTG_STATE_A_WAIT_BCON:     /* OPT TD.4.7-900ms */
@@ -834,7 +827,6 @@ b_host:
                                        + msecs_to_jiffies(TA_WAIT_BCON(musb)));
                                break;
                        case OTG_STATE_A_PERIPHERAL:
-                               musb->ignore_disconnect = 0;
                                del_timer(&musb->otg_timer);
                                musb_g_reset(musb);
                                break;
index 7fb4819a6f115f54d097ef09eb131fb820994d05..8013a5f6d3d2ff480d9f0512d91cbe32bdd25a75 100644 (file)
@@ -382,7 +382,6 @@ struct musb {
        unsigned                is_active:1;
 
        unsigned is_multipoint:1;
-       unsigned ignore_disconnect:1;   /* during bus resets */
 
        unsigned                hb_iso_rx:1;    /* high bandwidth iso rx? */
        unsigned                hb_iso_tx:1;    /* high bandwidth iso tx? */
index ef7d11045f561cb69db73d57ee5a42777fd8a91e..17c6c0da77db691b55368dcebd1dfe7972b30d36 100644 (file)
@@ -145,7 +145,6 @@ static void musb_port_reset(struct musb *musb, bool do_reset)
                        msleep(1);
                }
 
-               musb->ignore_disconnect = true;
                power &= 0xf0;
                musb_writeb(mbase, MUSB_POWER,
                                power | MUSB_POWER_RESET);
@@ -158,8 +157,6 @@ static void musb_port_reset(struct musb *musb, bool do_reset)
                musb_writeb(mbase, MUSB_POWER,
                                power & ~MUSB_POWER_RESET);
 
-               musb->ignore_disconnect = false;
-
                power = musb_readb(mbase, MUSB_POWER);
                if (power & MUSB_POWER_HSMODE) {
                        dev_dbg(musb->controller, "high-speed device connected\n");