aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@virtuousgeek.org>2010-10-07 19:01:16 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-10-08 05:28:22 -0400
commit7f8232826842b27525857615262f50fe66c84dd7 (patch)
treed7f548cc99a1e7b167d84fc508444e6898f37a34
parent5b2adf897146edeac6a1e438fb67b5a53dbbdf34 (diff)
drm/i915: fix PCH eDP SSC support
Enable SSC on PCH eDP if possible. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> [ickle: added a posting read of PCH_DREF_CONTROL before the udelay] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 5812fc7c5a0f..d7d59006a846 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3796,13 +3796,25 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
3796 3796
3797 POSTING_READ(PCH_DREF_CONTROL); 3797 POSTING_READ(PCH_DREF_CONTROL);
3798 udelay(200); 3798 udelay(200);
3799 }
3800 temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK;
3799 3801
3800 temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK; 3802 /* Enable CPU source on CPU attached eDP */
3801 temp |= DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD; 3803 if (!intel_encoder_is_pch_edp(&has_edp_encoder->base)) {
3804 if (dev_priv->lvds_use_ssc)
3805 temp |= DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD;
3806 else
3807 temp |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD;
3802 } else { 3808 } else {
3803 temp |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD; 3809 /* Enable SSC on PCH eDP if needed */
3810 if (dev_priv->lvds_use_ssc) {
3811 DRM_ERROR("enabling SSC on PCH\n");
3812 temp |= DREF_SUPERSPREAD_SOURCE_ENABLE;
3813 }
3804 } 3814 }
3805 I915_WRITE(PCH_DREF_CONTROL, temp); 3815 I915_WRITE(PCH_DREF_CONTROL, temp);
3816 POSTING_READ(PCH_DREF_CONTROL);
3817 udelay(200);
3806 } 3818 }
3807 } 3819 }
3808 3820