Re: [PATCH 6/9] ov772x: avoid calling ov772x_select_params() twice

Guennadi Liakhovetski
2015-05-03T20:30:29Z

On Sun, 3 May 2015, Hans Verkuil wrote:

> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> Merge ov772x_s_fmt into ov772x_set_fmt.
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>

Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>

Thanks
Guennadi

> ---
> drivers/media/i2c/soc_camera/ov772x.c | 41 +++++++++++------------------------
> 1 file changed, 13 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/media/i2c/soc_camera/ov772x.c b/drivers/media/i2c/soc_camera/ov772x.c
> index f150a8b..aa32bc5 100644
> --- a/drivers/media/i2c/soc_camera/ov772x.c
> +++ b/drivers/media/i2c/soc_camera/ov772x.c
> @@ -895,38 +895,15 @@ static int ov772x_get_fmt(struct v4l2_subdev *sd,
> return 0;
> }
>
> -static int ov772x_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
> -{
> - struct ov772x_priv *priv = to_ov772x(sd);
> - const struct ov772x_color_format *cfmt;
> - const struct ov772x_win_size *win;
> - int ret;
> -
> - ov772x_select_params(mf, &cfmt, &win);
> -
> - ret = ov772x_set_params(priv, cfmt, win);
> - if (ret < 0)
> - return ret;
> -
> - priv->win = win;
> - priv->cfmt = cfmt;
> -
> - mf->code = cfmt->code;
> - mf->width = win->rect.width;
> - mf->height = win->rect.height;
> - mf->field = V4L2_FIELD_NONE;
> - mf->colorspace = cfmt->colorspace;
> -
> - return 0;
> -}
> -
> static int ov772x_set_fmt(struct v4l2_subdev *sd,
> struct v4l2_subdev_pad_config *cfg,
> struct v4l2_subdev_format *format)
> {
> + struct ov772x_priv *priv = to_ov772x(sd);
> struct v4l2_mbus_framefmt *mf = &format->format;
> const struct ov772x_color_format *cfmt;
> const struct ov772x_win_size *win;
> + int ret;
>
> if (format->pad)
> return -EINVAL;
> @@ -939,9 +916,17 @@ static int ov772x_set_fmt(struct v4l2_subdev *sd,
> mf->field = V4L2_FIELD_NONE;
> mf->colorspace = cfmt->colorspace;
>
> - if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE)
> - return ov772x_s_fmt(sd, mf);
> - cfg->try_fmt = *mf;
> + if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
> + cfg->try_fmt = *mf;
> + return 0;
> + }
> +
> + ret = ov772x_set_params(priv, cfmt, win);
> + if (ret < 0)
> + return ret;
> +
> + priv->win = win;
> + priv->cfmt = cfmt;
> return 0;
> }
>
> --
> 2.1.4
>