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

From: Kishon Vijay Abraham I
Date: Mon Aug 22 2016 - 04:24:16 EST


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?

Thanks
Kishon