static int omap2430_musb_exit(struct musb *musb) { del_timer_sync(&musb_idle_timer); omap2430_low_level_exit(musb); return 0; }
static int omap2430_musb_exit(struct musb *musb) { omap2430_low_level_exit(musb); otg_put_transceiver(musb->xceiv); return 0; }
static int omap2430_musb_exit(struct musb *musb) { del_timer_sync(&musb_idle_timer); omap2430_low_level_exit(musb); otg_put_transceiver(musb->xceiv); return 0; }
static int omap2430_musb_exit(struct musb *musb) { del_timer_sync(&musb_idle_timer); cancel_work_sync(&musb->otg_notifier_work); omap2430_low_level_exit(musb); usb_put_transceiver(musb->xceiv); return 0; }
static int omap2430_runtime_suspend(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); return 0; }
static int omap2430_musb_exit(struct musb *musb) { del_timer_sync(&musb_idle_timer); otg_unregister_notifier(musb->xceiv, &musb->nb); destroy_workqueue(musb->otg_notifier_wq); omap2430_low_level_exit(musb); otg_put_transceiver(musb->xceiv); return 0; }
static int omap2430_suspend(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); omap2430_save_context(musb); clk_disable(glue->clk); return 0; }
static int omap2430_musb_exit(struct musb *musb) { struct device *dev = musb->controller; struct omap2430_glue *glue = dev_get_drvdata(dev->parent); omap2430_low_level_exit(musb); phy_power_off(musb->phy); phy_exit(musb->phy); musb->phy = NULL; cancel_work_sync(&glue->omap_musb_mailbox_work); return 0; }
static int omap2430_runtime_suspend(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); musb->context.otg_interfsel = musb_readl(musb->mregs, OTG_INTERFSEL); omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); return 0; }
static int omap2430_runtime_suspend(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); if (musb) { musb->context.otg_interfsel = musb_readl(musb->mregs, OTG_INTERFSEL); omap2430_low_level_exit(musb); phy_power_off(musb->phy); } return 0; }
int omap2430_async_suspend(struct musb *musb) { struct platform_device *pdev = to_platform_device(musb->controller->parent); unsigned long flags = 0; int ret = 0; if (!pdev) { pr_err("%s pdev is null error\n", __func__); return -ENODEV; } dev_info(&pdev->dev, "%s async_resume %d +\n", __func__, musb->async_resume); mutex_lock(&musb->async_musb_lock); do { musb->async_resume--; } while (musb->reserve_async_suspend-- > 0); musb->reserve_async_suspend = 0; if (musb->async_resume > 0) ; else if (musb->async_resume < 0) { musb->async_resume++; dev_err(&pdev->dev, "%s async_resume is fault\n", __func__); } else { spin_lock_irqsave(&musb->lock, flags); musb_async_suspend(musb); omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); spin_unlock_irqrestore(&musb->lock, flags); ret = omap_device_idle(pdev); if (ret < 0) { dev_err(&pdev->dev, "%s omap_device_idle error ret=%d\n", __func__, ret); mutex_unlock(&musb->async_musb_lock); return ret; } } mutex_unlock(&musb->async_musb_lock); dev_info(&pdev->dev, "%s async_resume %d -\n", __func__, musb->async_resume); return 0; }
static int omap2430_runtime_suspend(struct device *dev) { struct omap2430_glue *glue = dev_get_drvdata(dev); struct musb *musb = glue_to_musb(glue); if (mutex_trylock(&musb->musb_lock)) { dev_info(dev, "runtime suspend\n"); musb->context.otg_interfsel = musb_readl(musb->mregs, OTG_INTERFSEL); omap2430_low_level_exit(musb); otg_set_suspend(musb->xceiv, 1); mutex_unlock(&musb->musb_lock); return 0; } return -EBUSY; }