mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
media: imx219: Account rate_factor in setting upper exposure limit
The rate_factor multiplier is used to multiply a few values in the
sensor's timing configuration and the exposure time is one of them. This
also needs to be taken into account in exposure time margin: multiply it
by rate_factor so that sensor's exposure time margin is respected.
Fixes: f513997119 ("media: i2c: imx219: Scale the pixel rate for analog binning")
Cc: stable@vger.kernel.org
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
5bf928d12d
commit
db111b66f2
|
|
@ -466,7 +466,8 @@ static int imx219_set_ctrl(struct v4l2_ctrl *ctrl)
|
|||
int exposure_max, exposure_def;
|
||||
|
||||
/* Update max exposure while meeting expected vblanking */
|
||||
exposure_max = format->height + ctrl->val - IMX219_EXPOSURE_OFFSET;
|
||||
exposure_max = format->height + ctrl->val -
|
||||
IMX219_EXPOSURE_OFFSET * rate_factor;
|
||||
exposure_def = (exposure_max < IMX219_EXPOSURE_DEFAULT) ?
|
||||
exposure_max : IMX219_EXPOSURE_DEFAULT;
|
||||
ret = __v4l2_ctrl_modify_range(imx219->exposure,
|
||||
|
|
@ -893,6 +894,7 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
|
|||
crop->top = (IMX219_NATIVE_HEIGHT - crop->height) / 2;
|
||||
|
||||
if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
|
||||
int rate_factor = imx219_get_rate_factor(state);
|
||||
int exposure_max;
|
||||
int exposure_def;
|
||||
int llp_min;
|
||||
|
|
@ -911,7 +913,8 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
|
|||
return ret;
|
||||
|
||||
/* Update max exposure while meeting expected vblanking */
|
||||
exposure_max = mode->fll_def - IMX219_EXPOSURE_OFFSET;
|
||||
exposure_max = mode->fll_def -
|
||||
IMX219_EXPOSURE_OFFSET * rate_factor;
|
||||
exposure_def = (exposure_max < IMX219_EXPOSURE_DEFAULT) ?
|
||||
exposure_max : IMX219_EXPOSURE_DEFAULT;
|
||||
ret = __v4l2_ctrl_modify_range(imx219->exposure,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user