diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-10-26 04:58:12 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-11-11 17:50:56 -0500 |
commit | cd986abbac6044c76b95fd512bc62329ef9959d0 (patch) | |
tree | f5d3ea8fa1cf43961bf1bc92792095567515539d /drivers/gpu/drm/i915/intel_display.c | |
parent | 4a0833ec48d3411042c0ccee3daec1cbca4c1999 (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.c | 8 |
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 | ||