Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 28424981d3099dcac047cea5424ec3f7 > files > 8

x11-driver-video-intel-2.4.2-7.6mdv2009.0.src.rpm

From 4eae247ad06bf4254fd97805d9be9a3cddc1cbe6 Mon Sep 17 00:00:00 2001
From: Jesse Barnes <jbarnes@virtuousgeek.org>
Date: Mon, 26 Jan 2009 14:58:28 -0800
Subject: [PATCH 2/2] Fixup bogus VBT modes when detected

Several VBT modes out in the wild have H or VSyncEnd values greater than
the H or VTotal value.  This clearly ends up creating a bad mode,
causing some panels to either ignore the timing or display some sort of
corrupt image.

Check for these cases and fix them up by default, making things work for
several Dell and Sony machines.

Fixes FDO bug #17292.
---
 src/i830_bios.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/i830_bios.c b/src/i830_bios.c
index 72408f0..6baacd4 100644
--- a/src/i830_bios.c
+++ b/src/i830_bios.c
@@ -135,6 +135,12 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb)
     fixed_mode->Clock      = _PIXEL_CLOCK(timing_ptr) / 1000;
     fixed_mode->type       = M_T_PREFERRED;
 
+    /* Some VBTs have bogus h/vtotal values */
+    if (fixed_mode->HSyncEnd > fixed_mode->HTotal)
+	fixed_mode->HTotal = fixed_mode->HSyncEnd + 1;
+    if (fixed_mode->VSyncEnd > fixed_mode->VTotal)
+	fixed_mode->VTotal = fixed_mode->VSyncEnd + 1;
+
     xf86SetModeDefaultName(fixed_mode);
 
     pI830->lvds_fixed_mode = fixed_mode;
-- 
1.6.1