The I945, I965, IronLake and SandyBridge chipsets expect vertical timings in frame units, whereas the DRM subsystem uses field units internally for interlaced modes. Signed-off-by: Peter Ross <pross at xvid.org> --- drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 2a3f707..992f481 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -5316,6 +5316,14 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc, adjusted_mode->crtc_vblank_end -= 1; adjusted_mode->crtc_vsync_end -= 1; adjusted_mode->crtc_vsync_start -= 1; + if (INTEL_INFO(dev)->gen >= 3) { + adjusted_mode->crtc_vdisplay *= 2; + adjusted_mode->crtc_vtotal *= 2; + adjusted_mode->crtc_vblank_start *= 2; + adjusted_mode->crtc_vblank_end *= 2; + adjusted_mode->crtc_vsync_end *= 2; + adjusted_mode->crtc_vsync_start *= 2; + } } else pipeconf &= ~PIPECONF_INTERLACE_MASK; /* progressive */ @@ -5908,6 +5916,12 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc, adjusted_mode->crtc_vblank_end -= 1; adjusted_mode->crtc_vsync_end -= 1; adjusted_mode->crtc_vsync_start -= 1; + adjusted_mode->crtc_vdisplay *= 2; + adjusted_mode->crtc_vtotal *= 2; + adjusted_mode->crtc_vblank_start *= 2; + adjusted_mode->crtc_vblank_end *= 2; + adjusted_mode->crtc_vsync_end *= 2; + adjusted_mode->crtc_vsync_start *= 2; } else pipeconf &= ~PIPECONF_INTERLACE_W_FIELD_INDICATION; /* progressive */ -- 1.7.5.4 -- Peter (A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B) -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20120119/dd766c75/attachment.pgp>