media: imx274: fix frame interval handling
[ Upstream commit 49b20d981d
]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
448e5004ad
commit
67e18c92e0
|
@ -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