[media] vim2m: add create_bufs and prepare_buf support
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 5 Jun 2015 14:28:52 +0000 (11:28 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 9 Jun 2015 20:27:38 +0000 (17:27 -0300)
Add support for the missing VIDIOC_CREATE_BUFS and VIDIOC_PREPARE_BUF
ioctls.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/vim2m.c

index cecfd75b58d71e670479acf80905ac8852043701..295fde5fdb75312334f0a05f60c392e07006e2c3 100644 (file)
@@ -693,6 +693,8 @@ static const struct v4l2_ioctl_ops vim2m_ioctl_ops = {
        .vidioc_querybuf        = v4l2_m2m_ioctl_querybuf,
        .vidioc_qbuf            = v4l2_m2m_ioctl_qbuf,
        .vidioc_dqbuf           = v4l2_m2m_ioctl_dqbuf,
+       .vidioc_prepare_buf     = v4l2_m2m_ioctl_prepare_buf,
+       .vidioc_create_bufs     = v4l2_m2m_ioctl_create_bufs,
        .vidioc_expbuf          = v4l2_m2m_ioctl_expbuf,
 
        .vidioc_streamon        = v4l2_m2m_ioctl_streamon,
@@ -720,6 +722,12 @@ static int vim2m_queue_setup(struct vb2_queue *vq,
 
        size = q_data->width * q_data->height * q_data->fmt->depth >> 3;
 
+       if (fmt) {
+               if (fmt->fmt.pix.sizeimage < size)
+                       return -EINVAL;
+               size = fmt->fmt.pix.sizeimage;
+       }
+
        while (size * count > MEM2MEM_VID_MEM_LIMIT)
                (count)--;