Hi Laurent On Mon, Aug 14, 2023 at 10:34:35PM +0300, Laurent Pinchart wrote: > When moving the imx219 driver to the subdev active state, commit > e8a5b1df000e ("media: i2c: imx219: Use subdev active state") used the > pad crop rectangle stored in the subdev state to report the crop > rectangle of the active mode. That crop rectangle was however not set in > the state when setting the format, which resulted in reporting an > incorrect crop rectangle to userspace. Fix it. > > Fixes: e8a5b1df000e ("media: i2c: imx219: Use subdev active state") > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/media/i2c/imx219.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c > index 6f88e002c8d8..ec53abe2e84e 100644 > --- a/drivers/media/i2c/imx219.c > +++ b/drivers/media/i2c/imx219.c > @@ -750,6 +750,7 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd, > const struct imx219_mode *mode; > int exposure_max, exposure_def, hblank; > struct v4l2_mbus_framefmt *format; > + struct v4l2_rect *crop; > > mode = v4l2_find_nearest_size(supported_modes, > ARRAY_SIZE(supported_modes), > @@ -757,10 +758,12 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd, > fmt->format.width, fmt->format.height); > > imx219_update_pad_format(imx219, mode, &fmt->format, fmt->format.code); > - format = v4l2_subdev_get_pad_format(sd, sd_state, 0); > > - if (imx219->mode == mode && format->code == fmt->format.code) > - return 0; Has this check been lost ? > + format = v4l2_subdev_get_pad_format(sd, sd_state, 0); > + crop = v4l2_subdev_get_pad_crop(sd, sd_state, 0); > + > + *format = fmt->format; > + *crop = mode->crop; > > if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) { > imx219->mode = mode; > @@ -788,8 +791,6 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd, > hblank); > } > > - *format = fmt->format; > - > return 0; > } > > -- > Regards, > > Laurent Pinchart >