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);
|
ret = imx274_set_frame_interval(imx274, fi->interval);
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
fi->interval = imx274->frame_interval;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* exposure time range is decided by frame interval
|
* exposure time range is decided by frame interval
|
||||||
* need to update it after frame interval changes
|
* 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,
|
__func__, frame_interval.numerator,
|
||||||
frame_interval.denominator);
|
frame_interval.denominator);
|
||||||
|
|
||||||
if (frame_interval.numerator == 0) {
|
if (frame_interval.numerator == 0 || frame_interval.denominator == 0) {
|
||||||
err = -EINVAL;
|
frame_interval.denominator = IMX274_DEF_FRAME_RATE;
|
||||||
goto fail;
|
frame_interval.numerator = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
req_frame_rate = (u32)(frame_interval.denominator
|
req_frame_rate = (u32)(frame_interval.denominator
|
||||||
|
|
Loading…
Reference in New Issue