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)
commite738f5dd67eb8098d75345908a5e73782d0569a5
treeb3ae1e8cbc23cad7bd3544981ff84638ab833c7c
parent2b891d3980f6c255459d0e1c29ce2152ec7cf678
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 071154499193 ("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: 071154499193 ("media: ov5640: Fix set format regression")
Fixes: 6949d864776e ("media: ov5640: do not change mode if format or frame interval is unchanged")
Fixes: fb98e29ff1ea5 ("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