diff options
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.patch | 107 |
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; + |