[Intel-gfx] [PATCH] TV: add option to set TV connector type

Wang, Zhenyu Z zhenyu.z.wang at intel.com
Fri Feb 20 02:36:46 CET 2009


On 2009.02.20 08:36:45 +0800, Wang, Zhenyu Z wrote:
>

Here's updated patch. Thanks for comments.

Subject: [PATCH] TV: add option to set TV connector type

This can let user override non-stable driver TV load detect,
and set connector type manually, e.g for s-video to component
converter, this patch seems must needed to use HD modes.
---
 man/intel.man |    6 ++++++
 src/i830_tv.c |   27 ++++++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/man/intel.man b/man/intel.man
index c7a3c61..87ee443 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -278,6 +278,12 @@ Adjusting these properties allows you to control the placement of your TV output
 .TP 2
 This property allows you to control the output standard used on your TV output port.  You can select between NTSC-M, NTSC-443, NTSC-J, PAL-M, PAL-N, and PAL.
 
+.PP
+.B TV_Connector
+- connector type
+.TP 2
+This property allows you to control the TV output connector type, which bypass load detect.  You can select between S-Video, Composite, Component.
+
 .SS "TMDS-1"
 First DVI SDVO output
 
diff --git a/src/i830_tv.c b/src/i830_tv.c
index 210070c..9b24055 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -56,6 +56,7 @@ enum tv_margin {
 /** Private structure for the integrated TV support */
 struct i830_tv_priv {
     int type;
+    Bool force_type;
     char *tv_format;
     int margin[4];
     uint32_t save_TV_H_CTL_1;
@@ -1371,6 +1372,9 @@ i830_tv_detect(xf86OutputPtr output)
     int			    dpms_mode;
     int			    type = dev_priv->type;
 
+    if (dev_priv->force_type)
+        return XF86OutputStatusConnected;
+
     mode = reported_modes[0];
     xf86SetModeCrtc (&mode, INTERLACE_HALVE_V);
     crtc = i830GetLoadDetectPipe (output, &mode, &dpms_mode);
@@ -1743,6 +1747,7 @@ i830_tv_init(ScrnInfoPtr pScrn)
     uint32_t		    tv_dac_on, tv_dac_off, save_tv_dac;
     XF86OptionPtr	    mon_option_lst = NULL;
     char		    *tv_format = NULL;
+    char		    *tv_type = NULL;
 
     if (pI830->quirk_flag & QUIRK_IGNORE_TV)
 	return;
@@ -1810,12 +1815,32 @@ i830_tv_init(ScrnInfoPtr pScrn)
     dev_priv->margin[TV_MARGIN_BOTTOM] = xf86SetIntOption (mon_option_lst,
 	    "Bottom", 37);
 
-    tv_format = xf86findOptionValue (mon_option_lst, "TV Format");
+    tv_format = xf86findOptionValue (mon_option_lst, "TV_Format");
     if (tv_format)
 	dev_priv->tv_format = xstrdup (tv_format);
     else
 	dev_priv->tv_format = xstrdup (tv_modes[0].name);
 
+    tv_type = xf86findOptionValue (mon_option_lst, "TV_Connector");
+    if (tv_type) {
+	dev_priv->force_type = TRUE;
+	if (strcasecmp(tv_type, "S-Video") == 0)
+	    dev_priv->type = TV_TYPE_SVIDEO;
+	else if (strcasecmp(tv_type, "Composite") == 0)
+	    dev_priv->type = TV_TYPE_COMPOSITE;
+	else if (strcasecmp(tv_type, "Component") == 0)
+	    dev_priv->type = TV_TYPE_COMPONENT;
+	else {
+	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		    "Unknown TV Connector type %s\n", tv_type);
+	    dev_priv->force_type = FALSE;
+	}
+    }
+
+    if (dev_priv->force_type)
+	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+		"Force TV Connector type as %s\n", tv_type);
+
     output->driver_private = intel_output;
     output->interlaceAllowed = FALSE;
     output->doubleScanAllowed = FALSE;
-- 
1.5.6.5


-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20090220/2a6ac3d2/attachment.sig>


More information about the Intel-gfx mailing list