Use IMX283_STANDBY (bit 0) instead of IMX283_STBLOGIC (bit 1) when
stopping streaming. STBLOGIC only puts the sensor logic into standby but
leaves the MIPI interface (along with other components) in an
indeterminate state.
This (presumably) causes the CSI receiver (e.g. Raspberry Pi's CFE) to
miss the LP-11 to HS transition when streaming restarts, resulting in a
hang of 10+ seconds. The issue is most visible when immediately
restarting a full-resolution stream after stopping a 3x3 binned one, so
that runtime suspend hasn't yet been triggered.
Writing IMX283_STANDBY puts the entire sensor into standby. The
imx283_standby_cancel() sequence already handles the full wakeup from
this suspended state.
Cc: stable@vger.kernel.org
Link: https://github.com/raspberrypi/linux/issues/7153
Link: https://github.com/will127534/OneInchEye/issues/12
Fixes: ccb4eb4496fa ("media: i2c: Add imx283 camera sensor driver")
Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
---
drivers/media/i2c/imx283.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c
index 8ab63ad8f385f6e2a2d7432feff0af09a5356dc4..9b3094a57873c6e8ff8c41d058ea3b0012642cac 100644
--- a/drivers/media/i2c/imx283.c
+++ b/drivers/media/i2c/imx283.c
@@ -1158,7 +1158,7 @@ static int imx283_disable_streams(struct v4l2_subdev *sd,
if (pad != IMAGE_PAD)
return -EINVAL;
- ret = cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STBLOGIC, NULL);
+ ret = cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STANDBY, NULL);
if (ret)
dev_err(imx283->dev, "Failed to stop stream\n");
--
2.53.0
Quoting Jai Luthra (2026-02-14 13:05:21)
> Use IMX283_STANDBY (bit 0) instead of IMX283_STBLOGIC (bit 1) when
> stopping streaming. STBLOGIC only puts the sensor logic into standby but
> leaves the MIPI interface (along with other components) in an
> indeterminate state.
>
> This (presumably) causes the CSI receiver (e.g. Raspberry Pi's CFE) to
> miss the LP-11 to HS transition when streaming restarts, resulting in a
> hang of 10+ seconds. The issue is most visible when immediately
> restarting a full-resolution stream after stopping a 3x3 binned one, so
> that runtime suspend hasn't yet been triggered.
>
> Writing IMX283_STANDBY puts the entire sensor into standby. The
> imx283_standby_cancel() sequence already handles the full wakeup from
> this suspended state.
>
> Cc: stable@vger.kernel.org
> Link: https://github.com/raspberrypi/linux/issues/7153
> Link: https://github.com/will127534/OneInchEye/issues/12
> Fixes: ccb4eb4496fa ("media: i2c: Add imx283 camera sensor driver")
> Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
Thank you for digging into this! Indeed - I think this series fixes all
my current known issues with this module.
Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> ---
> drivers/media/i2c/imx283.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c
> index 8ab63ad8f385f6e2a2d7432feff0af09a5356dc4..9b3094a57873c6e8ff8c41d058ea3b0012642cac 100644
> --- a/drivers/media/i2c/imx283.c
> +++ b/drivers/media/i2c/imx283.c
> @@ -1158,7 +1158,7 @@ static int imx283_disable_streams(struct v4l2_subdev *sd,
> if (pad != IMAGE_PAD)
> return -EINVAL;
>
> - ret = cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STBLOGIC, NULL);
> + ret = cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STANDBY, NULL);
> if (ret)
> dev_err(imx283->dev, "Failed to stop stream\n");
>
>
> --
> 2.53.0
>
© 2016 - 2026 Red Hat, Inc.