On 10 August 2016 at 22:31, Alan Stern <st...@rowland.harvard.edu> wrote: > On Wed, 10 Aug 2016, Baolin Wang wrote: > >> Considering strict power management for mobile device, we should also power >> off the usb controller if there are no slaves attached even though it is usb >> host function, but it will meet usb device resume failure in below situation. >> >> Suppose that no slave attached ----> usb interface runtime suspend ----> >> usb device runtime suspend -----> xhci suspend -----> power off usb >> controller. >> After that if the system wants to enter suspend state, then it also will >> issue >> usb_dev_suspend(), then the pm_runtime_resume() issued in choose_wakeup() >> function will return '-ESHUTDOWN' due to xhci has been suspend and hardware >> is >> not accessible. > > No, this is wrong. The pm_runtime_resume in choose_wakeup() should > cause the xHCI controller to resume also.
But now it won't, it just resume usb device not xHCI controller. I suppose mainline kernel does not sopport this now. > >> After system entering resume state, if there is slave attached ----> power on >> usb controller ----> xhci resume ----> usb device runtime resume ----> >> usb interface runtime resume. But usb device will resume failed if runtime >> errors is set ('-ESHUTDOWN'), thus we should clear the runtime errors in >> choose_wakeup() function to avoid this situation. > > If the controller resumes correctly, this won't be necessary. > > Alan Stern > -- Baolin.wang Best Regards -- 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