hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/i2c/ov12d2q.c
....@@ -117,14 +117,6 @@
117117 #define MIRROR_BIT_MASK BIT(2)
118118 #define FLIP_BIT_MASK BIT(2)
119119
120
-enum ov12d2q_max_pad {
121
- PAD0,
122
- PAD1,
123
- PAD2,
124
- PAD3,
125
- PAD_MAX,
126
-};
127
-
128120 struct regval {
129121 u16 addr;
130122 u8 val;
....@@ -2224,14 +2216,12 @@
22242216 struct ov12d2q *ov12d2q = to_ov12d2q(sd);
22252217 const struct ov12d2q_mode *mode = ov12d2q->cur_mode;
22262218
2227
- mutex_lock(&ov12d2q->mutex);
22282219 fi->interval = mode->max_fps;
2229
- mutex_unlock(&ov12d2q->mutex);
22302220
22312221 return 0;
22322222 }
22332223
2234
-static int ov12d2q_g_mbus_config(struct v4l2_subdev *sd,
2224
+static int ov12d2q_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id,
22352225 struct v4l2_mbus_config *config)
22362226 {
22372227 struct ov12d2q *ov12d2q = to_ov12d2q(sd);
....@@ -2248,7 +2238,7 @@
22482238 V4L2_MBUS_CSI2_CONTINUOUS_CLOCK |
22492239 V4L2_MBUS_CSI2_CHANNEL_1;
22502240
2251
- config->type = V4L2_MBUS_CSI2;
2241
+ config->type = V4L2_MBUS_CSI2_DPHY;
22522242 config->flags = val;
22532243
22542244 return 0;
....@@ -2724,7 +2714,6 @@
27242714 static const struct v4l2_subdev_video_ops ov12d2q_video_ops = {
27252715 .s_stream = ov12d2q_s_stream,
27262716 .g_frame_interval = ov12d2q_g_frame_interval,
2727
- .g_mbus_config = ov12d2q_g_mbus_config,
27282717 };
27292718
27302719 static const struct v4l2_subdev_pad_ops ov12d2q_pad_ops = {
....@@ -2733,6 +2722,7 @@
27332722 .enum_frame_interval = ov12d2q_enum_frame_interval,
27342723 .get_fmt = ov12d2q_get_fmt,
27352724 .set_fmt = ov12d2q_set_fmt,
2725
+ .get_mbus_config = ov12d2q_g_mbus_config,
27362726 };
27372727
27382728 static const struct v4l2_subdev_ops ov12d2q_subdev_ops = {
....@@ -2769,7 +2759,7 @@
27692759 switch (ctrl->id) {
27702760 case V4L2_CID_EXPOSURE:
27712761 if (ov12d2q->cur_mode->hdr_mode != NO_HDR)
2772
- return 0;
2762
+ goto ctrl_end;
27732763 ret = ov12d2q_write_reg(ov12d2q->client,
27742764 OV12D2Q_REG_EXP_L_H,
27752765 OV12D2Q_REG_VALUE_16BIT,
....@@ -2779,7 +2769,7 @@
27792769 break;
27802770 case V4L2_CID_ANALOGUE_GAIN:
27812771 if (ov12d2q->cur_mode->hdr_mode != NO_HDR)
2782
- return 0;
2772
+ goto ctrl_end;
27832773 if (ctrl->val > 1984) {// >15.5x
27842774 dgain = ctrl->val * 10 / 155;
27852775 again = 1984;
....@@ -2896,6 +2886,7 @@
28962886 break;
28972887 }
28982888
2889
+ctrl_end:
28992890 pm_runtime_put(&client->dev);
29002891
29012892 return ret;