[PATCH v3] usb: dwc2: add bus suspend/resume for dwc2

Kever Yang kever.yang at rock-chips.com
Mon Jan 5 17:42:21 PST 2015

Hi Paul,

I think you need this patch to fix the problem:

usb: dwc2: resume root hub when device detect with suspend state


- Kever
On 01/06/2015 09:23 AM, Paul Zimmerman wrote:
>> From: Kever Yang [mailto:kever.yang at rock-chips.com]
>> Sent: Wednesday, November 12, 2014 4:42 PM
>> On 11/13/2014 07:22 AM, Doug Anderson wrote:
>>> Kever,
>>> On Mon, Nov 10, 2014 at 5:09 AM, Kever Yang <kever.yang at rock-chips.com> wrote:
>>>> Hcd controller needs bus_suspend/resume, dwc2 controller make
>>>> root hub generate suspend/resume signal with hprt0 register
>>>> when work in host mode.
>>>> After the root hub enter suspend, we can make controller enter
>>>> low power state with PCGCTL register.
>>>> We also update the lx_state for hsotg state.
>>>> This patch has tested on rk3288 with suspend/resume.
>>>> Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
>>>> Acked-by: Paul Zimmerman <paulz at synopsys.com>
>>>> ---
>>>> Changes in v3:
>>>> - remove CONFIG_PM macro for bus_suspend/resume
>>>> - add PCGCTL operation for no device connect case
>>>> Changes in v2:
>>>> - update commit message
>>>> - make dwc2 suspend/resume sourcecode work
>>>>    drivers/usb/dwc2/hcd.c | 88 +++++++++++++++++++++++++++++++++++++++++++-------
>>>>    1 file changed, 77 insertions(+), 11 deletions(-)
>>> I would certainly appreciate confirmation, but my inclination is to
>>> NAK this change due to the fact that it regresses functionality.  I
>>> haven't done any serious review of it, but I've been testing it and it
>>> appears to break hotplug.
>>> Said another way, I did this:
>>> 1. Without this patch, I booted with a USB stick in.  It was detected.
>>> I unplugged it, waited 5 seconds, and then plugged it back in.  The
>>> USB stick was redetcted.
>>> 2. With this patch, I did the same thing.  The USB not redected after
>>> plugging it back in.
>> With this patch, the dwc2 hcd/root hub will be auto suspend after device
>> on port is disconnected, and it can't detect the device connect any more,
>> I think that's the problem.
>> I will figure out how to make dwc2 detect the device connect after auto
>> suspend,
>> or disable the auto suspend feature for the dwc2 hcd.
> Kever,
> This patch has made it into Linus' kernel as commit 0cf884e819e0, and
> it breaks disconnect/connect on at least the Altera SOCFPGA platform.
> I haven't been able to test it on any other platforms.
> You need to submit a patch to either fix this, or to only enable this
> feature for the Rock-chip platform. Otherwise the patch has to be
> reverted.

More information about the Linux-rockchip mailing list