Xhci spec requires in section 4.23.5.1.1.1 that the RWE bit of USB2 PORTPMSC register should only set for remote wakeup capble devices.
This was suggested by Mathias in the following discussion thread. http://marc.info/?l=linux-usb&m=148154757829677&w=2 Suggested-by: Mathias Nyman <[email protected]> Signed-off-by: Lu Baolu <[email protected]> --- drivers/usb/host/xhci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 0c8deb9..d887e09 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -4191,7 +4191,9 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, } pm_val &= ~PORT_HIRD_MASK; - pm_val |= PORT_HIRD(hird) | PORT_RWE | PORT_L1DS(udev->slot_id); + pm_val |= PORT_HIRD(hird) | PORT_L1DS(udev->slot_id); + if (udev->do_remote_wakeup) + pm_val |= PORT_RWE; writel(pm_val, pm_addr); pm_val = readl(pm_addr); pm_val |= PORT_HLE; -- 2.1.4

