[Intel-gfx] [PATCH] TV: add option to set TV connector type
Zhenyu Wang
zhenyu.z.wang at intel.com
Thu Feb 19 09:58:09 CET 2009
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 | 22 ++++++++++++++++++++++
2 files changed, 28 insertions(+), 0 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..13a072a 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;
@@ -1816,6 +1821,23 @@ i830_tv_init(ScrnInfoPtr pScrn)
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 (strcmp(tv_type, "S-Video") == 0)
+ dev_priv->type = TV_TYPE_SVIDEO;
+ else if (strcmp(tv_type, "Composite") == 0)
+ dev_priv->type = TV_TYPE_COMPOSITE;
+ else if (strcmp(tv_type, "Component") == 0)
+ dev_priv->type = TV_TYPE_COMPONENT;
+ else
+ 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
More information about the Intel-gfx
mailing list