At the moment, we have a habit of occasionally performing a double dpms
on. This confuses the FDI link training performed on a dpms on as we can
only adjust the settings whilst the link is disabled and the second
attempt at training fails. A simple defensive workaround is to always
disable the link prior to adjustment and re-enabling on dpms on.

Signed-off-by: Chris Wilson <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index be81483..e9da266 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1897,6 +1897,14 @@ static int ironlake_crtc_dpms(struct drm_crtc *crtc, int 
mode)
                        /* enable eDP PLL */
                        ironlake_enable_pll_edp(crtc);
                } else {
+                       /* unlock the FDI registers for retraining */
+                       temp = I915_READ(fdi_tx_reg);
+                       if (temp & FDI_TX_ENABLE)
+                               I915_WRITE(fdi_tx_reg, temp & ~FDI_TX_ENABLE);
+
+                       temp = I915_READ(fdi_rx_reg);
+                       if (temp & FDI_RX_ENABLE)
+                               I915_WRITE(fdi_rx_reg, temp & ~FDI_RX_ENABLE);
 
                        /* enable PCH FDI RX PLL, wait warmup plus DMI latency 
*/
                        temp = I915_READ(fdi_rx_reg);
-- 
1.7.1

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to