diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c index d33d16c0c799..e741c52b9bfd 100644 --- a/drivers/media/i2c/imx335.c +++ b/drivers/media/i2c/imx335.c @@ -1734,7 +1734,7 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (imx335->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; shr0 = imx335->cur_vts - ctrl->val; ret = imx335_write_reg(imx335->client, IMX335_LF_EXPO_REG_L, IMX335_REG_VALUE_08BIT, @@ -1750,7 +1750,7 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (imx335->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; ret = imx335_write_reg(imx335->client, IMX335_LF_GAIN_REG_H, IMX335_REG_VALUE_08BIT, IMX335_FETCH_GAIN_H(ctrl->val)); @@ -1830,6 +1830,7 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/imx415.c b/drivers/media/i2c/imx415.c index ccc93119ddaa..f0276b812713 100644 --- a/drivers/media/i2c/imx415.c +++ b/drivers/media/i2c/imx415.c @@ -2303,7 +2303,7 @@ static int imx415_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (imx415->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; shr0 = imx415->cur_vts - ctrl->val; ret = imx415_write_reg(imx415->client, IMX415_LF_EXPO_REG_L, IMX415_REG_VALUE_08BIT, @@ -2319,7 +2319,7 @@ static int imx415_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (imx415->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; ret = imx415_write_reg(imx415->client, IMX415_LF_GAIN_REG_H, IMX415_REG_VALUE_08BIT, IMX415_FETCH_GAIN_H(ctrl->val)); @@ -2388,6 +2388,7 @@ static int imx415_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/imx577.c b/drivers/media/i2c/imx577.c index 53da4ddc6f68..24c2f1e84aac 100644 --- a/drivers/media/i2c/imx577.c +++ b/drivers/media/i2c/imx577.c @@ -2048,7 +2048,7 @@ static int imx577_set_ctrl(struct v4l2_ctrl *ctrl) case V4L2_CID_EXPOSURE: /* 4 least significant bits of expsoure are fractional part */ if (imx577->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; ret = imx577_write_reg(imx577->client, IMX577_REG_EXPOSURE_H, IMX577_REG_VALUE_08BIT, @@ -2067,7 +2067,7 @@ static int imx577_set_ctrl(struct v4l2_ctrl *ctrl) * gain_reg = 1024 - 1024 * 16 / (gain_ana * 16) */ if (imx577->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; if (ctrl->val > 0x1600) ctrl->val = 0x1600; if (ctrl->val < 0x10) @@ -2138,6 +2138,7 @@ static int imx577_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/os05a20.c b/drivers/media/i2c/os05a20.c index 3ca1b2df6086..b47a0fb8a4fc 100644 --- a/drivers/media/i2c/os05a20.c +++ b/drivers/media/i2c/os05a20.c @@ -674,7 +674,7 @@ static const struct os05a20_mode supported_modes[] = { .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_1, .vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_0,//L->csi wr0 .vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_1, - .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2 //Α½ΥλΉΜΆ¨ΆΜΦ‘ + .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2 }, }; @@ -1565,7 +1565,7 @@ static int os05a20_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (os05a20->cur_mode->hdr_mode != NO_HDR) - return 0; + goto ctrl_end; ret = os05a20_write_reg(os05a20->client, OS05A20_REG_EXP_LONG_H, OS05A20_REG_VALUE_16BIT, @@ -1575,7 +1575,7 @@ static int os05a20_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (os05a20->cur_mode->hdr_mode != NO_HDR) - return 0; + goto ctrl_end; if (ctrl->val > 1984) {// >15.5x dgain = ctrl->val * 10 / 155; again = 1984; @@ -1634,6 +1634,7 @@ static int os05a20_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/ov12d2q.c b/drivers/media/i2c/ov12d2q.c index 66d5830e901c..0d92a446b0cc 100644 --- a/drivers/media/i2c/ov12d2q.c +++ b/drivers/media/i2c/ov12d2q.c @@ -2761,7 +2761,7 @@ static int ov12d2q_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (ov12d2q->cur_mode->hdr_mode != NO_HDR) - return 0; + goto ctrl_end; ret = ov12d2q_write_reg(ov12d2q->client, OV12D2Q_REG_EXP_L_H, OV12D2Q_REG_VALUE_16BIT, @@ -2771,7 +2771,7 @@ static int ov12d2q_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (ov12d2q->cur_mode->hdr_mode != NO_HDR) - return 0; + goto ctrl_end; if (ctrl->val > 1984) {// >15.5x dgain = ctrl->val * 10 / 155; again = 1984; @@ -2888,6 +2888,7 @@ static int ov12d2q_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/ov2775.c b/drivers/media/i2c/ov2775.c index 589b7bf6dc42..da438d47e2f2 100644 --- a/drivers/media/i2c/ov2775.c +++ b/drivers/media/i2c/ov2775.c @@ -4865,7 +4865,7 @@ static int ov2775_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (ov2775->cur_mode->hdr_mode != NO_HDR) - return 0; + goto ctrl_end; ret = ov2775_write_reg(ov2775->client, OV2775_REG_EXPOSURE_H, OV2775_REG_VALUE_08BIT, @@ -4880,7 +4880,7 @@ static int ov2775_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (ov2775->cur_mode->hdr_mode != NO_HDR) - return 0; + goto ctrl_end; ov2775_get_linear_reg(ctrl->val, &gain_a, &gain_d); ret = ov2775_write_reg(ov2775->client, OV2775_REG_GAIN, @@ -4937,6 +4937,7 @@ static int ov2775_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/sc2232.c b/drivers/media/i2c/sc2232.c index 0278d2f31b55..59156adda6c0 100644 --- a/drivers/media/i2c/sc2232.c +++ b/drivers/media/i2c/sc2232.c @@ -1192,7 +1192,7 @@ static int sc2232_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (sc2232->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; val = ctrl->val << 1; ret = sc2232_write_reg(sc2232->client, SC2232_REG_EXP_LONG_L, @@ -1210,7 +1210,7 @@ static int sc2232_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (sc2232->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; ret = sc2232_set_gain(sc2232, ctrl->val); break; case V4L2_CID_VBLANK: @@ -1256,6 +1256,7 @@ static int sc2232_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; } diff --git a/drivers/media/i2c/sc4210.c b/drivers/media/i2c/sc4210.c index 5f8958f1ad87..b3277973e3cf 100644 --- a/drivers/media/i2c/sc4210.c +++ b/drivers/media/i2c/sc4210.c @@ -2357,7 +2357,7 @@ static int sc4210_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (sc4210->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; val = ctrl->val << 1; ret = sc4210_write_reg(sc4210->client, SC4210_REG_EXPOSURE_H, @@ -2376,7 +2376,7 @@ static int sc4210_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (sc4210->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; sc4210_get_gain_reg(ctrl->val, &again, &again_fine, &dgain, &dgain_fine); ret = sc4210_write_reg(sc4210->client, @@ -2448,6 +2448,7 @@ static int sc4210_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/sc500ai.c b/drivers/media/i2c/sc500ai.c index 00456f9b3b41..060c5d216ca1 100644 --- a/drivers/media/i2c/sc500ai.c +++ b/drivers/media/i2c/sc500ai.c @@ -1433,7 +1433,7 @@ static int sc500ai_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (sc500ai->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; val = ctrl->val << 1; ret = sc500ai_write_reg(sc500ai->client, SC500AI_REG_EXPOSURE_H, @@ -1452,7 +1452,7 @@ static int sc500ai_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (sc500ai->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; sc500ai_get_gain_reg(ctrl->val, &again, &again_fine, &dgain, &dgain_fine); ret = sc500ai_write_reg(sc500ai->client, @@ -1557,6 +1557,7 @@ static int sc500ai_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret; diff --git a/drivers/media/i2c/sc530ai.c b/drivers/media/i2c/sc530ai.c index b582ed65dd37..7c92587c518d 100644 --- a/drivers/media/i2c/sc530ai.c +++ b/drivers/media/i2c/sc530ai.c @@ -1668,7 +1668,7 @@ static int sc530ai_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: if (sc530ai->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; val = ctrl->val << 1; ret = sc530ai_write_reg(sc530ai->client, SC530AI_REG_EXPOSURE_H, @@ -1687,7 +1687,7 @@ static int sc530ai_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_ANALOGUE_GAIN: if (sc530ai->cur_mode->hdr_mode != NO_HDR) - return ret; + goto ctrl_end; sc530ai_get_gain_reg(ctrl->val, &again, &dgain, &dgain_fine); ret = sc530ai_write_reg(sc530ai->client, @@ -1756,6 +1756,7 @@ static int sc530ai_set_ctrl(struct v4l2_ctrl *ctrl) break; } +ctrl_end: pm_runtime_put(&client->dev); return ret;