drm/msm/hdmi: 8996 PLL: Populate unprepare
authorArchit Taneja <architt@codeaurora.org>
Fri, 16 Jun 2017 05:09:34 +0000 (10:39 +0530)
committerRob Clark <robdclark@gmail.com>
Fri, 16 Jun 2017 15:16:08 +0000 (11:16 -0400)
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>
drivers/gpu/drm/msm/hdmi/hdmi_phy_8996.c

index 143eab46ba687b0b1a89969598736bc75e750809..1fb7645cc721d9a3e79560be56f6f732d34d100b 100644 (file)
@@ -670,6 +670,11 @@ static unsigned long hdmi_8996_pll_recalc_rate(struct clk_hw *hw,
 
 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)