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

Kishon Vijay Abraham I kishon at ti.com
Mon Aug 22 01:23:37 PDT 2016


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 at marvell.com>
>>>>> ---
>>>>>  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



More information about the linux-arm-kernel mailing list