* usb: musb: omap2430: Add support for idling phy when musb is idle
@ 2019-03-24 23:34 Tony Lindgren
0 siblings, 0 replies; 2+ messages in thread
From: Tony Lindgren @ 2019-03-24 23:34 UTC (permalink / raw)
To: Bin Liu; +Cc: Greg Kroah-Hartman, linux-usb, linux-omap
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@atomide.com>
---
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);
^ permalink raw reply [flat|nested] 2+ messages in thread
* usb: musb: omap2430: Add support for idling phy when musb is idle
@ 2019-04-01 18:43 Bin Liu
0 siblings, 0 replies; 2+ messages in thread
From: Bin Liu @ 2019-04-01 18:43 UTC (permalink / raw)
To: Tony Lindgren; +Cc: Greg Kroah-Hartman, linux-usb, linux-omap
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@atomide.com>
> ---
> 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.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-04-01 18:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-01 18:43 usb: musb: omap2430: Add support for idling phy when musb is idle Bin Liu
-- strict thread matches above, loose matches on Subject: below --
2019-03-24 23:34 Tony Lindgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).