diff options
author | Paulo Zanoni <paulo.r.zanoni@intel.com> | 2012-11-01 19:05:05 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-11-11 17:51:33 -0500 |
commit | 1ad960f25ca419ca337284b369cf78d84b6a439e (patch) | |
tree | 4024669f836a683de9f050fd6335f7b25ad79c15 /drivers/gpu/drm/i915/intel_ddi.c | |
parent | 049456416f74a4a66d058cf9a46075f0051c6383 (diff) |
drm/i915: fix Haswell FDI link disable path
This covers the "Disable FDI" section from the CRT mode set sequence.
This disables the FDI receiver and also the FDI pll.
Signed-off-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_ddi.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 00958399dcfe..58f50ebdbef6 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c | |||
@@ -1365,6 +1365,32 @@ void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder) | |||
1365 | udelay(600); | 1365 | udelay(600); |
1366 | } | 1366 | } |
1367 | 1367 | ||
1368 | void intel_ddi_fdi_disable(struct drm_crtc *crtc) | ||
1369 | { | ||
1370 | struct drm_i915_private *dev_priv = crtc->dev->dev_private; | ||
1371 | struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); | ||
1372 | uint32_t val; | ||
1373 | |||
1374 | intel_ddi_post_disable(intel_encoder); | ||
1375 | |||
1376 | val = I915_READ(_FDI_RXA_CTL); | ||
1377 | val &= ~FDI_RX_ENABLE; | ||
1378 | I915_WRITE(_FDI_RXA_CTL, val); | ||
1379 | |||
1380 | val = I915_READ(_FDI_RXA_MISC); | ||
1381 | val &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); | ||
1382 | val |= FDI_RX_PWRDN_LANE1_VAL(2) | FDI_RX_PWRDN_LANE0_VAL(2); | ||
1383 | I915_WRITE(_FDI_RXA_MISC, val); | ||
1384 | |||
1385 | val = I915_READ(_FDI_RXA_CTL); | ||
1386 | val &= ~FDI_PCDCLK; | ||
1387 | I915_WRITE(_FDI_RXA_CTL, val); | ||
1388 | |||
1389 | val = I915_READ(_FDI_RXA_CTL); | ||
1390 | val &= ~FDI_RX_PLL_ENABLE; | ||
1391 | I915_WRITE(_FDI_RXA_CTL, val); | ||
1392 | } | ||
1393 | |||
1368 | static void intel_ddi_hot_plug(struct intel_encoder *intel_encoder) | 1394 | static void intel_ddi_hot_plug(struct intel_encoder *intel_encoder) |
1369 | { | 1395 | { |
1370 | struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); | 1396 | struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); |