]> git.baikalelectronics.ru Git - kernel.git/commit
media: ov5640: Fix set format, v4l2_mbus_pixelcode not updated
authorMirela Rabulea <mirela.rabulea@nxp.com>
Mon, 1 Nov 2021 19:52:51 +0000 (21:52 +0200)
committerSakari Ailus <sakari.ailus@linux.intel.com>
Wed, 23 Feb 2022 10:21:39 +0000 (12:21 +0200)
commit586d0c56ca2d1b0f369a1a45dff37071d967f2a9
treeb3ae1e8cbc23cad7bd3544981ff84638ab833c7c
parent6ebb44c727932787a84bd33f3c54a5087f4acca9
media: ov5640: Fix set format, v4l2_mbus_pixelcode not updated

In ov5640_set_fmt, pending_fmt_change will always be false, because the
sensor format is saved before comparing it with the previous format:
fmt = &sensor->fmt;...
*fmt = *mbus_fmt;...
if (mbus_fmt->code != sensor->fmt.code)
sensor->pending_fmt_change = true;
This causes the sensor to capture with the previous pixelcode.

Also, changes might happen even for V4L2_SUBDEV_FORMAT_TRY, so fix that.

Basically, revert back to the state before
commit 04a531c1d409 ("media: ov5640: Fix set format regression")
as it was more clear, and then update format even when pixelcode does
not change, as resolution might change.

Fixes: 04a531c1d409 ("media: ov5640: Fix set format regression")
Fixes: 2bf39d12792f ("media: ov5640: do not change mode if format or frame interval is unchanged")
Fixes: 58c416fc69636 ("media: ov5640: fix mode change regression")
Signed-off-by: Mirela Rabulea <mirela.rabulea@nxp.com>
Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Acked-by: Hugues Fruchet <hugues.fruchet@st.com>
Tested-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
drivers/media/i2c/ov5640.c