[media] omap_vout: convert g/s_crop to g/s_selection
authorHans Verkuil <hans.verkuil@cisco.com>
Sun, 3 Jul 2016 10:12:05 +0000 (07:12 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 24 Aug 2016 12:49:44 +0000 (09:49 -0300)
This is part of a final push to convert all drivers to g/s_selection.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/omap/omap_vout.c

index 6b01e126fe73ba85743935867ccab432673bd742..e668dde6d85722d2b68d7f399452d22bbf6d8342 100644 (file)
@@ -1247,36 +1247,33 @@ static int vidioc_g_fmt_vid_overlay(struct file *file, void *fh,
        return 0;
 }
 
-static int vidioc_cropcap(struct file *file, void *fh,
-               struct v4l2_cropcap *cropcap)
+static int vidioc_g_selection(struct file *file, void *fh, struct v4l2_selection *sel)
 {
        struct omap_vout_device *vout = fh;
        struct v4l2_pix_format *pix = &vout->pix;
 
-       if (cropcap->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
+       if (sel->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
                return -EINVAL;
 
-       /* Width and height are always even */
-       cropcap->bounds.width = pix->width & ~1;
-       cropcap->bounds.height = pix->height & ~1;
-
-       omap_vout_default_crop(&vout->pix, &vout->fbuf, &cropcap->defrect);
-       cropcap->pixelaspect.numerator = 1;
-       cropcap->pixelaspect.denominator = 1;
-       return 0;
-}
-
-static int vidioc_g_crop(struct file *file, void *fh, struct v4l2_crop *crop)
-{
-       struct omap_vout_device *vout = fh;
-
-       if (crop->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
+       switch (sel->target) {
+       case V4L2_SEL_TGT_CROP:
+               sel->r = vout->crop;
+               break;
+       case V4L2_SEL_TGT_CROP_DEFAULT:
+               omap_vout_default_crop(&vout->pix, &vout->fbuf, &sel->r);
+               break;
+       case V4L2_SEL_TGT_CROP_BOUNDS:
+               /* Width and height are always even */
+               sel->r.width = pix->width & ~1;
+               sel->r.height = pix->height & ~1;
+               break;
+       default:
                return -EINVAL;
-       crop->c = vout->crop;
+       }
        return 0;
 }
 
-static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *crop)
+static int vidioc_s_selection(struct file *file, void *fh, struct v4l2_selection *sel)
 {
        int ret = -EINVAL;
        struct omap_vout_device *vout = fh;
@@ -1285,6 +1282,12 @@ static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *cr
        struct omap_video_timings *timing;
        struct omap_dss_device *dssdev;
 
+       if (sel->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
+               return -EINVAL;
+
+       if (sel->target != V4L2_SEL_TGT_CROP)
+               return -EINVAL;
+
        if (vout->streaming)
                return -EBUSY;
 
@@ -1309,9 +1312,8 @@ static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *cr
                vout->fbuf.fmt.width = timing->x_res;
        }
 
-       if (crop->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
-               ret = omap_vout_new_crop(&vout->pix, &vout->crop, &vout->win,
-                               &vout->fbuf, &crop->c);
+       ret = omap_vout_new_crop(&vout->pix, &vout->crop, &vout->win,
+                                &vout->fbuf, &sel->r);
 
 s_crop_err:
        mutex_unlock(&vout->lock);
@@ -1780,9 +1782,8 @@ static const struct v4l2_ioctl_ops vout_ioctl_ops = {
        .vidioc_try_fmt_vid_out_overlay         = vidioc_try_fmt_vid_overlay,
        .vidioc_s_fmt_vid_out_overlay           = vidioc_s_fmt_vid_overlay,
        .vidioc_g_fmt_vid_out_overlay           = vidioc_g_fmt_vid_overlay,
-       .vidioc_cropcap                         = vidioc_cropcap,
-       .vidioc_g_crop                          = vidioc_g_crop,
-       .vidioc_s_crop                          = vidioc_s_crop,
+       .vidioc_g_selection                     = vidioc_g_selection,
+       .vidioc_s_selection                     = vidioc_s_selection,
        .vidioc_reqbufs                         = vidioc_reqbufs,
        .vidioc_querybuf                        = vidioc_querybuf,
        .vidioc_qbuf                            = vidioc_qbuf,