Hi Baolin, Baolin Wang <baolin.wang@xxxxxxxxxx> writes: >>>>> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c >>>>> index e2e2487..162f17c 100644 >>>>> --- a/drivers/usb/host/xhci-plat.c >>>>> +++ b/drivers/usb/host/xhci-plat.c >>>>> @@ -250,6 +250,9 @@ static int xhci_plat_probe(struct platform_device *pdev) >>>>> (pdata && pdata->usb3_lpm_capable)) >>>>> xhci->quirks |= XHCI_LPM_SUPPORT; >>>>> >>>>> + if (pdata && pdata->usb3_slow_suspend) >>>>> + xhci->quirks |= XHCI_SLOW_SUSPEND; >>>> >>>> I remember having a discussion about this with Paul Z and it turned out >>>> that we really didn't need SLOW_SUSPEND. Can you describe further in >>>> what situation you need this quirk? >>> >>> On my dwc3 platform, xhci suspend will be failed if we have not >>> enabled XHCI_SLOW_SUSPEND quirk. >> >> fail how? What error do you see? Do you have some traces of what's >> happening? Did you try figuring out if this is, perhaps, caused by some >> call ordering which is wrong? Perhaps disabling PHYs too early or >> something like that? > > It shows the warning "WARN: xHC CMD_RUN timeout" when running > xhci_suspend(). If I enbale XHCI_SLOW_SUSPEND quirk, then it can work > well. I did not try to figure out other things, due to I think the > dwc3 need XHCI_SLOW_SUSPEND quirk. But I can re-try to figure out if > there are other issues if you still believe that dwc3 does not need > XHCI_SLOW_SUSPEND quirk. Thanks. When I discussed this with Paul Z, he told me there was no known DWC3 SoC that really needed SLOW_SUSPEND, so it's likely to be a bug in either xhci or dwc3. Please try to track this down. I would start looking at ordering with PHY poweroff or something like that. -- balbi
Attachment:
signature.asc
Description: PGP signature