forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/media/i2c/ov5695.c
....@@ -841,9 +841,7 @@
841841 struct ov5695 *ov5695 = to_ov5695(sd);
842842 const struct ov5695_mode *mode = ov5695->cur_mode;
843843
844
- mutex_lock(&ov5695->mutex);
845844 fi->interval = mode->max_fps;
846
- mutex_unlock(&ov5695->mutex);
847845
848846 return 0;
849847 }
....@@ -852,10 +850,10 @@
852850 struct rkmodule_inf *inf)
853851 {
854852 memset(inf, 0, sizeof(*inf));
855
- strlcpy(inf->base.sensor, OV5695_NAME, sizeof(inf->base.sensor));
856
- strlcpy(inf->base.module, ov5695->module_name,
853
+ strscpy(inf->base.sensor, OV5695_NAME, sizeof(inf->base.sensor));
854
+ strscpy(inf->base.module, ov5695->module_name,
857855 sizeof(inf->base.module));
858
- strlcpy(inf->base.lens, ov5695->len_name, sizeof(inf->base.lens));
856
+ strscpy(inf->base.lens, ov5695->len_name, sizeof(inf->base.lens));
859857 }
860858
861859 static long ov5695_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
....@@ -906,8 +904,11 @@
906904 }
907905
908906 ret = ov5695_ioctl(sd, cmd, inf);
909
- if (!ret)
907
+ if (!ret) {
910908 ret = copy_to_user(up, inf, sizeof(*inf));
909
+ if (ret)
910
+ ret = -EFAULT;
911
+ }
911912 kfree(inf);
912913 break;
913914 case RKMODULE_AWB_CFG:
....@@ -920,12 +921,16 @@
920921 ret = copy_from_user(cfg, up, sizeof(*cfg));
921922 if (!ret)
922923 ret = ov5695_ioctl(sd, cmd, cfg);
924
+ else
925
+ ret = -EFAULT;
923926 kfree(cfg);
924927 break;
925928 case RKMODULE_SET_QUICK_STREAM:
926929 ret = copy_from_user(&stream, up, sizeof(u32));
927930 if (!ret)
928931 ret = ov5695_ioctl(sd, cmd, &stream);
932
+ else
933
+ ret = -EFAULT;
929934 break;
930935 default:
931936 ret = -ENOIOCTLCMD;
....@@ -1098,7 +1103,7 @@
10981103 regulator_bulk_disable(OV5695_NUM_SUPPLIES, ov5695->supplies);
10991104 }
11001105
1101
-static int ov5695_runtime_resume(struct device *dev)
1106
+static int __maybe_unused ov5695_runtime_resume(struct device *dev)
11021107 {
11031108 struct i2c_client *client = to_i2c_client(dev);
11041109 struct v4l2_subdev *sd = i2c_get_clientdata(client);
....@@ -1107,7 +1112,7 @@
11071112 return __ov5695_power_on(ov5695);
11081113 }
11091114
1110
-static int ov5695_runtime_suspend(struct device *dev)
1115
+static int __maybe_unused ov5695_runtime_suspend(struct device *dev)
11111116 {
11121117 struct i2c_client *client = to_i2c_client(dev);
11131118 struct v4l2_subdev *sd = i2c_get_clientdata(client);
....@@ -1147,16 +1152,14 @@
11471152 if (fie->index >= ARRAY_SIZE(supported_modes))
11481153 return -EINVAL;
11491154
1150
- if (fie->code != MEDIA_BUS_FMT_SBGGR10_1X10)
1151
- return -EINVAL;
1152
-
1155
+ fie->code = MEDIA_BUS_FMT_SBGGR10_1X10;
11531156 fie->width = supported_modes[fie->index].width;
11541157 fie->height = supported_modes[fie->index].height;
11551158 fie->interval = supported_modes[fie->index].max_fps;
11561159 return 0;
11571160 }
11581161
1159
-static int ov5695_g_mbus_config(struct v4l2_subdev *sd,
1162
+static int ov5695_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id,
11601163 struct v4l2_mbus_config *config)
11611164 {
11621165 u32 val = 0;
....@@ -1164,7 +1167,7 @@
11641167 val = 1 << (OV5695_LANES - 1) |
11651168 V4L2_MBUS_CSI2_CHANNEL_0 |
11661169 V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
1167
- config->type = V4L2_MBUS_CSI2;
1170
+ config->type = V4L2_MBUS_CSI2_DPHY;
11681171 config->flags = val;
11691172
11701173 return 0;
....@@ -1192,7 +1195,6 @@
11921195 static const struct v4l2_subdev_video_ops ov5695_video_ops = {
11931196 .s_stream = ov5695_s_stream,
11941197 .g_frame_interval = ov5695_g_frame_interval,
1195
- .g_mbus_config = ov5695_g_mbus_config,
11961198 };
11971199
11981200 static const struct v4l2_subdev_pad_ops ov5695_pad_ops = {
....@@ -1201,6 +1203,7 @@
12011203 .enum_frame_interval = ov5695_enum_frame_interval,
12021204 .get_fmt = ov5695_get_fmt,
12031205 .set_fmt = ov5695_set_fmt,
1206
+ .get_mbus_config = ov5695_g_mbus_config,
12041207 };
12051208
12061209 static const struct v4l2_subdev_ops ov5695_subdev_ops = {