From: Jesse Barnes Date: Thu, 5 Nov 2009 18:12:54 +0000 (-0800) Subject: drm: work around EDIDs with bad htotal/vtotal values X-Git-Tag: v2.6.31.7~51 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a75c6447907a732d612fd399e8765f661cca77a7;p=karo-tx-linux.git drm: work around EDIDs with bad htotal/vtotal values commit 7064fef56369c9e2c6e35ff6d6b4b63d42a859ce upstream. We did this on the userspace side, but we need a similar fix for the kernel. Fixes LP #460664. Signed-off-by: Jesse Barnes Signed-off-by: Dave Airlie Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 7f2728bbc16c..55fb98d179ef 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -333,6 +333,12 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev, mode->vsync_end = mode->vsync_start + vsync_pulse_width; mode->vtotal = mode->vdisplay + vblank; + /* Some EDIDs have bogus h/vtotal values */ + if (mode->hsync_end > mode->htotal) + mode->htotal = mode->hsync_end + 1; + if (mode->vsync_end > mode->vtotal) + mode->vtotal = mode->vsync_end + 1; + drm_mode_set_name(mode); if (pt->misc & DRM_EDID_PT_INTERLACED)