aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.15/950-0728-media-i2c-ov7251-V4L2_CID_LINK_FREQUENCY-is-fixed.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0728-media-i2c-ov7251-V4L2_CID_LINK_FREQUENCY-is-fixed.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.15/950-0728-media-i2c-ov7251-V4L2_CID_LINK_FREQUENCY-is-fixed.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0728-media-i2c-ov7251-V4L2_CID_LINK_FREQUENCY-is-fixed.patch b/target/linux/bcm27xx/patches-5.15/950-0728-media-i2c-ov7251-V4L2_CID_LINK_FREQUENCY-is-fixed.patch
new file mode 100644
index 0000000000..ddd9e6e3b2
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.15/950-0728-media-i2c-ov7251-V4L2_CID_LINK_FREQUENCY-is-fixed.patch
@@ -0,0 +1,107 @@
+From f8c8c6aed54e064f3ec36eeee0595ec4e2206d66 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Sat, 12 Feb 2022 09:53:47 +0000
+Subject: [PATCH] media: i2c: ov7251: V4L2_CID_LINK_FREQUENCY is fixed
+
+The link frequency does not change with the mode, so remove
+the special handling for it.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ drivers/media/i2c/ov7251.c | 29 +++++++----------------------
+ 1 file changed, 7 insertions(+), 22 deletions(-)
+
+--- a/drivers/media/i2c/ov7251.c
++++ b/drivers/media/i2c/ov7251.c
+@@ -66,7 +66,6 @@ struct ov7251_mode_info {
+ u32 height;
+ const struct reg_value *data;
+ u32 data_size;
+- u32 link_freq;
+ u16 exposure_max;
+ u16 exposure_def;
+ struct v4l2_fract timeperframe;
+@@ -113,7 +112,6 @@ struct ov7251 {
+ const struct ov7251_mode_info *current_mode;
+
+ struct v4l2_ctrl_handler ctrls;
+- struct v4l2_ctrl *link_freq;
+ struct v4l2_ctrl *exposure;
+ struct v4l2_ctrl *gain;
+
+@@ -591,7 +589,6 @@ static const struct ov7251_mode_info ov7
+ .height = 480,
+ .data = ov7251_setting_vga_30fps,
+ .data_size = ARRAY_SIZE(ov7251_setting_vga_30fps),
+- .link_freq = 0, /* an index in link_freq[] */
+ .exposure_max = 1704,
+ .exposure_def = 504,
+ .timeperframe = {
+@@ -604,7 +601,6 @@ static const struct ov7251_mode_info ov7
+ .height = 480,
+ .data = ov7251_setting_vga_60fps,
+ .data_size = ARRAY_SIZE(ov7251_setting_vga_60fps),
+- .link_freq = 0, /* an index in link_freq[] */
+ .exposure_max = 840,
+ .exposure_def = 504,
+ .timeperframe = {
+@@ -617,7 +613,6 @@ static const struct ov7251_mode_info ov7
+ .height = 480,
+ .data = ov7251_setting_vga_90fps,
+ .data_size = ARRAY_SIZE(ov7251_setting_vga_90fps),
+- .link_freq = 0, /* an index in link_freq[] */
+ .exposure_max = 552,
+ .exposure_def = 504,
+ .timeperframe = {
+@@ -1152,11 +1147,6 @@ static int ov7251_set_format(struct v4l2
+ __crop->height = new_mode->height;
+
+ if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
+- ret = __v4l2_ctrl_s_ctrl(ov7251->link_freq,
+- new_mode->link_freq);
+- if (ret < 0)
+- goto exit;
+-
+ ret = __v4l2_ctrl_modify_range(ov7251->exposure,
+ 1, new_mode->exposure_max,
+ 1, new_mode->exposure_def);
+@@ -1311,11 +1301,6 @@ static int ov7251_set_frame_interval(str
+ new_mode = ov7251_find_mode_by_ival(ov7251, &fi->interval);
+
+ if (new_mode != ov7251->current_mode) {
+- ret = __v4l2_ctrl_s_ctrl(ov7251->link_freq,
+- new_mode->link_freq);
+- if (ret < 0)
+- goto exit;
+-
+ ret = __v4l2_ctrl_modify_range(ov7251->exposure,
+ 1, new_mode->exposure_max,
+ 1, new_mode->exposure_def);
+@@ -1464,6 +1449,7 @@ static int ov7251_probe(struct i2c_clien
+ {
+ struct v4l2_fwnode_device_properties props;
+ struct device *dev = &client->dev;
++ struct v4l2_ctrl *ctrl;
+ struct ov7251 *ov7251;
+ unsigned int rate = 0;
+ int ret;
+@@ -1561,13 +1547,12 @@ static int ov7251_probe(struct i2c_clien
+ v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
+ V4L2_CID_PIXEL_RATE, OV7251_PIXEL_CLOCK,
+ OV7251_PIXEL_CLOCK, 1, OV7251_PIXEL_CLOCK);
+- ov7251->link_freq = v4l2_ctrl_new_int_menu(&ov7251->ctrls,
+- &ov7251_ctrl_ops,
+- V4L2_CID_LINK_FREQ,
+- ARRAY_SIZE(link_freq) - 1,
+- 0, link_freq);
+- if (ov7251->link_freq)
+- ov7251->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY;
++ ctrl = v4l2_ctrl_new_int_menu(&ov7251->ctrls, &ov7251_ctrl_ops,
++ V4L2_CID_LINK_FREQ,
++ ARRAY_SIZE(link_freq) - 1,
++ 0, link_freq);
++ if (ctrl)
++ ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+
+ ov7251->sd.ctrl_handler = &ov7251->ctrls;
+