From 307d8b27bacbe90f4a5bd7485ccd93b8188bb2b5 Mon Sep 17 00:00:00 2001 From: Wang Panzhenzhuan Date: Fri, 16 Jul 2021 16:51:23 +0800 Subject: [PATCH] media: i2c: gc2375h: fix vblank set issue Signed-off-by: Wang Panzhenzhuan Change-Id: Idf54706a751766fd4a0221eb42a7035989c45c34 --- drivers/media/i2c/gc2375h.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/gc2375h.c b/drivers/media/i2c/gc2375h.c index 6c4f39177120..b98a3a053016 100644 --- a/drivers/media/i2c/gc2375h.c +++ b/drivers/media/i2c/gc2375h.c @@ -10,6 +10,7 @@ * TODO: add OTP function. * V0.0X01.0X04 add quick stream on/off * V0.0X01.0X05 add function g_mbus_config + * V0.0X01.0X06 fix vblank set issue */ //#define DEBUG 1 @@ -35,7 +36,7 @@ #include #include -#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x5) +#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x6) #ifndef V4L2_CID_DIGITAL_GAIN #define V4L2_CID_DIGITAL_GAIN V4L2_CID_GAIN @@ -722,8 +723,11 @@ static long gc2375h_compat_ioctl32(struct v4l2_subdev *sd, } ret = gc2375h_ioctl(sd, cmd, inf); - if (!ret) + if (!ret) { ret = copy_to_user(up, inf, sizeof(*inf)); + if (ret) + ret = -EFAULT; + } kfree(inf); break; case RKMODULE_AWB_CFG: @@ -736,12 +740,16 @@ static long gc2375h_compat_ioctl32(struct v4l2_subdev *sd, ret = copy_from_user(cfg, up, sizeof(*cfg)); if (!ret) ret = gc2375h_ioctl(sd, cmd, cfg); + else + ret = -EFAULT; kfree(cfg); break; case RKMODULE_SET_QUICK_STREAM: ret = copy_from_user(&stream, up, sizeof(u32)); if (!ret) ret = gc2375h_ioctl(sd, cmd, &stream); + else + ret = -EFAULT; break; default: ret = -ENOIOCTLCMD; @@ -1251,7 +1259,7 @@ static int gc2375h_set_ctrl(struct v4l2_ctrl *ctrl) ((ctrl->val) >> 8) & 0x1f); ret |= gc2375h_write_reg(gc2375h->client, GC2375H_REG_VTS_L, - ((ctrl->val) >> 8) & 0xff); + (ctrl->val & 0xff)); break; default: