aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/v4l2-ioctl.c
diff options
context:
space:
mode:
authorTrent Piepho <xyzzy@speakeasy.org>2009-04-30 20:03:34 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-05-09 17:51:18 -0400
commit1175d6131f7a89c163227169325ca77a22b18cb2 (patch)
tree27ddfa5c0925747267df57c3fca465e7fd969a75 /drivers/media/video/v4l2-ioctl.c
parent171f48e254339548a910867c7a77c4a4d16e7e16 (diff)
V4L/DVB (11661): v4l2-ioctl: Check buffer types using g_fmt instead of try_fmt
For a number of different ioctls, the v4l2-ioctl code checks that the passed buffer type is supported by the driver. It did this by checking that the driver defined a method for the try_fmt handler for that buffer type. However, try_fmt is optional and a driver might not provide it even though it does support that type. So use g_fmt instead, since that isn't optional. This should fix a problem with VBI capture with saa7146. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/v4l2-ioctl.c')
-rw-r--r--drivers/media/video/v4l2-ioctl.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index 88f10d6cbc92..feb420733027 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -544,39 +544,39 @@ static int check_fmt(const struct v4l2_ioctl_ops *ops, enum v4l2_buf_type type)
544 544
545 switch (type) { 545 switch (type) {
546 case V4L2_BUF_TYPE_VIDEO_CAPTURE: 546 case V4L2_BUF_TYPE_VIDEO_CAPTURE:
547 if (ops->vidioc_try_fmt_vid_cap) 547 if (ops->vidioc_g_fmt_vid_cap)
548 return 0; 548 return 0;
549 break; 549 break;
550 case V4L2_BUF_TYPE_VIDEO_OVERLAY: 550 case V4L2_BUF_TYPE_VIDEO_OVERLAY:
551 if (ops->vidioc_try_fmt_vid_overlay) 551 if (ops->vidioc_g_fmt_vid_overlay)
552 return 0; 552 return 0;
553 break; 553 break;
554 case V4L2_BUF_TYPE_VIDEO_OUTPUT: 554 case V4L2_BUF_TYPE_VIDEO_OUTPUT:
555 if (ops->vidioc_try_fmt_vid_out) 555 if (ops->vidioc_g_fmt_vid_out)
556 return 0; 556 return 0;
557 break; 557 break;
558 case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY: 558 case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
559 if (ops->vidioc_try_fmt_vid_out_overlay) 559 if (ops->vidioc_g_fmt_vid_out_overlay)
560 return 0; 560 return 0;
561 break; 561 break;
562 case V4L2_BUF_TYPE_VBI_CAPTURE: 562 case V4L2_BUF_TYPE_VBI_CAPTURE:
563 if (ops->vidioc_try_fmt_vbi_cap) 563 if (ops->vidioc_g_fmt_vbi_cap)
564 return 0; 564 return 0;
565 break; 565 break;
566 case V4L2_BUF_TYPE_VBI_OUTPUT: 566 case V4L2_BUF_TYPE_VBI_OUTPUT:
567 if (ops->vidioc_try_fmt_vbi_out) 567 if (ops->vidioc_g_fmt_vbi_out)
568 return 0; 568 return 0;
569 break; 569 break;
570 case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE: 570 case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
571 if (ops->vidioc_try_fmt_sliced_vbi_cap) 571 if (ops->vidioc_g_fmt_sliced_vbi_cap)
572 return 0; 572 return 0;
573 break; 573 break;
574 case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: 574 case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
575 if (ops->vidioc_try_fmt_sliced_vbi_out) 575 if (ops->vidioc_g_fmt_sliced_vbi_out)
576 return 0; 576 return 0;
577 break; 577 break;
578 case V4L2_BUF_TYPE_PRIVATE: 578 case V4L2_BUF_TYPE_PRIVATE:
579 if (ops->vidioc_try_fmt_type_private) 579 if (ops->vidioc_g_fmt_type_private)
580 return 0; 580 return 0;
581 break; 581 break;
582 } 582 }