media: imx274: fix frame interval handling
1) the numerator and/or denominator might be 0, in that case fall back to the default frame interval. This is per the spec and this caused a v4l2-compliance failure. 2) the updated frame interval wasn't returned in the s_frame_interval subdev op. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reviewed-by: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
52438c4463
commit
49b20d981d
|
@ -1235,6 +1235,8 @@ static int imx274_s_frame_interval(struct v4l2_subdev *sd,
|
|||
ret = imx274_set_frame_interval(imx274, fi->interval);
|
||||
|
||||
if (!ret) {
|
||||
fi->interval = imx274->frame_interval;
|
||||
|
||||
/*
|
||||
* exposure time range is decided by frame interval
|
||||
* need to update it after frame interval changes
|
||||
|
@ -1730,9 +1732,9 @@ static int imx274_set_frame_interval(struct stimx274 *priv,
|
|||
__func__, frame_interval.numerator,
|
||||
frame_interval.denominator);
|
||||
|
||||
if (frame_interval.numerator == 0) {
|
||||
err = -EINVAL;
|
||||
goto fail;
|
||||
if (frame_interval.numerator == 0 || frame_interval.denominator == 0) {
|
||||
frame_interval.denominator = IMX274_DEF_FRAME_RATE;
|
||||
frame_interval.numerator = 1;
|
||||
}
|
||||
|
||||
req_frame_rate = (u32)(frame_interval.denominator
|
||||
|
|
Loading…
Reference in New Issue