hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/media/i2c/os05a20.c
....@@ -106,14 +106,6 @@
106106 #define MIRROR_BIT_MASK BIT(2)
107107 #define FLIP_BIT_MASK BIT(2)
108108
109
-enum os05a20_max_pad {
110
- PAD0,
111
- PAD1,
112
- PAD2,
113
- PAD3,
114
- PAD_MAX,
115
-};
116
-
117109 struct regval {
118110 u16 addr;
119111 u8 val;
....@@ -682,7 +674,7 @@
682674 .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_1,
683675 .vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_0,//L->csi wr0
684676 .vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_1,
685
- .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2 //Á½Õë¹Ì¶¨¶ÌÖ¡
677
+ .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2
686678 },
687679 };
688680
....@@ -928,14 +920,12 @@
928920 struct os05a20 *os05a20 = to_os05a20(sd);
929921 const struct os05a20_mode *mode = os05a20->cur_mode;
930922
931
- mutex_lock(&os05a20->mutex);
932923 fi->interval = mode->max_fps;
933
- mutex_unlock(&os05a20->mutex);
934924
935925 return 0;
936926 }
937927
938
-static int os05a20_g_mbus_config(struct v4l2_subdev *sd,
928
+static int os05a20_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id,
939929 struct v4l2_mbus_config *config)
940930 {
941931 struct os05a20 *os05a20 = to_os05a20(sd);
....@@ -952,7 +942,7 @@
952942 V4L2_MBUS_CSI2_CONTINUOUS_CLOCK |
953943 V4L2_MBUS_CSI2_CHANNEL_1;
954944
955
- config->type = V4L2_MBUS_CSI2;
945
+ config->type = V4L2_MBUS_CSI2_DPHY;
956946 config->flags = val;
957947
958948 return 0;
....@@ -1526,7 +1516,6 @@
15261516 static const struct v4l2_subdev_video_ops os05a20_video_ops = {
15271517 .s_stream = os05a20_s_stream,
15281518 .g_frame_interval = os05a20_g_frame_interval,
1529
- .g_mbus_config = os05a20_g_mbus_config,
15301519 };
15311520
15321521 static const struct v4l2_subdev_pad_ops os05a20_pad_ops = {
....@@ -1535,6 +1524,7 @@
15351524 .enum_frame_interval = os05a20_enum_frame_interval,
15361525 .get_fmt = os05a20_get_fmt,
15371526 .set_fmt = os05a20_set_fmt,
1527
+ .get_mbus_config = os05a20_g_mbus_config,
15381528 };
15391529
15401530 static const struct v4l2_subdev_ops os05a20_subdev_ops = {
....@@ -1573,7 +1563,7 @@
15731563 switch (ctrl->id) {
15741564 case V4L2_CID_EXPOSURE:
15751565 if (os05a20->cur_mode->hdr_mode != NO_HDR)
1576
- return 0;
1566
+ goto ctrl_end;
15771567 ret = os05a20_write_reg(os05a20->client,
15781568 OS05A20_REG_EXP_LONG_H,
15791569 OS05A20_REG_VALUE_16BIT,
....@@ -1583,7 +1573,7 @@
15831573 break;
15841574 case V4L2_CID_ANALOGUE_GAIN:
15851575 if (os05a20->cur_mode->hdr_mode != NO_HDR)
1586
- return 0;
1576
+ goto ctrl_end;
15871577 if (ctrl->val > 1984) {// >15.5x
15881578 dgain = ctrl->val * 10 / 155;
15891579 again = 1984;
....@@ -1642,6 +1632,7 @@
16421632 break;
16431633 }
16441634
1635
+ctrl_end:
16451636 pm_runtime_put(&client->dev);
16461637
16471638 return ret;