1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-15 04:42:02 +00:00
openmptcprouter/root/target/linux/bcm27xx/patches-5.14/0345-media-i2c-imx290-Handle-exposure-correctly-when-vbla.patch
Ycarus (Yannick Chabanois) 5c593832cc Add 5.14 patches for RPI
2021-10-01 16:58:58 +02:00

47 lines
1.5 KiB
Diff

From c8ae7f9b68b7b104c8ae6073ecb94d5d1c312a53 Mon Sep 17 00:00:00 2001
From: David Plowman <david.plowman@raspberrypi.com>
Date: Thu, 18 Feb 2021 11:58:29 +0000
Subject: [PATCH 345/552] media: i2c: imx290: Handle exposure correctly when
vblank changes
When vblank changes we must modify the exposure range. Also, with this
sensor, the effective exposure time implicitly changes when vblank
does, so we have to reset it after every vblank update.
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
---
drivers/media/i2c/imx290.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c
index 36e9261af23d..836d3684c273 100644
--- a/drivers/media/i2c/imx290.c
+++ b/drivers/media/i2c/imx290.c
@@ -618,6 +618,24 @@ static int imx290_set_vmax(struct imx290 *imx290, u32 val)
if (ret)
dev_err(imx290->dev, "Unable to write vmax\n");
+ /*
+ * Changing vblank changes the allowed range for exposure.
+ * We don't supply the current exposure as default here as it
+ * may lie outside the new range. We will reset it just below.
+ */
+ __v4l2_ctrl_modify_range(imx290->exposure,
+ IMX290_EXPOSURE_MIN,
+ vmax - 2,
+ IMX290_EXPOSURE_STEP,
+ vmax - 2);
+
+ /*
+ * Becuse of the way exposure works for this sensor, updating
+ * vblank causes the effective exposure to change, so we must
+ * set it back to the "new" correct value.
+ */
+ imx290_set_exposure(imx290, imx290->exposure->val);
+
return ret;
}
--
2.33.0