aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/musb/musb_core.c9
-rw-r--r--drivers/usb/musb/omap2430.c2
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 0f8b82918a40..239214626ec5 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1904,7 +1904,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
1904 1904
1905 if (!musb->isr) { 1905 if (!musb->isr) {
1906 status = -ENODEV; 1906 status = -ENODEV;
1907 goto fail3; 1907 goto fail2;
1908 } 1908 }
1909 1909
1910 if (!musb->xceiv->io_ops) { 1910 if (!musb->xceiv->io_ops) {
@@ -1912,6 +1912,8 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
1912 musb->xceiv->io_ops = &musb_ulpi_access; 1912 musb->xceiv->io_ops = &musb_ulpi_access;
1913 } 1913 }
1914 1914
1915 pm_runtime_get_sync(musb->controller);
1916
1915#ifndef CONFIG_MUSB_PIO_ONLY 1917#ifndef CONFIG_MUSB_PIO_ONLY
1916 if (use_dma && dev->dma_mask) { 1918 if (use_dma && dev->dma_mask) {
1917 struct dma_controller *c; 1919 struct dma_controller *c;
@@ -2023,6 +2025,8 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
2023 goto fail5; 2025 goto fail5;
2024#endif 2026#endif
2025 2027
2028 pm_runtime_put(musb->controller);
2029
2026 dev_info(dev, "USB %s mode controller at %p using %s, IRQ %d\n", 2030 dev_info(dev, "USB %s mode controller at %p using %s, IRQ %d\n",
2027 ({char *s; 2031 ({char *s;
2028 switch (musb->board_mode) { 2032 switch (musb->board_mode) {
@@ -2047,6 +2051,9 @@ fail4:
2047 musb_gadget_cleanup(musb); 2051 musb_gadget_cleanup(musb);
2048 2052
2049fail3: 2053fail3:
2054 pm_runtime_put_sync(musb->controller);
2055
2056fail2:
2050 if (musb->irq_wake) 2057 if (musb->irq_wake)
2051 device_init_wakeup(dev, 0); 2058 device_init_wakeup(dev, 0);
2052 musb_platform_exit(musb); 2059 musb_platform_exit(musb);
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index 11b571ec22f2..3dfd122266f4 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -333,6 +333,7 @@ static int omap2430_musb_init(struct musb *musb)
333 333
334 setup_timer(&musb_idle_timer, musb_do_idle, (unsigned long) musb); 334 setup_timer(&musb_idle_timer, musb_do_idle, (unsigned long) musb);
335 335
336 pm_runtime_put_noidle(musb->controller);
336 return 0; 337 return 0;
337 338
338err1: 339err1:
@@ -478,7 +479,6 @@ static int __devexit omap2430_remove(struct platform_device *pdev)
478 479
479 platform_device_del(glue->musb); 480 platform_device_del(glue->musb);
480 platform_device_put(glue->musb); 481 platform_device_put(glue->musb);
481 pm_runtime_put(&pdev->dev);
482 kfree(glue); 482 kfree(glue);
483 483
484 return 0; 484 return 0;