On Mon, Jul 4, 2016 at 9:32 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: > From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > > This is part of a final push to convert all drivers to g/s_selection. > > Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> > Cc: Prabhakar Lad <prabhakar.csengg@xxxxxxxxx> Acked-by: Lad, Prabhakar <prabhakar.csengg@xxxxxxxxx> Cheers, --Prabhakar Lad > --- > drivers/media/platform/davinci/vpfe_capture.c | 52 +++++++++++++++++---------- > 1 file changed, 34 insertions(+), 18 deletions(-) > > diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c > index 7767e07..6efb2f1 100644 > --- a/drivers/media/platform/davinci/vpfe_capture.c > +++ b/drivers/media/platform/davinci/vpfe_capture.c > @@ -1610,38 +1610,53 @@ static int vpfe_cropcap(struct file *file, void *priv, > > v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_cropcap\n"); > > - if (vpfe_dev->std_index >= ARRAY_SIZE(vpfe_standards)) > + if (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) > return -EINVAL; > + /* If std_index is invalid, then just return (== 1:1 aspect) */ > + if (vpfe_dev->std_index >= ARRAY_SIZE(vpfe_standards)) > + return 0; > > - memset(crop, 0, sizeof(struct v4l2_cropcap)); > - crop->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; > - crop->bounds.width = crop->defrect.width = > - vpfe_standards[vpfe_dev->std_index].width; > - crop->bounds.height = crop->defrect.height = > - vpfe_standards[vpfe_dev->std_index].height; > crop->pixelaspect = vpfe_standards[vpfe_dev->std_index].pixelaspect; > return 0; > } > > -static int vpfe_g_crop(struct file *file, void *priv, > - struct v4l2_crop *crop) > +static int vpfe_g_selection(struct file *file, void *priv, > + struct v4l2_selection *sel) > { > struct vpfe_device *vpfe_dev = video_drvdata(file); > > - v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_g_crop\n"); > + v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_g_selection\n"); > > - crop->c = vpfe_dev->crop; > + if (sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) > + return -EINVAL; > + > + switch (sel->target) { > + case V4L2_SEL_TGT_CROP: > + sel->r = vpfe_dev->crop; > + break; > + case V4L2_SEL_TGT_CROP_DEFAULT: > + case V4L2_SEL_TGT_CROP_BOUNDS: > + sel->r.width = vpfe_standards[vpfe_dev->std_index].width; > + sel->r.height = vpfe_standards[vpfe_dev->std_index].height; > + break; > + default: > + return -EINVAL; > + } > return 0; > } > > -static int vpfe_s_crop(struct file *file, void *priv, > - const struct v4l2_crop *crop) > +static int vpfe_s_selection(struct file *file, void *priv, > + struct v4l2_selection *sel) > { > struct vpfe_device *vpfe_dev = video_drvdata(file); > - struct v4l2_rect rect = crop->c; > + struct v4l2_rect rect = sel->r; > int ret = 0; > > - v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_s_crop\n"); > + v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_s_selection\n"); > + > + if (sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE || > + sel->target != V4L2_SEL_TGT_CROP) > + return -EINVAL; > > if (vpfe_dev->started) { > /* make sure streaming is not started */ > @@ -1669,7 +1684,7 @@ static int vpfe_s_crop(struct file *file, void *priv, > vpfe_dev->std_info.active_pixels) || > (rect.top + rect.height > > vpfe_dev->std_info.active_lines)) { > - v4l2_err(&vpfe_dev->v4l2_dev, "Error in S_CROP params\n"); > + v4l2_err(&vpfe_dev->v4l2_dev, "Error in S_SELECTION params\n"); > ret = -EINVAL; > goto unlock_out; > } > @@ -1682,6 +1697,7 @@ static int vpfe_s_crop(struct file *file, void *priv, > vpfe_dev->fmt.fmt.pix.bytesperline * > vpfe_dev->fmt.fmt.pix.height; > vpfe_dev->crop = rect; > + sel->r = rect; > unlock_out: > mutex_unlock(&vpfe_dev->lock); > return ret; > @@ -1760,8 +1776,8 @@ static const struct v4l2_ioctl_ops vpfe_ioctl_ops = { > .vidioc_streamon = vpfe_streamon, > .vidioc_streamoff = vpfe_streamoff, > .vidioc_cropcap = vpfe_cropcap, > - .vidioc_g_crop = vpfe_g_crop, > - .vidioc_s_crop = vpfe_s_crop, > + .vidioc_g_selection = vpfe_g_selection, > + .vidioc_s_selection = vpfe_s_selection, > .vidioc_default = vpfe_param_handler, > }; > > -- > 2.8.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html