aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/xhci-hub.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/xhci-hub.c')
-rw-r--r--drivers/usb/host/xhci-hub.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index 5d2d7e954bd4..0230965fb78c 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -782,12 +782,15 @@ static u32 xhci_get_port_status(struct usb_hcd *hcd,
782 status |= USB_PORT_STAT_SUSPEND; 782 status |= USB_PORT_STAT_SUSPEND;
783 } 783 }
784 } 784 }
785 if ((raw_port_status & PORT_PLS_MASK) == XDEV_U0 785 if ((raw_port_status & PORT_PLS_MASK) == XDEV_U0 &&
786 && (raw_port_status & PORT_POWER) 786 (raw_port_status & PORT_POWER)) {
787 && (bus_state->suspended_ports & (1 << wIndex))) { 787 if (bus_state->suspended_ports & (1 << wIndex)) {
788 bus_state->suspended_ports &= ~(1 << wIndex); 788 bus_state->suspended_ports &= ~(1 << wIndex);
789 if (hcd->speed < HCD_USB3) 789 if (hcd->speed < HCD_USB3)
790 bus_state->port_c_suspend |= 1 << wIndex; 790 bus_state->port_c_suspend |= 1 << wIndex;
791 }
792 bus_state->resume_done[wIndex] = 0;
793 clear_bit(wIndex, &bus_state->resuming_ports);
791 } 794 }
792 if (raw_port_status & PORT_CONNECT) { 795 if (raw_port_status & PORT_CONNECT) {
793 status |= USB_PORT_STAT_CONNECTION; 796 status |= USB_PORT_STAT_CONNECTION;