Hi Niklas, On 05/07/2019 05:55, Niklas Söderlund wrote: > With support for V4L2_FIELD_ALTERNATE added it's possible to clean up > how formats are set on the subdevice. This makes the code easier to read > as variable names now more clearly express their intent. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > --- > drivers/media/platform/rcar-vin/rcar-v4l2.c | 44 ++++++++++----------- > 1 file changed, 21 insertions(+), 23 deletions(-) > > diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c > index bc96ed563e365448..fa6cc1b76f02133e 100644 > --- a/drivers/media/platform/rcar-vin/rcar-v4l2.c > +++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c > @@ -170,7 +170,7 @@ static int rvin_reset_format(struct rvin_dev *vin) > > static int rvin_try_format(struct rvin_dev *vin, u32 which, > struct v4l2_pix_format *pix, > - struct v4l2_rect *crop, struct v4l2_rect *compose) > + struct v4l2_rect *src_rect) > { > struct v4l2_subdev *sd = vin_to_source(vin); > struct v4l2_subdev_pad_config *pad_cfg; > @@ -189,24 +189,24 @@ static int rvin_try_format(struct rvin_dev *vin, u32 which, > if (!rvin_format_from_pixel(vin, pix->pixelformat)) > pix->pixelformat = RVIN_DEFAULT_FORMAT; > > - v4l2_fill_mbus_format(&format.format, pix, vin->mbus_code); > - > /* Allow the video device to override field and to scale */ > field = pix->field; > width = pix->width; > height = pix->height; > > + v4l2_fill_mbus_format(&format.format, pix, vin->mbus_code); > + > ret = v4l2_subdev_call(sd, pad, set_fmt, pad_cfg, &format); > if (ret < 0 && ret != -ENOIOCTLCMD) > goto done; > > v4l2_fill_pix_format(pix, &format.format); > > - if (crop) { > - crop->top = 0; > - crop->left = 0; > - crop->width = pix->width; > - crop->height = pix->height; > + if (src_rect) { > + src_rect->top = 0; > + src_rect->left = 0; > + src_rect->width = pix->width; > + src_rect->height = pix->height; > } > > if (field != V4L2_FIELD_ANY) > @@ -216,17 +216,10 @@ static int rvin_try_format(struct rvin_dev *vin, u32 which, > pix->height = height; > > rvin_format_align(vin, pix); > - > - if (compose) { > - compose->top = 0; > - compose->left = 0; > - compose->width = pix->width; > - compose->height = pix->height; > - } > done: > v4l2_subdev_free_pad_config(pad_cfg); > > - return 0; > + return ret; This return value change looks suspiciously like a small bug-fix. Does it deserve it's own patch and fixes tag for the stable trees? > } > > static int rvin_querycap(struct file *file, void *priv, > @@ -246,29 +239,34 @@ static int rvin_try_fmt_vid_cap(struct file *file, void *priv, > { > struct rvin_dev *vin = video_drvdata(file); > > - return rvin_try_format(vin, V4L2_SUBDEV_FORMAT_TRY, &f->fmt.pix, NULL, > - NULL); > + return rvin_try_format(vin, V4L2_SUBDEV_FORMAT_TRY, &f->fmt.pix, NULL); > } > > static int rvin_s_fmt_vid_cap(struct file *file, void *priv, > struct v4l2_format *f) > { > struct rvin_dev *vin = video_drvdata(file); > - struct v4l2_rect crop, compose; > + struct v4l2_rect fmt_rect, src_rect; > int ret; > > if (vb2_is_busy(&vin->queue)) > return -EBUSY; > > ret = rvin_try_format(vin, V4L2_SUBDEV_FORMAT_ACTIVE, &f->fmt.pix, > - &crop, &compose); > + &src_rect); > if (ret) > return ret; > > vin->format = f->fmt.pix; > - v4l2_rect_map_inside(&vin->crop, &crop); > - v4l2_rect_map_inside(&vin->compose, &compose); > - vin->src_rect = crop; > + > + fmt_rect.top = 0; > + fmt_rect.left = 0; > + fmt_rect.width = vin->format.width; > + fmt_rect.height = vin->format.height; > + > + v4l2_rect_map_inside(&vin->crop, &src_rect); > + v4l2_rect_map_inside(&vin->compose, &fmt_rect); > + vin->src_rect = src_rect; > > return 0; > } >