]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/msm/dsi_pll_10nm: restore VCO rate during restore_state
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 15 Oct 2020 19:03:30 +0000 (22:03 +0300)
committerPaolo Pisati <paolo.pisati@canonical.com>
Mon, 4 Jan 2021 15:36:33 +0000 (16:36 +0100)
BugLink: https://bugs.launchpad.net/bugs/1910111
[ Upstream commit a4ccc37693a271330a46208afbeaed939d54fdbb ]

PHY disable/enable resets PLL registers to default values. Thus in
addition to restoring several registers we also need to restore VCO rate
settings.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Fixes: c6659785dfb3 ("drm/msm/dsi/pll: call vco set rate explicitly")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c

index 6ac04fc303f5699ba29b356e714c35ea96b6f12e..e4e9bf04b73687a48d239bb26c54ccf2d7e65a52 100644 (file)
@@ -559,6 +559,7 @@ static int dsi_pll_10nm_restore_state(struct msm_dsi_pll *pll)
        struct pll_10nm_cached_state *cached = &pll_10nm->cached_state;
        void __iomem *phy_base = pll_10nm->phy_cmn_mmio;
        u32 val;
+       int ret;
 
        val = pll_read(pll_10nm->mmio + REG_DSI_10nm_PHY_PLL_PLL_OUTDIV_RATE);
        val &= ~0x3;
@@ -573,6 +574,13 @@ static int dsi_pll_10nm_restore_state(struct msm_dsi_pll *pll)
        val |= cached->pll_mux;
        pll_write(phy_base + REG_DSI_10nm_PHY_CMN_CLK_CFG1, val);
 
+       ret = dsi_pll_10nm_vco_set_rate(&pll->clk_hw, pll_10nm->vco_current_rate, pll_10nm->vco_ref_clk_rate);
+       if (ret) {
+               DRM_DEV_ERROR(&pll_10nm->pdev->dev,
+                       "restore vco rate failed. ret=%d\n", ret);
+               return ret;
+       }
+
        DBG("DSI PLL%d", pll_10nm->id);
 
        return 0;