[Nouveau] SVIDEO and xrandr

Emil Velikov emil.l.velikov at gmail.com
Sun Nov 25 15:56:35 PST 2012


On 25/11/12 08:46, Wade Berrier wrote:
> Hello,
> 
> I've been trying to get my n17 card to do SVIDEO tv out
> 
> --------------------------
> 01:00.0 VGA compatible controller: NVIDIA Corporation NV17 [GeForce4 MX 440] (rev a3)
> --------------------------
> 
> It is close to working.  The first issue is that it was outputting PAL, and I
> found the module parameter and kernel boot config to change that:
> 
> --------------------------
> nouveau.tv_norm=NTSC-M
> --------------------------
> 
> That makes the picture look much better, but the colors are still off.
> 
> Then I notice that the card thinks it's outputting COMPOSITE instead of SVIDEO:
> 
> --------------------------
> wberrier at myth:~$ xrandr --prop
> Screen 0: minimum 320 x 200, current 640 x 480, maximum 4096 x 4096
> VGA-1 disconnected (normal left inverted right x axis y axis)
> TV-1 connected 640x480+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
>         overscan: 50 (0x00000032)       range:  (0,100)
>         hue: 0 (0x00000000)     range:  (0,100)
>         saturation: 50 (0x00000032)     range:  (0,100)
>         flicker reduction: 50 (0x00000032)      range:  (0,100)
>         mode:   NTSC-M
>                 supported: PAL          PAL-M        PAL-N        PAL-Nc      
>                            NTSC-M       NTSC-J      
>         subconnector:   Composite
>                 supported: Unknown      Composite    SVIDEO       Component   
>                            SCART       
>         select subconnector:    Automatic
>                 supported: Automatic    Composite    SVIDEO       Component   
>                            SCART       
>    720x480        59.9 +
>    1024x768       59.9  
>    800x600        59.9  
>    720x576        59.9  
>    640x480        59.9* 
>    400x300       119.9                                                                                                                                                    
>    320x240       119.9  
>    320x200       119.9  
> --------------------------
> 
> When trying to change the subconnector it to SVIDEO, it fails:
> 
> --------------------------
> wberrier at myth:~$ xrandr --output TV-1 --set subconnector SVIDEO
> X Error of failed request:  BadValue (integer parameter out of range for operation)
>   Major opcode of failed request:  149 (RANDR)
>   Minor opcode of failed request:  13 (RRChangeOutputProperty)
>   Value in failed request:  0x52
>   Serial number of failed request:  29
>   Current serial number in output stream:  30
> --------------------------
> 
> It appears that other people on the net are also having this issue.
> 
> I dug around the kernel nouveau/drm source and found where the default for
> COMPOSITE gets set, and also discovered that the "override_conntype" wasn't
> what I was looking for.
> 
> Any help about how to solve this and what the best method is?
> 
> An additional module parameter for nouveau may be nice for forcing the
> subconnector.
> 
> Fixing xrandr to work would also be nice, as it also fails to set the mode:
> 
> --------------------------
> wberrier at myth:~$ xrandr --output TV-1 --set mode PAL
> X Error of failed request:  BadValue (integer parameter out of range for operation)
>   Major opcode of failed request:  149 (RANDR)
>   Minor opcode of failed request:  13 (RRChangeOutputProperty)
>   Value in failed request:  0x52
>   Serial number of failed request:  29
>   Current serial number in output stream:  30
> --------------------------
> 
> Help?
> 
> Wade
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau
> 

Hi Wade

If you look at nv17_tv.c it will answer all your questions

It boils down to nv17_tv_set_property()

* if (property == conf->tv_mode_property) {
  	if (connector->dpms != DRM_MODE_DPMS_OFF)
  		return -EINVAL;
* if (property == conf->tv_select_subconnector_property) {
  	if (tv_norm->kind != TV_ENC_MODE)
  		return -EINVAL;

For a list of TV_ENC_MODE vs CTV_ENC_MODE take a look in nv17_tv_modes.c

Have fun :P


More information about the Nouveau mailing list