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

2016-08-22 Thread Jisheng Zhang


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 
> > ---
> >  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


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

2016-08-22 Thread Jisheng Zhang


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 
> > ---
> >  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


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

2016-08-22 Thread Kishon Vijay Abraham I
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 
> ---
>  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


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

2016-08-22 Thread Kishon Vijay Abraham I
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 
> ---
>  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


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

2016-08-22 Thread Jisheng Zhang
+ 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 
> > > > ---
> > > >  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()?

Thanks,
Jisheng


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

2016-08-22 Thread Jisheng Zhang
+ 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 
> > > > ---
> > > >  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()?

Thanks,
Jisheng


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

2016-08-22 Thread Peter Chen
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 
> > > ---
> > >  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.

Peter
> 
> > 
> > Peter
> > 
> > >   ci->in_lpm = true;
> > >   enable_irq(ci->irq);
> > >  }
> > > @@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
> > >   }
> > >  
> > >   ci_hdrc_enter_lpm(ci, false);
> > > - if (ci->usb_phy) {
> > > + if (ci->usb_phy || ci->phy) {
> > >   usb_phy_set_suspend(ci->usb_phy, 0);
> > >   usb_phy_set_wakeup(ci->usb_phy, false);
> > > + phy_power_on(ci->phy);
> > >   hw_wait_phy_stable();
> > >   }
> > >  
> > > -- 
> > > 2.9.3
> > > 
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> > > the body of a message to majord...@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html  
> > 
> 

-- 

Best Regards,
Peter Chen


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

2016-08-22 Thread Peter Chen
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 
> > > ---
> > >  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.

Peter
> 
> > 
> > Peter
> > 
> > >   ci->in_lpm = true;
> > >   enable_irq(ci->irq);
> > >  }
> > > @@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
> > >   }
> > >  
> > >   ci_hdrc_enter_lpm(ci, false);
> > > - if (ci->usb_phy) {
> > > + if (ci->usb_phy || ci->phy) {
> > >   usb_phy_set_suspend(ci->usb_phy, 0);
> > >   usb_phy_set_wakeup(ci->usb_phy, false);
> > > + phy_power_on(ci->phy);
> > >   hw_wait_phy_stable();
> > >   }
> > >  
> > > -- 
> > > 2.9.3
> > > 
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> > > the body of a message to majord...@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html  
> > 
> 

-- 

Best Regards,
Peter Chen


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

2016-08-22 Thread Jisheng Zhang
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 
> > ---
> >  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.

Thanks,
Jisheng

> 
> Peter
> 
> > ci->in_lpm = true;
> > enable_irq(ci->irq);
> >  }
> > @@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
> > }
> >  
> > ci_hdrc_enter_lpm(ci, false);
> > -   if (ci->usb_phy) {
> > +   if (ci->usb_phy || ci->phy) {
> > usb_phy_set_suspend(ci->usb_phy, 0);
> > usb_phy_set_wakeup(ci->usb_phy, false);
> > +   phy_power_on(ci->phy);
> > hw_wait_phy_stable();
> > }
> >  
> > -- 
> > 2.9.3
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> > the body of a message to majord...@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html  
> 



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

2016-08-22 Thread Jisheng Zhang
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 
> > ---
> >  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.

Thanks,
Jisheng

> 
> Peter
> 
> > ci->in_lpm = true;
> > enable_irq(ci->irq);
> >  }
> > @@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
> > }
> >  
> > ci_hdrc_enter_lpm(ci, false);
> > -   if (ci->usb_phy) {
> > +   if (ci->usb_phy || ci->phy) {
> > usb_phy_set_suspend(ci->usb_phy, 0);
> > usb_phy_set_wakeup(ci->usb_phy, false);
> > +   phy_power_on(ci->phy);
> > hw_wait_phy_stable();
> > }
> >  
> > -- 
> > 2.9.3
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> > the body of a message to majord...@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html  
> 



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

2016-08-21 Thread Peter Chen
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 
> ---
>  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?

Peter

>   ci->in_lpm = true;
>   enable_irq(ci->irq);
>  }
> @@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
>   }
>  
>   ci_hdrc_enter_lpm(ci, false);
> - if (ci->usb_phy) {
> + if (ci->usb_phy || ci->phy) {
>   usb_phy_set_suspend(ci->usb_phy, 0);
>   usb_phy_set_wakeup(ci->usb_phy, false);
> + phy_power_on(ci->phy);
>   hw_wait_phy_stable();
>   }
>  
> -- 
> 2.9.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 

Best Regards,
Peter Chen


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

2016-08-21 Thread Peter Chen
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 
> ---
>  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?

Peter

>   ci->in_lpm = true;
>   enable_irq(ci->irq);
>  }
> @@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
>   }
>  
>   ci_hdrc_enter_lpm(ci, false);
> - if (ci->usb_phy) {
> + if (ci->usb_phy || ci->phy) {
>   usb_phy_set_suspend(ci->usb_phy, 0);
>   usb_phy_set_wakeup(ci->usb_phy, false);
> + phy_power_on(ci->phy);
>   hw_wait_phy_stable();
>   }
>  
> -- 
> 2.9.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 

Best Regards,
Peter Chen


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

2016-08-19 Thread Jisheng Zhang
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 
---
 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);
ci->in_lpm = true;
enable_irq(ci->irq);
 }
@@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
}
 
ci_hdrc_enter_lpm(ci, false);
-   if (ci->usb_phy) {
+   if (ci->usb_phy || ci->phy) {
usb_phy_set_suspend(ci->usb_phy, 0);
usb_phy_set_wakeup(ci->usb_phy, false);
+   phy_power_on(ci->phy);
hw_wait_phy_stable();
}
 
-- 
2.9.3



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

2016-08-19 Thread Jisheng Zhang
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 
---
 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);
ci->in_lpm = true;
enable_irq(ci->irq);
 }
@@ -1132,9 +1133,10 @@ static int ci_controller_resume(struct device *dev)
}
 
ci_hdrc_enter_lpm(ci, false);
-   if (ci->usb_phy) {
+   if (ci->usb_phy || ci->phy) {
usb_phy_set_suspend(ci->usb_phy, 0);
usb_phy_set_wakeup(ci->usb_phy, false);
+   phy_power_on(ci->phy);
hw_wait_phy_stable();
}
 
-- 
2.9.3