xf86-video-intel: man/intel.man src/i830_driver.c src/i830.h

Zhenyu Wang zhen at kemper.freedesktop.org
Sat Sep 27 19:16:40 PDT 2008


 man/intel.man     |    6 ++++++
 src/i830.h        |    4 ++++
 src/i830_driver.c |   12 ++++++++++--
 3 files changed, 20 insertions(+), 2 deletions(-)

New commits:
commit 11d304e99c0e11c28901ec28115d9c8b81a2b9cc
Author: Zhenyu Wang <zhenyu.z.wang at intel.com>
Date:   Sun Sep 28 10:08:26 2008 +0800

    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.

diff --git a/man/intel.man b/man/intel.man
index 8419f2d..115b35a 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
diff --git a/src/i830.h b/src/i830.h
index 5fb7e24..491dfd0 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -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 389775f..ce7b623 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;
 }
 


More information about the xorg-commit mailing list