diff options
Diffstat (limited to 'drivers/usb/host/ehci-hub.c')
-rw-r--r-- | drivers/usb/host/ehci-hub.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index a2c56cdd2c3a..a59c61fea09f 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -56,6 +56,19 @@ static void ehci_handover_companion_ports(struct ehci_hcd *ehci) | |||
56 | if (!ehci->owned_ports) | 56 | if (!ehci->owned_ports) |
57 | return; | 57 | return; |
58 | 58 | ||
59 | /* Make sure the ports are powered */ | ||
60 | port = HCS_N_PORTS(ehci->hcs_params); | ||
61 | while (port--) { | ||
62 | if (test_bit(port, &ehci->owned_ports)) { | ||
63 | reg = &ehci->regs->port_status[port]; | ||
64 | status = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; | ||
65 | if (!(status & PORT_POWER)) { | ||
66 | status |= PORT_POWER; | ||
67 | ehci_writel(ehci, status, reg); | ||
68 | } | ||
69 | } | ||
70 | } | ||
71 | |||
59 | /* Give the connections some time to appear */ | 72 | /* Give the connections some time to appear */ |
60 | msleep(20); | 73 | msleep(20); |
61 | 74 | ||