[media] saa7134: convert g/s_crop to g/s_selection
authorHans Verkuil <hans.verkuil@cisco.com>
Sun, 3 Jul 2016 10:39:00 +0000 (07:39 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 24 Aug 2016 12:50:19 +0000 (09:50 -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>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/pci/saa7134/saa7134-video.c

index 8a6ebd087889dfbff21071b453c3450ae250fea4..20baa22afc4217c9735b9a0a679e9f828fa73581 100644 (file)
@@ -1659,8 +1659,6 @@ static int saa7134_cropcap(struct file *file, void *priv,
        if (cap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
            cap->type != V4L2_BUF_TYPE_VIDEO_OVERLAY)
                return -EINVAL;
-       cap->bounds  = dev->crop_bounds;
-       cap->defrect = dev->crop_defrect;
        cap->pixelaspect.numerator   = 1;
        cap->pixelaspect.denominator = 1;
        if (dev->tvnorm->id & V4L2_STD_525_60) {
@@ -1674,25 +1672,41 @@ static int saa7134_cropcap(struct file *file, void *priv,
        return 0;
 }
 
-static int saa7134_g_crop(struct file *file, void *f, struct v4l2_crop *crop)
+static int saa7134_g_selection(struct file *file, void *f, struct v4l2_selection *sel)
 {
        struct saa7134_dev *dev = video_drvdata(file);
 
-       if (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
-           crop->type != V4L2_BUF_TYPE_VIDEO_OVERLAY)
+       if (sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           sel->type != V4L2_BUF_TYPE_VIDEO_OVERLAY)
                return -EINVAL;
-       crop->c = dev->crop_current;
+
+       switch (sel->target) {
+       case V4L2_SEL_TGT_CROP:
+               sel->r = dev->crop_current;
+               break;
+       case V4L2_SEL_TGT_CROP_DEFAULT:
+               sel->r = dev->crop_defrect;
+               break;
+       case V4L2_SEL_TGT_CROP_BOUNDS:
+               sel->r  = dev->crop_bounds;
+               break;
+       default:
+               return -EINVAL;
+       }
        return 0;
 }
 
-static int saa7134_s_crop(struct file *file, void *f, const struct v4l2_crop *crop)
+static int saa7134_s_selection(struct file *file, void *f, struct v4l2_selection *sel)
 {
        struct saa7134_dev *dev = video_drvdata(file);
        struct v4l2_rect *b = &dev->crop_bounds;
        struct v4l2_rect *c = &dev->crop_current;
 
-       if (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
-           crop->type != V4L2_BUF_TYPE_VIDEO_OVERLAY)
+       if (sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           sel->type != V4L2_BUF_TYPE_VIDEO_OVERLAY)
+               return -EINVAL;
+
+       if (sel->target != V4L2_SEL_TGT_CROP)
                return -EINVAL;
 
        if (dev->overlay_owner)
@@ -1700,7 +1714,7 @@ static int saa7134_s_crop(struct file *file, void *f, const struct v4l2_crop *cr
        if (vb2_is_streaming(&dev->video_vbq))
                return -EBUSY;
 
-       *c = crop->c;
+       *c = sel->r;
        if (c->top < b->top)
                c->top = b->top;
        if (c->top > b->top + b->height)
@@ -1714,6 +1728,7 @@ static int saa7134_s_crop(struct file *file, void *f, const struct v4l2_crop *cr
                c->left = b->left + b->width;
        if (c->width > b->left - c->left + b->width)
                c->width = b->left - c->left + b->width;
+       sel->r = *c;
        return 0;
 }
 
@@ -1989,8 +2004,8 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
        .vidioc_streamoff               = vb2_ioctl_streamoff,
        .vidioc_g_tuner                 = saa7134_g_tuner,
        .vidioc_s_tuner                 = saa7134_s_tuner,
-       .vidioc_g_crop                  = saa7134_g_crop,
-       .vidioc_s_crop                  = saa7134_s_crop,
+       .vidioc_g_selection             = saa7134_g_selection,
+       .vidioc_s_selection             = saa7134_s_selection,
        .vidioc_g_fbuf                  = saa7134_g_fbuf,
        .vidioc_s_fbuf                  = saa7134_s_fbuf,
        .vidioc_overlay                 = saa7134_overlay,