Re: [PATCH] usb: chipidea: support generic phy in PM code path

From: Jisheng Zhang
Date: Mon Aug 22 2016 - 04:34:21 EST




On Mon, 22 Aug 2016 13:53:37 +0530 Kishon Vijay Abraham I wrote:

> Hi,
>
> On Monday 22 August 2016 01:44 PM, Jisheng Zhang wrote:
> > + Kishon
> >
> > Hi Peter, Kishon,
> >
> > On Mon, 22 Aug 2016 15:29:07 +0800 Peter Chen wrote:
> >
> >> On Mon, Aug 22, 2016 at 02:39:21PM +0800, Jisheng Zhang wrote:
> >>> Hi Peter,
> >>>
> >>> On Mon, 22 Aug 2016 13:33:08 +0800 Peter Chen wrote:
> >>>
> >>>> On Fri, Aug 19, 2016 at 08:10:13PM +0800, Jisheng Zhang wrote:
> >>>>> Support generic phy in PM code path: call phy_power_off/phy_power_on
> >>>>> in ci_controller_suspend/ci_controller_resume.
> >>>>>
> >>>>> Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxxx>
> >>>>> ---
> >>>>> drivers/usb/chipidea/core.c | 4 +++-
> >>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> >>>>> index ae12595..ef9fb0b 100644
> >>>>> --- a/drivers/usb/chipidea/core.c
> >>>>> +++ b/drivers/usb/chipidea/core.c
> >>>>> @@ -1116,6 +1116,7 @@ static void ci_controller_suspend(struct ci_hdrc *ci)
> >>>>> usleep_range(ci->platdata->phy_clkgate_delay_us,
> >>>>> ci->platdata->phy_clkgate_delay_us + 50);
> >>>>> usb_phy_set_suspend(ci->usb_phy, 1);
> >>>>> + phy_power_off(ci->phy);
> >>>>
> >>>> How could you support USB wakeup after PHY is powered off?
> >>>
> >>> Per my understanding, the PHY's power off just power off data communication part
> >>> but leaves the circuits involved in wakeup detection active.
> >>>
> >>
> >> Ok, I hope so.
> >
> > If most parts of the phy can be powered off during runtime suspend to save
> > power, or phy HW support suspend mode, with usb phy, usb_phy_set_suspend() could
> > be used, but with the generic phy, it seems there's no corresponding API for
> > this purpose. I'm not sure whether using phy_power_off() is correct here. Is it
> > acceptable to extend the generic phy? such as, phy_suspend()/phy_resume()?
>
> phy_pm_runtime_put() could be used right?
>

oh yeah, Great!!! Thanks for the inspiration. Now, I know what should I do for my
platform and the chipidea core driver ;)

Will cook a v2 patch

Thank you so much,
Jisheng