Re: [PATCH v7 03/14] media: imx219: Account for rate_factor in control steps

Laurent Pinchart <[email protected]>
Newsgroups org.kernel.vger.linux-media
Message-ID <[email protected]>
On Fri, Aug 07, 2026 at 03:23:58PM +0300, Sakari Ailus wrote:
> The controls that are divided by the rate_factor before writing them to
> the registers have the step of the value of the rate_factor. Take this
> into account when the control's range is modified. The controls are
> created in a configuration where rate_factor is always 1, hence there's no
> need to change the code adding new controls.
> 
> Fixes: f513997119f4 ("media: i2c: imx219: Scale the pixel rate for analog binning")
> Cc: [email protected]
> Signed-off-by: Sakari Ailus <[email protected]>
> Reviewed-by: Dave Stevenson <[email protected]>

Reviewed-by: Laurent Pinchart <[email protected]>

> ---
>  drivers/media/i2c/imx219.c | 16 +++++++---------
>  1 file changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
> index 5184523de8be..b1f29037af74 100644
> --- a/drivers/media/i2c/imx219.c
> +++ b/drivers/media/i2c/imx219.c
> @@ -340,13 +340,13 @@ static const struct imx219_mode supported_modes[] = {
>  		/* 2x2 binned 60fps mode */
>  		.width = 1640,
>  		.height = 1232,
> -		.fll_def = 1707,
> +		.fll_def = 1706,
>  	},
>  	{
>  		/* 640x480 60fps mode */
>  		.width = 640,
>  		.height = 480,
> -		.fll_def = 1707,
> +		.fll_def = 1706,
>  	},
>  };
>  
> @@ -473,8 +473,7 @@ static int imx219_set_ctrl(struct v4l2_ctrl *ctrl)
>  		ret = __v4l2_ctrl_modify_range(imx219->exposure,
>  					       imx219->exposure->minimum,
>  					       exposure_max,
> -					       imx219->exposure->step,
> -					       exposure_def);
> +					       rate_factor, exposure_def);
>  		if (ret)
>  			return ret;
>  
> @@ -902,7 +901,8 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
>  
>  		/* Update limits and set FPS to default */
>  		ret = __v4l2_ctrl_modify_range(imx219->vblank, IMX219_VBLANK_MIN,
> -					       IMX219_FLL_MAX - mode->height, 1,
> +					       IMX219_FLL_MAX - mode->height,
> +					       rate_factor,
>  					       mode->fll_def - mode->height);
>  		if (ret)
>  			return ret;
> @@ -920,8 +920,7 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
>  		ret = __v4l2_ctrl_modify_range(imx219->exposure,
>  					       imx219->exposure->minimum,
>  					       exposure_max,
> -					       imx219->exposure->step,
> -					       exposure_def);
> +					       rate_factor, exposure_def);
>  		if (ret)
>  			return ret;
>  
> @@ -946,8 +945,7 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
>  			return ret;
>  
>  		/* Scale the pixel rate based on the mode specific factor */
> -		pixel_rate = imx219_get_pixel_rate(imx219) *
> -			     imx219_get_rate_factor(state);
> +		pixel_rate = imx219_get_pixel_rate(imx219) * rate_factor;
>  		ret = __v4l2_ctrl_modify_range(imx219->pixel_rate, pixel_rate,
>  					       pixel_rate, 1, pixel_rate);
>  		if (ret)

-- 
Regards,

Laurent Pinchart
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.