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: Rajendra Nayak <rnayak@codeaurora.org> Reviewed-by: Kevin Hilman <khilman@linaro.org> Acked-by: Santosh Shilimkar <ssantosh@kernel.org> Acked-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
030bbdbf4c
commit
75f504004a
@@ -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,
|
|||||||
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 {
|
|||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user