On Tue, 5 Mar 2013, Sarah Sharp wrote:
> static void compliance_mode_recovery(unsigned long arg)
> {
> ...
> for (i = 0; i < xhci->num_usb3_ports; i++) {
> temp = xhci_readl(xhci, xhci->usb3_ports[i]);
> if ((temp & PORT_PLS_MASK) == USB_SS_PORT_LS_COMP_MOD) {
> /*
> * Compliance Mode Detected. Letting USB Core
> * handle the Warm Reset
> */
>
> What happens when the xHCI host controller goes into D3cold due to
> runtime PM? The port status registers will read as all f's, so we will
> miss any transitions to the compliance mode that happened before or
> during the transition to D3cold.
>
> This code probably needs to wake up the host controller and keep it from
> suspending until all the ports can be read.
>
> Alan, would the right way to do that be a get/put call into the runtime
> PM core?
If xhci_suspend deletes the Compliance Mode Recovery timer then the
timer will never fire while the controller is in D3cold. The problem
won't arise.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html