@@ -937,7 +937,7 @@ static int sh_vou_s_crop(struct file *file, void *fh, const struct v4l2_crop *a)
{
struct video_device *vdev = video_devdata(file);
struct sh_vou_device *vou_dev = video_get_drvdata(vdev);
- struct v4l2_rect *rect = &a->c;
+ const struct v4l2_rect *rect = &a->c;
struct v4l2_crop sd_crop = {.type = V4L2_BUF_TYPE_VIDEO_OUTPUT};
struct v4l2_pix_format *pix = &vou_dev->pix;
struct sh_vou_geometry geo;
@@ -961,16 +961,16 @@ static int sh_vou_s_crop(struct file *file, void *fh, const struct v4l2_crop *a)
else
img_height_max = 576;
- v4l_bound_align_image(&rect->width, 0, VOU_MAX_IMAGE_WIDTH, 1,
- &rect->height, 0, img_height_max, 1, 0);
+ geo.output = *rect;
+ v4l_bound_align_image(&geo.output.width, 0, VOU_MAX_IMAGE_WIDTH, 1,
+ &geo.output.height, 0, img_height_max, 1, 0);
- if (rect->width + rect->left > VOU_MAX_IMAGE_WIDTH)
- rect->left = VOU_MAX_IMAGE_WIDTH - rect->width;
+ if (geo.output.width + geo.output.left > VOU_MAX_IMAGE_WIDTH)
+ geo.output.left = VOU_MAX_IMAGE_WIDTH - geo.output.width;
- if (rect->height + rect->top > img_height_max)
- rect->top = img_height_max - rect->height;
+ if (geo.output.height + geo.output.top > img_height_max)
+ geo.output.top = img_height_max - geo.output.height;
- geo.output = *rect;
geo.in_width = pix->width;
geo.in_height = pix->height;
The crop rectangle is const, make a local copy instead of modifying it. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> --- drivers/media/platform/sh_vou.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-)