aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/musb/musb_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/musb/musb_core.c')
-rw-r--r--drivers/usb/musb/musb_core.c22
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