From nobody Thu Apr 2 23:57:07 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B24530E84B; Sat, 14 Feb 2026 13:05:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771074355; cv=none; b=ZikRxPTBNC+SAAvo28axsxcuoJ7N1ZGX3Ycqrk0hp2AY9MVyhR/7TYtoTBZoGlm2/wNe9MANUQZul7LrEXKAI9HBqvj2VgqYVcA5AUdnUd6S9uuv15wyet13CQ4oOTczMrHIqsnHMuTImx0+O2fD9UgCvdSqi8Qx95WXEYFQaO4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771074355; c=relaxed/simple; bh=ABNEPJUoE5R/NR5YbvAietOAlmUIsolfr6/ifzWQF/0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mTQt40YPskVWzV9n+aDo67eNOqMHxbbNi98hNwGMssmmqWEPw7qfwlkdgGAz6fFVFFMwCe/37YN/OSuZAKn6RmcGyOYzxXZ8xiOqO6VDlX3v3ndEODpDKS9wDz/zkETBN0NhP/3kzU9EX5pya/qKLhs/XPptXzL1OD7Yh5V3wM8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=FVFH0bot; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="FVFH0bot" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c30:6452:b7eb:ea26:c129:40a5]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C5CB819A2; Sat, 14 Feb 2026 14:05:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1771074302; bh=ABNEPJUoE5R/NR5YbvAietOAlmUIsolfr6/ifzWQF/0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FVFH0botob5ke1jYywX960dMRuwtwZXC3i23oXSShTEws/abIo95BIrL7V8+IZlGc mMIXvrByzuFjdEiZPsVfQ9NdOnbDyFOUrcvf2CFrMjsEr8OThyK7n/nI913ZCApLtK ln3XnnW6Ab32EItQylqXrJ2YHvaZnjSkWWby5Zug= From: Jai Luthra Date: Sat, 14 Feb 2026 18:35:21 +0530 Subject: [PATCH v2 1/2] media: i2c: imx283: Enter full standby when stopping streaming Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260214-imx283-hang-fix-v2-1-f4fd3de0f020@ideasonboard.com> References: <20260214-imx283-hang-fix-v2-0-f4fd3de0f020@ideasonboard.com> In-Reply-To: <20260214-imx283-hang-fix-v2-0-f4fd3de0f020@ideasonboard.com> To: Sakari Ailus , Kieran Bingham , Umang Jain , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jai Luthra , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1681; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=ABNEPJUoE5R/NR5YbvAietOAlmUIsolfr6/ifzWQF/0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpkHMiueVq8Jzpm8PXqMSK0+pvDwGBF5A5QeSWN xniILmP042JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaZBzIgAKCRBD3pH5JJpx ReN8EACaUoBcny+brlsrQb9t9lyDzU0s/OBTF1Hq8KcZEIccHjJehFGgcaO2JRbqwArLRhmA0eP VJw+GKTZB5sKFjJh3XN6vZ3VCFNDjIDbDS17Mi83InvPISasdZLW6ocqDS6JSzJ74yL7djfT9Vy XWkF+oML4CGnOkcRGuNGTRkmSU0V0ythWpeWUjkBuTc9zwowc2PnJf+kZZFMbFbD5GzWpTbB9Zj 9G7m1bcBx1zEUuzSiNVYNHgqcJYS75s1EjhEZ+e9zS4CuQESbK7PNeZ0IAbGxarcFNwfyBIHFdM YNedJX8Ty0hHHur7MYZx46RGi039+OiEvtSst+LcahXrXfKHWQW4/ADZq9OCjtTLGpb0pEy4D06 gdrk1rcy+JhWl9lWL95Pjvggs07XmoE+LePyMoStwEtLU9ke9NAjFaClEwOc8I6K8a3WBqMPvVW 2oyguWmLTrM+S7/VOfFbSqO1NzOEAqTdCmcyIpwH5Kmf07d4j1mn9hZl1iwfCnmCy7ifvCbrDFD IoGGpBUuDBuHen8qCuok1h/W37qrGmlT15Xze+v5uk8dKms2bf3YD1OmFnYptu7Vc115GK7Qe3x RByi8YPrGz+U/8svZaXGm05P0N/2XhAtpxhF5o9sEFWWx4186tVryysHBtesBUEgLIWa5PzycYN Y8u+3knXipChmjg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 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 Reviewed-by: Kieran Bingham Tested-by: Kieran Bingham --- 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..9b3094a57873c6e8ff8c41d058e= a3b0012642cac 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 !=3D IMAGE_PAD) return -EINVAL; =20 - ret =3D cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STBLOGIC, NULL); + ret =3D cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STANDBY, NULL); if (ret) dev_err(imx283->dev, "Failed to stop stream\n"); =20 --=20 2.53.0 From nobody Thu Apr 2 23:57:07 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B829D30ACE6; Sat, 14 Feb 2026 13:05:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771074360; cv=none; b=f0LrY4oks1LQWK9Zckp1yfv+dKULxZc6fo2XntnWD4gDLdYcBwSpfv6eGswLV7u4o372NizbgIoInkfNpZE0r4I0amCRcn6RfOMEp+Lsw5ZQXhNnC5HJZaKw00VwcpMo4ljVa5vGWWRnyRP+jyjy/UH0OWFrjCe1T3UK+luqGK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771074360; c=relaxed/simple; bh=1bI32zm3Wuz81PE4dSrg/j+dht98RHbmddpIHH4Hlnk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DO39WCA4qNOBsA9GLHzWBgaUXgmzfpCKWgYR23pPbn47gjJN3ey3fGQR9ivhCCPFYSoE+/l17wm/m5LmhVhRqZoDFfqQhewfaug25bHjNAgBwDK1bJvAdU3UWZ6Rt7SX/rKKd0jKJ2MRMi7gOYiuphzyDdh0dnU8E19PjNEFQUM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=t7zLrhI2; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="t7zLrhI2" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c30:6452:b7eb:ea26:c129:40a5]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B8F7D557; Sat, 14 Feb 2026 14:05:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1771074308; bh=1bI32zm3Wuz81PE4dSrg/j+dht98RHbmddpIHH4Hlnk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=t7zLrhI2bxolPEA9Ycz4btF5G38lWEn6YFifQad9QEck0v0DkDZZUsmYhqNhtWIMU EfB49bn5RyBQVozXZMcGifXLwLgWq5zuEU9/BNHKvSXaOxjtWfmoHONYUD4ZDsI/hC juEMTGPFJhLg8xqcOPIE44sv6HLXVotdwEXNqMhM= From: Jai Luthra Date: Sat, 14 Feb 2026 18:35:22 +0530 Subject: [PATCH v2 2/2] media: i2c: imx283: Fix hang when going from large to small resolution Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260214-imx283-hang-fix-v2-2-f4fd3de0f020@ideasonboard.com> References: <20260214-imx283-hang-fix-v2-0-f4fd3de0f020@ideasonboard.com> In-Reply-To: <20260214-imx283-hang-fix-v2-0-f4fd3de0f020@ideasonboard.com> To: Sakari Ailus , Kieran Bingham , Umang Jain , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jai Luthra , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3059; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=1bI32zm3Wuz81PE4dSrg/j+dht98RHbmddpIHH4Hlnk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpkHMjpIkzUOGT0RO4B4XLPadRh6OklvYO8EGON 4uZxBtbC2CJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaZBzIwAKCRBD3pH5JJpx RcxtEACuyBK3Bs66l5wh9jubNR0KjGMm1Oq70uqrpdd+ghu5xZRGQIAb+2HxJVKzkhxAtgEiKAc 2TXEeWKxfmOjrcRusA8AM92Puf1pI1FG72i34Oy98mIsZZYJC7LGc2ZJ/PmPfghrHSexps0z6HT cp7C65iwpPxfRH938TLpObYus4kgtKzYrwNODlcJMC4OyPBCgrc0gjWoMl8IqYgwJZnzLdVB5MK JtMGHJNxeTQyu4HegJQ6dSTJlE/kVXqSokDfC8PFRi88WZeay1sQEaDK63Q3ZQARUyOEfOKeGT0 n+2etPJ3HkqGzNciSchf1cD90FvIkRq+qDroz5hDOTTnE+gKbrnOvVsbTPy5TdLbTC27mUc2bA9 bYTPI6Ss9EgeEzt3PrYx+3cAEcnQsFX6ubJ8X95fPuY6T7tNGEiKm23R7bWgyIgOtWMZHEDYhp7 v/V/mQ3DGTOaNMtsrW6UJnL0YlY6Le7Lc2ZaWnDH5FlYBlrB6CxnAl+/UULBv3ifbjk9VrlOln/ NE0IGQ6QgLNpT1ejxEp3zACFQbzN+3TXi1lhUfUue/2AGJmMyH2uKyJv4Lk31kE73J3q18iLnWy HsdxTR8FE2S0gj+VkEpd2jOdS7/sXtvbFoG43ilopg6H1FBo2rDYY/MeH199xd4dAiYuCPOXME0 mK4R+rnnAqbFhWg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 When switching between modes (e.g. full resolution to binned), standby_cancel() previously cleared XMSTA (starting master mode data output) before the new mode's MDSEL, crop, and timing registers were programmed in start_streaming(). This caused the sensor to briefly output MIPI data using the previous mode's configuration. On receivers like imx-mipi-csis, this leads to FIFO overflow errors when switching from a higher to a lower resolution, as the receiver is configured for the new smaller frame size but receives stale full-resolution data. Fix this by moving the XMSTA and SYNCDRV register writes from standby_cancel() to the end of start_streaming(), after all mode, crop, and timing registers have been configured. Also explicitly stop master mode (XMSTA=3D1) when stopping the stream, matching the pattern used by other Sony sensor drivers (imx290, imx415). Use named macros IMX283_XMSTA_START/STOP instead of raw 0/BIT(0) for readability. Cc: stable@vger.kernel.org Fixes: ccb4eb4496fa ("media: i2c: Add imx283 camera sensor driver") Signed-off-by: Jai Luthra Reviewed-by: Kieran Bingham Tested-by: Kieran Bingham --- drivers/media/i2c/imx283.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c index 9b3094a57873c6e8ff8c41d058ea3b0012642cac..1be6164c2d15524690b738aa725= a6708e84487d0 100644 --- a/drivers/media/i2c/imx283.c +++ b/drivers/media/i2c/imx283.c @@ -129,7 +129,8 @@ =20 /* Master Mode Operation Control */ #define IMX283_REG_XMSTA CCI_REG8(0x3105) -#define IMX283_XMSTA BIT(0) +#define IMX283_XMSTA_START 0 +#define IMX283_XMSTA_STOP BIT(0) =20 #define IMX283_REG_SYNCDRV CCI_REG8(0x3107) #define IMX283_SYNCDRV_XHS_XVS (0xa0 | 0x02) @@ -1023,8 +1024,6 @@ static int imx283_standby_cancel(struct imx283 *imx28= 3) usleep_range(19000, 20000); =20 cci_write(imx283->cci, IMX283_REG_CLAMP, IMX283_CLPSQRST, &ret); - cci_write(imx283->cci, IMX283_REG_XMSTA, 0, &ret); - cci_write(imx283->cci, IMX283_REG_SYNCDRV, IMX283_SYNCDRV_XHS_XVS, &ret); =20 return ret; } @@ -1117,6 +1116,10 @@ static int imx283_start_streaming(struct imx283 *imx= 283, /* Apply customized values from controls (HMAX/VMAX/SHR) */ ret =3D __v4l2_ctrl_handler_setup(imx283->sd.ctrl_handler); =20 + /* Start master mode */ + cci_write(imx283->cci, IMX283_REG_XMSTA, IMX283_XMSTA_START, &ret); + cci_write(imx283->cci, IMX283_REG_SYNCDRV, IMX283_SYNCDRV_XHS_XVS, &ret); + return ret; } =20 @@ -1153,12 +1156,14 @@ static int imx283_disable_streams(struct v4l2_subde= v *sd, u64 streams_mask) { struct imx283 *imx283 =3D to_imx283(sd); - int ret; + int ret =3D 0; =20 if (pad !=3D IMAGE_PAD) return -EINVAL; =20 - ret =3D cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STANDBY, NULL); + cci_write(imx283->cci, IMX283_REG_XMSTA, IMX283_XMSTA_STOP, &ret); + cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STANDBY, &ret); + if (ret) dev_err(imx283->dev, "Failed to stop stream\n"); =20 --=20 2.53.0