From efd29cb1487fe5b189f1a69e050690905ff6cbfe Mon Sep 17 00:00:00 2001 From: LongChang Ma Date: Mon, 26 Jun 2023 09:37:12 +0800 Subject: [PATCH] media: i2c: optimize gc2053 sync issue Signed-off-by: LongChang Ma Change-Id: Ibedcc39845d7a1e02fe4f5bcf6794b32a882e793 --- drivers/media/i2c/gc2053.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/gc2053.c b/drivers/media/i2c/gc2053.c index 7a93d864f217..8475b675c243 100644 --- a/drivers/media/i2c/gc2053.c +++ b/drivers/media/i2c/gc2053.c @@ -574,11 +574,13 @@ static int gc2053_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_VBLANK: vts = ctrl->val + gc2053->cur_mode->height; - ret = gc2053_write_reg(gc2053->client, GC2053_REG_VTS_H, (vts >> 8) & 0x3f); - ret |= gc2053_write_reg(gc2053->client, GC2053_REG_VTS_L, vts & 0xff); /* Note: In master-slave mode, Galaxycore request slave sensor frame rate bigger than master. */ if (gc2053->sync_mode == INTERNAL_MASTER_MODE) - gc2053_write_reg(gc2053->client, GC2053_REG_VTS_L, (vts & 0xff) + 10); + vts += 10; + ret = gc2053_write_reg(gc2053->client, GC2053_REG_VTS_H, (vts >> 8) & 0x3f); + ret |= gc2053_write_reg(gc2053->client, GC2053_REG_VTS_L, vts & 0xff); + /* TBD: master and slave not sync to streaming, but except sleep 20ms below */ + usleep_range(20000, 50000); break; case V4L2_CID_HFLIP: if (ctrl->val)