V4L/DVB (5290): Add support for VIDIOC_INT_G/S_STD_OUTPUT
authorHans Verkuil <hverkuil@xs4all.nl>
Fri, 27 Apr 2007 15:31:04 +0000 (12:31 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 27 Apr 2007 18:43:22 +0000 (15:43 -0300)
Added VIDIOC_INT_G_STD_OUTPUT and VIDIOC_INT_S_STD_OUTPUT to allow drivers
to set the TV standard for video output separately from the video capture.
This is needed for cx23415 support where the decoder is separate from the
encoder and can have a different TV standard.
Modified the saa7127 module to listen to VIDIOC_INT_G/S_STD_OUTPUT instead
of VIDIOC_G/S_STD.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/saa7127.c
drivers/media/video/v4l2-common.c
include/media/v4l2-common.h

index 654863db15919b4e5a9c7d891195d75b3afaa4fa..50dbb76d4a7f380eab51d2794ebb0dd7421829de 100644 (file)
@@ -550,12 +550,12 @@ static int saa7127_command(struct i2c_client *client,
        struct v4l2_routing *route = arg;
 
        switch (cmd) {
-       case VIDIOC_S_STD:
+       case VIDIOC_INT_S_STD_OUTPUT:
                if (state->std == *(v4l2_std_id *)arg)
                        break;
                return saa7127_set_std(client, *(v4l2_std_id *)arg);
 
-       case VIDIOC_G_STD:
+       case VIDIOC_INT_G_STD_OUTPUT:
                *(v4l2_std_id *)arg = state->std;
                break;
 
index 740ea5a9202f3d2e59262ef6a77c755711329d40..4a3635cd6f9ee3a500d060ddf818000488223ba4 100644 (file)
@@ -420,7 +420,10 @@ static const char *v4l2_int_ioctls[] = {
        [_IOC_NR(VIDIOC_INT_G_AUDIO_ROUTING)]  = "VIDIOC_INT_G_AUDIO_ROUTING",
        [_IOC_NR(VIDIOC_INT_S_VIDEO_ROUTING)]  = "VIDIOC_INT_S_VIDEO_ROUTING",
        [_IOC_NR(VIDIOC_INT_G_VIDEO_ROUTING)]  = "VIDIOC_INT_G_VIDEO_ROUTING",
-       [_IOC_NR(VIDIOC_INT_S_CRYSTAL_FREQ)]   = "VIDIOC_INT_S_CRYSTAL_FREQ"
+       [_IOC_NR(VIDIOC_INT_S_CRYSTAL_FREQ)]   = "VIDIOC_INT_S_CRYSTAL_FREQ",
+       [_IOC_NR(VIDIOC_INT_INIT)]             = "VIDIOC_INT_INIT",
+       [_IOC_NR(VIDIOC_INT_G_STD_OUTPUT)]     = "VIDIOC_INT_G_STD_OUTPUT",
+       [_IOC_NR(VIDIOC_INT_S_STD_OUTPUT)]     = "VIDIOC_INT_S_STD_OUTPUT",
 };
 #define V4L2_INT_IOCTLS ARRAY_SIZE(v4l2_int_ioctls)
 
index 6eaeec98ed8908fc819193a7226002a4218e5ac4..abb9ce9b21b8ce9699cb7ae01f6c2304dca0c967 100644 (file)
@@ -254,4 +254,12 @@ struct v4l2_crystal_freq {
    default values. */
 #define VIDIOC_INT_INIT                        _IOW ('d', 114, u32)
 
+/* Set v4l2_std_id for video OUTPUT devices. This is ignored by
+   video input devices. */
+#define VIDIOC_INT_S_STD_OUTPUT                _IOW  ('d', 115, v4l2_std_id)
+
+/* Get v4l2_std_id for video OUTPUT devices. This is ignored by
+   video input devices. */
+#define VIDIOC_INT_G_STD_OUTPUT                _IOW  ('d', 116, v4l2_std_id)
+
 #endif /* V4L2_COMMON_H_ */