aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-16 23:40:32 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-17 15:11:22 +0200
commit20ea6adbf199097c4f5f591ffee088340630dae4 (patch)
treed6719d95e136611a1c25bbf7789652d6d402779d /target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch
parentbca05bd072180dc38ef740b37ded9572a6db1981 (diff)
downloadupstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.gz
upstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.bz2
upstream-20ea6adbf199097c4f5f591ffee088340630dae4.zip
bcm27xx: add support for linux v5.15
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch104
1 files changed, 104 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch b/target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch
new file mode 100644
index 0000000000..80503693b6
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.15/950-0727-media-i2c-ov7251-V4L2_CID_PIXEL_RATE-is-fixed.patch
@@ -0,0 +1,104 @@
+From 1fbe6c846412c7c114f599fef881366f1e81ef9c Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Sat, 12 Feb 2022 09:47:38 +0000
+Subject: [PATCH] media: i2c: ov7251: V4L2_CID_PIXEL_RATE is fixed
+
+The pixel rate doesn't actually change based on the mode, and
+can not be set by userspace.
+
+Fix the control. The control is already read only as set by the core.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ drivers/media/i2c/ov7251.c | 24 +++++-------------------
+ 1 file changed, 5 insertions(+), 19 deletions(-)
+
+--- a/drivers/media/i2c/ov7251.c
++++ b/drivers/media/i2c/ov7251.c
+@@ -54,6 +54,8 @@
+ #define OV7251_PLL2_SYS_DIV_REG 0x309a
+ #define OV7251_PLL2_ADC_DIV_REG 0x309b
+
++#define OV7251_PIXEL_CLOCK 48000000
++
+ struct reg_value {
+ u16 reg;
+ u8 val;
+@@ -64,7 +66,6 @@ struct ov7251_mode_info {
+ u32 height;
+ const struct reg_value *data;
+ u32 data_size;
+- u32 pixel_clock;
+ u32 link_freq;
+ u16 exposure_max;
+ u16 exposure_def;
+@@ -112,7 +113,6 @@ struct ov7251 {
+ const struct ov7251_mode_info *current_mode;
+
+ struct v4l2_ctrl_handler ctrls;
+- struct v4l2_ctrl *pixel_clock;
+ struct v4l2_ctrl *link_freq;
+ struct v4l2_ctrl *exposure;
+ struct v4l2_ctrl *gain;
+@@ -591,7 +591,6 @@ static const struct ov7251_mode_info ov7
+ .height = 480,
+ .data = ov7251_setting_vga_30fps,
+ .data_size = ARRAY_SIZE(ov7251_setting_vga_30fps),
+- .pixel_clock = 48000000,
+ .link_freq = 0, /* an index in link_freq[] */
+ .exposure_max = 1704,
+ .exposure_def = 504,
+@@ -605,7 +604,6 @@ static const struct ov7251_mode_info ov7
+ .height = 480,
+ .data = ov7251_setting_vga_60fps,
+ .data_size = ARRAY_SIZE(ov7251_setting_vga_60fps),
+- .pixel_clock = 48000000,
+ .link_freq = 0, /* an index in link_freq[] */
+ .exposure_max = 840,
+ .exposure_def = 504,
+@@ -619,7 +617,6 @@ static const struct ov7251_mode_info ov7
+ .height = 480,
+ .data = ov7251_setting_vga_90fps,
+ .data_size = ARRAY_SIZE(ov7251_setting_vga_90fps),
+- .pixel_clock = 48000000,
+ .link_freq = 0, /* an index in link_freq[] */
+ .exposure_max = 552,
+ .exposure_def = 504,
+@@ -1155,11 +1152,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_int64(ov7251->pixel_clock,
+- new_mode->pixel_clock);
+- if (ret < 0)
+- goto exit;
+-
+ ret = __v4l2_ctrl_s_ctrl(ov7251->link_freq,
+ new_mode->link_freq);
+ if (ret < 0)
+@@ -1319,11 +1311,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_int64(ov7251->pixel_clock,
+- new_mode->pixel_clock);
+- if (ret < 0)
+- goto exit;
+-
+ ret = __v4l2_ctrl_s_ctrl(ov7251->link_freq,
+ new_mode->link_freq);
+ if (ret < 0)
+@@ -1571,10 +1558,9 @@ static int ov7251_probe(struct i2c_clien
+ V4L2_CID_TEST_PATTERN,
+ ARRAY_SIZE(ov7251_test_pattern_menu) - 1,
+ 0, 0, ov7251_test_pattern_menu);
+- ov7251->pixel_clock = v4l2_ctrl_new_std(&ov7251->ctrls,
+- &ov7251_ctrl_ops,
+- V4L2_CID_PIXEL_RATE,
+- 1, INT_MAX, 1, 1);
++ 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,