Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4550a7f4 authored by Hans Verkuil's avatar Hans Verkuil Committed by Greg Kroah-Hartman
Browse files

media: imx274: fix frame interval handling



[ Upstream commit 49b20d981d723fae5a93843c617af2b2c23611ec ]

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: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Reviewed-by: default avatarLuca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 7ed97d8c
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1239,6 +1239,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
@@ -1760,9 +1762,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