kernel/drivers/usb/host/ehci-hub.c
.. .. @@ -1174,7 +1174,7 @@ 1174 1174 goto error; 1175 1175 wIndex--; 1176 1176 temp = ehci_readl(ehci, status_reg); 1177 - if (temp & PORT_OWNER)1177 + if ((temp & PORT_OWNER) && (!HCD_POWER_ON(hcd)))1178 1178 break; 1179 1179 1180 1180 temp &= ~PORT_RWC_BITS; .. .. @@ -1217,6 +1217,7 @@ 1217 1217 if (HCS_PPC(ehci->hcs_params)) { 1218 1218 spin_unlock_irqrestore(&ehci->lock, flags); 1219 1219 ehci_port_power(ehci, wIndex, true); 1220 + clear_bit(HCD_FLAG_POWER_ON, &hcd->flags);1220 1221 spin_lock_irqsave(&ehci->lock, flags); 1221 1222 } 1222 1223 break;