[Intel-gfx] [PATCH] drm/i915: de-magic the dp train value DDI channel dpio ports

Daniel Vetter daniel.vetter at ffwll.ch
Thu Apr 18 22:08:56 CEST 2013


This way we can lift the port == C restriction, too!

Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
 drivers/gpu/drm/i915/intel_dp.c |   22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 2743f65..71a0f11 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1532,13 +1532,7 @@ static void vlv_set_vswing_pre_emphasis(struct intel_dp *intel_dp, uint8_t train
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	unsigned long demph_reg_value, preemph_reg_value,
 		      uniqtranscale_reg_value;
-
-	/*
-	 * FIXME: This seems to be for port C or eDP only. Who knows exactly,
-	 * since the register writes are all magic values.
-	 */
-	if (intel_dig_port->port != PORT_C)
-		return;
+	int ddi_channel = intel_dig_port->port - 1;
 
 	switch (train_set & DP_TRAIN_PRE_EMPHASIS_MASK) {
 	case DP_TRAIN_PRE_EMPHASIS_0:
@@ -1615,13 +1609,13 @@ static void vlv_set_vswing_pre_emphasis(struct intel_dp *intel_dp, uint8_t train
 
 	/* eDP is only on port C */
 	mutex_lock(&dev_priv->dpio_lock);
-	intel_dpio_write(dev_priv, 0x8494, 0x00000000);
-	intel_dpio_write(dev_priv, 0x8490, demph_reg_value);
-	intel_dpio_write(dev_priv, 0x8488, uniqtranscale_reg_value);
-	intel_dpio_write(dev_priv, 0x848c, 0x0C782040);
-	intel_dpio_write(dev_priv, 0x842c, 0x00030000);
-	intel_dpio_write(dev_priv, 0x8424, preemph_reg_value);
-	intel_dpio_write(dev_priv, 0x8494, 0x80000000);
+	intel_dpio_write(dev_priv, DPIO_TX_OCALINIT(ddi_channel), 0x00000000);
+	intel_dpio_write(dev_priv, DPIO_TX_SWING_CTL4(ddi_channel), demph_reg_value);
+	intel_dpio_write(dev_priv, DPIO_TX_SWING_CTL2(ddi_channel), uniqtranscale_reg_value);
+	intel_dpio_write(dev_priv, DPIO_TX_SWING_CTL3(ddi_channel), 0x0C782040);
+	intel_dpio_write(dev_priv, DPIO_PCS_STAGGER0(ddi_channel), 0x00030000);
+	intel_dpio_write(dev_priv, DPIO_PCS_CTL_OVER1(ddi_channel), preemph_reg_value);
+	intel_dpio_write(dev_priv, DPIO_TX_OCALINIT(ddi_channel), 0x80000000);
 	mutex_unlock(&dev_priv->dpio_lock);
 }
 
-- 
1.7.10.4




More information about the Intel-gfx mailing list