aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2014-04-09 06:28:59 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-05-20 09:40:37 -0400
commitd752048dcd1225b481074318cf92ee751d6d475e (patch)
tree09b2544340c867bb561d0f507a66283fa2c55e2b /drivers/gpu/drm/i915/intel_display.c
parent949c1d43d681a168216afe35071588e8edec354c (diff)
drm/i915/chv: Turn off dclkp after the PLL has been disabled
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> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 39f37bb7a16a..21103a547aa7 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1694,6 +1694,7 @@ static void vlv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
1694 1694
1695static void chv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe) 1695static void chv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
1696{ 1696{
1697 enum dpio_channel port = vlv_pipe_to_channel(pipe);
1697 u32 val; 1698 u32 val;
1698 1699
1699 /* Make sure the pipe isn't still relying on us */ 1700 /* Make sure the pipe isn't still relying on us */
@@ -1705,6 +1706,15 @@ static void chv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
1705 val |= DPLL_INTEGRATED_CRI_CLK_VLV; 1706 val |= DPLL_INTEGRATED_CRI_CLK_VLV;
1706 I915_WRITE(DPLL(pipe), val); 1707 I915_WRITE(DPLL(pipe), val);
1707 POSTING_READ(DPLL(pipe)); 1708 POSTING_READ(DPLL(pipe));
1709
1710 mutex_lock(&dev_priv->dpio_lock);
1711
1712 /* Disable 10bit clock to display controller */
1713 val = vlv_dpio_read(dev_priv, pipe, CHV_CMN_DW14(port));
1714 val &= ~DPIO_DCLKP_EN;
1715 vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW14(port), val);
1716
1717 mutex_unlock(&dev_priv->dpio_lock);
1708} 1718}
1709 1719
1710void vlv_wait_port_ready(struct drm_i915_private *dev_priv, 1720void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
@@ -5538,11 +5548,6 @@ static void chv_update_pll(struct intel_crtc *crtc)
5538 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 5548 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
5539 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port), val); 5549 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port), val);
5540 5550
5541 /* Disable 10bit clock to display controller */
5542 val = vlv_dpio_read(dev_priv, pipe, CHV_CMN_DW14(port));
5543 val &= ~DPIO_DCLKP_EN;
5544 vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW14(port), val);
5545
5546 /* p1 and p2 divider */ 5551 /* p1 and p2 divider */
5547 vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW13(port), 5552 vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW13(port),
5548 5 << DPIO_CHV_S1_DIV_SHIFT | 5553 5 << DPIO_CHV_S1_DIV_SHIFT |