aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.15/950-0731-media-i2c-ov7251-Do-not-reset-gain-on-mode-change.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0731-media-i2c-ov7251-Do-not-reset-gain-on-mode-change.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.15/950-0731-media-i2c-ov7251-Do-not-reset-gain-on-mode-change.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0731-media-i2c-ov7251-Do-not-reset-gain-on-mode-change.patch b/target/linux/bcm27xx/patches-5.15/950-0731-media-i2c-ov7251-Do-not-reset-gain-on-mode-change.patch
new file mode 100644
index 0000000000..fba048c722
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.15/950-0731-media-i2c-ov7251-Do-not-reset-gain-on-mode-change.patch
@@ -0,0 +1,58 @@
+From 46773bdd99e4ab1bd0d65931ef782122f4f4a031 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Sat, 12 Feb 2022 12:33:13 +0000
+Subject: [PATCH] media: i2c: ov7251: Do not reset gain on mode change
+
+There is no reaon why changing mode should reset the analogue
+gain of the sensor, and it's not the behaviour that userspace
+will be expecting.
+Remove the reset.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ drivers/media/i2c/ov7251.c | 13 ++-----------
+ 1 file changed, 2 insertions(+), 11 deletions(-)
+
+--- a/drivers/media/i2c/ov7251.c
++++ b/drivers/media/i2c/ov7251.c
+@@ -115,7 +115,6 @@ struct ov7251 {
+
+ struct v4l2_ctrl_handler ctrls;
+ struct v4l2_ctrl *exposure;
+- struct v4l2_ctrl *gain;
+ struct v4l2_ctrl *hblank;
+
+ /* Cached register values */
+@@ -1167,10 +1166,6 @@ static int ov7251_set_format(struct v4l2
+ if (ret < 0)
+ goto exit;
+
+- ret = __v4l2_ctrl_s_ctrl(ov7251->gain, 16);
+- if (ret < 0)
+- goto exit;
+-
+ ov7251->current_mode = new_mode;
+ }
+
+@@ -1321,10 +1316,6 @@ static int ov7251_set_frame_interval(str
+ if (ret < 0)
+ goto exit;
+
+- ret = __v4l2_ctrl_s_ctrl(ov7251->gain, 16);
+- if (ret < 0)
+- goto exit;
+-
+ ov7251->current_mode = new_mode;
+ }
+
+@@ -1550,8 +1541,8 @@ static int ov7251_probe(struct i2c_clien
+ V4L2_CID_VFLIP, 0, 1, 1, 0);
+ ov7251->exposure = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
+ V4L2_CID_EXPOSURE, 1, 32, 1, 32);
+- ov7251->gain = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
+- V4L2_CID_GAIN, 16, 1023, 1, 16);
++ v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops, V4L2_CID_GAIN,
++ 16, 1023, 1, 16);
+ v4l2_ctrl_new_std_menu_items(&ov7251->ctrls, &ov7251_ctrl_ops,
+ V4L2_CID_TEST_PATTERN,
+ ARRAY_SIZE(ov7251_test_pattern_menu) - 1,