xf86-video-intel: src/i830_bios.c

Jesse Barnes jbarnes at kemper.freedesktop.org
Mon Jan 26 15:00:43 PST 2009


 src/i830_bios.c |    6 ++++++
 1 file changed, 6 insertions(+)

New commits:
commit 57a02b50c60c10a25ff0f3cd93af9f37fa0d1b11
Author: Jesse Barnes <jbarnes at virtuousgeek.org>
Date:   Mon Jan 26 14:58:28 2009 -0800

    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.

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;


More information about the xorg-commit mailing list