diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 4 |
3 files changed, 30 insertions, 3 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); |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 417fb4a642e9..eeab3ae780cc 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -3632,9 +3632,8 @@ static void haswell_crtc_disable(struct drm_crtc *crtc) | |||
3632 | encoder->post_disable(encoder); | 3632 | encoder->post_disable(encoder); |
3633 | 3633 | ||
3634 | if (is_pch_port) { | 3634 | if (is_pch_port) { |
3635 | ironlake_fdi_disable(crtc); | ||
3636 | lpt_disable_pch_transcoder(dev_priv); | 3635 | lpt_disable_pch_transcoder(dev_priv); |
3637 | ironlake_fdi_pll_disable(intel_crtc); | 3636 | intel_ddi_fdi_disable(crtc); |
3638 | } | 3637 | } |
3639 | 3638 | ||
3640 | intel_crtc->active = false; | 3639 | intel_crtc->active = false; |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 08238ef92b40..bcc52412810f 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -662,6 +662,8 @@ extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock); | |||
662 | extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc); | 662 | extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc); |
663 | extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); | 663 | extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); |
664 | extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); | 664 | extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); |
665 | bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); | 665 | extern bool |
666 | intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); | ||
667 | extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); | ||
666 | 668 | ||
667 | #endif /* __INTEL_DRV_H__ */ | 669 | #endif /* __INTEL_DRV_H__ */ |