USB keyboard on T100TA dock blocks system entering S3 when remote wakeup is enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am using an ASUS T100TA with dock attached. I installed Ubuntu Linux on eMMC and customized the kernel.

I started from "echo mem > /sys/power/state". Kernel starts its processes to put the system into suspend mode. Before kernel executes to xhci_bus_suspend(), xHC USB 2 root hub port (where keyboard on dock connected) reports a port resume event. In response of this event, xHCI roothub driver sets the corresponding bit in bus_state->resuming_ports and intent to clear it when hcd->rh_timer expires 20ms later.

handle_port_status():

                        xhci_dbg(xhci, "resume HS port %d\n", port_id);
bus_state->resume_done[faked_port_index] = jiffies +
                                msecs_to_jiffies(20);
set_bit(faked_port_index, &bus_state->resuming_ports);
                        mod_timer(&hcd->rh_timer,
bus_state->resume_done[faked_port_index]);

When system executes to xhci_bus_suspend(), it checks bus_state->resuming_ports. It stops here since bus_state->resuming_ports has been set.

xhci_bus_suspend():

        if (hcd->self.root_hub->do_remote_wakeup) {
                if (bus_state->resuming_ports) {
                        spin_unlock_irqrestore(&xhci->lock, flags);
                        xhci_dbg(xhci, "%s: suspend failed because "
"a port is resuming\n", __func__);
                        return -EBUSY;
                }
        }

This failure can always be reproduced when I use the keyboard on T100TA dock. But it doesn't show up with an external USB keyboard. Does anybody have any hints for me?

Regards,
-baolu
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux