diff options
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 15feaf924b71..38bfeedae1d0 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -311,6 +311,7 @@ static void unlink_empty_async_suspended(struct ehci_hcd *ehci); | |||
311 | static void ehci_work(struct ehci_hcd *ehci); | 311 | static void ehci_work(struct ehci_hcd *ehci); |
312 | static void start_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh); | 312 | static void start_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh); |
313 | static void end_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh); | 313 | static void end_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh); |
314 | static int ehci_port_power(struct ehci_hcd *ehci, int portnum, bool enable); | ||
314 | 315 | ||
315 | #include "ehci-timer.c" | 316 | #include "ehci-timer.c" |
316 | #include "ehci-hub.c" | 317 | #include "ehci-hub.c" |
@@ -329,9 +330,13 @@ static void ehci_turn_off_all_ports(struct ehci_hcd *ehci) | |||
329 | { | 330 | { |
330 | int port = HCS_N_PORTS(ehci->hcs_params); | 331 | int port = HCS_N_PORTS(ehci->hcs_params); |
331 | 332 | ||
332 | while (port--) | 333 | while (port--) { |
333 | ehci_writel(ehci, PORT_RWC_BITS, | 334 | ehci_writel(ehci, PORT_RWC_BITS, |
334 | &ehci->regs->port_status[port]); | 335 | &ehci->regs->port_status[port]); |
336 | spin_unlock_irq(&ehci->lock); | ||
337 | ehci_port_power(ehci, port, false); | ||
338 | spin_lock_irq(&ehci->lock); | ||
339 | } | ||
335 | } | 340 | } |
336 | 341 | ||
337 | /* | 342 | /* |
@@ -1233,6 +1238,8 @@ void ehci_init_driver(struct hc_driver *drv, | |||
1233 | drv->hcd_priv_size += over->extra_priv_size; | 1238 | drv->hcd_priv_size += over->extra_priv_size; |
1234 | if (over->reset) | 1239 | if (over->reset) |
1235 | drv->reset = over->reset; | 1240 | drv->reset = over->reset; |
1241 | if (over->port_power) | ||
1242 | drv->port_power = over->port_power; | ||
1236 | } | 1243 | } |
1237 | } | 1244 | } |
1238 | EXPORT_SYMBOL_GPL(ehci_init_driver); | 1245 | EXPORT_SYMBOL_GPL(ehci_init_driver); |
@@ -1268,11 +1275,6 @@ MODULE_LICENSE ("GPL"); | |||
1268 | #define XILINX_OF_PLATFORM_DRIVER ehci_hcd_xilinx_of_driver | 1275 | #define XILINX_OF_PLATFORM_DRIVER ehci_hcd_xilinx_of_driver |
1269 | #endif | 1276 | #endif |
1270 | 1277 | ||
1271 | #ifdef CONFIG_USB_OCTEON_EHCI | ||
1272 | #include "ehci-octeon.c" | ||
1273 | #define PLATFORM_DRIVER ehci_octeon_driver | ||
1274 | #endif | ||
1275 | |||
1276 | #ifdef CONFIG_TILE_USB | 1278 | #ifdef CONFIG_TILE_USB |
1277 | #include "ehci-tilegx.c" | 1279 | #include "ehci-tilegx.c" |
1278 | #define PLATFORM_DRIVER ehci_hcd_tilegx_driver | 1280 | #define PLATFORM_DRIVER ehci_hcd_tilegx_driver |