summaryrefslogtreecommitdiff
path: root/drivers/clk
diff options
context:
space:
mode:
authorTaniya Das <tdas@codeaurora.org>2018-07-13 11:51:02 +0530
committerSiddhartha Agrawal <agrawals@codeaurora.org>2018-12-19 17:20:54 -0800
commit56ebcfcaca063f8cedf59a6e053fe687d419bae0 (patch)
treecd99d7bc8ea904608de81d95182b9925063fae4b /drivers/clk
parent361feeef4f86ebcedf04c8c43484bf72d3997f71 (diff)
clk: msm: mmss: Add dev_pm_ops for MMSS PLL for 8996
Support early resume and late suspend for MMPLLs to support hibernation. Without this change, the mmplls were not getting restored to a sane state on the hibernate resume. Change-Id: I7edb7219149d2e96a9487cdaf19a0bc4b9ec709f Signed-off-by: Taniya Das <tdas@codeaurora.org> Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/msm/clock-mmss-8996.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/clk/msm/clock-mmss-8996.c b/drivers/clk/msm/clock-mmss-8996.c
index 30169d3f3a98..339ae1622005 100644
--- a/drivers/clk/msm/clock-mmss-8996.c
+++ b/drivers/clk/msm/clock-mmss-8996.c
@@ -3648,6 +3648,21 @@ void __iomem *gpu_base;
u64 efuse;
int gpu_speed_bin;
+static int mmss_pll_suspend(struct device *dev)
+{
+ return 0;
+}
+
+static int mmss_pll_resume(struct device *dev)
+{
+#ifdef CONFIG_HIBERNATION
+ mmpll9.c.ops->set_rate(&mmpll9.c, 1248000000);
+ mmpll8.c.ops->set_rate(&mmpll8.c, 510000);
+ mmpll2.c.ops->set_rate(&mmpll2.c, 510000);
+#endif
+ return 0;
+}
+
int msm_mmsscc_8996_probe(struct platform_device *pdev)
{
struct resource *res;
@@ -3810,11 +3825,19 @@ static struct of_device_id msm_clock_mmss_match_table[] = {
{},
};
+static const struct dev_pm_ops msm_clock_mmss_pm_ops = {
+ .freeze_late = mmss_pll_suspend,
+ .thaw_early = mmss_pll_resume,
+ .poweroff_late = mmss_pll_suspend,
+ .restore_early = mmss_pll_resume,
+};
+
static struct platform_driver msm_clock_mmss_driver = {
.probe = msm_mmsscc_8996_probe,
.driver = {
.name = "qcom,mmsscc-8996",
.of_match_table = msm_clock_mmss_match_table,
+ .pm = &msm_clock_mmss_pm_ops,
.owner = THIS_MODULE,
},
};