diff options
Diffstat (limited to 'drivers/usb/musb/musb_core.c')
-rw-r--r-- | drivers/usb/musb/musb_core.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 87cbd56cc761..029692053dd3 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c | |||
@@ -1156,8 +1156,8 @@ static struct musb_fifo_cfg mode_2_cfg[] = { | |||
1156 | { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, }, | 1156 | { .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, }, |
1157 | { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, | 1157 | { .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, |
1158 | { .hw_ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, | 1158 | { .hw_ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, |
1159 | { .hw_ep_num = 3, .style = FIFO_RXTX, .maxpacket = 256, }, | 1159 | { .hw_ep_num = 3, .style = FIFO_RXTX, .maxpacket = 960, }, |
1160 | { .hw_ep_num = 4, .style = FIFO_RXTX, .maxpacket = 256, }, | 1160 | { .hw_ep_num = 4, .style = FIFO_RXTX, .maxpacket = 1024, }, |
1161 | }; | 1161 | }; |
1162 | 1162 | ||
1163 | /* mode 3 - fits in 4KB */ | 1163 | /* mode 3 - fits in 4KB */ |
@@ -2671,6 +2671,13 @@ static int musb_suspend(struct device *dev) | |||
2671 | { | 2671 | { |
2672 | struct musb *musb = dev_to_musb(dev); | 2672 | struct musb *musb = dev_to_musb(dev); |
2673 | unsigned long flags; | 2673 | unsigned long flags; |
2674 | int ret; | ||
2675 | |||
2676 | ret = pm_runtime_get_sync(dev); | ||
2677 | if (ret < 0) { | ||
2678 | pm_runtime_put_noidle(dev); | ||
2679 | return ret; | ||
2680 | } | ||
2674 | 2681 | ||
2675 | musb_platform_disable(musb); | 2682 | musb_platform_disable(musb); |
2676 | musb_disable_interrupts(musb); | 2683 | musb_disable_interrupts(musb); |
@@ -2721,14 +2728,6 @@ static int musb_resume(struct device *dev) | |||
2721 | if ((devctl & mask) != (musb->context.devctl & mask)) | 2728 | if ((devctl & mask) != (musb->context.devctl & mask)) |
2722 | musb->port1_status = 0; | 2729 | musb->port1_status = 0; |
2723 | 2730 | ||
2724 | /* | ||
2725 | * The USB HUB code expects the device to be in RPM_ACTIVE once it came | ||
2726 | * out of suspend | ||
2727 | */ | ||
2728 | pm_runtime_disable(dev); | ||
2729 | pm_runtime_set_active(dev); | ||
2730 | pm_runtime_enable(dev); | ||
2731 | |||
2732 | musb_start(musb); | 2731 | musb_start(musb); |
2733 | 2732 | ||
2734 | spin_lock_irqsave(&musb->lock, flags); | 2733 | spin_lock_irqsave(&musb->lock, flags); |
@@ -2738,6 +2737,9 @@ static int musb_resume(struct device *dev) | |||
2738 | error); | 2737 | error); |
2739 | spin_unlock_irqrestore(&musb->lock, flags); | 2738 | spin_unlock_irqrestore(&musb->lock, flags); |
2740 | 2739 | ||
2740 | pm_runtime_mark_last_busy(dev); | ||
2741 | pm_runtime_put_autosuspend(dev); | ||
2742 | |||
2741 | return 0; | 2743 | return 0; |
2742 | } | 2744 | } |
2743 | 2745 | ||