diff options
Diffstat (limited to 'drivers/usb/musb/omap2430.c')
-rw-r--r-- | drivers/usb/musb/omap2430.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index d341c149a2f9..d369bf1f3936 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c | |||
@@ -316,7 +316,13 @@ static void omap_musb_mailbox_work(struct work_struct *mailbox_work) | |||
316 | { | 316 | { |
317 | struct omap2430_glue *glue = container_of(mailbox_work, | 317 | struct omap2430_glue *glue = container_of(mailbox_work, |
318 | struct omap2430_glue, omap_musb_mailbox_work); | 318 | struct omap2430_glue, omap_musb_mailbox_work); |
319 | struct musb *musb = glue_to_musb(glue); | ||
320 | struct device *dev = musb->controller; | ||
321 | |||
322 | pm_runtime_get_sync(dev); | ||
319 | omap_musb_set_mailbox(glue); | 323 | omap_musb_set_mailbox(glue); |
324 | pm_runtime_mark_last_busy(dev); | ||
325 | pm_runtime_put_autosuspend(dev); | ||
320 | } | 326 | } |
321 | 327 | ||
322 | static irqreturn_t omap2430_musb_interrupt(int irq, void *__hci) | 328 | static irqreturn_t omap2430_musb_interrupt(int irq, void *__hci) |
@@ -416,6 +422,7 @@ static int omap2430_musb_init(struct musb *musb) | |||
416 | omap_musb_set_mailbox(glue); | 422 | omap_musb_set_mailbox(glue); |
417 | 423 | ||
418 | phy_init(musb->phy); | 424 | phy_init(musb->phy); |
425 | phy_power_on(musb->phy); | ||
419 | 426 | ||
420 | pm_runtime_put_noidle(musb->controller); | 427 | pm_runtime_put_noidle(musb->controller); |
421 | return 0; | 428 | return 0; |
@@ -478,6 +485,7 @@ static int omap2430_musb_exit(struct musb *musb) | |||
478 | del_timer_sync(&musb_idle_timer); | 485 | del_timer_sync(&musb_idle_timer); |
479 | 486 | ||
480 | omap2430_low_level_exit(musb); | 487 | omap2430_low_level_exit(musb); |
488 | phy_power_off(musb->phy); | ||
481 | phy_exit(musb->phy); | 489 | phy_exit(musb->phy); |
482 | 490 | ||
483 | return 0; | 491 | return 0; |