diff options
Diffstat (limited to 'drivers/usb/musb/musb_host.c')
-rw-r--r-- | drivers/usb/musb/musb_host.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index 6582a20bec05..ed455724017b 100644 --- a/drivers/usb/musb/musb_host.c +++ b/drivers/usb/musb/musb_host.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <linux/sched.h> | 39 | #include <linux/sched.h> |
40 | #include <linux/slab.h> | 40 | #include <linux/slab.h> |
41 | #include <linux/errno.h> | 41 | #include <linux/errno.h> |
42 | #include <linux/init.h> | ||
43 | #include <linux/list.h> | 42 | #include <linux/list.h> |
44 | #include <linux/dma-mapping.h> | 43 | #include <linux/dma-mapping.h> |
45 | 44 | ||
@@ -2013,7 +2012,7 @@ static int musb_schedule( | |||
2013 | head = &musb->out_bulk; | 2012 | head = &musb->out_bulk; |
2014 | 2013 | ||
2015 | /* Enable bulk RX/TX NAK timeout scheme when bulk requests are | 2014 | /* Enable bulk RX/TX NAK timeout scheme when bulk requests are |
2016 | * multiplexed. This scheme doen't work in high speed to full | 2015 | * multiplexed. This scheme does not work in high speed to full |
2017 | * speed scenario as NAK interrupts are not coming from a | 2016 | * speed scenario as NAK interrupts are not coming from a |
2018 | * full speed device connected to a high speed device. | 2017 | * full speed device connected to a high speed device. |
2019 | * NAK timeout interval is 8 (128 uframe or 16ms) for HS and | 2018 | * NAK timeout interval is 8 (128 uframe or 16ms) for HS and |
@@ -2433,6 +2432,8 @@ static int musb_bus_suspend(struct usb_hcd *hcd) | |||
2433 | struct musb *musb = hcd_to_musb(hcd); | 2432 | struct musb *musb = hcd_to_musb(hcd); |
2434 | u8 devctl; | 2433 | u8 devctl; |
2435 | 2434 | ||
2435 | musb_port_suspend(musb, true); | ||
2436 | |||
2436 | if (!is_host_active(musb)) | 2437 | if (!is_host_active(musb)) |
2437 | return 0; | 2438 | return 0; |
2438 | 2439 | ||
@@ -2462,7 +2463,12 @@ static int musb_bus_suspend(struct usb_hcd *hcd) | |||
2462 | 2463 | ||
2463 | static int musb_bus_resume(struct usb_hcd *hcd) | 2464 | static int musb_bus_resume(struct usb_hcd *hcd) |
2464 | { | 2465 | { |
2465 | /* resuming child port does the work */ | 2466 | struct musb *musb = hcd_to_musb(hcd); |
2467 | |||
2468 | if (musb->config && | ||
2469 | musb->config->host_port_deassert_reset_at_resume) | ||
2470 | musb_port_reset(musb, false); | ||
2471 | |||
2466 | return 0; | 2472 | return 0; |
2467 | } | 2473 | } |
2468 | 2474 | ||
@@ -2657,6 +2663,7 @@ int musb_host_setup(struct musb *musb, int power_budget) | |||
2657 | if (ret < 0) | 2663 | if (ret < 0) |
2658 | return ret; | 2664 | return ret; |
2659 | 2665 | ||
2666 | device_wakeup_enable(hcd->self.controller); | ||
2660 | return 0; | 2667 | return 0; |
2661 | } | 2668 | } |
2662 | 2669 | ||