diff options
author | Trent Piepho <xyzzy@speakeasy.org> | 2009-04-30 20:03:34 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-05-09 17:51:18 -0400 |
commit | 1175d6131f7a89c163227169325ca77a22b18cb2 (patch) | |
tree | 27ddfa5c0925747267df57c3fca465e7fd969a75 /drivers/media/video/v4l2-ioctl.c | |
parent | 171f48e254339548a910867c7a77c4a4d16e7e16 (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.c | 18 |
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 | } |