[PATCH 61/71] drm/i915/chv: Turn off dclkp after the PLL has been disabled

ville.syrjala
2014-04-09T10:32:39Z

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

During the enable sequence we first enable the dclkp output to the
display controller, and then enable the PLL. Do the opposite during
the disable sequence.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 39be658..2033ffc 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1679,6 +1679,7 @@ static void vlv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)

static void chv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
{
+ enum dpio_channel port = vlv_pipe_to_channel(pipe);
u32 val;

/* Make sure the pipe isn't still relying on us */
@@ -1690,6 +1691,15 @@ static void chv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
val |= DPLL_INTEGRATED_CRI_CLK_VLV;
I915_WRITE(DPLL(pipe), val);
POSTING_READ(DPLL(pipe));
+
+ mutex_lock(&dev_priv->dpio_lock);
+
+ /* Disable 10bit clock to display controller */
+ val = vlv_dpio_read(dev_priv, pipe, CHV_CMN_DW14(port));
+ val &= ~DPIO_DCLKP_EN;
+ vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW14(port), val);
+
+ mutex_unlock(&dev_priv->dpio_lock);
}

void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
@@ -5475,11 +5485,6 @@ static void chv_update_pll(struct intel_crtc *crtc)
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port), val);

- /* Disable 10bit clock to display controller */
- val = vlv_dpio_read(dev_priv, pipe, CHV_CMN_DW14(port));
- val &= ~DPIO_DCLKP_EN;
- vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW14(port), val);
-
/* p1 and p2 divider */
vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW13(port),
5 << DPIO_CHV_S1_DIV_SELECT |
--
1.8.3.2