mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 14:13:16 +00:00
20ea6adbf1
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>
105 lines
3.4 KiB
Diff
105 lines
3.4 KiB
Diff
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,
|