Commit 75f50400 authored by Rajendra Nayak's avatar Rajendra Nayak Committed by Rafael J. Wysocki

PM / clock_ops: Provide default runtime ops to users

Most users of PM clocks do the extact same things in the runtime
suspend/resume callbacks. Provide them USE_PM_CLK_RUNTIME_OPS so
as to avoid/remove boilerplate code.
Signed-off-by: default avatarRajendra Nayak <rnayak@codeaurora.org>
Reviewed-by: default avatarKevin Hilman <khilman@linaro.org>
Acked-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
Acked-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 030bbdbf
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/clkdev.h> #include <linux/clkdev.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/pm_runtime.h>
#ifdef CONFIG_PM #ifdef CONFIG_PM
...@@ -367,6 +368,43 @@ static int pm_clk_notify(struct notifier_block *nb, ...@@ -367,6 +368,43 @@ static int pm_clk_notify(struct notifier_block *nb,
return 0; return 0;
} }
int pm_clk_runtime_suspend(struct device *dev)
{
int ret;
dev_dbg(dev, "%s\n", __func__);
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;
}
int pm_clk_runtime_resume(struct device *dev)
{
int ret;
dev_dbg(dev, "%s\n", __func__);
ret = pm_clk_resume(dev);
if (ret) {
dev_err(dev, "failed to resume clock\n");
return ret;
}
return pm_generic_runtime_resume(dev);
}
#else /* !CONFIG_PM */ #else /* !CONFIG_PM */
/** /**
......
...@@ -20,6 +20,16 @@ struct pm_clk_notifier_block { ...@@ -20,6 +20,16 @@ struct pm_clk_notifier_block {
struct clk; struct clk;
#ifdef CONFIG_PM
extern int pm_clk_runtime_suspend(struct device *dev);
extern int pm_clk_runtime_resume(struct device *dev);
#define USE_PM_CLK_RUNTIME_OPS \
.runtime_suspend = pm_clk_runtime_suspend, \
.runtime_resume = pm_clk_runtime_resume,
#else
#define USE_PM_CLK_RUNTIME_OPS
#endif
#ifdef CONFIG_PM_CLK #ifdef CONFIG_PM_CLK
static inline bool pm_clk_no_clocks(struct device *dev) static inline bool pm_clk_no_clocks(struct device *dev)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment