From nobody Sat Feb 7 05:56:33 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 974B115A864; Mon, 22 Dec 2025 08:16:02 +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=1766391365; cv=none; b=TkDjYesikntX5KORjUgQwNIVQ8l5S56BSCPv+uBdsu7jy8oTGHBbKWibVi4XSp2n9dOEitPFljA/2AfXN1Rb1VO4PRcE4lVtKayC1+hapylPLlJcS42cr0Ho5r2zuK0dctyy6c45/IK0urWOHfH26TD2hGFK1OBtyiXzH60Uhag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391365; c=relaxed/simple; bh=cWMNTcDu8x9WNg3vTB3u75ylHzVA7Jm5rmsZD93vNPI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kN0iNOHGkm3Vqvg8FJVJYP+jw79FO6gmYI58Yts4vuDH/UHKtvo1WJSttYr3hBM56uLyC0ReCyrm617hQmqlOcvUjam7vdLjxrup2hLmb2XRVnj4VJVYBeifsSYvHf2vPJLhyjU+xEB3CCXujBVbJPfJBdqQ4o+6MD3rtmPta18= 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=ocqZzCh1; 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="ocqZzCh1" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5059F3C8; Mon, 22 Dec 2025 09:15:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391348; bh=cWMNTcDu8x9WNg3vTB3u75ylHzVA7Jm5rmsZD93vNPI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ocqZzCh1ZbufO1J5PKjZA3gyLiwS9bQFSyhdh1ABwTrTI9TEbRONx5UGmlzjmYVJ3 2ZlIYSFRl95cUM2L+HYm7HvF0xVwH399AzDQaDXUcGc3ejQFlWm/ud2NJHrWdXpLkn oTk9GbPHUXPfOZq4q98Oi8G/P6cgExUXnKJXxe3g= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:25 +0530 Subject: [PATCH v4 01/17] media: i2c: ov5647: Initialize subdev before controls 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: <20251222-b4-rpi-ov5647-v4-1-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1466; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=cWMNTcDu8x9WNg3vTB3u75ylHzVA7Jm5rmsZD93vNPI=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4ht8gnjUG9FsU855Li1VPwNmYSnrVkZcLyl WZUIWUNiaGJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+IQAKCRBD3pH5JJpx RdwBD/9HEECawOWKldVHooFX2mQPmHLY1AZ4p9KYEIXMbE61vqAd5bTacK4grrTPuncK8I3MBmR f5uhzuE8iUMOelhEvZQYVl3k4xnrhFQgrFGRyGNOWBbyplT29t2Bzq8HuFmF/uEZAQOdY1b7WwO 4QywtgP/7pVHP9IxaoWQhrTLkhBwzREDU6tcQ5uY6qEjtRt4UHoFRVVX9iAt8uQl5+0zO82C5Ic jPqIaOdYn15K/L6KCs45XXcyIE1Zd1gdnbAi0z7Qrl5zhVsXsfSpm2GJ8rU+rA7OhrRRtHDQJeY EYNn+7lkz8QlvRBD/lMcnFtj/ccm5tKj6bUWlJF6l/e9eOp7xOvWyYyPqOBn6zMprrWJjA6bEVn v42ZaarIGEBikdfjGPUWWPevuRJYHeKoXp4eTnCTFolqspKR/Swihjte8FAzqkETxCN19XyubXO dUkMfJq7ayO1yu7Su+Tw4njgjDjk+y0HHxUA35/ZW4ayxsj5jYK5H5KLwcr094Y0X3agzG0voki xWo5YEF17KEVvJOx88jYZAy+/GWEJroUmD5vFUhEalPg/HuPoEOWKXUqUok6/kWlMYX6ptfgznP KH0GKOlNVLB918rVKV+3ieb8WSyiZ+OUGcfk0wbFqG/2VJwYBMN6/a/fEkoxrUJY+0s920C76L/ 9qfztU+k75cJYtg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 In ov5647_init_controls() we call v4l2_get_subdevdata, but it is initialized by v4l2_i2c_subdev_init() in the probe, which currently happens after init_controls(). This can result in a segfault if the error condition is hit, and we try to access i2c_client, so fix the order. Fixes: 4974c2f19fd8 ("media: ov5647: Support gain, exposure and AWB control= s") Suggested-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index e193fef4fcedf4661564c032cd7dbd80a9fd30a6..f9fac858dc7ba754bdbebe1792f= 6fb0358781408 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1420,15 +1420,15 @@ static int ov5647_probe(struct i2c_client *client) =20 sensor->mode =3D OV5647_DEFAULT_MODE; =20 - ret =3D ov5647_init_controls(sensor); - if (ret) - goto mutex_destroy; - sd =3D &sensor->sd; v4l2_i2c_subdev_init(sd, client, &ov5647_subdev_ops); sd->internal_ops =3D &ov5647_subdev_internal_ops; sd->flags |=3D V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS; =20 + ret =3D ov5647_init_controls(sensor); + if (ret) + goto mutex_destroy; + sensor->pad.flags =3D MEDIA_PAD_FL_SOURCE; sd->entity.function =3D MEDIA_ENT_F_CAM_SENSOR; ret =3D media_entity_pads_init(&sd->entity, 1, &sensor->pad); --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 4136215A864; Mon, 22 Dec 2025 08:16:08 +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=1766391371; cv=none; b=o2nq/i2aAU6DG1n2IqHX9ely1X8hubkr/TDZndoSSBS8v/hzdBqPAl0wBFEIkeEgm3QCUJ+T+R/H2sx+qyHyZmHzkdfEQjTYJnykyTtp3QGhQM3c7/KjznRGuVN08iwVUaHYAiZNWNA3MJPolMtL7BGQA67fbvZBQ/TFea7ulIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391371; c=relaxed/simple; bh=PW+/8dl2mQGpTkC+eShCSuNoV+iHnXMHKa+UcCLLYY8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VUbHrEvq51SVdk3/Uf2MVcIFNTszhNOs3mVKlrX9OkNhlQUeSZ4UDdZWOcIro8zYNrb28f4UIa8toiVIHwCrbbxCOmxE7VTtHtY8TdvW1Swv5XmIJZ0Bqo1UbPPSa6MbJs38Idb0abEKRXRbXmEvzEDlzMaHouJUf2DE1T8tnDk= 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=AsZJ1ceA; 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="AsZJ1ceA" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B4CE5593; Mon, 22 Dec 2025 09:15:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391356; bh=PW+/8dl2mQGpTkC+eShCSuNoV+iHnXMHKa+UcCLLYY8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AsZJ1ceAyZGBbmT8wolP7irMlmqHQhHRPxT0Woz4wQg5iPUY4LCbyrU3m5anLyiRc OayP7vQUCPpP6yVmHINcb4ErtOeJOGqdI+HflCH03EcjUtpWBzZX6+96oCTR9yUcNB dDJ9yvbU3LiIhD+Mj6lq0Lyon8dh0ecUWe8BmfC0= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:26 +0530 Subject: [PATCH v4 02/17] media: i2c: ov5647: Correct pixel array offset 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: <20251222-b4-rpi-ov5647-v4-2-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=944; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=BagRXN6sZL/zObcXhgJy0qmX4s/f+WU1Te2BiQiP7r8=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4itYstjdE53DuUkc64+HkDdRo5zby4d1ca/ GG/8bFJZDOJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+IgAKCRBD3pH5JJpx RTO7D/9sMLYaLC0xNBh641gp4zYNVY0xDEvjHpW0Ew7e1wCgiNbDJFsVd5tCJL7RT+hAYbBuv26 doSX6EI7tGH+NYehiW00GFKPbdpLMQa4WFEPh8yCuLASJSeR+LnqWCJpC6m/mukRfj038jIbwbU vHbJObcE1BpQNfa18YZk61n+rYdC7Oklv1svNijYCCK0jAdXp0PRWkj2wo783oqW9VVL/wU2Khq ++he5z75PrPXdwOC3BEzXG9WklnsGT7TzdRqXTdtWQ9F69zmjJtuaA/qZ2opr2IFpLtKXqtzWlX eIyevGw5MUMmeMCjlAJfLD4F44S8UrwCcMIzLfwum0zydvn7IBYdcormnXJgFlIhhcc6GePDGNZ 6hrj8pWiZROkh6piYeNpVeQ3JtRRTk7iGC/IC/GB+siIqryBw1oQjoPFh0UJ95QG8ObZp37n+Ex o9SwH/nvUlRhpxNrYqUAbhyFc4Hs46KUQz8hCdDK4S1uV8eC5uzN+Y1On5cS8/Ltsw08V4L7uFo 7gPQe/NYjZTYcAoZw7DFzM3cPAxtKklD8M0cGpBEVPqelw3pGLmuMh8Lm+bBfP97BtWU5e2yPnh 0oYmRGL0Cen2MaeghuGen02Ct1GkjUgoYEWzxGEIfU3nSKc0+HW6gwLhqJTks3j4BfDSV45FSsK dfQQyESGiTrhDeg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman The top offset in the pixel array is actually 6 (see page 3-1 of the OV5647 data sheet). Fixes: 14f70a3232aa ("media: ov5647: Add support for get_selection()") Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index f9fac858dc7ba754bdbebe1792f6fb0358781408..d9e300406f58e554de12d906284= 0353bdf7a226c 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -69,7 +69,7 @@ #define OV5647_NATIVE_HEIGHT 1956U =20 #define OV5647_PIXEL_ARRAY_LEFT 16U -#define OV5647_PIXEL_ARRAY_TOP 16U +#define OV5647_PIXEL_ARRAY_TOP 6U #define OV5647_PIXEL_ARRAY_WIDTH 2592U #define OV5647_PIXEL_ARRAY_HEIGHT 1944U =20 --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 7599013B5AE; Mon, 22 Dec 2025 08:16:13 +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=1766391375; cv=none; b=Qj76cr88ESoQbRbSXWJjk/wXUmzzOl91meeR6pHfSszXFRErN0HWRWtqeX/eKUAv63Yz4khm+/ctaJFhmqMavwYSwcnlb3EK5nsHz77IT0wxadnjnoqw7euFWa88OAupR9KIpGOPfhO9WlPkxfey1FPEW9eUJEUEstKCdik1hBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391375; c=relaxed/simple; bh=ECDfT216IS7XDAHxl6JD3dcTZsCiJMFAKz8PveO6GBQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jAF60P/MbLEWEyH/M9el/Ng3YiAEjEz3Ja5S8s4BMxuLTy9ScTLbABQCg4CO9jhl1GJu4P/zP/fhdXk9LQsdml4EOan8WRQCHVbkavM/ojSG+3CXFO9hl86sPiMCdDRAneqIQC3Jai6C87UjkhxtFg7OC9368jQc+vJs31F6Gog= 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=B+UfWrQL; 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="B+UfWrQL" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A037710BE; Mon, 22 Dec 2025 09:16:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391362; bh=ECDfT216IS7XDAHxl6JD3dcTZsCiJMFAKz8PveO6GBQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=B+UfWrQLzhIFarg41RJbaPIdNpEKMpyGMHhzB53fQ8KqoS0euDTDf3bIhvt/pZHs6 Rtgz/Cvw1M3ikBYegHd49frWxFrtAwMn34TJRcAOwzKA2it58CJ57KSc0bmn5elG/K ljbId2J1kPWV10Ij+Pg/ckGB9chi6OCjDh7HE4/4= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:27 +0530 Subject: [PATCH v4 03/17] media: i2c: ov5647: Correct minimum VBLANK value 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: <20251222-b4-rpi-ov5647-v4-3-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1008; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=EeooS5E8RZpQuz7+4w+98i6AERrcR8y8PJ4LbLlm9Qk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4jhLP7r0/yMZ7ahnqOuzVKSePWm4zMXAWRf Mlfxv2Dy5mJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+IwAKCRBD3pH5JJpx RfioEADNvweYMoOPlblqwgo/9kCmgc40MlzjOT7J/vQeN3F3VX4TkrUOU2iNvl1/YaaVHJ7ZCMb fGXie4mCBaKbAHtCEoSlSgRuhNTCC2t+3+fY4cgs33OttFaIYoFiplayV89tAQW/Tv1RTKL5Wzy ERAwVgAtJ8ZhuPfVW8ZpB9h80e1/UJLVngCHEnuGgMc9BfU4l5QByd4zV2XgECmYm02wbpGhCKk yfjnG9Y6gH8FP5jI9Cy3D0VK1f7a+hp4bHoVGJfeia0gh0D58gjo0e4zOhIfeVKMPO/zumdy8sR WsW47mEZ2spkcYfbtac7KC7nSukAxMSEXab9kcLJFHcV5wOEBwwGls5VgvKthNXGElPHQ8ozCtL crwbxQofed0yp4uQfI9fnDH/rHyLILDR9A04zQ3TdmEYM2A+81UT9lGNCf/T68lcofNoGhat7GM X6sL7HnWh6dad+CSE196wuGJbbPnoCI6IN2MpsvA2jU/twpglOt6u/d+aLBNq79YTPq0lb2YMoN 6uLkJSl2uLyGXtoV2mx4gp9R/pcdV5tTtX65i4wSad5yDAUpoT9144ByA3P8Kl/Lohjc9kcFnkz wxbJ+7WExqZalVldkJMWdPHa7/1hnmflOQhuu4Cz7tSNMWnGFFIscH3aVuStwJ3WhLpjz89sR0U QxU59rcCm8T1fDQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman Trial and error reveals that the minimum vblank value appears to be 24 (the OV5647 data sheet does not give any clues). This fixes streaming lock-ups in full resolution mode. Fixes: 2512c06441e3 ("media: ov5647: Support V4L2_CID_VBLANK control") Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index d9e300406f58e554de12d9062840353bdf7a226c..191954497e3dba4b1de4094b2ea= 1328a6e287003 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -73,7 +73,7 @@ #define OV5647_PIXEL_ARRAY_WIDTH 2592U #define OV5647_PIXEL_ARRAY_HEIGHT 1944U =20 -#define OV5647_VBLANK_MIN 4 +#define OV5647_VBLANK_MIN 24 #define OV5647_VTS_MAX 32767 =20 #define OV5647_EXPOSURE_MIN 4 --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 34C8F221F1C; Mon, 22 Dec 2025 08:16:21 +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=1766391382; cv=none; b=U18vjjCZgHRv4Qj59g5h+L0Z20Z8X393JK9pRkvt8XDmSt95aELZuaiSzPxvIZZceUWTaXEud22zk3JJAww60hZdrZldinuhZ6ENw4fZGsBdlMD7jTbskz0hFXq/PeoJoXMztyDN8oP/gcqwOBSlZNEiLUOYg8t4mux4ZuDYrMQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391382; c=relaxed/simple; bh=HyXySvq8mUoqwEdtkbO7xbtYwTxCRwrMNp4b93B18JM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NT18RjiKb/i/4rUt7ve6IrRlkFI5/NFoppys3GcgaRJpM3591/rsSFTyrNmqde+qwSRMDF5Hw3t6obGP+lnhDRdJQKFfIia3FaLfkinI4OgRQUT81X+15CqEIhXlLlT/mrxFt0tXzHyoKuvgsEM4DVsSbEGyput2xoo36lmma0I= 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=pT0Dy+B5; 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="pT0Dy+B5" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 4CDA6593; Mon, 22 Dec 2025 09:16:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391369; bh=HyXySvq8mUoqwEdtkbO7xbtYwTxCRwrMNp4b93B18JM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pT0Dy+B5s/mDuKxtFHQQQKVtcXS5XrXoe9JW3lL5rXsubBjYok+7txAmNgfdduCTc Apq9rz7YlTjtXMrpPGmGWzIV3VYPdJclTfSIEYLP5cHDyWi3GA23qUKJCJUj7n2X3z nRL/LOPHGphG5GLzJOJGjmjhQnN9JRR0qP0Xdvv0= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:28 +0530 Subject: [PATCH v4 04/17] media: i2c: ov5647: Sensor should report RAW color space 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: <20251222-b4-rpi-ov5647-v4-4-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1855; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=cRtEaBGj87Hmp8mA7OL908N5mREpt4LN0Ry6e4CQEUc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4kEJIF6KI3fscc21CIrW0NDhMIRQrcgAxjP Vzrv4gVBGmJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+JAAKCRBD3pH5JJpx RcvXD/9Ayky2mWf0tKvu+GIclJOfuEpeYiR1djSdTzk2Eb6YFKT55xYIArXu9NluTJeoadf/vGS kEqUYhnM7eKOtTDhujIH55Oxn/fEpcQeZcLuA5E+xgUglVkwW8J07qaOUjhC7qSCoxbrrWkTEpU 1Dx/s4CvJIO1Q+qohhxdHe2nWpyJVww1OWvK0e7t8d3WkXI0UIIl1ofWXd/T+rYXNDBdjH9DG6m jNYErZUKCYjEOJ61t1e5EiZxu30d5glS67M3Bs2E7hf+CH5/R5bMqiExmWbqeoMPem2UufyflH4 bNk5s0QT2jbcbrx+/u3rwt5o8FURrR2K3ay3ElposSCCDuKlHJLgRE2gfbF15YqeT25WXwz1VMz kdkirhIom8CStRuzA1O5F1ih2XPJaAvuUwx002LHd3WwNHKT4vB6j8iD8ZiGB6/y32AtIZ3o1vL NJcw59ZvGF3TMOWM1Wv+6Z4DMRB6KJ8xPkf0FOag91LdubSPs4ZQXbhzqMMSo5f0GVvcFf/bKNy vFKYgFMUsAn5jCEAdtAA9BkyyniAwPSrRwFnXYg5XduPqyEmpv8nili+QaPu+owodgif4iLV5/u SqjVz2nf4VwcZy0m6YZFopkX8h9HI2HVal2BMO0RscKAsEkZ2wkNLwZuIU/tFTFVNSqY1HBbmHM /tTUUeZXU/gOpvg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman As this sensor captures RAW bayer frames, the colorspace should be V4L2_COLORSPACE_RAW instead of SRGB. Fixes: a8df5af695a1 ("media: ov5647: Add SGGBR10_1X10 modes") Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 191954497e3dba4b1de4094b2ea1328a6e287003..c0f1121b025e5592d6fd4d5fd23= e4262dde2d84c 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -508,7 +508,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 2592, .height =3D 1944 @@ -529,7 +529,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 1920, .height =3D 1080 @@ -550,7 +550,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 1296, .height =3D 972 @@ -571,7 +571,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 640, .height =3D 480 --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 EA48730B528; Mon, 22 Dec 2025 08:16:25 +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=1766391387; cv=none; b=ORWRvUUpJZ3SPcnNHn9TZ0EBFZtp/RPtzLyAtYT05DMkFn8uAKJsGz37R/Qvi6FmVh/RSNd/2q7Fh9rjkHyyDBnxPJAhXLTn7Nt0icpziy7ao1QSzL3/3S+zn0i07yoh0d19u6k2pw0FU4QSfNtMDLSrLg7wBX7gv2GjkdkIqJ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391387; c=relaxed/simple; bh=PQ9M14QST2QJ3TTrOgRzy38BDMsRRz+W6wnAukNjKZU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OwFu92yO0O4KFNSm6IOy9GTF+sRqfW751rU9Ya7Ty5F4CImkEzbRFgHuHWV9z2BWMlSfApHuPcfT+qHVprnUPODfnpsyCktRolsz5fbGoSKwpjHf2xA5LMhTR8+wawkNrkoKFoUskJV4xRyjm1+CWBLAiyAqd+F3TWg1vSIDllM= 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=Z1ZWp18V; 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="Z1ZWp18V" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 351F13C8; Mon, 22 Dec 2025 09:16:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391374; bh=PQ9M14QST2QJ3TTrOgRzy38BDMsRRz+W6wnAukNjKZU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Z1ZWp18VS+hEJaOFWZ+KcQdKuUU7YErRVSmjVYTc1k7wsyUNS5HlojfeeRb89wmcS rO9bSf5EHHLJij8suzu0sJnTGNPrpzdlCJDDPH2TlQFrl+RrVEniZ7dvGUqw9coHYm uKV0rHYMbsz3SeHnJYyAlhJ/68fwWivYtCOBpyxs= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:29 +0530 Subject: [PATCH v4 05/17] media: i2c: ov5647: Fix PIXEL_RATE value for VGA mode 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: <20251222-b4-rpi-ov5647-v4-5-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1018; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=PQ9M14QST2QJ3TTrOgRzy38BDMsRRz+W6wnAukNjKZU=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4l0SrmCWdRbu+MVc1OTvDVd/+yebepsSglP Bss26xDRLqJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+JQAKCRBD3pH5JJpx ReW6EADSJqRvEMOWSfE20K5nI+RfMQx7iO2EVvq1kUe2mx2QCIEYnFfYA8VH/2UhC1kbwgeuhGI znnFkI3DcEH8TIW1oq3YTt53A5JjdAJChIrDoamlCHyGRQcXfSgXKgb3AkA7iSZhMFMUkgjolIR dgTQhHiNGQQOw5XOEiFMjM6cjWNCMClXojJfDRupY+kShLlliP4HORT+U5NVaycbjH3gvRpx7n5 lWfkvBten+ROVpc1Limc3sj6cZT4x6O5+bJKB2663VRgppS5RjnKQdVZznHFlKUM4Rvx+vP2qXW sFoNDT48LDpXRj8z/hXcEsdROBQ90dsigCGcLMza7WBhrIVIhYKOoMzPckqYBmLsUyfY7AgfFJ+ tc+0ssb6ixuLZHvnX1mBLDLtYMFDP/EgI614306duCJw55da1GGQZ+h4fYo2g/rWsd6KscMLmfS lZzBYu1pgcMH/LQ7Ib97lY9icf31z+yO8hZqyl/6dx7h4+wIHOMuyAqrj6yNo26DmiXkfTZ37mH mlxFuNNWjZzExwRCDhbN/5kuUVFjg4vdkCO6rLYU422HqTnwCIEEFc4DqifeAiT/Vr2sT+pGctW bA4iNtLvbh2ksJnrb4eB4i6cuQBvTfBXKFXczmCIla5HxeOjYo8vj6QjInUObonHkSXfbKIq0VZ dV5ZB7Vnf4D5aJw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 The pixel rate for VGA (640x480) mode is configured in the mode's table to be 58.333 MPix/s instead of 55 MPix/s, so fix it. Fixes: 911f4516ee2b ("media: ov5647: Support V4L2_CID_PIXEL_RATE") Link: https://lore.kernel.org/all/CAPY8ntA2TCf9FuB6Nk%2BOn%2By6N_PMuYPAOAr3= Yx8YESwe4skWvw@mail.gmail.com/ Suggested-by: Dave Stevenson Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index c0f1121b025e5592d6fd4d5fd23e4262dde2d84c..bf5b0bd8d6acbe246e54b566c3d= 8f8044e688110 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -582,7 +582,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .width =3D 2560, .height =3D 1920, }, - .pixel_rate =3D 55000000, + .pixel_rate =3D 58333000, .hts =3D 1852, .vts =3D 0x1f8, .reg_list =3D ov5647_640x480_10bpp, --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 EFBFF25F96B; Mon, 22 Dec 2025 08:16:31 +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=1766391394; cv=none; b=qXdXMVz/bN48q3hXDb8BJYAU7sFQWIsKijnnTQqffAkX1ZvnjqrTicBGWmKfOchHIZUECBrQpT7twLSWJQHLcqOZmaA4GYfhHSysOex08kxR6gRLjU4ClwgvBv1xRH0lA9iXr1rjm2Bzue7SIY1YODLXAolrqaoz09ufsGC3vJ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391394; c=relaxed/simple; bh=Pl/hH+BNqw39kKJVWn7FBhDR2ywqsJ/MxZlWpkgdix0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=leDpVRv/aHpFPaSJ+e+MsXDGFQC7mNi/vAGFPhYDQApGQ6H5EG99joOy9VursS9knISqhJCwuwoYcjpgs1yElTr9vqnEkuSeQPbpApzXmu2swMzajY7geP0hSVbwW7TAk3F/kssYH0e9H05VTZnBFRlJuhbyXlEa1SWOF6teS0c= 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=ZYnqCgET; 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="ZYnqCgET" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 55A6D593; Mon, 22 Dec 2025 09:16:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391380; bh=Pl/hH+BNqw39kKJVWn7FBhDR2ywqsJ/MxZlWpkgdix0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZYnqCgETfFv4Jehan9LBzv4VVBsK4VmQsC1m7jpv23dfvZh+V9nMVO0O//T8wiBks ETRU9AKkzJ59UziijBg+gV3JbleWpXSsQjz5SbGq2xoJGqjHAXs1OrKJwPAB1XRua1 5u8F0Lw6KuGmRk4uJVtbHwWc74pymCN4EHPldu6I= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:30 +0530 Subject: [PATCH v4 06/17] dt-bindings: media: ov5647: Add optional regulators 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: <20251222-b4-rpi-ov5647-v4-6-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1211; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=Pl/hH+BNqw39kKJVWn7FBhDR2ywqsJ/MxZlWpkgdix0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4mqZQCTRu2ai/Y5nVDxe4SQpN2b9YmI0jfj 01kYcVCbkWJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+JgAKCRBD3pH5JJpx Ra2SEADWJAp2ShgFnl2xKoDbbsTr/0A9yyDsccqHpJmGZN0CXjKXSwdEfA9qwvcvfh49ncrFHzU c0uUa4IlJIZDrdhqILtzyOcr1EcG8pSksQ3PDPCZp6lGritGiQIRAteT6SLsZZLzX4V/aAlox6X g/ul0+8lgMU/D9LkvwiCs7ZRhCotcK+fNn0jh5823XZSaOAJV63Opqg+9LHT4XbT0vAI8Go7sQi 6wAqGXxRukdHzouZt5Dh4ck9CdkuO117R9MzBJ2kYkhklSI8W9OhT4NQgcze6PgOUrLPSHiKxwZ zTPD6dU07qpC16U/9utG0/Ar3mmjwXXhL3okj6r29LDE0BhQ5TUbWypZi2TcT5/WXK+SFCkIooi 3vrMqsOuV51mNP0Pc00fz/JlsL/u30Mi4uiTac9SOqmoHrRFyXMV/BuS/qJuy4xHW6SvYGN8cxs 8qqBZL732hjTkkSD0v2mrBV9jGkWxN8VPy2n7jqw51TJLJjaC/7sduC2VOsOrrM16Mm1wScNFQy RfsdltSMas/EmjU7/UgcZvGi6VuTMR6vrEqyBM7Lktf0C+NkVtFgh3qNNVR9ciCsU/+LTZeJD3Y 2qhep5ErSRMSt+EzfRXpheIWtlUZ3tKHtvTuTbfN7d78x6DkT/+qw84x5YZ7aafRDlkdnx2utCX xW/I2vrbCISCbbQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 The OV5647 camera sensor takes 3 voltage supplies. So define those in the bindings as optional regulators, to not break existing users. Acked-by: Krzysztof Kozlowski Signed-off-by: Jai Luthra --- Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml b= /Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml index a2abed06a099b41c7b165c0650e3967ec43a4962..9d3f7f1789cdedb357dae2e18b0= 3c5af3c0e68e3 100644 --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml @@ -30,6 +30,15 @@ properties: description: Reference to the GPIO connected to the pwdn pin. Active h= igh. maxItems: 1 =20 + avdd-supply: + description: Analog voltage supply, 2.8 volts + + dvdd-supply: + description: Digital core voltage supply, 1.5 volts + + dovdd-supply: + description: Digital I/O voltage supply, 1.7 - 3.0 volts + port: $ref: /schemas/graph.yaml#/$defs/port-base additionalProperties: false --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 136A62FFDFA; Mon, 22 Dec 2025 08:16:36 +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=1766391399; cv=none; b=q5Ng5uMwjNKZcPtyZOOBLfJc2opMrDmO+CaCyEqI9LDyEBPS+ltRrzYiAMVMAE8Wme3rGscDUOU3flZkoFhFT2ZSfFpuBrjFuMLHppaRmkbQsMXDCzxb4M2hP7DZ2kjt1/9ZAM+MbwiPYo8htr4H1RWNjAhay79+qLKAeZa8grw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391399; c=relaxed/simple; bh=kefQE8mReVrABt7LqfOZKMWwYSonjFGtLMSpRBQkcmY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O4kK60JiJW8PXdL6ltoTnDAB2hF1Un3RcBhADiwwfKPgSgQwBlvFCFnmre66zgjs+xsrtgB9yeeTdlz8tZqg7SS9tU3UZ32kEP3jni+OkvbIshpQeye+FCOLy6/UeKtI3eVnhKDmTCMonwwoMHOAvOi4yxrlpRuKbkrqBACQ/HY= 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=n+ypKPdk; 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="n+ypKPdk" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 4F75B10BE; Mon, 22 Dec 2025 09:16:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391385; bh=kefQE8mReVrABt7LqfOZKMWwYSonjFGtLMSpRBQkcmY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=n+ypKPdkU7W3VfWLAi61/p8pg6qVE45v+hHPc+LS9vl2gWOQrOP2SIX7oEpJfTlnQ 9O0Bok6+uJ7X78z+9osfd7LPi6r1ShW++CyTgklk5EwTKPku1REL1YBOSXKLQTPYFN 7rgZdqYGjjaK7PFr4DgKCWtYZxuLN1CF7bgAETDs= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:31 +0530 Subject: [PATCH v4 07/17] media: i2c: ov5647: Add support for regulator control 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: <20251222-b4-rpi-ov5647-v4-7-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3681; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=lvVYHwVmsKV9spZ76QPPef2+GBZvninJTagnHyY5ZPc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4nLXexlVfYNzo20hIX5bOP+IeSTJLxkpf5A 8pHCXAUj/mJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+JwAKCRBD3pH5JJpx RQ+YEACPBXkU/Tpxo+h8svTsCxCsLYsIf9xUM1xcdrXUi+okGqnC9tb8soFHge5Qstrp9zbnCWN teIW38JLwGw9jFns/2sXbSImr9WEwIV9sJYfda8Ikz6xW2hUui5yrHM4eV2+S+CV/5FuR7eG9A6 GlkIwM/V68AxwfuQLnGLaziAAIkebQmWSHHLVnhF4n1EkgZIRPHhub9fldGQab4xX/kGeAS8J5g nFrG3rE/zOg2ZtpYBLbDUbOpM6wilIyrRuEtlHoDIw1EJdyTc9ZIZarzW9P837wmO4JNPGw6Kps FBQRWAUcYxLC+2zB5AO0zu1K2oquixVKmI7rLurvdTMC+2Eohjwjz100dtYLzu0/y0dxpdll4BI UkR1Y65nps91eyedCrhwMmOLppolWABiOAjcBQvzjnJpLKpU0nj+8YVPp+gMzq0mgqd7oR09iBu JqPHOqyYO9Oo9z7VnfwRByy56yNqCLFlPpvJco1Ja3+t0T3307IkuXv0HOwSCrofI9afspjfZpQ KwQJdmb7fonNIEYWEFxdFz1R01OoXlVegm/YizqKg8kEzD/6YoFH6J9XYUApEelOQO57BOl+Qhs Z+TqS4iUaYBEyLIm7ISo7rCc+zB3wap0NIYve/I99XYXqdXjb2dhm35U2+4zi5N0UeMal3lDBOD bRwe7raG2S9UWLQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The driver supported using GPIOs to control the shutdown line, but no regulator control. Add regulator hooks. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index bf5b0bd8d6acbe246e54b566c3d8f8044e688110..774d16335ebf4bdd0076cd4fdd2= d8ef4a7c34906 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -81,6 +82,15 @@ #define OV5647_EXPOSURE_DEFAULT 1000 #define OV5647_EXPOSURE_MAX 65535 =20 +/* regulator supplies */ +static const char * const ov5647_supply_names[] =3D { + "avdd", /* Analog power */ + "dovdd", /* Digital I/O power */ + "dvdd", /* Digital core power */ +}; + +#define OV5647_NUM_SUPPLIES ARRAY_SIZE(ov5647_supply_names) + struct regval_list { u16 addr; u8 data; @@ -102,6 +112,7 @@ struct ov5647 { struct mutex lock; struct clk *xclk; struct gpio_desc *pwdn; + struct regulator_bulk_data supplies[OV5647_NUM_SUPPLIES]; bool clock_ncont; struct v4l2_ctrl_handler ctrls; const struct ov5647_mode *mode; @@ -777,11 +788,20 @@ static int ov5647_power_on(struct device *dev) =20 dev_dbg(dev, "OV5647 power on\n"); =20 - if (sensor->pwdn) { - gpiod_set_value_cansleep(sensor->pwdn, 0); - msleep(PWDN_ACTIVE_DELAY_MS); + ret =3D regulator_bulk_enable(OV5647_NUM_SUPPLIES, sensor->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators: %d\n", ret); + return ret; + } + + ret =3D gpiod_set_value_cansleep(sensor->pwdn, 0); + if (ret < 0) { + dev_err(dev, "pwdn gpio set value failed: %d\n", ret); + goto error_reg_disable; } =20 + msleep(PWDN_ACTIVE_DELAY_MS); + ret =3D clk_prepare_enable(sensor->xclk); if (ret < 0) { dev_err(dev, "clk prepare enable failed\n"); @@ -808,6 +828,8 @@ static int ov5647_power_on(struct device *dev) clk_disable_unprepare(sensor->xclk); error_pwdn: gpiod_set_value_cansleep(sensor->pwdn, 1); +error_reg_disable: + regulator_bulk_disable(OV5647_NUM_SUPPLIES, sensor->supplies); =20 return ret; } @@ -837,6 +859,7 @@ static int ov5647_power_off(struct device *dev) =20 clk_disable_unprepare(sensor->xclk); gpiod_set_value_cansleep(sensor->pwdn, 1); + regulator_bulk_disable(OV5647_NUM_SUPPLIES, sensor->supplies); =20 return 0; } @@ -1284,6 +1307,16 @@ static const struct v4l2_ctrl_ops ov5647_ctrl_ops = =3D { .s_ctrl =3D ov5647_s_ctrl, }; =20 +static int ov5647_configure_regulators(struct device *dev, + struct ov5647 *sensor) +{ + for (unsigned int i =3D 0; i < OV5647_NUM_SUPPLIES; i++) + sensor->supplies[i].supply =3D ov5647_supply_names[i]; + + return devm_regulator_bulk_get(dev, OV5647_NUM_SUPPLIES, + sensor->supplies); +} + static int ov5647_init_controls(struct ov5647 *sensor) { struct i2c_client *client =3D v4l2_get_subdevdata(&sensor->sd); @@ -1416,6 +1449,10 @@ static int ov5647_probe(struct i2c_client *client) return -EINVAL; } =20 + ret =3D ov5647_configure_regulators(dev, sensor); + if (ret) + dev_err_probe(dev, ret, "Failed to get power regulators\n"); + mutex_init(&sensor->lock); =20 sensor->mode =3D OV5647_DEFAULT_MODE; --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 64ACC30C62D; Mon, 22 Dec 2025 08:16:42 +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=1766391404; cv=none; b=ghzT4+IguYi1AeEQAVh+cahOqYx3xSLg8uT4LB60jz5GJYyBFP3EebGutg6jMH5T3i9vaqL4SYIYDcZ94rHJ0IFqYPSG2eOnafD4HZkkyVnF02/yO2lfUuDPlF3EhTn2ic7GIJD4eYz2qNpe6nMYcfZWAQhxNjPzY+sRcjBKrh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391404; c=relaxed/simple; bh=WlpbZmmjqKJS3DmyyAUMl6LDaznhjOwdS3TShMr19Mk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L3Zg9zGFpZ2+W9BMtTQSCnKVtYCP4rM7WV2YQxTPAjO8wE3VaamcT8tw/CNWKSkQg8ffjvLDbPCWKGC3t59rYY2PUE8XotVrgfr4JH1mrfAUytklzSGntUgsZnfMj3Iu8PNLsU+b6u/yutYACdRjiPvr1l9OiBAtN1bRm/W2e3Y= 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=ptPR9KjA; 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="ptPR9KjA" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8F6E5177D; Mon, 22 Dec 2025 09:16:30 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391391; bh=WlpbZmmjqKJS3DmyyAUMl6LDaznhjOwdS3TShMr19Mk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ptPR9KjAqz67HxehAa/gTbSWK+8osFcXPffkLnEyZSfu6Yt2TBchmvei/aj7dp9Yw Wfd+AtcLSbyqncgw8OLdXWkxKzR8NS21EtuRybdZr0qlXV7khr7iWY+slshZF9Eay0 FFGE9qE+gTpJo7pdce5/bhkCR0kXq0kfCDXas9TU= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:32 +0530 Subject: [PATCH v4 08/17] dt-bindings: media: ov5647: Allow props from video-interface-devices 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: <20251222-b4-rpi-ov5647-v4-8-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1229; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=WlpbZmmjqKJS3DmyyAUMl6LDaznhjOwdS3TShMr19Mk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4o/XZsKhZ+MX4vpXCnbmSzUdAt9DZQ2pOG5 Fk4z28wL3+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+KAAKCRBD3pH5JJpx RYYBD/9F2I6KWgrnf2KSGLnzvN00VmZrmj5nVoTwUXfhcu0AXGrDCLJfSMvoB2JS3FsVJvIdku9 lSpJ1u5rPkuls7qHNLn3vsffeVGKySfBwxL5FINEvmvsW4AIAH3zUuWHfAJvHZpUhi1z7JC8UVl Pcq8dEQHhVf42y3Sp+lodHCs0gq0XB83eX/wJdM/XGQc1IG8A4EB+TCVrEYObekRHsLtcAmjaCx AodtDLtSFfxdWnbYvBsfJ2bJa7QBrCMRdPKb26B09tcisgJLl005mE8LgRCfla0Nzg/b5TZxWNw hRZZ3i+mKhVFiMGyyhQZxwyDKrY5mNHhtmddTfFusjBr+yfW8qvpeRyH7FdPuvrBRFQl3t5sogy uLuyjTMH+iCdozvs09MhQ5jPtqH2M+5FxPGO4+zDVSxzg5CLR98T6CcErB3n8piBUhNz9zRbzuJ 2KFw2cKQjf1XqAeyecEev9DH+Ax1pWUZXAC5Q84cpwQMXcQrKcAm6y6gpELMUewfXHWbQ/QRFuB Ft6v23Y/xVafXWerDyv1M54ww6P+016EwjnNdSDFDmN45GyTldsUI2Nv/AMEX9hUJ2+hwAF1qNN CPGBKtiG1HXbLiNw+IO4yGyxXrleGm5doUSSwpapXnyS2yn95BwxVaiJE0hiDkQTbBJFLS6M4Pk akqGGI4q7tyrOkg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 Allow properties from video-interface-devices. The change is identical to commit 08fbd355be3d ("media: dt-bindings: sony,imx219: Allow props from video-interface-devices") Reviewed-by: Krzysztof Kozlowski Signed-off-by: Jai Luthra --- Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml b= /Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml index 9d3f7f1789cdedb357dae2e18b03c5af3c0e68e3..2d7937a372a2b0f12c6837b6f0d= 790b4bea7f553 100644 --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml @@ -14,6 +14,9 @@ description: |- The OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces and CCI (I2C compatible) control bus. =20 +allOf: + - $ref: /schemas/media/video-interface-devices.yaml# + properties: compatible: const: ovti,ov5647 @@ -57,7 +60,7 @@ required: - clocks - port =20 -additionalProperties: false +unevaluatedProperties: false =20 examples: - | --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 95CD430DD39; Mon, 22 Dec 2025 08:16:46 +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=1766391408; cv=none; b=u8v0IrOLiy7TnYT60c9Ap5vgWcSctcUVOm4d/WwLGkUi796DFOMMg4AHUs4goPiq12YulqQVm05jvf6gL0lbBDsvkDUz1qHg9EXGLoT9HQ1OliCo+i87/QT10v+j5Lzgrwbnt8wn/yhrnULw2S3kZ6f5IUo+V6O0zqUHsCQychA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391408; c=relaxed/simple; bh=aBef/jYI7+QaRlUmY0tFbBKGQybZ3pXAMfF1iRMR7NY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iNP/pFqDQz+H3pz6Lyx3P9cc6OJSjyxOKBoF1ccwN1qpmPDBBFwQWyuDoGxnpSK4gsjHka9TvcbrdvhcWHNVYY2CY7OnigVFstHYyZyf32gggDSDmFEFyBn11LCX50RXKm4lAp5SybWntw2togoyguoMAeAYCNvfiNgyH70epEI= 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=piQ+8I8o; 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="piQ+8I8o" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 22F8E1784; Mon, 22 Dec 2025 09:16:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391395; bh=aBef/jYI7+QaRlUmY0tFbBKGQybZ3pXAMfF1iRMR7NY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=piQ+8I8oGB+0tjkkgbVEY5ZEtColeAge8b/Pb+4HOYcq5jnOPbFyu0dzbNnFf6wWi mn8YymDoUxg7bO7XjhU9YeBChRq286soN5klaZlBKhkqjBP3xJS2+nozUA/KrHcZcC 5Mtfmd2RCLkEsNAwlyO+jKKRsKGIiVt2am1frC4I= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:33 +0530 Subject: [PATCH v4 09/17] media: i2c: ov5647: Parse and register properties 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: <20251222-b4-rpi-ov5647-v4-9-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1531; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=+dWj9gvZAT5/YIrYwdI4I4Rm0IP1iBPg9NF/CD8ZgLc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4pqi/XEaF/yaLQYhl2jg1gXTPCr9Tp164Di e7WNZNUxwqJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+KQAKCRBD3pH5JJpx RT4wEACnkKthkjTrSfhm/QBDMAqdh/z4DhZFJ2tuDVi9bhEbDSJQPSgwuaZqzyyjyjAi/V95y9d lekL6OgQg1MyIm8PiESu6GdpARGO7fG3esEqgqFXdZpGEJ+ca7dtcxm36uX01ycfgPv3wHq/XzA lI5hZX8p9tHNrB/+z+jgVEtvnWZmWXq9X5rCuWjMBb/CD+jtMjH0TfEIIBtfdRTMyfZ6EFE/1yi /PxA26s96E5iJO/FjmmFH6Ic86mM0dOQ/PZNkWyEFBu/KBIFQPk2UOi6asofDitCwpBtfotXCu0 VI3YWp+t/yACHFF+dw0AWRD2CmegrmEcWzEapbExqHzW1RtVPfXGtc0ABnUXieybIlklWQ9/b9U PMJwH6xTJXwbokqX55y1AbWJwQPgik3W4hULt3NnIJv1MSRsk/wBZSeh+N0UaMMb5Krlr5ZK9am WyksYLHwQDaMeVpOclFnYcrojWHMJCzHGJG6WvLrk9dild/Qj7ukSbp1CLQ1THDj3zx+kKFQQRK AfD6w6RH6Q19V1zgk9cuT1OUYLiVP5FA8qN5L6bKKsVomfJ9PTTY9zPRaNteFRSw137HxAj3s4Y YrBiQ8a+Pry1OqBia0SBH/Df/5ULhhiXadOAh4p9iUgW1TqYwOD9segbMhPb4po2SItZdyyyrf2 kANH0CDJlf1sEow== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Laurent Pinchart Parse device properties and register controls for them using the V4L2 fwnode properties helpers. Signed-off-by: Laurent Pinchart Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 774d16335ebf4bdd0076cd4fdd2d8ef4a7c34906..6f07cac12c6c157e1b20abe000f= 95de82abd877a 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1320,9 +1320,11 @@ static int ov5647_configure_regulators(struct device= *dev, static int ov5647_init_controls(struct ov5647 *sensor) { struct i2c_client *client =3D v4l2_get_subdevdata(&sensor->sd); + struct v4l2_fwnode_device_properties props; int hblank, exposure_max, exposure_def; + struct device *dev =3D &client->dev; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 9); + v4l2_ctrl_handler_init(&sensor->ctrls, 11); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1371,6 +1373,11 @@ static int ov5647_init_controls(struct ov5647 *senso= r) ARRAY_SIZE(ov5647_test_pattern_menu) - 1, 0, 0, ov5647_test_pattern_menu); =20 + v4l2_fwnode_device_parse(dev, &props); + + v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, + &props); + if (sensor->ctrls.error) goto handler_free; =20 --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 89D0530C379; Mon, 22 Dec 2025 08:16:52 +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=1766391414; cv=none; b=Whaa0jV2vGCd+PAODCE5mcPb2bT1PeEovnsRVKXl2FyTVBX1nUNbOu/bfeNgdAyKuUO32HhL0TV6Fany32AZ8VreoaWnSo5JqmO9wcBihwWf0kdogWEcrSOOKHdqHw+o2hsmYpsfZDkAVmOID3UaYwvysDU1sZsAn3vex1EIzEk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391414; c=relaxed/simple; bh=wnnCkem1OSlj+Pno+tjD48rUSdzA68L6Bk+t/AUAofM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iTNnwBpDyTi5qnz/T8S89tUGOxf0f1Xy3GgDFBe9xAU8RsESUDRSA8sR6oh/ysIU/kGXw6krrw2MkdRSwItIhHZzOl8zoCDk1b2ouV01obGrIQdEFypXtTkVYwIDReox82IcuG/eeUEoPMxMJZ2OZpE9Ac0O+wrZS7y52k7v8+s= 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=RHDxoPN3; 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="RHDxoPN3" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D362B3C8; Mon, 22 Dec 2025 09:16:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391401; bh=wnnCkem1OSlj+Pno+tjD48rUSdzA68L6Bk+t/AUAofM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RHDxoPN397RTZ1AYpzvsAZYiVflMdiSm4CAjlYLGY7Tv6Ow3p9+gcsGmr6oCFnNwc h1RQNGlC5EOALvQrliu1H+jaT6xzl2gg0yVhaqazdpTT7lZA9PoKpjwJ7a/zvG2Gba QhQ3XTZEXKVhqkkIymY+yXKf0pjpVp98oSMZsKOs= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:34 +0530 Subject: [PATCH v4 10/17] media: i2c: ov5647: Support HFLIP and VFLIP 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: <20251222-b4-rpi-ov5647-v4-10-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6914; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=tmGEBTfuPtECtGCcRf4q5iuxdNx+EaoRPI/3jfruZJ0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4qVaPFhaBsRwbXbKui6xU2zVVNkt2dFKfhl iEZ38ugA86JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+KgAKCRBD3pH5JJpx Rdj5EACMIqAeGBCtxnTr9uAMmsbPFGCQmxi8uct1vi+bkPJI5HI3EgQnCZnh4CoCMAWqFk/ecDk RRkgQ7L/V7kft1WN28tssLQcWs5nXEmsBGOsjtSpEojFPOCB+fTPfEoGJrrTLv8UoWl6WobB5go gnx1NdJR8uG2/zAgFkHs3YYTeXnGX7xWe1CBWlC4ho47MOwpec0C3++kKuX0joM3vkYJt4wbCoB 9QVk+7ZilfSLHfgV3SBaLMru8ZNm2nfdtNj7yKRVmsGxi91qXkmDh8Qcll7TkC8jAWmtiSdQhnX pbwRZbDLzmzVymbIvaj1xw4YAGlBHiE6Y27klZArzppNUAlR/GIrQov1M9ypdXUtyLU7Vk45lf+ QVsJ49WwAPOdvdb8I3bqogTjGSAmjyc80abJ+r7J3AA549b3q5C8B7RBmyt9pNa3t8/Ojz/3/iB hSKDvqgNDO+Zak4B+54o7344Oq4/9nYQM2C+sNw1Z/pBDZjCPoLEw1lmluRwSwsiz4p2y36U4OG JbkK+rcptNB0ujgbUrPVpr+gJM1w17cet//OW6WixCibPPQzDCgtWz/HZ+QgE1W/Okv4o765wVW eAfdQRt+BKdHICSWgRrGV15E+yQR2agpuv+dSd6HbJ+BvbqQ6rKCH4qozBCqzGgp0xSTB5oCY7J YbN6ttN20XABfwQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman Add missing controls for horizontal and vertical flipping. The sensor readout mirrors in the horizontal direction by default (if 0x3821[1] =3D 0) which can make things unnecessarily difficult for applications. The register table prior to this commit was setting that bit explicitly, to achieve a normally oriented image. Now that we have userspace controls for HFLIP, we keep the convention and report the non-mirrored image (with 0x3821[1] =3D 1) as horizontal_flip=3D0, and vice versa. Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Co-developed-by: Jai Luthra Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 81 ++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 6f07cac12c6c157e1b20abe000f95de82abd877a..5bb80b943c8b5b922bd74e3c185= c5e88f4f1a671 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -55,6 +55,8 @@ #define OV5647_REG_GAIN_LO 0x350b #define OV5647_REG_VTS_HI 0x380e #define OV5647_REG_VTS_LO 0x380f +#define OV5647_REG_TIMING_TC_V 0x3820 +#define OV5647_REG_TIMING_TC_H 0x3821 #define OV5647_REG_FRAME_OFF_NUMBER 0x4202 #define OV5647_REG_MIPI_CTRL00 0x4800 #define OV5647_REG_MIPI_CTRL14 0x4814 @@ -120,6 +122,8 @@ struct ov5647 { struct v4l2_ctrl *hblank; struct v4l2_ctrl *vblank; struct v4l2_ctrl *exposure; + struct v4l2_ctrl *hflip; + struct v4l2_ctrl *vflip; }; =20 static inline struct ov5647 *to_sensor(struct v4l2_subdev *sd) @@ -161,7 +165,7 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D { {0x3036, 0x69}, {0x303c, 0x11}, {0x3106, 0xf5}, - {0x3821, 0x06}, + {0x3821, 0x02}, {0x3820, 0x00}, {0x3827, 0xec}, {0x370c, 0x03}, @@ -250,7 +254,7 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { {0x3036, 0x62}, {0x303c, 0x11}, {0x3106, 0xf5}, - {0x3821, 0x06}, + {0x3821, 0x02}, {0x3820, 0x00}, {0x3827, 0xec}, {0x370c, 0x03}, @@ -414,7 +418,7 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x4800, 0x24}, {0x3503, 0x03}, {0x3820, 0x41}, - {0x3821, 0x07}, + {0x3821, 0x03}, {0x350a, 0x00}, {0x350b, 0x10}, {0x3500, 0x00}, @@ -430,7 +434,7 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3035, 0x11}, {0x3036, 0x46}, {0x303c, 0x11}, - {0x3821, 0x07}, + {0x3821, 0x03}, {0x3820, 0x41}, {0x370c, 0x03}, {0x3612, 0x59}, @@ -956,6 +960,26 @@ static const struct v4l2_subdev_video_ops ov5647_subde= v_video_ops =3D { .s_stream =3D ov5647_s_stream, }; =20 +/* + * This function returns the mbus code for the current settings of the HFL= IP + * and VFLIP controls. + */ +static u32 ov5647_get_mbus_code(struct v4l2_subdev *sd) +{ + struct ov5647 *sensor =3D to_sensor(sd); + /* The control values are only 0 or 1. */ + int index =3D sensor->hflip->val | (sensor->vflip->val << 1); + + static const u32 codes[4] =3D { + MEDIA_BUS_FMT_SGBRG10_1X10, + MEDIA_BUS_FMT_SBGGR10_1X10, + MEDIA_BUS_FMT_SRGGB10_1X10, + MEDIA_BUS_FMT_SGRBG10_1X10 + }; + + return codes[index]; +} + static int ov5647_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) @@ -963,7 +987,7 @@ static int ov5647_enum_mbus_code(struct v4l2_subdev *sd, if (code->index > 0) return -EINVAL; =20 - code->code =3D MEDIA_BUS_FMT_SBGGR10_1X10; + code->code =3D ov5647_get_mbus_code(sd); =20 return 0; } @@ -974,7 +998,7 @@ static int ov5647_enum_frame_size(struct v4l2_subdev *s= d, { const struct v4l2_mbus_framefmt *fmt; =20 - if (fse->code !=3D MEDIA_BUS_FMT_SBGGR10_1X10 || + if (fse->code !=3D ov5647_get_mbus_code(sd) || fse->index >=3D ARRAY_SIZE(ov5647_modes)) return -EINVAL; =20 @@ -1007,6 +1031,8 @@ static int ov5647_get_pad_fmt(struct v4l2_subdev *sd, } =20 *fmt =3D *sensor_format; + /* The code we pass back must reflect the current h/vflips. */ + fmt->code =3D ov5647_get_mbus_code(sd); mutex_unlock(&sensor->lock); =20 return 0; @@ -1054,6 +1080,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd, exposure_def); } *fmt =3D mode->format; + /* The code we pass back must reflect the current h/vflips. */ + fmt->code =3D ov5647_get_mbus_code(sd); mutex_unlock(&sensor->lock); =20 return 0; @@ -1229,6 +1257,31 @@ static int ov5647_s_exposure(struct v4l2_subdev *sd,= u32 val) return ov5647_write(sd, OV5647_REG_EXP_LO, (val & 0xf) << 4); } =20 +static int ov5647_s_flip(struct v4l2_subdev *sd, u16 reg, u32 ctrl_val) +{ + u8 reg_val; + int ret; + + /* + * TIMING TC REG20 (Vertical) and REG21 (Horizontal): + * - [2]: ISP mirror/flip + * - [1]: Sensor mirror/flip + * + * We only use sensor flip. + * + * Using ISP flip retains the BGGR pattern at the cost of changing the + * pixel array readout. This affects the selection rectangles in ways + * that are not very well documented, and would be tougher to deal with + * for applications compared to reading a different bayer pattern. + */ + ret =3D ov5647_read(sd, reg, ®_val); + if (ret) + return ret; + + return ov5647_write(sd, reg, ctrl_val ? reg_val | BIT(1) + : reg_val & ~BIT(1)); +} + static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) { struct ov5647 *sensor =3D container_of(ctrl->handler, @@ -1291,6 +1344,14 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) /* Read-only, but we adjust it based on mode. */ break; =20 + case V4L2_CID_HFLIP: + /* There's an in-built hflip in the sensor, so account for that here. */ + ret =3D ov5647_s_flip(sd, OV5647_REG_TIMING_TC_H, !ctrl->val); + break; + case V4L2_CID_VFLIP: + ret =3D ov5647_s_flip(sd, OV5647_REG_TIMING_TC_V, ctrl->val); + break; + default: dev_info(&client->dev, "Control (id:0x%x, val:0x%x) not supported\n", @@ -1324,7 +1385,7 @@ static int ov5647_init_controls(struct ov5647 *sensor) int hblank, exposure_max, exposure_def; struct device *dev =3D &client->dev; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 11); + v4l2_ctrl_handler_init(&sensor->ctrls, 13); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1373,6 +1434,12 @@ static int ov5647_init_controls(struct ov5647 *senso= r) ARRAY_SIZE(ov5647_test_pattern_menu) - 1, 0, 0, ov5647_test_pattern_menu); =20 + sensor->hflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + V4L2_CID_HFLIP, 0, 1, 1, 0); + + sensor->vflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + V4L2_CID_VFLIP, 0, 1, 1, 0); + v4l2_fwnode_device_parse(dev, &props); =20 v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 7488730E852; Mon, 22 Dec 2025 08:16:57 +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=1766391422; cv=none; b=nyVRAoS8AikZvbym/wE0Y6fpc5nDs3o/PUhKDm8tK4CKXjHXfn7OYNC0IMr9Bi+eMTlDMZxgRw840Mxw1QHJfmjWhsk0wGXbNV1KfmL79zYzXXGVXH99ZmzZzU8Ph0bKRr3Vdw2XvZcoFYhvcBRl4yOz2YxrpUJ+95KnLtCT7ms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391422; c=relaxed/simple; bh=KKKK4z+kvru3VFoBd142iq9naKrKyclQEEeQ162zZzk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j4CzFmbj3HuA/QXZKeS3FxqAYCio2KMm4sghChcUVfeL2KYYl27OHgfb+HHzkAVyrP21YRZYB7LxlAtPUqOuO6kChrpmc01fIvpDbRFilob0uY9GWWhZg3zSATwvbkfbG6pElEbe5ekr2a9JMp7RYwC4Y2y4pdUqitJUEDrB7yQ= 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=aA5WrMcv; 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="aA5WrMcv" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C27FD593; Mon, 22 Dec 2025 09:16:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391406; bh=KKKK4z+kvru3VFoBd142iq9naKrKyclQEEeQ162zZzk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aA5WrMcvimi3gdarSg4tSvIWqYxIq3SxpBmW/nFaLEkAqCRExTPOpYM6HgCaAZtXO NI0V4Slxw35v+sfiRBc2KvGuRk6XRtgqw/lcx9jbruxmyBC0r+jMxAaXO0+XUfdjF4 oYA07mkrZCcwZozNIcsvrJ6/l9zfevROUaOHl3ko= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:35 +0530 Subject: [PATCH v4 11/17] media: i2c: ov5647: Use v4l2_async_register_subdev_sensor for lens binding 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: <20251222-b4-rpi-ov5647-v4-11-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=928; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=QsX/hByiqQlas5Ymkp8f1NjXamxR7lPgDcCMNYA5uI8=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4rzS5gxzfqn+598sGzHJ34bDTPrSOPNuQDH E/pQuleHBKJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+KwAKCRBD3pH5JJpx Rf3aEADMyKxtGsPa4kll0UA9o5E1wkCSPksikD06ZN/tjLXwEqH0AgUqyjwrRx5Vdj0NxUtlxK7 Nq0VIwZG5OoNMK9QKrHxI+aP76BeM/W9Fa95qMeoR/FOYEm/diOWZzWK73qBp/YJT41clQ2AHoZ VsSIXNfWmP39venduMobZ5oN88yNnq2e7j6czYzsO9+IEYyAUjWDi/IT268FaYKzD1fIH+qs8gC hAeeC0at4CH/jQV3Ta8pcqC4ks4EOaRI6Prmctpwin7qUWQkqtDhBshjfRNv2lmpXKeua6haPE6 MLDGllcX7R21Tq8D9fpf2ZsJ+IOTDt5XueGmIO5X5xom21GM74BoFmbilYtH3rPUsmgCIANxBs1 dAywl94X56Rmxoy+1ood4jhGll9mfjY8OS1WhZDW8Yz5Pckw+r8C+Vg5lP4eBMz/ofwz107td7J xt5E3nmT8otALAMBgM2lJg29uGQRMvo0mi9na859PabrGoyYV8g1RR6/m2GyQ9N0CBTSoOYgXHz 8OqCYSiAVaIq7JKHCmtf9XgsQXDvksbpzyBWo4JX3LkZoyOSJe1/95u3YTlEmnlYrYBdUgnAnCU cjkCIzdTz5c6bDxNbu0ukiW+8HORJ5SfzBHtwNz8Cg5K4CHYrxSKC4jib9AssBmQslpQ64zu9/r NdHu/X6dsDaLRoA== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson v4l2_async_register_subdev doesn't bind in lens or flash drivers, but v4l2_async_register_subdev_sensor does. Switch to using v4l2_async_register_subdev_sensor. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 5bb80b943c8b5b922bd74e3c185c5e88f4f1a671..d6accdd20ef5f3d3c16d2fceadd= 0fca3afd6fc9e 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1554,7 +1554,7 @@ static int ov5647_probe(struct i2c_client *client) if (ret < 0) goto power_off; =20 - ret =3D v4l2_async_register_subdev(sd); + ret =3D v4l2_async_register_subdev_sensor(sd); if (ret < 0) goto power_off; =20 --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 A8FDC1F3BA4; Mon, 22 Dec 2025 08:17:03 +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=1766391429; cv=none; b=h6860TCHNnFAOoNKGGpvLXtLSFVHxEXJf0Ln++kRuASkQs25nI1SYLhJj29sRfcl8TP7K9A7+43mXpaMpaGF0pYnNawDAIWu4492lcmh730Y+hAg584kCgjR7tELTNWd3sZAXixjbNPh+KDKhFZMDOtXrvu5F/ERbgKnPupayrw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391429; c=relaxed/simple; bh=N6V4uKY9/YiGaX06iEZMqxOk382qQS6oDapOaTysrL8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hCU8vOMkuKxT9ekKa+pCV7t7++gSDOS7i6Otmwf1Q39nd8qHPt+wjZxiZNrblh2W086chyklKoY7kRMxXjPUY47cMQLLlaFeK/b0gZ8vdM6IKHlWBzXp9r3Lfwdc477ytoGgtveSfU+iWY1NxV1xgFVqrqXvF2tubCT3dlSaIaY= 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=p3hKW/RI; 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="p3hKW/RI" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B0E803C8; Mon, 22 Dec 2025 09:16:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391412; bh=N6V4uKY9/YiGaX06iEZMqxOk382qQS6oDapOaTysrL8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=p3hKW/RIzNx0eXmVFsCQnV/ix6e5tliPXqDFw34BjH8mFqQeI0SgCk8FjERoqjxNk 8ATEmpwl1uqALJcxl2bsJiXLyuIl0z8CIABug7TJ5ij4Xjo+e9jerbCe4Zl6YE/d8g wj9jepBB8o9kRLjUKVVJvmpLvulDk2D03IEb5gwE= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:36 +0530 Subject: [PATCH v4 12/17] media: i2c: ov5647: Add control of V4L2_CID_HBLANK 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: <20251222-b4-rpi-ov5647-v4-12-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4382; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=Au4knr519ZM4Aq6gmDpIWt2YpFn5QUIp+YTU2c0hTXo=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4szvXM7v047RxziTCdKQm9BmiSi3xoOXoGw iAaFBd7kkKJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+LAAKCRBD3pH5JJpx RZ2+D/wKSvsIjBbuZ+5DjkEmi6tsvVEROW3vbZ34A99XWCBlcN3eJu7TgoNJfYitSrH9mitIjdu PGQO1Kg4Es/gD4g0aRSR6Vz0PmTiPoeJbjPosk3j3kHuQ5rrKfWt+YtaiB0kHCAvQwoP6BxMpx6 W9AbiQBesZVihqe1Iywe4mUVFsfVPoEpWCTtPfvuM/o2FGRSyGWXaYDAJLSl76HsW8FxTmY4TxS LtbrzJM0sd27WYbnykhXmKj0vulgHt8SLTdvIJ40OtWKRpN3Dv8uaGXZmEv7FE0IYRUjrAPUo3L Pk8xS71Rf+r0auCsrh088w+MHSdB7TkmcdpMX2D5dTgr58DxP1FDgp1VZaEgcPq2zp1QBZH3R9I JrLiv5l/KlydHaseDKgm+oAcQBCzuHmvaYtgEqAkGNesPffRbsMr767rVNmbmWm4T1Xt5r0FQ71 kX1PuYMy2qy9P6GIspfJ32xzlhyD6h6uJyme1AwVUEYn00upiG4hmnRa6fTHY8esVEO06XZ2UCh 1yF1CCZ5NQcBEzTzl7Cr7qTnmuiSZIRCt9cGDS6qjEhXo3Z4DrEph5hCawe0MkaVvuuwJKUJoIz 7e2oY6WUi4z7xtLtlz5jWcg77hp3AHsKMqUD7/QqWX/zgSfqX7DryACiVOeEQlMBbk0pLWL5H0Q n6rsxO+6A2aFbfg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The driver did expose V4L2_CID_HBLANK, but as a READ_ONLY control. The sensor only uses the HTS register to control the line length, so convert this control to read/write, with the appropriate ranges. Adopt the old fixed values as the minimum values permitted in each mode to avoid issues of it not streaming. This should allow exposure times up to ~3 seconds (up from ~1sec). Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index d6accdd20ef5f3d3c16d2fceadd0fca3afd6fc9e..c89e13442e29796e0971faa204c= f7132283c51b1 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -53,6 +53,8 @@ #define OV5647_REG_AEC_AGC 0x3503 #define OV5647_REG_GAIN_HI 0x350a #define OV5647_REG_GAIN_LO 0x350b +#define OV5647_REG_HTS_HI 0x380c +#define OV5647_REG_HTS_LO 0x380d #define OV5647_REG_VTS_HI 0x380e #define OV5647_REG_VTS_LO 0x380f #define OV5647_REG_TIMING_TC_V 0x3820 @@ -79,6 +81,8 @@ #define OV5647_VBLANK_MIN 24 #define OV5647_VTS_MAX 32767 =20 +#define OV5647_HTS_MAX 0x1fff + #define OV5647_EXPOSURE_MIN 4 #define OV5647_EXPOSURE_STEP 1 #define OV5647_EXPOSURE_DEFAULT 1000 @@ -187,8 +191,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x380c, 0x0b}, - {0x380d, 0x1c}, {0x3814, 0x11}, {0x3815, 0x11}, {0x3708, 0x64}, @@ -276,8 +278,6 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x380c, 0x09}, - {0x380d, 0x70}, {0x3814, 0x11}, {0x3815, 0x11}, {0x3708, 0x64}, @@ -375,8 +375,6 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x3809, 0x10}, {0x380a, 0x03}, {0x380b, 0xcc}, - {0x380c, 0x07}, - {0x380d, 0x68}, {0x3811, 0x0c}, {0x3813, 0x06}, {0x3814, 0x31}, @@ -450,8 +448,6 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x380c, 0x07}, - {0x380d, 0x3c}, {0x3814, 0x35}, {0x3815, 0x35}, {0x3708, 0x64}, @@ -1063,7 +1059,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd, mode->pixel_rate, 1, mode->pixel_rate); =20 hblank =3D mode->hts - mode->format.width; - __v4l2_ctrl_modify_range(sensor->hblank, hblank, hblank, 1, + __v4l2_ctrl_modify_range(sensor->hblank, hblank, + OV5647_HTS_MAX - mode->format.width, 1, hblank); =20 vblank =3D mode->vts - mode->format.height; @@ -1333,6 +1330,10 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) ret =3D ov5647_write16(sd, OV5647_REG_VTS_HI, sensor->mode->format.height + ctrl->val); break; + case V4L2_CID_HBLANK: + ret =3D ov5647_write16(sd, OV5647_REG_HTS_HI, + sensor->mode->format.width + ctrl->val); + break; case V4L2_CID_TEST_PATTERN: ret =3D ov5647_write(sd, OV5647_REG_ISPCTRL3D, ov5647_test_pattern_val[ctrl->val]); @@ -1340,7 +1341,6 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) =20 /* Read-only, but we adjust it based on mode. */ case V4L2_CID_PIXEL_RATE: - case V4L2_CID_HBLANK: /* Read-only, but we adjust it based on mode. */ break; =20 @@ -1416,10 +1416,11 @@ static int ov5647_init_controls(struct ov5647 *sens= or) sensor->mode->pixel_rate, 1, sensor->mode->pixel_rate); =20 - /* By default, HBLANK is read only, but it does change per mode. */ hblank =3D sensor->mode->hts - sensor->mode->format.width; sensor->hblank =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, - V4L2_CID_HBLANK, hblank, hblank, 1, + V4L2_CID_HBLANK, hblank, + OV5647_HTS_MAX - + sensor->mode->format.width, 1, hblank); =20 sensor->vblank =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, @@ -1449,7 +1450,6 @@ static int ov5647_init_controls(struct ov5647 *sensor) goto handler_free; =20 sensor->pixel_rate->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; - sensor->hblank->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; sensor->sd.ctrl_handler =3D &sensor->ctrls; =20 return 0; --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 7CB7C2367B3; Mon, 22 Dec 2025 08:17:08 +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=1766391430; cv=none; b=LBXmP5REpVc7ZwUqsVOJFdzJVzVdXXRos8qo27KMoFAEB60YsMOvbcDBHZZPmH4JGDTxQGNM+JTMv81IhzHIZjd3UunupE3QQpM2EKOqC2V5AtekNh2lV+33gg9aO6LBuykF7OjR33TVOzd9lFuSYKuEqPogBM/XYTgA2KgvHVE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391430; c=relaxed/simple; bh=sLwppaM3UidnqHSY+zt4ykVRqMOPAKrpSGM71AptNZ0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KHK+D1B26UO0GJcvmogEv7tHmvUh16r5kqal+QwPC9R6GicVurxdYm8hHaQiYAzJR88X4w3zi8R1eguIef84zG9Q5Tj2bvvqeSvKoeb7LuY4MHbm7d/fOdDPBj/3uygpZBoILCSktDfatOz48j4ak8fDcTS6AIs6QdO6mPrrW28= 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=mnCT36TE; 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="mnCT36TE" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7A305593; Mon, 22 Dec 2025 09:16:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391417; bh=sLwppaM3UidnqHSY+zt4ykVRqMOPAKrpSGM71AptNZ0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mnCT36TEsX2K1407nvWp4rzNG6IuxGB2J3X9LVug7yx8ih4JdGitKHUEjnaGOvxaw mTgC6+XT32/22GdYAISmeoeKwMq8JrvY4xkWP82VXTZAZlLQQdxVwO0bkO0s/7i7SV hoIbugs78t7JY4MemKQ06/AWougwwyCGnSglD23k= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:37 +0530 Subject: [PATCH v4 13/17] media: i2c: ov5647: Tidy up mode registers to make the order common 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: <20251222-b4-rpi-ov5647-v4-13-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2493; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=3hwnFw5i8utHuyPZHb0dYc8OrbjufzHTvFE55/5oYpY=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4tOdWVxgEFCsmANYZLqZD+dRerwY+4DP/TO Jn+6baTneWJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+LQAKCRBD3pH5JJpx RWMnD/4pW9GIjsF7P1IBo7/V/d5/an9Pkh/LU57EESOVE9LzyIlxsW1N6NNWsH2t6DTEy++Lp21 5fg9AnQm6GCplMVUYjlVH1lwRBwQeCvdmrwx2PQCbBvcdGWEwxBnY4WcDWb+TvOo8TYOYJvafzL s6mIoGfDCBXQzm59wbYLNnpz9M9y4/Qo4xzGkKdbmgLp/BacHYAOvoqfnuPmumQf4v7GwHYG1s4 7slfh0BcR+sIJrD2OOMQWUfFp2BiTlUW6zjzg9Tb7LcdtK55PNxQWzKWo7K/hZD58rayXmpVobG 1fjlBOgA4hFrrH5dFjvWBxnz4XTn5yv7dsRCADcIlmfu3s4DyuCh/MhIejyz25iXqkUsIRtlb+e TzJ8/TxPfTB2UoyB5UhM9cfdTChzsJoOGAsaY5J3FjcUywYNtnt3bHHlpcMh0olYeNmDzpHj6CE T2npxot9eFaeUO5l0BgQcapgoBKxaCCKsNQEMmWufAIJYzt/o9smZXxhiRzmFgzfOwCq3tsoRVC AnzkyazS5XxWcyeoTPPKenoTePoCrrcnDrWDgp1WVsVVsh/kk4/iYMQ0x/nldS0IAVrd38cTQjx 5daNJ1Ab9T/7rqAAs45cNpu3SHpXauv4jXIrzAv42KFLufvw7ovSrfCLjBE8kFijCjejgUzwT57 X8FlSiB5AWv0ZOw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson To make comparisons of the mode registers easier, put the registers for the binned and VGA modes in the same order as the others. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index c89e13442e29796e0971faa204cf7132283c51b1..8142496ed959805b1ef1d1460c9= 93448bd2beb3d 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -343,6 +343,8 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x3036, 0x62}, {0x303c, 0x11}, {0x3106, 0xf5}, + {0x3821, 0x03}, + {0x3820, 0x41}, {0x3827, 0xec}, {0x370c, 0x03}, {0x3612, 0x59}, @@ -415,8 +417,6 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x4837, 0x16}, {0x4800, 0x24}, {0x3503, 0x03}, - {0x3820, 0x41}, - {0x3821, 0x03}, {0x350a, 0x00}, {0x350b, 0x10}, {0x3500, 0x00}, @@ -429,20 +429,27 @@ static struct regval_list ov5647_2x2binned_10bpp[] = =3D { static struct regval_list ov5647_640x480_10bpp[] =3D { {0x0100, 0x00}, {0x0103, 0x01}, - {0x3035, 0x11}, + {0x3034, 0x1a}, + {0x3035, 0x21}, {0x3036, 0x46}, {0x303c, 0x11}, + {0x3106, 0xf5}, {0x3821, 0x03}, {0x3820, 0x41}, + {0x3827, 0xec}, {0x370c, 0x03}, {0x3612, 0x59}, {0x3618, 0x00}, {0x5000, 0x06}, {0x5003, 0x08}, {0x5a00, 0x08}, - {0x3000, 0xff}, - {0x3001, 0xff}, - {0x3002, 0xff}, + {0x3000, 0x00}, + {0x3001, 0x00}, + {0x3002, 0x00}, + {0x3016, 0x08}, + {0x3017, 0xe0}, + {0x3018, 0x44}, + {0x301c, 0xf8}, {0x301d, 0xf0}, {0x3a18, 0x00}, {0x3a19, 0xf8}, @@ -468,6 +475,7 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3632, 0xe2}, {0x3633, 0x23}, {0x3634, 0x44}, + {0x3636, 0x06}, {0x3620, 0x64}, {0x3621, 0xe0}, {0x3600, 0x37}, @@ -496,19 +504,6 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x4001, 0x02}, {0x4004, 0x02}, {0x4000, 0x09}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3017, 0xe0}, - {0x301c, 0xfc}, - {0x3636, 0x06}, - {0x3016, 0x08}, - {0x3827, 0xec}, - {0x3018, 0x44}, - {0x3035, 0x21}, - {0x3106, 0xf5}, - {0x3034, 0x1a}, - {0x301c, 0xf8}, {0x4800, 0x34}, {0x3503, 0x03}, {0x0100, 0x01}, --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 A864930FF13; Mon, 22 Dec 2025 08:17:12 +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=1766391434; cv=none; b=dO0afq2SmZZQhDJiXb50WZyTOUgondj/XtG0339EjSLbX5DFbg+8Bpe+UTwhow0HR8HYj8ZaFyUbglsMVSvTyn8af9KIeZXoTpKb5MDtkvQh177WrYFDdn1RawCCAT5JxyjX42wQL1KXjErt5YBAPAAb9R0pHoUhz2TPfdGTVIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391434; c=relaxed/simple; bh=yj6WkbtA9AkS9h7XhmaU3os8G7FauNjNIKK790QvDEk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MWRnO0ouKHI6W+97KsFQrfDAMnmSIJmrAA4WK9A96QFBTpK6j2OXX4uXX/UBDdgcMDR3oSqT6Nj2gDewmrSIXeemghKNae9XTPC6LsnBcEPV9hJOChrA+DmFS2MzjxFIgywyAxt2oPkLWv4zg/vRPQfCWAy2VkonFqJRpDdAvoE= 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=nr4Tuajw; 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="nr4Tuajw" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EE8E23C8; Mon, 22 Dec 2025 09:17:00 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391421; bh=yj6WkbtA9AkS9h7XhmaU3os8G7FauNjNIKK790QvDEk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nr4TuajwL9EAquV/w21BCjTR4QGD3WJgR/boMHQsLn9yPBza0VQSb9M/Ul4duPdaq O+RoRkPg0H9sgE9MYDpQ3IJ737RP8RsUhXAepVP5KSKIB2CwRYFn/nh/Cz3XbmPmg/ HYWzB0jfj3niGDDb7wZaqtM9f3O+M+V0A3Spba3o= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:38 +0530 Subject: [PATCH v4 14/17] media: i2c: ov5647: Separate out the common registers. 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: <20251222-b4-rpi-ov5647-v4-14-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8412; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=O0OpUZCL7z+XAZW7mDPlqoeZrCD9kkh3VxzFLQ1ZCHk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4uslKoToRnFgWX7hnVbuhyBJKGPCqtb2YRa 51ZsF1kAUeJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+LgAKCRBD3pH5JJpx RTVDD/wNfJdVdUs2vyYAThlLokXT2O6Y3256cDJfhdtYaosXFiELvnQVA+vtriVHzfnhHkBCiCj i0OTT2cg0+OA3dtGXRD7RCI7C4W0V3Kdi4ZmIygcg/Q0xVA392WA9t28FLPecBq9+53oRe5OhiC yUDLKgFYb9oGXbGPoZo8SPgZk16HnEb11iJEgOPDYfxh+7l+N7Hy2iNVJny8uQsjK42WJ+p9eYx 1iG9lXaeY4Be3P1CProCd2HKjhQvQ8UkIGMi0QEX62JSIb5vUJ8w8iYZqFJ1r6iXWFquqikps53 gH8l8Fyto4jIvSzxLrokD9CgDtJSbfx04vJt17o/uu8DnebbVrF7J841xCEnoEVu2m34iSXqatr qbqVh62Nc4UWuz2MzManTGr7hnF+/vZ4GJevO2v5aCa7LXAr0o9V2EXPEAy0lj0+Gsguux4tBIC BJxr3mSmKU9a4GUy0R/v3iBfE747qjkiPzXCr3h0Wf4HUhj+Yh2eK/r0QXI7KcQqh/vYFPME52K h36/E3bkBPOZ6OzQwc99y5tKsi0HVtX+b1U+WtmATIV5gT7bhZSwRvFbvt6jnxBkpObALUvypSD fVfKTM7MCJ8cJ3H6IL5mNQ7un/N42RhtXaZoeBWHCjWYU30RvudLehihO6wdzADORpQTX+vpPoi TgUPH9DnYtGHd6w== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson There are many registers in common between all the modes. Pull those out into one common table. Signed-off-by: Dave Stevenson Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 243 ++++++++++-------------------------------= ---- 1 file changed, 50 insertions(+), 193 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 8142496ed959805b1ef1d1460c993448bd2beb3d..13b703f39b106b5ac43db23612a= e051e475bb734 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -161,22 +161,16 @@ static const struct regval_list sensor_oe_enable_regs= [] =3D { {0x3002, 0xe4}, }; =20 -static struct regval_list ov5647_2592x1944_10bpp[] =3D { +static struct regval_list ov5647_common_regs[] =3D { {0x0100, 0x00}, {0x0103, 0x01}, {0x3034, 0x1a}, {0x3035, 0x21}, - {0x3036, 0x69}, {0x303c, 0x11}, {0x3106, 0xf5}, - {0x3821, 0x02}, - {0x3820, 0x00}, {0x3827, 0xec}, {0x370c, 0x03}, - {0x3612, 0x5b}, - {0x3618, 0x04}, {0x5000, 0x06}, - {0x5002, 0x41}, {0x5003, 0x08}, {0x5a00, 0x08}, {0x3000, 0x00}, @@ -191,24 +185,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D= { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x3814, 0x11}, - {0x3815, 0x11}, - {0x3708, 0x64}, - {0x3709, 0x12}, - {0x3808, 0x0a}, - {0x3809, 0x20}, - {0x380a, 0x07}, - {0x380b, 0x98}, - {0x3800, 0x00}, - {0x3801, 0x00}, - {0x3802, 0x00}, - {0x3803, 0x00}, - {0x3804, 0x0a}, - {0x3805, 0x3f}, - {0x3806, 0x07}, - {0x3807, 0xa3}, - {0x3811, 0x10}, - {0x3813, 0x06}, {0x3630, 0x2e}, {0x3632, 0xe2}, {0x3633, 0x23}, @@ -228,11 +204,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D= { {0x3f06, 0x10}, {0x3f01, 0x0a}, {0x3a08, 0x01}, - {0x3a09, 0x28}, - {0x3a0a, 0x00}, - {0x3a0b, 0xf6}, - {0x3a0d, 0x08}, - {0x3a0e, 0x06}, {0x3a0f, 0x58}, {0x3a10, 0x50}, {0x3a1b, 0x58}, @@ -240,52 +211,57 @@ static struct regval_list ov5647_2592x1944_10bpp[] = =3D { {0x3a11, 0x60}, {0x3a1f, 0x28}, {0x4001, 0x02}, - {0x4004, 0x04}, {0x4000, 0x09}, + {0x3503, 0x03}, +}; + +static struct regval_list ov5647_2592x1944_10bpp[] =3D { + {0x3036, 0x69}, + {0x3821, 0x02}, + {0x3820, 0x00}, + {0x3612, 0x5b}, + {0x3618, 0x04}, + {0x5002, 0x41}, + {0x3814, 0x11}, + {0x3815, 0x11}, + {0x3708, 0x64}, + {0x3709, 0x12}, + {0x3800, 0x00}, + {0x3801, 0x00}, + {0x3802, 0x00}, + {0x3803, 0x00}, + {0x3804, 0x0a}, + {0x3805, 0x3f}, + {0x3806, 0x07}, + {0x3807, 0xa3}, + {0x3808, 0x0a}, + {0x3809, 0x20}, + {0x380a, 0x07}, + {0x380b, 0x98}, + {0x3811, 0x10}, + {0x3813, 0x06}, + {0x3a09, 0x28}, + {0x3a0a, 0x00}, + {0x3a0b, 0xf6}, + {0x3a0d, 0x08}, + {0x3a0e, 0x06}, + {0x4004, 0x04}, {0x4837, 0x19}, {0x4800, 0x24}, - {0x3503, 0x03}, {0x0100, 0x01}, }; =20 static struct regval_list ov5647_1080p30_10bpp[] =3D { - {0x0100, 0x00}, - {0x0103, 0x01}, - {0x3034, 0x1a}, - {0x3035, 0x21}, {0x3036, 0x62}, - {0x303c, 0x11}, - {0x3106, 0xf5}, {0x3821, 0x02}, {0x3820, 0x00}, - {0x3827, 0xec}, - {0x370c, 0x03}, {0x3612, 0x5b}, {0x3618, 0x04}, - {0x5000, 0x06}, {0x5002, 0x41}, - {0x5003, 0x08}, - {0x5a00, 0x08}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3016, 0x08}, - {0x3017, 0xe0}, - {0x3018, 0x44}, - {0x301c, 0xf8}, - {0x301d, 0xf0}, - {0x3a18, 0x00}, - {0x3a19, 0xf8}, - {0x3c01, 0x80}, - {0x3b07, 0x0c}, {0x3814, 0x11}, {0x3815, 0x11}, {0x3708, 0x64}, {0x3709, 0x12}, - {0x3808, 0x07}, - {0x3809, 0x80}, - {0x380a, 0x04}, - {0x380b, 0x38}, {0x3800, 0x01}, {0x3801, 0x5c}, {0x3802, 0x01}, @@ -294,77 +270,30 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { {0x3805, 0xe3}, {0x3806, 0x05}, {0x3807, 0xf1}, + {0x3808, 0x07}, + {0x3809, 0x80}, + {0x380a, 0x04}, + {0x380b, 0x38}, {0x3811, 0x04}, {0x3813, 0x02}, - {0x3630, 0x2e}, - {0x3632, 0xe2}, - {0x3633, 0x23}, - {0x3634, 0x44}, - {0x3636, 0x06}, - {0x3620, 0x64}, - {0x3621, 0xe0}, - {0x3600, 0x37}, - {0x3704, 0xa0}, - {0x3703, 0x5a}, - {0x3715, 0x78}, - {0x3717, 0x01}, - {0x3731, 0x02}, - {0x370b, 0x60}, - {0x3705, 0x1a}, - {0x3f05, 0x02}, - {0x3f06, 0x10}, - {0x3f01, 0x0a}, - {0x3a08, 0x01}, {0x3a09, 0x4b}, {0x3a0a, 0x01}, {0x3a0b, 0x13}, {0x3a0d, 0x04}, {0x3a0e, 0x03}, - {0x3a0f, 0x58}, - {0x3a10, 0x50}, - {0x3a1b, 0x58}, - {0x3a1e, 0x50}, - {0x3a11, 0x60}, - {0x3a1f, 0x28}, - {0x4001, 0x02}, {0x4004, 0x04}, - {0x4000, 0x09}, {0x4837, 0x19}, {0x4800, 0x34}, - {0x3503, 0x03}, {0x0100, 0x01}, }; =20 static struct regval_list ov5647_2x2binned_10bpp[] =3D { - {0x0100, 0x00}, - {0x0103, 0x01}, - {0x3034, 0x1a}, - {0x3035, 0x21}, {0x3036, 0x62}, - {0x303c, 0x11}, - {0x3106, 0xf5}, {0x3821, 0x03}, {0x3820, 0x41}, - {0x3827, 0xec}, - {0x370c, 0x03}, {0x3612, 0x59}, {0x3618, 0x00}, - {0x5000, 0x06}, {0x5002, 0x41}, - {0x5003, 0x08}, - {0x5a00, 0x08}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3016, 0x08}, - {0x3017, 0xe0}, - {0x3018, 0x44}, - {0x301c, 0xf8}, - {0x301d, 0xf0}, - {0x3a18, 0x00}, - {0x3a19, 0xf8}, - {0x3c01, 0x80}, - {0x3b07, 0x0c}, {0x3800, 0x00}, {0x3801, 0x00}, {0x3802, 0x00}, @@ -381,42 +310,14 @@ static struct regval_list ov5647_2x2binned_10bpp[] = =3D { {0x3813, 0x06}, {0x3814, 0x31}, {0x3815, 0x31}, - {0x3630, 0x2e}, - {0x3632, 0xe2}, - {0x3633, 0x23}, - {0x3634, 0x44}, - {0x3636, 0x06}, - {0x3620, 0x64}, - {0x3621, 0xe0}, - {0x3600, 0x37}, - {0x3704, 0xa0}, - {0x3703, 0x5a}, - {0x3715, 0x78}, - {0x3717, 0x01}, - {0x3731, 0x02}, - {0x370b, 0x60}, - {0x3705, 0x1a}, - {0x3f05, 0x02}, - {0x3f06, 0x10}, - {0x3f01, 0x0a}, - {0x3a08, 0x01}, {0x3a09, 0x28}, {0x3a0a, 0x00}, {0x3a0b, 0xf6}, {0x3a0d, 0x08}, {0x3a0e, 0x06}, - {0x3a0f, 0x58}, - {0x3a10, 0x50}, - {0x3a1b, 0x58}, - {0x3a1e, 0x50}, - {0x3a11, 0x60}, - {0x3a1f, 0x28}, - {0x4001, 0x02}, {0x4004, 0x04}, - {0x4000, 0x09}, {0x4837, 0x16}, {0x4800, 0x24}, - {0x3503, 0x03}, {0x350a, 0x00}, {0x350b, 0x10}, {0x3500, 0x00}, @@ -427,42 +328,15 @@ static struct regval_list ov5647_2x2binned_10bpp[] = =3D { }; =20 static struct regval_list ov5647_640x480_10bpp[] =3D { - {0x0100, 0x00}, - {0x0103, 0x01}, - {0x3034, 0x1a}, - {0x3035, 0x21}, {0x3036, 0x46}, - {0x303c, 0x11}, - {0x3106, 0xf5}, {0x3821, 0x03}, {0x3820, 0x41}, - {0x3827, 0xec}, - {0x370c, 0x03}, {0x3612, 0x59}, {0x3618, 0x00}, - {0x5000, 0x06}, - {0x5003, 0x08}, - {0x5a00, 0x08}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3016, 0x08}, - {0x3017, 0xe0}, - {0x3018, 0x44}, - {0x301c, 0xf8}, - {0x301d, 0xf0}, - {0x3a18, 0x00}, - {0x3a19, 0xf8}, - {0x3c01, 0x80}, - {0x3b07, 0x0c}, {0x3814, 0x35}, {0x3815, 0x35}, {0x3708, 0x64}, {0x3709, 0x52}, - {0x3808, 0x02}, - {0x3809, 0x80}, - {0x380a, 0x01}, - {0x380b, 0xe0}, {0x3800, 0x00}, {0x3801, 0x10}, {0x3802, 0x00}, @@ -471,41 +345,17 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3805, 0x2f}, {0x3806, 0x07}, {0x3807, 0x9f}, - {0x3630, 0x2e}, - {0x3632, 0xe2}, - {0x3633, 0x23}, - {0x3634, 0x44}, - {0x3636, 0x06}, - {0x3620, 0x64}, - {0x3621, 0xe0}, - {0x3600, 0x37}, - {0x3704, 0xa0}, - {0x3703, 0x5a}, - {0x3715, 0x78}, - {0x3717, 0x01}, - {0x3731, 0x02}, - {0x370b, 0x60}, - {0x3705, 0x1a}, - {0x3f05, 0x02}, - {0x3f06, 0x10}, - {0x3f01, 0x0a}, - {0x3a08, 0x01}, + {0x3808, 0x02}, + {0x3809, 0x80}, + {0x380a, 0x01}, + {0x380b, 0xe0}, {0x3a09, 0x2e}, {0x3a0a, 0x00}, {0x3a0b, 0xfb}, {0x3a0d, 0x02}, {0x3a0e, 0x01}, - {0x3a0f, 0x58}, - {0x3a10, 0x50}, - {0x3a1b, 0x58}, - {0x3a1e, 0x50}, - {0x3a11, 0x60}, - {0x3a1f, 0x28}, - {0x4001, 0x02}, {0x4004, 0x02}, - {0x4000, 0x09}, {0x4800, 0x34}, - {0x3503, 0x03}, {0x0100, 0x01}, }; =20 @@ -701,6 +551,13 @@ static int ov5647_set_mode(struct v4l2_subdev *sd) if (ret < 0) return ret; =20 + ret =3D ov5647_write_array(sd, ov5647_common_regs, + ARRAY_SIZE(ov5647_common_regs)); + if (ret < 0) { + dev_err(&client->dev, "write sensor common regs error\n"); + return ret; + } + ret =3D ov5647_write_array(sd, sensor->mode->reg_list, sensor->mode->num_regs); if (ret < 0) { --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 C16443101C2; Mon, 22 Dec 2025 08:17:16 +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=1766391438; cv=none; b=e2IfZXekRu50gmd1zerjZc8X+NZ0IRQJOK4CubOHRW+T3C0wLuXslosUJ1yAxc+VlvqaJ1HkWK9jntDnxUi62wJ3kqOwlMq6FRp4Wljln6rfiPko9e1xJJV0x/bOVDnyWb6yY/6XKw8VUHRzk9quTZBnl3mdV17fNtQflcSrjpc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391438; c=relaxed/simple; bh=rD9jVoSWJxuD/EXu9sC+ank4jEX6P0ByyoiYiWcqATo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HCoV6BegzyVXVh48862FUCdfmL8ZAp8b7qDOINCwe1OPnP+yEnrd3qlWs9ccPIP/FHOD4jt6aSj29ROxV26h8kHO0dXySb/FicJ1BXE1GGGlPz0RHwL3ZAMrUrBNUCbIBBi0fCqdaEv9ciigw4p5Fk2qqmwpfm5wlPF4rijLSn0= 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=bwjkuBsU; 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="bwjkuBsU" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5A01D1783; Mon, 22 Dec 2025 09:17:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391425; bh=rD9jVoSWJxuD/EXu9sC+ank4jEX6P0ByyoiYiWcqATo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bwjkuBsUeSvfLqhOGWbiUeaOxAoQRxsmg+QuDRESm3JoXz+VBIB0GK/KWdWgeePZz lCzbfTe+WLKS8iqfRqFgF7z3lWD3OVLa71OWNT+VBp4uFJ3kPFvEH9mFxWRdCB35kq sA3S2/URP/hTSkMeJrBdgymhybk6WWL5MLStNtHU= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:39 +0530 Subject: [PATCH v4 15/17] media: i2c: ov5647: Use the same PLL config for full, 1080p, and binned modes 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: <20251222-b4-rpi-ov5647-v4-15-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1677; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=7Az7J2QkJ922Kjzd6iGn1ID6vIgiisG2GhX+DYVTznw=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4vYtlyVmotIbqQKzRfKcyIRfyPFEn3Oo3gC 3CtYUXz0gyJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+LwAKCRBD3pH5JJpx RVHwD/9ue7KQZXAy2vZ/TbuLQareG+JtP9rgy53r7+L4Fv1HU5ezVWGxugKqYB7OIKeAfWRqjEe 3+NuZiMG3kOIozdejK0YkCXs80FolbhfUtWjLLWe0fV8GwetOsBfz7Tr+8C5mKggHb1Y3V5LYlA WAIY7BDFUlzgEQWR/Mb/sl+RSccgQ/CIkSKDHuNkQUnlut811mplVKdSzVtiCo5bpookuFRGN36 pg6j714cGqS3ciALoFbtduN6dtRKSy0l5Chv1O1n0Hse+q6J4USS1pC7HUFgy1ObnGwtIxjb5gs PDmgXex1LnPJOVVk6/Ov5F7P1mt7+UF1Pf+9fCfkZYYTThXh4F7XwyrDkU8rEP38/m9biaCMfYJ p+2iNuWA+rweEGoPc1Oon0z1OjfxbFCKRKM+Q+2nnLsQ2idbsjgl9RXIxhJfOYgMMpARqICL6Cu qj6CHYqjR8vVnJS7HxM/oZk1HMVQsKL8KbeHIfuIzv0N74QRxf6DgS2NQtily72XIdi7eK3utaA AIPx8sX4SrCQufYbz9zf606AFfwRE5rit42oAclr8bvYMKnRRjmfXXSXQHLfZncNfTrsI7Fq/gR rhZA202lDgtwSjq6gnjgHzf7OhgdrbZ70u06pP0H/ETO7VXOPTLDz7YdORXQ0boGQNrkdVLSk92 CocSTKwWiOhOg7g== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson In order to simplify the driver slightly, use the same PLL configuration, and hence pixel rate and link frequency (to be added) for the full, 1080p, and binned modes. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 13b703f39b106b5ac43db23612ae051e475bb734..d4a13e17692ff178e9dc257bcca= 0e44c92705825 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -252,7 +252,7 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D { }; =20 static struct regval_list ov5647_1080p30_10bpp[] =3D { - {0x3036, 0x62}, + {0x3036, 0x69}, {0x3821, 0x02}, {0x3820, 0x00}, {0x3612, 0x5b}, @@ -288,7 +288,7 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { }; =20 static struct regval_list ov5647_2x2binned_10bpp[] =3D { - {0x3036, 0x62}, + {0x3036, 0x69}, {0x3821, 0x03}, {0x3820, 0x41}, {0x3612, 0x59}, @@ -396,7 +396,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .width =3D 1928, .height =3D 1080, }, - .pixel_rate =3D 81666700, + .pixel_rate =3D 87500000, .hts =3D 2416, .vts =3D 0x450, .reg_list =3D ov5647_1080p30_10bpp, @@ -417,7 +417,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .width =3D 2592, .height =3D 1944, }, - .pixel_rate =3D 81666700, + .pixel_rate =3D 87500000, .hts =3D 1896, .vts =3D 0x59b, .reg_list =3D ov5647_2x2binned_10bpp, --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 42ED63112D3; Mon, 22 Dec 2025 08:17:22 +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=1766391443; cv=none; b=ptHNtfyXLvAY1Q3aGiXj/yfhnsXTH5GwC/8JmSnwoi4XaPqFEdYrGqz5Qrw5OmT1KD2SRdZACIScBcWa1XpSgbLeBA3pK/EYddOPV0uyNh4evjUC9KnBxKUD1PxtJ5mH9M4HW8f05jy/6dudrS4xmrbKvaupQVmYGQVfi87D0qw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391443; c=relaxed/simple; bh=+4q7XDBSv2HOLIacEse0YUxohIzfPyOGVDZ/vAkNL5k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dKNnNQ25Ezq+eEi+iN82YoAgiG/2RBI2on/N7c9xNQRH1zHbeWrOW0A+hJTcK5YClk0CHdn2O+oQkvu4/eHfgM264uG9iTks3zbDLFVTmq+MdTv47aQa2xs7NNVKdmVjZ5xs+UuH03eAekdd9EihFt7igHQJUkc+GD+QgL8gfjs= 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=b8KSi2Ey; 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="b8KSi2Ey" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 900FA593; Mon, 22 Dec 2025 09:17:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391431; bh=+4q7XDBSv2HOLIacEse0YUxohIzfPyOGVDZ/vAkNL5k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=b8KSi2EyjVFtYjWLf8HIwVxaHCuPmhNa1nwjlKaiZftGEHZpi3RiLKaU7lZ3gW1H+ GwRKwe13Lutvv4wJAopZqFT+y64Kub62drtZJEk6v3887N8X5Gw4EwPBd9zAUpA9ab dTWn6eogJnEDgcijMrQ69SzLlHjhhTA2bFGQINBQ= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:40 +0530 Subject: [PATCH v4 16/17] media: i2c: ov5647: Tidy up PIXEL_RATE control 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: <20251222-b4-rpi-ov5647-v4-16-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2008; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=+4q7XDBSv2HOLIacEse0YUxohIzfPyOGVDZ/vAkNL5k=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4wTs0wTKkyGyqFbeO1ibUtcqI5EjLN0lK1E EhfiDvlKNCJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+MAAKCRBD3pH5JJpx RTs+D/9pPBzokYgKjMrQN0Ydwv8fC5X9Eyr9xzc2XR/7GCk+eExyYpI1sNpr1C5qxB8M2Ry6kIc yMhl4RVoDe7BrbR4ORIiuQ8jh+/6TNuhdfsT9RGZi/fHUMs4WhQrOH5jEGlUiBLozdDLUbGNqS1 koQjS0Q09mSjh82HMNEpsl0+z7eIsARnx/LWGQfC/1GWzGgnNvNZo7ChqvHQA6dNJ5Uv11x+TFi KYC2iVCwKGp6iVW4GzD6UdaOCeVvkOYSYw/zBnnXxYYBIvIIFd8P7Cqq/53cAiHIMK0Y9ozhfmB 5E+KMYh5dH7Al5Gz00wxo27h8yc9wioZ0g8hN5mLGi28BPbXBuw9aV7jLvqDo9oX6qoc4pVufsC 8+fjd6tlr81rmuJU+Y07QTQfWIkZibwuwS5i/4UWsPhM4lKJ4lGJ8o6DFyWFyw1gNzcDgEC6N2G 7LsF5w1CTqSwvWw3vgZ2GyIrpKZ6upNHErpBCmAu07PR8AKU/2gWRCoBEtxP8ot5Z9IuTrRQ0ID nrmhUaqpgvPLh+CZiyD0AqUOJgVr4dl3VH2pSLuqmXekxxAwVqz5fRZ+YrKiDy10uYvy+3HzNgP Jmpf1ogPL/z/Q8fo0Iy3TWkVLBtFNGOlKCopd/8SuqOmOCRewiUNMHhzv6URr04OBTYaeUp3MmX 6vLXvYh6I8DPJwA== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 The pixel rate control is marked as read-only by the framework itself, so no need to mark it explicitly in the driver. Also, we can set the ops to NULL to avoid checking for it in the s_ctrl implementation. Suggested-by: Jacopo Mondi Reviewed-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index d4a13e17692ff178e9dc257bcca0e44c92705825..7003c9922c5be666b4322c8d1dd= 0a2893c86f253 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1190,12 +1190,6 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) ret =3D ov5647_write(sd, OV5647_REG_ISPCTRL3D, ov5647_test_pattern_val[ctrl->val]); break; - - /* Read-only, but we adjust it based on mode. */ - case V4L2_CID_PIXEL_RATE: - /* Read-only, but we adjust it based on mode. */ - break; - case V4L2_CID_HFLIP: /* There's an in-built hflip in the sensor, so account for that here. */ ret =3D ov5647_s_flip(sd, OV5647_REG_TIMING_TC_H, !ctrl->val); @@ -1262,7 +1256,7 @@ static int ov5647_init_controls(struct ov5647 *sensor) V4L2_CID_ANALOGUE_GAIN, 16, 1023, 1, 32); =20 /* By default, PIXEL_RATE is read only, but it does change per mode */ - sensor->pixel_rate =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + sensor->pixel_rate =3D v4l2_ctrl_new_std(&sensor->ctrls, NULL, V4L2_CID_PIXEL_RATE, sensor->mode->pixel_rate, sensor->mode->pixel_rate, 1, @@ -1301,7 +1295,6 @@ static int ov5647_init_controls(struct ov5647 *sensor) if (sensor->ctrls.error) goto handler_free; =20 - sensor->pixel_rate->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; sensor->sd.ctrl_handler =3D &sensor->ctrls; =20 return 0; --=20 2.52.0 From nobody Sat Feb 7 05:56:33 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 5DFCA31197C; Mon, 22 Dec 2025 08:17:27 +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=1766391448; cv=none; b=nnRfyD+aEK/Dq27JdhZz1yC89TwxnelQznxoNJ/m1ATVlOb/LzPN0y+P0iwKPRBQV0HlAZiaBDa9wkHHXP8mOgmS2Pvfsm+A68lx8CGLObYd+0SscFW5rq18D/GLmFvrFuw+gP+NY4BkqHmHX990FVMAjQPSnSI3u1r9g/fhcrI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766391448; c=relaxed/simple; bh=/1Sf05E6AWkbd98SGxiS2EzgQgY4oOh0GMC1HcsjuIQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OuwxS5V5qITTfmXX+DmDMOPqtcxfnQ993m2KsC4eE9Xc3ypeUg/pJ84UFs/YIh+nFEJ50mY5Fina3coTb5u4ibo8JmDm8upKEV0owAsxG3ginFrN8Ufa/UdrrA1KhfPZEUqLYpHvh9em6HVgnTELmyL0olrtg/dA2HHJ4gBtzhA= 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=nvhGdppd; 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="nvhGdppd" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:aa51:d08b:9316:9524:9005]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9D5063C8; Mon, 22 Dec 2025 09:17:15 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1766391436; bh=/1Sf05E6AWkbd98SGxiS2EzgQgY4oOh0GMC1HcsjuIQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nvhGdppd9N4vZ+xM9LS9zEjvB3zgPn39c5/mU7JM6HjRy4kJ7biqoYMI1ou7M1yoF G7dUwBukCE4j7XtRRWip2B5KEjo5aHtxV6K0i9h0tQxyFycMVbJdjgQ96uYgKcI1ub 9Ulh86RadRDOCAqxFxz3lsCG6HdNlLquVY/xCM0o= From: Jai Luthra Date: Mon, 22 Dec 2025 13:45:41 +0530 Subject: [PATCH v4 17/17] media: i2c: ov5647: Add V4L2_CID_LINK_FREQUENCY control 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: <20251222-b4-rpi-ov5647-v4-17-b949c7309280@ideasonboard.com> References: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> In-Reply-To: <20251222-b4-rpi-ov5647-v4-0-b949c7309280@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3669; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=elGhO/FSWy0Z+EqaZaFXthXqmSjE0SXrLSyXP41BvUc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpSP4xYQfGEso+zxFzi0F8lM65kuBayeEICMWtL dRMq3norr6JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaUj+MQAKCRBD3pH5JJpx RT3REACNXs23LYVr9m3i0nmyRPupf9U+OdgfBko8D1sVDRhcXh9S/jE9YAnbPGUvIpIVkE84FCT jYzfoWtAqYNa7fT/A5ZkMJEMTt2IrRpeELpgMXrqQmKZ2ZbKqheBqq4RRvZP3pNYZQSpHL8rvqs yNQjqo0QQtnInB1eEEEhfo/zyKR+3w3snK8hyeiW80dOscL/ghzUfD4YTOSgAJWN4HJkBJqRj5E I8Mikq+Ys5lDYctVKNOitNZvHhuagVThv4bNlxllVuHZnxdZ//sib7Gl542j0LKDgS3ZycXG1gA 1ZeRT9HeTZebaXa7nkqFqzABf70UD/q+4hWLAHdEOqyRejCmR3EPIKTGNcrB1oasyv4LQtQGKq3 izEgjtxK+ZPln4cXGEjZpXGH5vcofJPXJzNb3SUunQrsWH2v9Ez8fsDvrBd6Zg4rtc5ZFW/Edme mLu/2G5vYB4TeFXhWUWW4QIHn8qQDmxfuflumWyEGteP8mBt38bFX/nkAlCQw4c/BvHMWDlwIQ6 C2nJemFoJ2liKNT9wdO3QCeQyJZIijh4SasroDfvLiEf6TyY9GAFimyS+MRGaH+2buYPQ6VB0WW zS9gcSo4TekL/4CkBIB+DLZGP3cNbv7wsE07ANjq6fm+OdqRNF6/WjVwYBu8McoUjgaTIz9kPk2 HT2BXUw6yHl7j9A== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The link frequency can vary between modes, so add it as a control. Signed-off-by: Dave Stevenson Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 7003c9922c5be666b4322c8d1dd0a2893c86f253..1041732104fa765053ba79889e1= 1dfeb4d2a1d8f 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -97,6 +97,13 @@ static const char * const ov5647_supply_names[] =3D { =20 #define OV5647_NUM_SUPPLIES ARRAY_SIZE(ov5647_supply_names) =20 +#define FREQ_INDEX_FULL 0 +#define FREQ_INDEX_VGA 1 +static const s64 ov5647_link_freqs[] =3D { + [FREQ_INDEX_FULL] =3D 218750000, + [FREQ_INDEX_VGA] =3D 145833300, +}; + struct regval_list { u16 addr; u8 data; @@ -106,6 +113,7 @@ struct ov5647_mode { struct v4l2_mbus_framefmt format; struct v4l2_rect crop; u64 pixel_rate; + unsigned int link_freq_index; int hts; int vts; const struct regval_list *reg_list; @@ -128,6 +136,7 @@ struct ov5647 { struct v4l2_ctrl *exposure; struct v4l2_ctrl *hflip; struct v4l2_ctrl *vflip; + struct v4l2_ctrl *link_freq; }; =20 static inline struct ov5647 *to_sensor(struct v4l2_subdev *sd) @@ -376,6 +385,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1944 }, .pixel_rate =3D 87500000, + .link_freq_index =3D FREQ_INDEX_FULL, .hts =3D 2844, .vts =3D 0x7b0, .reg_list =3D ov5647_2592x1944_10bpp, @@ -397,6 +407,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1080, }, .pixel_rate =3D 87500000, + .link_freq_index =3D FREQ_INDEX_FULL, .hts =3D 2416, .vts =3D 0x450, .reg_list =3D ov5647_1080p30_10bpp, @@ -418,6 +429,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1944, }, .pixel_rate =3D 87500000, + .link_freq_index =3D FREQ_INDEX_FULL, .hts =3D 1896, .vts =3D 0x59b, .reg_list =3D ov5647_2x2binned_10bpp, @@ -439,6 +451,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1920, }, .pixel_rate =3D 58333000, + .link_freq_index =3D FREQ_INDEX_VGA, .hts =3D 1852, .vts =3D 0x1f8, .reg_list =3D ov5647_640x480_10bpp, @@ -927,6 +940,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd, sensor->exposure->minimum, exposure_max, sensor->exposure->step, exposure_def); + + __v4l2_ctrl_s_ctrl(sensor->link_freq, mode->link_freq_index); } *fmt =3D mode->format; /* The code we pass back must reflect the current h/vflips. */ @@ -1231,7 +1246,7 @@ static int ov5647_init_controls(struct ov5647 *sensor) int hblank, exposure_max, exposure_def; struct device *dev =3D &client->dev; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 13); + v4l2_ctrl_handler_init(&sensor->ctrls, 14); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1287,6 +1302,14 @@ static int ov5647_init_controls(struct ov5647 *senso= r) sensor->vflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_VFLIP, 0, 1, 1, 0); =20 + sensor->link_freq =3D + v4l2_ctrl_new_int_menu(&sensor->ctrls, NULL, V4L2_CID_LINK_FREQ, + ARRAY_SIZE(ov5647_link_freqs) - 1, + sensor->mode->link_freq_index, + ov5647_link_freqs); + if (sensor->link_freq) + sensor->link_freq->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; + v4l2_fwnode_device_parse(dev, &props); =20 v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, --=20 2.52.0