diff --git a/src/i830.h b/src/i830.h index 71c46b4..614794e 100644 --- a/src/i830.h +++ b/src/i830.h @@ -552,6 +552,7 @@ typedef struct _I830Rec { /** Enables logging of debug output related to mode switching. */ Bool debug_modes; unsigned int quirk_flag; + Bool forceEnable_pipeA; } I830Rec; #define I830PTR(p) ((I830Ptr)((p)->driverPrivate)) diff --git a/src/i830_crt.c b/src/i830_crt.c index d7762a0..f5828dc 100644 --- a/src/i830_crt.c +++ b/src/i830_crt.c @@ -359,7 +359,7 @@ i830_crt_detect(xf86OutputPtr output) } if (i830_crt_detect_ddc(output)) - return XF86OutputStatusConnected; + return XF86OutputStatusConnected; /* Use the load-detect method if we have no other way of telling. */ crtc = i830GetLoadDetectPipe (output, NULL, &dpms_mode); @@ -370,7 +370,14 @@ i830_crt_detect(xf86OutputPtr output) connected = i830_crt_detect_load (crtc, output); i830ReleaseLoadDetectPipe (output, dpms_mode); - if (connected) + + if(pI830->forceEnable_pipeA) + { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Overriding VGA detection. Pipe A will be forcibly enabled.\n"); + return XF86OutputStatusConnected; + } + else if (connected) return XF86OutputStatusConnected; else return XF86OutputStatusDisconnected; diff --git a/src/i830_driver.c b/src/i830_driver.c index b168fd4..a0b39f8 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -296,6 +296,7 @@ typedef enum { OPTION_INTELMMSIZE, #endif OPTION_TRIPLEBUFFER, + OPTION_FORCEENABLEPIPEA } I830Opts; static OptionInfoRec I830Options[] = { @@ -319,6 +320,7 @@ static OptionInfoRec I830Options[] = { {OPTION_INTELMMSIZE, "AperTexSize", OPTV_INTEGER, {0}, FALSE}, #endif {OPTION_TRIPLEBUFFER, "TripleBuffer", OPTV_BOOLEAN, {0}, FALSE}, + {OPTION_FORCEENABLEPIPEA, "ForceEnablePipeA", OPTV_BOOLEAN, {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; /* *INDENT-ON* */ @@ -1481,6 +1483,9 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) #endif + pI830->forceEnable_pipeA= + xf86ReturnOptValBool(pI830->Options, OPTION_FORCEENABLEPIPEA, FALSE); + I830PreInitDDC(pScrn); for (i = 0; i < num_pipe; i++) { i830_crtc_init(pScrn, i);