summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/i830.h1
-rw-r--r--src/i830_driver.c8
-rw-r--r--src/i830_lvds.c10
3 files changed, 19 insertions, 0 deletions
diff --git a/src/i830.h b/src/i830.h
index 28831e49..0ae8270d 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -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.
*/