aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2007-04-27 11:31:04 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-04-27 14:43:22 -0400
commit045290b2a90ff1be60196a061aadecf70eb6bcc3 (patch)
treecbdf9547b5dbcc60f67793e4d64eff85f7accd35
parentb2787845fb91da18ebb079dc9297f92d990e9fe1 (diff)
V4L/DVB (5290): Add support for VIDIOC_INT_G/S_STD_OUTPUT
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>
-rw-r--r--drivers/media/video/saa7127.c4
-rw-r--r--drivers/media/video/v4l2-common.c5
-rw-r--r--include/media/v4l2-common.h8
3 files changed, 14 insertions, 3 deletions
diff --git a/drivers/media/video/saa7127.c b/drivers/media/video/saa7127.c
index 654863db1591..50dbb76d4a7f 100644
--- a/drivers/media/video/saa7127.c
+++ b/drivers/media/video/saa7127.c
@@ -550,12 +550,12 @@ static int saa7127_command(struct i2c_client *client,
550 struct v4l2_routing *route = arg; 550 struct v4l2_routing *route = arg;
551 551
552 switch (cmd) { 552 switch (cmd) {
553 case VIDIOC_S_STD: 553 case VIDIOC_INT_S_STD_OUTPUT:
554 if (state->std == *(v4l2_std_id *)arg) 554 if (state->std == *(v4l2_std_id *)arg)
555 break; 555 break;
556 return saa7127_set_std(client, *(v4l2_std_id *)arg); 556 return saa7127_set_std(client, *(v4l2_std_id *)arg);
557 557
558 case VIDIOC_G_STD: 558 case VIDIOC_INT_G_STD_OUTPUT:
559 *(v4l2_std_id *)arg = state->std; 559 *(v4l2_std_id *)arg = state->std;
560 break; 560 break;
561 561
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c
index 740ea5a9202f..4a3635cd6f9e 100644
--- a/drivers/media/video/v4l2-common.c
+++ b/drivers/media/video/v4l2-common.c
@@ -420,7 +420,10 @@ static const char *v4l2_int_ioctls[] = {
420 [_IOC_NR(VIDIOC_INT_G_AUDIO_ROUTING)] = "VIDIOC_INT_G_AUDIO_ROUTING", 420 [_IOC_NR(VIDIOC_INT_G_AUDIO_ROUTING)] = "VIDIOC_INT_G_AUDIO_ROUTING",
421 [_IOC_NR(VIDIOC_INT_S_VIDEO_ROUTING)] = "VIDIOC_INT_S_VIDEO_ROUTING", 421 [_IOC_NR(VIDIOC_INT_S_VIDEO_ROUTING)] = "VIDIOC_INT_S_VIDEO_ROUTING",
422 [_IOC_NR(VIDIOC_INT_G_VIDEO_ROUTING)] = "VIDIOC_INT_G_VIDEO_ROUTING", 422 [_IOC_NR(VIDIOC_INT_G_VIDEO_ROUTING)] = "VIDIOC_INT_G_VIDEO_ROUTING",
423 [_IOC_NR(VIDIOC_INT_S_CRYSTAL_FREQ)] = "VIDIOC_INT_S_CRYSTAL_FREQ" 423 [_IOC_NR(VIDIOC_INT_S_CRYSTAL_FREQ)] = "VIDIOC_INT_S_CRYSTAL_FREQ",
424 [_IOC_NR(VIDIOC_INT_INIT)] = "VIDIOC_INT_INIT",
425 [_IOC_NR(VIDIOC_INT_G_STD_OUTPUT)] = "VIDIOC_INT_G_STD_OUTPUT",
426 [_IOC_NR(VIDIOC_INT_S_STD_OUTPUT)] = "VIDIOC_INT_S_STD_OUTPUT",
424}; 427};
425#define V4L2_INT_IOCTLS ARRAY_SIZE(v4l2_int_ioctls) 428#define V4L2_INT_IOCTLS ARRAY_SIZE(v4l2_int_ioctls)
426 429
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
index 6eaeec98ed89..abb9ce9b21b8 100644
--- a/include/media/v4l2-common.h
+++ b/include/media/v4l2-common.h
@@ -254,4 +254,12 @@ struct v4l2_crystal_freq {
254 default values. */ 254 default values. */
255#define VIDIOC_INT_INIT _IOW ('d', 114, u32) 255#define VIDIOC_INT_INIT _IOW ('d', 114, u32)
256 256
257/* Set v4l2_std_id for video OUTPUT devices. This is ignored by
258 video input devices. */
259#define VIDIOC_INT_S_STD_OUTPUT _IOW ('d', 115, v4l2_std_id)
260
261/* Get v4l2_std_id for video OUTPUT devices. This is ignored by
262 video input devices. */
263#define VIDIOC_INT_G_STD_OUTPUT _IOW ('d', 116, v4l2_std_id)
264
257#endif /* V4L2_COMMON_H_ */ 265#endif /* V4L2_COMMON_H_ */