From 1eac1476ea818b1df9377fa01bc020d42980a18c Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 10:31:53 +0100 Subject: [PATCH] media: i2c: imx290: Explicitly set v&h blank on mode change raspberrypi inclusion category: feature bugzilla: 50432 -------------------------------- __v4l2_ctrl_modify_range only updates the current value should it be invalid within the new range. That can leave modes producing odd frame rates. Explicitly update the HBLANK and VBLANK values so that on mode change we revert to the default frame rate for the mode. Signed-off-by: Dave Stevenson Signed-off-by: Fang Yafen Signed-off-by: Zheng Zengkai --- drivers/media/i2c/imx290.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c index b824dfe29bbd..b28834823f86 100644 --- a/drivers/media/i2c/imx290.c +++ b/drivers/media/i2c/imx290.c @@ -796,17 +796,23 @@ static int imx290_set_fmt(struct v4l2_subdev *sd, __v4l2_ctrl_s_ctrl_int64(imx290->pixel_rate, imx290_calc_pixel_rate(imx290)); - if (imx290->hblank) + if (imx290->hblank) { __v4l2_ctrl_modify_range(imx290->hblank, imx290->hmax_min - mode->width, IMX290_HMAX_MAX - mode->width, 1, mode->hmax - mode->width); - if (imx290->vblank) + __v4l2_ctrl_s_ctrl(imx290->hblank, + mode->hmax - mode->width); + } + if (imx290->vblank) { __v4l2_ctrl_modify_range(imx290->vblank, mode->vmax - mode->height, IMX290_VMAX_MAX - mode->height, 1, mode->vmax - mode->height); + __v4l2_ctrl_s_ctrl(imx290->vblank, + mode->vmax - mode->height); + } if (imx290->exposure) __v4l2_ctrl_modify_range(imx290->exposure, mode->vmax - mode->height, -- GitLab