Hi, On Wed, May 29, 2013 at 06:37:04PM +0530, Ravi Babu wrote: > @@ -428,6 +436,29 @@ static int dsps_musb_exit(struct musb *musb) > return 0; > } > > +static void dsps_musb_restart(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; > + void __iomem *reg_base = musb->ctrl_base; > + > + /* Reset the musb */ > + dsps_writel(reg_base, wrp->control, (1 << wrp->reset)); > + udelay(100); > + > + /* Stop the on-chip PHY and its PLL. */ > + usb_phy_vbus_off(musb->xceiv); > + udelay(100); > + > + /* Start the on-chip PHY and its PLL. */ > + usb_phy_vbus_on(musb->xceiv); > + udelay(100); > + > + /* reinit the endpoint fifo table and restart musb */ > + musb_restart(musb); everything here, except for the glue reset, is generic. The thing is that I don't really think the IP needs to be reset to recover from babble. Babble is a valid error condition, it's not even fatal right. -- balbi
Attachment:
signature.asc
Description: Digital signature