diff options
| author | Trent Piepho <xyzzy@speakeasy.org> | 2009-04-30 21:03:34 -0300 | 
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-05-09 18:51:18 -0300 | 
| commit | 1175d6131f7a89c163227169325ca77a22b18cb2 (patch) | |
| tree | 27ddfa5c0925747267df57c3fca465e7fd969a75 | |
| 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>
| -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)  	switch (type) {  	case V4L2_BUF_TYPE_VIDEO_CAPTURE: -		if (ops->vidioc_try_fmt_vid_cap) +		if (ops->vidioc_g_fmt_vid_cap)  			return 0;  		break;  	case V4L2_BUF_TYPE_VIDEO_OVERLAY: -		if (ops->vidioc_try_fmt_vid_overlay) +		if (ops->vidioc_g_fmt_vid_overlay)  			return 0;  		break;  	case V4L2_BUF_TYPE_VIDEO_OUTPUT: -		if (ops->vidioc_try_fmt_vid_out) +		if (ops->vidioc_g_fmt_vid_out)  			return 0;  		break;  	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY: -		if (ops->vidioc_try_fmt_vid_out_overlay) +		if (ops->vidioc_g_fmt_vid_out_overlay)  			return 0;  		break;  	case V4L2_BUF_TYPE_VBI_CAPTURE: -		if (ops->vidioc_try_fmt_vbi_cap) +		if (ops->vidioc_g_fmt_vbi_cap)  			return 0;  		break;  	case V4L2_BUF_TYPE_VBI_OUTPUT: -		if (ops->vidioc_try_fmt_vbi_out) +		if (ops->vidioc_g_fmt_vbi_out)  			return 0;  		break;  	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE: -		if (ops->vidioc_try_fmt_sliced_vbi_cap) +		if (ops->vidioc_g_fmt_sliced_vbi_cap)  			return 0;  		break;  	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: -		if (ops->vidioc_try_fmt_sliced_vbi_out) +		if (ops->vidioc_g_fmt_sliced_vbi_out)  			return 0;  		break;  	case V4L2_BUF_TYPE_PRIVATE: -		if (ops->vidioc_try_fmt_type_private) +		if (ops->vidioc_g_fmt_type_private)  			return 0;  		break;  	} | 
