diff --git a/drivers/staging/media/imx/capture/imx-camif.c b/drivers/staging/media/imx/capture/imx-camif.c index 9c247e0..2c51bc7 100644 --- a/drivers/staging/media/imx/capture/imx-camif.c +++ b/drivers/staging/media/imx/capture/imx-camif.c @@ -1561,6 +1561,23 @@ static int vidioc_s_parm(struct file *file, void *fh, return v4l2_subdev_call(dev->sensor->sd, video, s_parm, a); } +static int vidioc_cropcap(struct file *file, void *priv, + struct v4l2_cropcap *cropcap) +{ + struct imxcam_ctx *ctx = file2ctx(file); + struct imxcam_dev *dev = ctx->dev; + + if (cropcap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE && + cropcap->type != V4L2_BUF_TYPE_VIDEO_OVERLAY) + return -EINVAL; + + cropcap->bounds = dev->crop_bounds; + cropcap->defrect = dev->crop_defrect; + cropcap->pixelaspect.numerator = 1; + cropcap->pixelaspect.denominator = 1; + return 0; +} + static int vidioc_g_selection(struct file *file, void *priv, struct v4l2_selection *sel) { @@ -1794,6 +1811,7 @@ static const struct v4l2_ioctl_ops imxcam_ioctl_ops = { .vidioc_g_parm = vidioc_g_parm, .vidioc_s_parm = vidioc_s_parm, + .vidioc_cropcap = vidioc_cropcap, .vidioc_g_selection = vidioc_g_selection, .vidioc_s_selection = vidioc_s_selection,