diff options
author | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-09-28 10:08:26 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-09-28 10:08:26 +0800 |
commit | 11d304e99c0e11c28901ec28115d9c8b81a2b9cc (patch) | |
tree | 941305fc5334096c8ba7aa756cc27b877014271d | |
parent | 1cc15ba454fdf54a7dea9da066e0a023a4742fab (diff) |
Bug #16631: add option for SDVO force detect
Some ADD2 card doesn't get SDVO detect status setup right,
which disabled outputs on those cards. This adds a new
option "ForceSDVODetect" to probe all SDVO ports anyway.
-rw-r--r-- | man/intel.man | 6 | ||||
-rw-r--r-- | src/i830.h | 4 | ||||
-rw-r--r-- | src/i830_driver.c | 12 |
3 files changed, 20 insertions, 2 deletions
diff --git a/man/intel.man b/man/intel.man index 8419f2df..115b35ac 100644 --- a/man/intel.man +++ b/man/intel.man @@ -222,6 +222,12 @@ information. Enable XvMC driver. Current support MPEG2 MC on 915/945 and G33 series. User should provide absolute path to libIntelXvMC.so in XvMCConfig file. Default: Disabled. +.TP +.BI "Option \*qForceSDVODetect\*q \*q" boolean \*q +Instead of depending on SDVO detect status bit to initialize SDVO outputs, +this option trys to ignore that status bit and try to probe on all SDVO +ports anyway. Try this if some output is not detected on your ADD2 card. +Use of this option will slow down your startup time. Default: Disabled. .SH OUTPUT CONFIGURATION On 830M and better chipsets, the driver supports runtime configuration of @@ -714,6 +714,10 @@ typedef struct _I830Rec { /** Enables logging of debug output related to mode switching. */ Bool debug_modes; unsigned int quirk_flag; + + /* User option to ignore SDVO detect bit status, in case some outputs + not detected on SDVO, so let driver try its best. */ + Bool force_sdvo_detect; } I830Rec; #define I830PTR(p) ((I830Ptr)((p)->driverPrivate)) diff --git a/src/i830_driver.c b/src/i830_driver.c index 389775f4..ce7b623f 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -316,6 +316,7 @@ typedef enum { #ifdef INTEL_XVMC OPTION_XVMC, #endif + OPTION_FORCE_SDVO_DETECT, } I830Opts; static OptionInfoRec I830Options[] = { @@ -342,6 +343,7 @@ static OptionInfoRec I830Options[] = { #ifdef INTEL_XVMC {OPTION_XVMC, "XvMC", OPTV_BOOLEAN, {0}, TRUE}, #endif + {OPTION_FORCE_SDVO_DETECT, "ForceSDVODetect", OPTV_BOOLEAN, {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; /* *INDENT-ON* */ @@ -915,14 +917,14 @@ I830SetupOutputs(ScrnInfoPtr pScrn) i830_lvds_init(pScrn); if (IS_I9XX(pI830)) { - if (INREG(SDVOB) & SDVO_DETECTED) { + if ((INREG(SDVOB) & SDVO_DETECTED) || pI830->force_sdvo_detect) { Bool found = i830_sdvo_init(pScrn, SDVOB); if (!found && SUPPORTS_INTEGRATED_HDMI(pI830)) i830_hdmi_init(pScrn, SDVOB); } - if (INREG(SDVOC) & SDVO_DETECTED) { + if ((INREG(SDVOC) & SDVO_DETECTED) || pI830->force_sdvo_detect) { Bool found = i830_sdvo_init(pScrn, SDVOC); if (!found && SUPPORTS_INTEGRATED_HDMI(pI830)) @@ -1464,6 +1466,12 @@ I830GetEarlyOptions(ScrnInfoPtr pScrn) if (xf86ReturnOptValBool(pI830->Options, OPTION_FORCEENABLEPIPEA, FALSE)) pI830->quirk_flag |= QUIRK_PIPEA_FORCE; + if (xf86ReturnOptValBool(pI830->Options, OPTION_FORCE_SDVO_DETECT, FALSE)) { + pI830->force_sdvo_detect = TRUE; + } else { + pI830->force_sdvo_detect = FALSE; + } + return TRUE; } |