aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-10-26 04:58:12 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-11-11 17:50:56 -0500
commitcd986abbac6044c76b95fd512bc62329ef9959d0 (patch)
treef5d3ea8fa1cf43961bf1bc92792095567515539d /drivers/gpu/drm/i915/intel_display.c
parent4a0833ec48d3411042c0ccee3daec1cbca4c1999 (diff)
drm/i915: Write the FDI RX TU size reg at the right time
According to "Graphics BSpec: vol4g North Display Engine Registers [IVB], Display Mode Set Sequence" We need to write the TU size register of the fdi RX unit _before_ starting to train the link. Note: The current code is actually correct as Paulo mentioned in review, but it's a bit confusion since only the fdi rx/tx plls need to be enabled before the cpu pipes/planes. Hence it's still a good idea to move the TU_SIZE setting to the "right" spot in the sequence, to better match Bspec. Reviewed-by: Paulo Zanoni <paulo.r.zanoni@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.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 545e62fa8c77..54b1794c3403 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2700,9 +2700,6 @@ static void ironlake_fdi_pll_enable(struct intel_crtc *intel_crtc)
2700 int pipe = intel_crtc->pipe; 2700 int pipe = intel_crtc->pipe;
2701 u32 reg, temp; 2701 u32 reg, temp;
2702 2702
2703 /* Write the TU size bits so error detection works */
2704 I915_WRITE(FDI_RX_TUSIZE1(pipe),
2705 I915_READ(PIPE_DATA_M1(pipe)) & TU_SIZE_MASK);
2706 2703
2707 /* enable PCH FDI RX PLL, wait warmup plus DMI latency */ 2704 /* enable PCH FDI RX PLL, wait warmup plus DMI latency */
2708 reg = FDI_RX_CTL(pipe); 2705 reg = FDI_RX_CTL(pipe);
@@ -3003,6 +3000,11 @@ static void ironlake_pch_enable(struct drm_crtc *crtc)
3003 3000
3004 assert_transcoder_disabled(dev_priv, pipe); 3001 assert_transcoder_disabled(dev_priv, pipe);
3005 3002
3003 /* Write the TU size bits before fdi link training, so that error
3004 * detection works. */
3005 I915_WRITE(FDI_RX_TUSIZE1(pipe),
3006 I915_READ(PIPE_DATA_M1(pipe)) & TU_SIZE_MASK);
3007
3006 /* For PCH output, training FDI link */ 3008 /* For PCH output, training FDI link */
3007 dev_priv->display.fdi_link_train(crtc); 3009 dev_priv->display.fdi_link_train(crtc);
3008 3010