[Intel-gfx] [PATCH] TV: add option to set TV connector type
Dan Nicholson
dbn.lists at gmail.com
Thu Feb 19 19:18:59 CET 2009
On Thu, Feb 19, 2009 at 12:58 AM, Zhenyu Wang <zhenyu.z.wang at intel.com> wrote:
> 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.
Maybe I'm being ignorant, but you have TV_Connector in the man page,
but the code checks for "TV Connector".
> .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;
Maybe use strcasecmp so "s-video" and "component" work?
--
Dan
More information about the Intel-gfx
mailing list