summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2008-05-27 22:31:43 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 07:07:27 -0300
commit0e3bd2b9996dfa4105617e2369155823df6b389a (patch)
tree491a6d8d2a3e78a4e52bd8aaae42217dbe2343e5
parentb2de2313f170c3f7341d3a94365c5139a23067a7 (diff)
V4L/DVB (7948): videodev: add missing vidioc_try_fmt_sliced_vbi_output and VIDIOC_ENUMOUTPUT handling
There was no vidioc_try_fmt_sliced_vbi_output, instead vidioc_try_fmt_vbi_output was reused. The VIDIOC_ENUMOUTPUT handling was missing altogether, even though the callback existed. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r--drivers/media/video/videodev.c35
-rw-r--r--include/media/v4l2-dev.h10
2 files changed, 36 insertions, 9 deletions
diff --git a/drivers/media/video/videodev.c b/drivers/media/video/videodev.c
index 4d58b55095d..83106bba100 100644
--- a/drivers/media/video/videodev.c
+++ b/drivers/media/video/videodev.c
@@ -840,8 +840,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
ret=vfd->vidioc_enum_fmt_vbi(file, fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
- if (vfd->vidioc_enum_fmt_vbi_output)
- ret=vfd->vidioc_enum_fmt_vbi_output(file,
+ if (vfd->vidioc_enum_fmt_sliced_vbi_output)
+ ret = vfd->vidioc_enum_fmt_sliced_vbi_output(file,
fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
@@ -905,8 +905,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
ret=vfd->vidioc_g_fmt_vbi(file, fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
- if (vfd->vidioc_g_fmt_vbi_output)
- ret=vfd->vidioc_g_fmt_vbi_output(file, fh, f);
+ if (vfd->vidioc_g_fmt_sliced_vbi_output)
+ ret = vfd->vidioc_g_fmt_sliced_vbi_output(file, fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
if (vfd->vidioc_g_fmt_vbi_capture)
@@ -957,8 +957,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
ret=vfd->vidioc_s_fmt_vbi(file, fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
- if (vfd->vidioc_s_fmt_vbi_output)
- ret=vfd->vidioc_s_fmt_vbi_output(file, fh, f);
+ if (vfd->vidioc_s_fmt_sliced_vbi_output)
+ ret = vfd->vidioc_s_fmt_sliced_vbi_output(file, fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
if (vfd->vidioc_s_fmt_vbi_capture)
@@ -1009,8 +1009,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
ret=vfd->vidioc_try_fmt_vbi(file, fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
- if (vfd->vidioc_try_fmt_vbi_output)
- ret=vfd->vidioc_try_fmt_vbi_output(file,
+ if (vfd->vidioc_try_fmt_sliced_vbi_output)
+ ret = vfd->vidioc_try_fmt_sliced_vbi_output(file,
fh, f);
break;
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
@@ -1297,6 +1297,25 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
}
/* ------ output switching ---------- */
+ case VIDIOC_ENUMOUTPUT:
+ {
+ struct v4l2_output *p = arg;
+ int i = p->index;
+
+ if (!vfd->vidioc_enum_output)
+ break;
+ memset(p, 0, sizeof(*p));
+ p->index = i;
+
+ ret = vfd->vidioc_enum_output(file, fh, p);
+ if (!ret)
+ dbgarg(cmd, "index=%d, name=%s, type=%d, "
+ "audioset=%d, "
+ "modulator=%d, std=%08Lx\n",
+ p->index, p->name, p->type, p->audioset,
+ p->modulator, (unsigned long long)p->std);
+ break;
+ }
case VIDIOC_G_OUTPUT:
{
unsigned int *i = arg;
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 8a40f481d89..f14181fae6c 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -132,6 +132,8 @@ struct video_device
struct v4l2_fmtdesc *f);
int (*vidioc_enum_fmt_vbi_output) (struct file *file, void *fh,
struct v4l2_fmtdesc *f);
+ int (*vidioc_enum_fmt_sliced_vbi_output) (struct file *file, void *fh,
+ struct v4l2_fmtdesc *f);
int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh,
struct v4l2_fmtdesc *f);
@@ -144,6 +146,8 @@ struct video_device
struct v4l2_format *f);
int (*vidioc_g_fmt_vbi_output) (struct file *file, void *fh,
struct v4l2_format *f);
+ int (*vidioc_g_fmt_sliced_vbi_output) (struct file *file, void *fh,
+ struct v4l2_format *f);
int (*vidioc_g_fmt_vbi_capture)(struct file *file, void *fh,
struct v4l2_format *f);
int (*vidioc_g_fmt_video_output)(struct file *file, void *fh,
@@ -163,6 +167,8 @@ struct video_device
struct v4l2_format *f);
int (*vidioc_s_fmt_vbi_output) (struct file *file, void *fh,
struct v4l2_format *f);
+ int (*vidioc_s_fmt_sliced_vbi_output) (struct file *file, void *fh,
+ struct v4l2_format *f);
int (*vidioc_s_fmt_vbi_capture)(struct file *file, void *fh,
struct v4l2_format *f);
int (*vidioc_s_fmt_video_output)(struct file *file, void *fh,
@@ -181,6 +187,8 @@ struct video_device
struct v4l2_format *f);
int (*vidioc_try_fmt_vbi_output) (struct file *file, void *fh,
struct v4l2_format *f);
+ int (*vidioc_try_fmt_sliced_vbi_output) (struct file *file, void *fh,
+ struct v4l2_format *f);
int (*vidioc_try_fmt_vbi_capture)(struct file *file, void *fh,
struct v4l2_format *f);
int (*vidioc_try_fmt_video_output)(struct file *file, void *fh,
@@ -225,7 +233,7 @@ struct video_device
int (*vidioc_s_input) (struct file *file, void *fh, unsigned int i);
/* Output handling */
- int (*vidioc_enumoutput) (struct file *file, void *fh,
+ int (*vidioc_enum_output) (struct file *file, void *fh,
struct v4l2_output *a);
int (*vidioc_g_output) (struct file *file, void *fh, unsigned int *i);
int (*vidioc_s_output) (struct file *file, void *fh, unsigned int i);