diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2016-07-03 13:39:00 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-08-24 15:50:19 +0300 |
commit | 802d62c1db166d4ef5a27c81b372437a409b033e (patch) | |
tree | e17b90f83d85d48649eae2eb6fcd734c7d1ba57f /drivers/media | |
parent | d1d094618eb24abb03a56fea7bcc6d848acb7880 (diff) | |
download | linux-802d62c1db166d4ef5a27c81b372437a409b033e.tar.xz |
[media] saa7134: convert g/s_crop to g/s_selection
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>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/pci/saa7134/saa7134-video.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/drivers/media/pci/saa7134/saa7134-video.c b/drivers/media/pci/saa7134/saa7134-video.c index 8a6ebd087889..20baa22afc42 100644 --- a/drivers/media/pci/saa7134/saa7134-video.c +++ b/drivers/media/pci/saa7134/saa7134-video.c @@ -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, |