summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-08-31 16:57:47 +0300
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2023-09-15 00:31:55 +0300
commitfaece4ad72b06308101d7f9cacaf8dd6df4fdc1f (patch)
treee9b8e8ef1ae4546c77f422653bcb3a32558fbca2 /drivers/media
parentbb2d01127f5d8e5034daa60a08e68f719ad71ec2 (diff)
downloadlinux-faece4ad72b06308101d7f9cacaf8dd6df4fdc1f.tar.xz
media: i2c: imx219: Perform a full mode set unconditionally
The .set_fmt() handler tries to avoid updating the sensor configuration when the mode hasn't changed. It does so by comparing both the mode and the media bus code. While the latter correctly uses the media bus code stored in the subdev state, the former compares the mode being set with the active mode, regardless of whether .set_fmt() is called for the ACTIVE or TRY format. This can lead to .set_fmt() returning early when operating on TRY formats. This could be fixed by replacing the mode comparison with width and height comparisons, using the frame size stored in the subdev state. However, the optimization that avoids updates to the sensor configuration is not very useful, and is not commonly found in sensor drivers. To improve consistency across sensor drivers, it is better, in addition to being easier, to simply drop it. Do so. Fixes: e8a5b1df000e ("media: i2c: imx219: Use subdev active state") Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/i2c/imx219.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
index f19c828b6943..ec53abe2e84e 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
@@ -762,9 +762,6 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
format = v4l2_subdev_get_pad_format(sd, sd_state, 0);
crop = v4l2_subdev_get_pad_crop(sd, sd_state, 0);
- if (imx219->mode == mode && format->code == fmt->format.code)
- return 0;
-
*format = fmt->format;
*crop = mode->crop;