usb: musb: dsps: do not reset musb on babble
authorFelipe Balbi <balbi@ti.com>
Thu, 26 Feb 2015 20:00:52 +0000 (14:00 -0600)
committerFelipe Balbi <balbi@ti.com>
Tue, 10 Mar 2015 20:33:28 +0000 (15:33 -0500)
All we have to do is, really, drop session bit
and let the session restart.

Big thanks goes to Bin Liu <b-liu@ti.com> for
inspiring this work.

Tested-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_dsps.c

index 85ebfa2..a159de1 100644 (file)
@@ -604,31 +604,12 @@ static int dsps_musb_reset(struct musb *musb)
 {
        struct device *dev = musb->controller;
        struct dsps_glue *glue = dev_get_drvdata(dev->parent);
-       const struct dsps_musb_wrapper *wrp = glue->wrp;
-       int session_restart = 0, error;
+       int session_restart = 0;
 
        if (glue->sw_babble_enabled)
                session_restart = dsps_sw_babble_control(musb);
-       /*
-        * In case of new silicon version babble condition can be recovered
-        * without resetting the MUSB. But for older silicon versions, MUSB
-        * reset is needed
-        */
-       if (session_restart || !glue->sw_babble_enabled) {
-               dev_info(musb->controller, "Restarting MUSB to recover from Babble\n");
-               dsps_writel(musb->ctrl_base, wrp->control, (1 << wrp->reset));
-               usleep_range(100, 200);
-               usb_phy_shutdown(musb->xceiv);
-               error = phy_power_off(musb->phy);
-               if (error)
-                       dev_err(dev, "phy shutdown failed: %i\n", error);
-               usleep_range(100, 200);
-               usb_phy_init(musb->xceiv);
-               error = phy_power_on(musb->phy);
-               if (error)
-                       dev_err(dev, "phy powerup failed: %i\n", error);
+       else
                session_restart = 1;
-       }
 
        return session_restart ? 0 : -EPIPE;
 }