static int sh_pm_runtime_suspend(struct device *dev) { int ret; ret = pm_generic_runtime_suspend(dev); if (ret) { dev_err(dev, "failed to suspend device\n"); return ret; } ret = pm_clk_suspend(dev); if (ret) { dev_err(dev, "failed to suspend clock\n"); pm_generic_runtime_resume(dev); return ret; } return 0; }
static int _od_suspend_noirq(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct omap_device *od = to_omap_device(pdev); int ret; if (od->flags & OMAP_DEVICE_NO_IDLE_ON_SUSPEND) return pm_generic_suspend_noirq(dev); ret = pm_generic_suspend_noirq(dev); if (!ret && !pm_runtime_status_suspended(dev)) { if (pm_generic_runtime_suspend(dev) == 0) { omap_device_idle(pdev); od->flags |= OMAP_DEVICE_SUSPENDED; } } return ret; }
static int _od_suspend_noirq(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct omap_device *od = to_omap_device(pdev); int ret; /* Don't attempt late suspend on a driver that is not bound */ if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) return 0; ret = pm_generic_suspend_noirq(dev); if (!ret && !pm_runtime_status_suspended(dev)) { if (pm_generic_runtime_suspend(dev) == 0) { omap_device_idle(pdev); od->flags |= OMAP_DEVICE_SUSPENDED; } } return ret; }
static int omap1_pm_runtime_suspend(struct device *dev) { struct clk *iclk, *fclk; int ret = 0; dev_dbg(dev, "%s\n", __func__); ret = pm_generic_runtime_suspend(dev); fclk = clk_get(dev, "fck"); if (!IS_ERR(fclk)) { clk_disable(fclk); clk_put(fclk); } iclk = clk_get(dev, "ick"); if (!IS_ERR(iclk)) { clk_disable(iclk); clk_put(iclk); } return 0; };
/** * acpi_subsys_runtime_suspend - Suspend device using ACPI. * @dev: Device to suspend. * * Carry out the generic runtime suspend procedure for @dev and use ACPI to put * it into a runtime low-power state. */ int acpi_subsys_runtime_suspend(struct device *dev) { int ret = pm_generic_runtime_suspend(dev); return ret ? ret : acpi_dev_runtime_suspend(dev); }
int __weak nvhost_pm_runtime_suspend(struct device *dev) { return pm_generic_runtime_suspend(dev); };