From: sashiko-bot@kernel.org
To: "Dave Stevenson" <dave.stevenson@raspberrypi.com>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH v3 10/20] media: imx355: Remove redundant fll_min, and implement fixed offset
Date: Wed, 08 Jul 2026 15:05:46 +0000 [thread overview]
Message-ID: <20260708150547.13A361F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260708-media-imx355-v3-10-9df386a623d7@raspberrypi.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] When changing the format via `imx355_set_pad_format()`, the driver attempts to reset `vblank` to its default value using `__v4l2_ctrl_s_ctrl()`. It relies on this call to trigger the `s_ctrl` callback (`imx355_set_ctrl()`), which updates the `exposure` control's maximum limit based on the new format's height. However, the V4L2 control framework explicitly optimizes out calls to `s_ctrl` if the new control value equals the current value. If a user manually sets `vblank` to a value that matches the target format's `vblank_def` prior to a format switch, `s_ctrl` is skipped and the `exposure` bounds are not updated. This leaves the control completely out-of-sync with the new format's Frame Length Lines (FLL).
--
--- Patch [10]: [PATCH v3 10/20] media: imx355: Remove redundant fll_min, and implement fixed offset ---
commit 3cb4d69cef75e79b15075f8e2c250b2bb53d96a4
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Subject: media: imx355: Remove redundant fll_min, and implement fixed offset
This commit removes the redundant fll_min field from the imx355 mode
configurations, as it is always identical to fll_def. It also sets a fixed
minimum vertical blanking (vblank) limit of 20 to improve the maximum frame
rate achievable across all modes.
> diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c
> index 2a97e076bff76..c6f27cf269b40 100644
> --- a/drivers/media/i2c/imx355.c
> +++ b/drivers/media/i2c/imx355.c
[ ... ]
> @@ -889,10 +874,9 @@ imx355_set_pad_format(struct v4l2_subdev *sd,
> /* Update limits and set FPS to default */
> height = imx355->cur_mode->height;
> vblank_def = imx355->cur_mode->fll_def - height;
> - vblank_min = imx355->cur_mode->fll_min - height;
> height = IMX355_FLL_MAX - height;
> - __v4l2_ctrl_modify_range(imx355->vblank, vblank_min, height, 1,
> - vblank_def);
> + __v4l2_ctrl_modify_range(imx355->vblank, IMX355_VBLANK_MIN,
> + height, 1, vblank_def);
> __v4l2_ctrl_s_ctrl(imx355->vblank, vblank_def);
[Severity: High]
This is a pre-existing issue, but I noticed a potential problem in how
exposure limits are updated during a format change in
imx355_set_pad_format().
The code relies on __v4l2_ctrl_s_ctrl() to reset the vblank value, expecting
it to trigger the s_ctrl callback (imx355_set_ctrl) to update the exposure
control limits.
However, the V4L2 control framework optimizes out calls to s_ctrl if the
new control value matches the current value. If userspace manually sets
vblank to a value that exactly equals the new format's vblank_def prior to
the format switch, the s_ctrl callback will be skipped.
Could this leave the exposure limits out of sync with the new format's Frame
Length Lines (FLL), resulting in userspace seeing stale limits and potentially
setting an invalid exposure value?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260708-media-imx355-v3-0-9df386a623d7@raspberrypi.com?part=10
next prev parent reply other threads:[~2026-07-08 15:05 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-08 14:48 [PATCH v3 00/20] media/imx355: General code cleanups, and adding support for 2 lane operation Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 01/20] media: i2c: imx355: Add support for 24 MHz external clock Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 02/20] dt-bindings: media: imx355: Allow 2 CSI2 data lane output Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 03/20] media: imx355: Remove duplicated registers from the mode tables Dave Stevenson
2026-07-08 15:00 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 04/20] media: imx355: Remove setting FRM_LENGTH_LINES in the mode regs Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 05/20] media: imx355: Programmatically set the crop parameters for each mode Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 06/20] media: imx355: Set register LINE_LENGTH_PCK programmatically Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 07/20] media: imx355: Set binning mode registers programmatically Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 08/20] media: imx355: Remove link_freq_index from each mode as ununsed Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 09/20] media: imx355: pixel_rate never changes, so don't recompute Dave Stevenson
2026-07-08 15:01 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 10/20] media: imx355: Remove redundant fll_min, and implement fixed offset Dave Stevenson
2026-07-08 15:05 ` sashiko-bot [this message]
2026-07-08 14:48 ` [PATCH v3 11/20] media: imx355: Add support for get_selection Dave Stevenson
2026-07-08 15:11 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 12/20] media: imx355: Use pm_runtime autosuspend_delay Dave Stevenson
2026-07-08 15:06 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 13/20] media: imx355: Convert to new CCI register access helpers Dave Stevenson
2026-07-08 15:08 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 14/20] media: imx355: Set the colorspace in the format Dave Stevenson
2026-07-08 15:01 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 15/20] media: imx355: Define the exposure offset, and use that define Dave Stevenson
2026-07-08 15:07 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 16/20] media: imx355: Use NULL ctrl_ops for HBLANK as it is a read-only control Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 17/20] media: imx355: Compute link frequency from PLL setup Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 18/20] media: imx355: Support 2 lane readout Dave Stevenson
2026-07-08 14:48 ` [PATCH v3 19/20] media: imx355: Switch to using the subdev state Dave Stevenson
2026-07-08 15:10 ` sashiko-bot
2026-07-08 14:48 ` [PATCH v3 20/20] media: imx355: Remove storing cur_mode in the state Dave Stevenson
2026-07-08 15:17 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260708150547.13A361F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=dave.stevenson@raspberrypi.com \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox