On Sun, Mar 24, 2019 at 04:34:26PM -0700, Tony Lindgren wrote: > I noticed that musb is blocking core retention for omap4 unlike for > omap3. This is because for omap3 we have phy-twl4030-usb implement > it's own PM runtime to handle errata "VUSB3V1 VBUS overvoltage > debouncer not working when the PHY is powered down". That is done > in order to keep the USB PHY powered when phy-twl4030-usb is loaded. > > For the other USB PHYs, we need to enable and disable the PHY based on > musb PM runtime. With the session bit based PM runtime for musb core, > we can now idle the USB PHY always when musb is idle. > > Note that adding these calls will not affect the twl4030 driver > as it's phy functions will just query the PHY state without powering > the PHY on or off. > > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> > --- > drivers/usb/musb/omap2430.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c > --- a/drivers/usb/musb/omap2430.c > +++ b/drivers/usb/musb/omap2430.c > @@ -531,6 +531,9 @@ static int omap2430_runtime_suspend(struct device *dev) > > omap2430_low_level_exit(musb); > > + phy_power_off(musb->phy); > + phy_exit(musb->phy); > + > return 0; > } > > @@ -542,6 +545,9 @@ static int omap2430_runtime_resume(struct device *dev) > if (!musb) > return 0; > > + phy_init(musb->phy); > + phy_power_on(musb->phy); > + > omap2430_low_level_init(musb); > musb_writel(musb->mregs, OTG_INTERFSEL, > musb->context.otg_interfsel); Applied. Thanks, -Bin.