diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/i830.h | 1 | ||||
-rw-r--r-- | src/i830_driver.c | 8 | ||||
-rw-r--r-- | src/i830_lvds.c | 10 |
3 files changed, 19 insertions, 0 deletions
@@ -652,6 +652,7 @@ typedef struct _I830Rec { /** Enables logging of debug output related to mode switching. */ Bool debug_modes; + Bool lvds_fixed_mode; unsigned int quirk_flag; } I830Rec; diff --git a/src/i830_driver.c b/src/i830_driver.c index ef898dc5..0db174b9 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -305,6 +305,7 @@ typedef enum { #ifdef XF86DRI_MM OPTION_INTELTEXPOOL, #endif + OPTION_LVDSFIXEDMODE, OPTION_TRIPLEBUFFER, OPTION_FORCEENABLEPIPEA, #ifdef INTEL_XVMC @@ -332,6 +333,7 @@ static OptionInfoRec I830Options[] = { #ifdef XF86DRI_MM {OPTION_INTELTEXPOOL,"Legacy3D", OPTV_BOOLEAN, {0}, FALSE}, #endif + {OPTION_LVDSFIXEDMODE, "LVDSFixedMode", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_TRIPLEBUFFER, "TripleBuffer", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_FORCEENABLEPIPEA, "ForceEnablePipeA", OPTV_BOOLEAN, {0}, FALSE}, #ifdef INTEL_XVMC @@ -1416,6 +1418,12 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) pI830->lvds_24_bit_mode = FALSE; } + if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDSFIXEDMODE, TRUE)) { + pI830->lvds_fixed_mode = TRUE; + } else { + pI830->lvds_fixed_mode = FALSE; + } + if (xf86ReturnOptValBool(pI830->Options, OPTION_FORCEENABLEPIPEA, FALSE)) pI830->quirk_flag |= QUIRK_PIPEA_FORCE; diff --git a/src/i830_lvds.c b/src/i830_lvds.c index 1562c217..48402dfa 100644 --- a/src/i830_lvds.c +++ b/src/i830_lvds.c @@ -1228,6 +1228,14 @@ i830_lvds_init(ScrnInfoPtr pScrn) */ I830I2CInit(pScrn, &intel_output->pDDCBus, GPIOC, "LVDSDDC_C"); + if (!pI830->lvds_fixed_mode) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Skipping any attempt to determine panel fixed mode.\n"); + goto skip_panel_fixed_mode_setup; + } + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Attempting to determine panel fixed mode.\n"); + /* Attempt to get the fixed panel mode from DDC. Assume that the preferred * mode is the right one. */ @@ -1311,6 +1319,8 @@ i830_lvds_init(ScrnInfoPtr pScrn) goto disable_exit; } + skip_panel_fixed_mode_setup: + /* Blacklist machines with BIOSes that list an LVDS panel without actually * having one. */ |