Hi,
>Hans Verkuil <[email protected]> wrote:
>On Friday 30 July 2010 10:49:42 Pawel Osciak wrote:
<snip>
>> static long __video_do_ioctl(struct file *file,
>> unsigned int cmd, void *arg)
>> {
>> struct video_device *vfd = video_devdata(file);
>> const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
>> void *fh = file->private_data;
>> + struct v4l2_format f_copy;
>> long ret = -EINVAL;
>>
>> if (ops == NULL) {
>> @@ -720,6 +822,11 @@ static long __video_do_ioctl(struct file *file,
>> if (ops->vidioc_enum_fmt_vid_cap)
>> ret = ops->vidioc_enum_fmt_vid_cap(file, fh, f);
>> break;
>> + case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
>> + if (ops->vidioc_enum_fmt_vid_cap_mplane)
>> + ret = ops->vidioc_enum_fmt_vid_cap_mplane(file,
>> + fh, f);
>> + break;
>> case V4L2_BUF_TYPE_VIDEO_OVERLAY:
>> if (ops->vidioc_enum_fmt_vid_overlay)
>> ret = ops->vidioc_enum_fmt_vid_overlay(file,
>> @@ -729,6 +836,11 @@ static long __video_do_ioctl(struct file *file,
>> if (ops->vidioc_enum_fmt_vid_out)
>> ret = ops->vidioc_enum_fmt_vid_out(file, fh, f);
>> break;
>> + case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
>> + if (ops->vidioc_enum_fmt_vid_out_mplane)
>> + ret = ops->vidioc_enum_fmt_vid_out_mplane(file,
>> + fh, f);
>> + break;
>> case V4L2_BUF_TYPE_PRIVATE:
>> if (ops->vidioc_enum_fmt_type_private)
>> ret = ops->vidioc_enum_fmt_type_private(file,
>> @@ -757,22 +869,79 @@ static long __video_do_ioctl(struct file *file,
>>
>> switch (f->type) {
>> case V4L2_BUF_TYPE_VIDEO_CAPTURE:
>> - if (ops->vidioc_g_fmt_vid_cap)
>> + if (ops->vidioc_g_fmt_vid_cap) {
>> ret = ops->vidioc_g_fmt_vid_cap(file, fh, f);
>> + } else if (ops->vidioc_g_fmt_vid_cap_mplane) {
>> + if (fmt_sp_to_mp(f, &f_copy))
>> + break;
>> + ret = ops->vidioc_g_fmt_vid_cap_mplane(file, fh,
>> +
>> &f_copy);
>> + /* Driver is currently in multi-planar format,
>> + * we can't return it in single-planar API*/
>> + if (f_copy.fmt.pix_mp.num_planes > 1) {
>
>Only do this if ret == 0.
>
Good point, thanks. Driver-produced errors should take precedence over EBUSY.
Best regards
--
Pawel Osciak
Linux Platform Group
Samsung Poland R&D Center
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html