diff -ur orig/xserver-xorg-video-intel-2.4.1/src/i830_driver.c new/xserver-xorg-video-intel-2.4.1/src/i830_driver.c --- orig/xserver-xorg-video-intel-2.4.1/src/i830_driver.c 2008-08-14 22:35:37.000000000 -0400 +++ new/xserver-xorg-video-intel-2.4.1/src/i830_driver.c 2008-12-29 03:13:32.000000000 -0500 @@ -317,6 +317,7 @@ #ifdef INTEL_XVMC OPTION_XVMC, #endif + OPTION_LVDSHACK, } I830Opts; static OptionInfoRec I830Options[] = { @@ -345,6 +346,7 @@ #ifdef INTEL_XVMC {OPTION_XVMC, "XvMC", OPTV_BOOLEAN, {0}, TRUE}, #endif + {OPTION_LVDSHACK, "lvdshack", OPTV_BOOLEAN, {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; /* *INDENT-ON* */ @@ -1502,6 +1504,12 @@ pI830->lvds_24_bit_mode = FALSE; } + if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDSHACK, FALSE)) { + pI830->lvds_hack = TRUE; + } else { + pI830->lvds_hack = FALSE; + } + if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDSFIXEDMODE, TRUE)) { pI830->skip_panel_detect = FALSE; } else { diff -ur orig/xserver-xorg-video-intel-2.4.1/src/i830.h new/xserver-xorg-video-intel-2.4.1/src/i830.h --- orig/xserver-xorg-video-intel-2.4.1/src/i830.h 2008-08-14 22:33:23.000000000 -0400 +++ new/xserver-xorg-video-intel-2.4.1/src/i830.h 2008-12-29 03:16:10.000000000 -0500 @@ -552,6 +552,7 @@ OptionInfoPtr Options; Bool lvds_24_bit_mode; + Bool lvds_hack; Bool lvds_use_ssc; int lvds_ssc_freq; /* in MHz */ Bool lvds_dither; diff -ur orig/xserver-xorg-video-intel-2.4.1/src/i830_lvds.c new/xserver-xorg-video-intel-2.4.1/src/i830_lvds.c --- orig/xserver-xorg-video-intel-2.4.1/src/i830_lvds.c 2008-08-14 22:35:47.000000000 -0400 +++ new/xserver-xorg-video-intel-2.4.1/src/i830_lvds.c 2008-12-29 03:18:18.000000000 -0500 @@ -387,6 +387,7 @@ I830Ptr pI830 = I830PTR(pScrn); uint32_t pp_status; + if (pI830->lvds_hack && !on) return; if (on) { /* if we're going from on->on, be aware to current level. */ if ((INREG(PP_CONTROL) & POWER_TARGET_ON) && !dev_priv->dpmsoff)