|
@@ -15,7 +15,7 @@
|
|
|
#include <linux/slab.h>
|
|
|
#include <linux/err.h>
|
|
|
|
|
|
-#ifdef CONFIG_PM_RUNTIME
|
|
|
+#ifdef CONFIG_PM
|
|
|
|
|
|
struct pm_runtime_clk_data {
|
|
|
struct list_head clock_list;
|
|
@@ -191,6 +191,10 @@ void pm_runtime_clk_destroy(struct device *dev)
|
|
|
kfree(prd);
|
|
|
}
|
|
|
|
|
|
+#endif /* CONFIG_PM */
|
|
|
+
|
|
|
+#ifdef CONFIG_PM_RUNTIME
|
|
|
+
|
|
|
/**
|
|
|
* pm_runtime_clk_acquire - Acquire a device clock.
|
|
|
* @dev: Device whose clock is to be acquired.
|
|
@@ -330,6 +334,60 @@ static int pm_runtime_clk_notify(struct notifier_block *nb,
|
|
|
|
|
|
#else /* !CONFIG_PM_RUNTIME */
|
|
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
+
|
|
|
+/**
|
|
|
+ * pm_runtime_clk_suspend - Disable clocks in a device's PM clock list.
|
|
|
+ * @dev: Device to disable the clocks for.
|
|
|
+ */
|
|
|
+int pm_runtime_clk_suspend(struct device *dev)
|
|
|
+{
|
|
|
+ struct pm_runtime_clk_data *prd = __to_prd(dev);
|
|
|
+ struct pm_clock_entry *ce;
|
|
|
+
|
|
|
+ dev_dbg(dev, "%s()\n", __func__);
|
|
|
+
|
|
|
+ /* If there is no driver, the clocks are already disabled. */
|
|
|
+ if (!prd || !dev->driver)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ mutex_lock(&prd->lock);
|
|
|
+
|
|
|
+ list_for_each_entry_reverse(ce, &prd->clock_list, node)
|
|
|
+ clk_disable(ce->clk);
|
|
|
+
|
|
|
+ mutex_unlock(&prd->lock);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * pm_runtime_clk_resume - Enable clocks in a device's PM clock list.
|
|
|
+ * @dev: Device to enable the clocks for.
|
|
|
+ */
|
|
|
+int pm_runtime_clk_resume(struct device *dev)
|
|
|
+{
|
|
|
+ struct pm_runtime_clk_data *prd = __to_prd(dev);
|
|
|
+ struct pm_clock_entry *ce;
|
|
|
+
|
|
|
+ dev_dbg(dev, "%s()\n", __func__);
|
|
|
+
|
|
|
+ /* If there is no driver, the clocks should remain disabled. */
|
|
|
+ if (!prd || !dev->driver)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ mutex_lock(&prd->lock);
|
|
|
+
|
|
|
+ list_for_each_entry(ce, &prd->clock_list, node)
|
|
|
+ clk_enable(ce->clk);
|
|
|
+
|
|
|
+ mutex_unlock(&prd->lock);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+#endif /* CONFIG_PM */
|
|
|
+
|
|
|
/**
|
|
|
* enable_clock - Enable a device clock.
|
|
|
* @dev: Device whose clock is to be enabled.
|