From: Archit Taneja <architt@codeaurora.org>
Date: Fri, 16 Jun 2017 10:39:34 +0530
Subject: drm/msm/hdmi: 8996 PLL: Populate unprepare
Git-commit: b474cbbb2bfd8d38f8bc36165567fe153d89fc9a
Patch-mainline: v4.13-rc1
References: FATE#326289 FATE#326079 FATE#326049 FATE#322398 FATE#326166
Without doing anything in unprepare, the HDMI driver isn't able to
switch modes successfully. Calling set_rate with a new rate results
in an un-locked PLL.
If we reset the PLL in unprepare, the PLL is able to lock with the
new rate.
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
drivers/gpu/drm/msm/hdmi/hdmi_phy_8996.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/gpu/drm/msm/hdmi/hdmi_phy_8996.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy_8996.c
@@ -670,6 +670,11 @@ static unsigned long hdmi_8996_pll_recal
static void hdmi_8996_pll_unprepare(struct clk_hw *hw)
{
+ struct hdmi_pll_8996 *pll = hw_clk_to_pll(hw);
+ struct hdmi_phy *phy = pll_get_phy(pll);
+
+ hdmi_phy_write(phy, REG_HDMI_8996_PHY_CFG, 0x6);
+ usleep_range(100, 150);
}
static int hdmi_8996_pll_is_enabled(struct clk_hw *hw)