}
pm_runtime_enable(&pdev->dev);
+#ifdef CONFIG_PM
+ clk_disable_unprepare(priv->clk_pdm_apb);
+ clk_disable_unprepare(priv->clk_pdm_mclk);
+ clk_disable_unprepare(priv->clk_mclk);
+#endif
+
return 0;
}
.driver = {
.name = "jh7110-pdm",
.of_match_table = sf_pdm_of_match,
-#ifdef CONFIG_PM
.pm = &sf_pdm_pm_ops,
-#endif
},
.probe = sf_pdm_probe,
.remove = sf_pdm_dev_remove,
sf_tdm_writel(dev, TDM_PCMRXCR, datarx);
}
-#ifdef CONFIG_PM
-static int sf_tdm_runtime_suspend(struct device *dev)
+static void sf_tdm_clk_disable(struct sf_tdm_dev *priv)
{
- struct sf_tdm_dev *priv = dev_get_drvdata(dev);
-
clk_disable_unprepare(priv->clk_tdm);
clk_disable_unprepare(priv->clk_tdm_ext);
clk_disable_unprepare(priv->clk_tdm_internal);
clk_disable_unprepare(priv->clk_tdm_apb);
clk_disable_unprepare(priv->clk_tdm_ahb);
clk_disable_unprepare(priv->clk_mclk_inner);
+}
+#ifdef CONFIG_PM
+static int sf_tdm_runtime_suspend(struct device *dev)
+{
+ struct sf_tdm_dev *priv = dev_get_drvdata(dev);
+
+ sf_tdm_clk_disable(priv);
return 0;
}
}
pm_runtime_enable(&pdev->dev);
+#ifdef CONFIG_PM
+ sf_tdm_clk_disable(dev);
+#endif
+
return 0;
}
.driver = {
.name = "jh7110-tdm",
.of_match_table = sf_tdm_of_match,
-#ifdef CONFIG_PM
.pm = &sf_tdm_pm_ops,
-#endif
},
.probe = sf_tdm_probe,
.remove = sf_tdm_dev_remove,