media: imx335: Set vblank immediately
[ Upstream commit c0aa40f45fef80b4182704d1bc089cbf8ae8bed0 ] When the vblank v4l2 control is set, it does not get written to the hardware unless exposure is also changed. Change the behavior such that the vblank is written immediately when the control is set, as setting the vblank without changing the exposure is a valid use case (such as for changing the frame rate). Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4176d6f2a6
commit
8d7e13c31c
@@ -559,12 +559,14 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl)
|
||||
imx335->vblank,
|
||||
imx335->vblank + imx335->cur_mode->height);
|
||||
|
||||
return __v4l2_ctrl_modify_range(imx335->exp_ctrl,
|
||||
IMX335_EXPOSURE_MIN,
|
||||
imx335->vblank +
|
||||
imx335->cur_mode->height -
|
||||
IMX335_EXPOSURE_OFFSET,
|
||||
1, IMX335_EXPOSURE_DEFAULT);
|
||||
ret = __v4l2_ctrl_modify_range(imx335->exp_ctrl,
|
||||
IMX335_EXPOSURE_MIN,
|
||||
imx335->vblank +
|
||||
imx335->cur_mode->height -
|
||||
IMX335_EXPOSURE_OFFSET,
|
||||
1, IMX335_EXPOSURE_DEFAULT);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -575,6 +577,13 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl)
|
||||
return 0;
|
||||
|
||||
switch (ctrl->id) {
|
||||
case V4L2_CID_VBLANK:
|
||||
exposure = imx335->exp_ctrl->val;
|
||||
analog_gain = imx335->again_ctrl->val;
|
||||
|
||||
ret = imx335_update_exp_gain(imx335, exposure, analog_gain);
|
||||
|
||||
break;
|
||||
case V4L2_CID_EXPOSURE:
|
||||
exposure = ctrl->val;
|
||||
analog_gain = imx335->again_ctrl->val;
|
||||
|
||||
Reference in New Issue
Block a user