Re: [PATCH] usb: dwc3: Support the dwc3 host suspend/resume
From: Baolin Wang
Date: Mon Jul 24 2017 - 07:43:05 EST
Hi Manu,
On 24 July 2017 at 17:38, Manu Gautam <mgautam@xxxxxxxxxxxxxx> wrote:
> Hi,
>
>
> On 7/24/2017 2:45 PM, Baolin Wang wrote:
>> Hi Manu,
>>
>> On 24 July 2017 at 16:42, Manu Gautam <mgautam@xxxxxxxxxxxxxx> wrote:
>>> Hi Baolin,
>>>
>>>
>>> On 7/24/2017 11:26 AM, Baolin Wang wrote:
>>>
>>>>>>> Other than what I pushed in my patch -
>>>>>>> ("usb: dwc3: Don't reinitialize core during host bus-suspend/resume")
>>>>>>> Just performing pm_request_resume or handling same in dwc3 glue
>>>>>>> driver should be sufficient.
>>>>>> Yes.
>>>>>>
>>>>>>> Also, what is trigger for runtime_resume for your platform?
>>>>>> In our platform glue layer, we have extcon events to notify there are
>>>>>> devices connected, then gule layer will resume dwc3 device.
>>>>>>
>>>>> IMO you can just perform resume of &dwc->xhci->dev instead of resuming dwc3.
>>>>> Since, dwc3 is parent of xhci that will trigger resume of dwc3 as well.
>>>> I am not sure this is good enough but it seems can solve some
>>>> problems, then we do not need resume/suspend host in dwc3 core.
>>> In that case can we proceed with this patch:
>>> [1] https://www.spinics.net/lists/linux-usb/msg158682.html
>>>
>>> For your platform you can pick this patch and resume dwc->xhci->dev resume
>>> from your glue driver.
>>> Do you have any other concerns?
>> The same concern I explained in your patch. If we power off the
>> controller when suspend, how can controller work well as host if we do
>> not issue dwc3_core_init()? Suppose below cases:
>> device attached: resume glue layer (power on dwc3 controller) --->
>> resume dwc3 device ---> resume xHCI device
> Just resume won't do. XHCI also needs to be reinitialized.
>
>> no device attached: suspend xHCI device ---> suspend dwc3 device --->
>> suspend glue layer (we can power off the dwc3 controller now)
>>
>> Though now there are no upstreamed glue drivers will power off dwc3
>> controller, should we consider this situation?
>>
>
> Can we discuss on that patch thread itself?
>
> How will this platform handle runtime PM with only external HUB
> connected? Will runtime suspend take place?
> Would connecting device to that HUB's port be detected?
No, it should not suspend xHCI now. Maybe need get xHCI device usage
counter for this case in case xHCI can suspend automatically if there
are no device connected.
>
> Since, there is no upstreamed glue driver currently doing, we can
> probably ignore that. Also, above sequnence wont work without xhci init.
>
> Also, for this particular case glue driver can take care of re-initializing of
> dwc3 core as well.
Glue layer can not re-initialize of dwc3 core now since
dwc3_core_init() is not exported. Let's see what Felipe's suggestion
on your patch thread.
--
Baolin.wang
Best Regards