From nobody Tue Dec 2 02:49:48 2025 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 69AD635389F; Tue, 18 Nov 2025 12:03: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=1763467418; cv=none; b=RVPD//uvF4lvVoV/ZPoItQOR/igyRBxs4MJ95nw7ZLGnq+QEo/s0oDvyfZuw9pMIBtjJWHu6gdZXYjXBLeijCcbl3gk0Az2OKQjBScyyZjnVTNzfIxPLQyel/y+8mopk8EZgMa6MaQSf76qDYf4mMIHBxkpmmasv4RRqoalzwTk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467418; c=relaxed/simple; bh=njQAp1UqANLQb/npkpFKkO99gEzxDInZPmiyCLWGuJQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H4xYDGWofSbtDI2dnhCXDRe/hx1O17OqmSHMGm+MhAnxiUtSNkejQD4aDlyhotc+ROueBmdN/A19g6x/JZb/TrF5/0croURNcE3sux2Z5AlyxK89W7BWDEHmlnuYJKnt/4MZ0yGWe0m5cCCDRYZIa8661/wQbGid66+8SEoNtV0= 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=sHNnYMXR; 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="sHNnYMXR" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 6C65D1FE4; Tue, 18 Nov 2025 13:01:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467288; bh=njQAp1UqANLQb/npkpFKkO99gEzxDInZPmiyCLWGuJQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=sHNnYMXRswAzPGdBV7xKuCX/NCPCDW/eb0fT/Y2usbKJ/SnBfPnD8QphegaUmpz2T Pxf6mbur77+rnRp/kOKGa4Vc7MnbJzY83cmtlmrZ5+7t1e0tOYtzrjDZlMBFSrL2oR zsuMtqGu9AzThWpWFRJO8Rq8xX+zUE9B8WZv06aE= From: Jai Luthra Date: Tue, 18 Nov 2025 17:32:54 +0530 Subject: [PATCH v2 01/16] 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: <20251118-b4-rpi-ov5647-v2-1-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=njQAp1UqANLQb/npkpFKkO99gEzxDInZPmiyCLWGuJQ=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGB6pzO2AeL8OFvgTWc239j+jGDWzOgTb0crZ +g6J3s8CXeJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgegAKCRBD3pH5JJpx RbyCD/4hi1WdAgcw80YNqLxvd6LfACVA6hB3MfCnitG5DNB6TpTiwC4UrkM61JkH/qVlG1nX1rc D84lrTzeqFYU+u6SrZiFK6d9vuUm7ZitG4QhztHbSxFz/iiKH5/luKkdjOsEx5biXgLtjXlXU8O KYG1YY0K6tV6KhQhPB0yxS12Bz4PvltpWa94VPGb9cruDBO6889caaSAC5snlAANxwJJyVeMzzS c0QOExmb5caSBxsSD7y6bTvNODIOw15Im/9b6lksduKl04M9EXuMmyJqawDAgs+4GEavS5pS43P +xAUOrwiXcB9mmT+a0gs7Ew67twoLKz8MILVJjJThtfF70+bHdSxboVAfRb8aIXZ9/eHj3qtLAG ct4klU4h5NX2xnatFBN7CLiUXJghvXNRks/n3yybs7MyZunGonSFdwIQkSIFQqsttnJ8KJQEjfZ hAHKZIrCwdq0QT+Un+jiU/lYVkuarJsK4+b/+dh7RCiyNjk+64Ci35V6KzQxMa9qfz7ecQJmhik Q/+Z40BFfJMjq1GbzYhnZbL+IPcQmUm10MQ51hs+mwb41PTi6PrKlKUWy0ucMhwMr+1N8tlXP4G xm1olsDPXpu7Su//0S71SRxXTJ8mybYQItuN8SPgY9WJwkhr3OH9m/yq8lOhnLPluFZf5ZOj2B5 6y1grjQtFh8lHfA== 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 71281354AE6; Tue, 18 Nov 2025 12:03:39 +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=1763467421; cv=none; b=cIVleO3Cfx9RWfIzqzgVtdWQZtO9DuZ24zqlLlTTMfYa9NX3dTy++S2WgLzh0Entt/y9PSNAR4Bhu58TkzH327h/adEfrxDIJlRMGDJ51ojcdxqajNRu8CRA8QP2alVSzKoZm+UvtFA0WBj/UHerUVxCRyPeLLAm9aBpQ86XHCQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467421; c=relaxed/simple; bh=3TEw2MgrK9PYE+8xT1OVM6CDm/NwIxoO4vP7Eh4NBFs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kvKabaWqXq2IvDDcAyL3TFfI8PHZhPrtYzMKrA7rJsk786RXbn/f0QbtJ+0sNXWyuP4BHK4dMjVpoGnvcFdRLI6s3Uryi0hGDxBkyQNH9rFSGGkGk0Zr+AFcc1RYskDAdBZ4GBrYw2fF2Yvb4Q80VmxO8hse1H/AWGEJncjf0pw= 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=GF0vRHQW; 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="GF0vRHQW" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8BA8F20E3; Tue, 18 Nov 2025 13:01:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467294; bh=3TEw2MgrK9PYE+8xT1OVM6CDm/NwIxoO4vP7Eh4NBFs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GF0vRHQWU8bicsa5deYNP3fSlVyABYYlRdhaVH88FraV38N47IvxPPpOpE2TeFMZh P2Qe76htk4tfA6o7GmO8LPfYTmlWtyntPM4epCedcJWCVhIm/3MzNcdwEP+ndyv0gd YHMVdVTaaBu7nhAsTFUvF7mJ/fBx8T6HN5eepWaI= From: Jai Luthra Date: Tue, 18 Nov 2025 17:32:55 +0530 Subject: [PATCH v2 02/16] 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: <20251118-b4-rpi-ov5647-v2-2-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=ULQo+9p6YyR3lXYv9g1T1q5YDcFoqIw2txBi3/3pObQ=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGB7RJ3GHRt0J2Og2ZUZVMCZ8lQUdhwsjhts8 h3tjL2DY4uJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgewAKCRBD3pH5JJpx RWxDEACVOIwRgqO5cHn1SzslfHX5gAeHdX6tMqBGvwA3cSVyh/l+XLtr2Nn2D0KtuD+D6KMWgao yZ4vtBp7Om8c8tR8GbBSvdh4Rs8PlY5YJnv2Gip52g1GNCnV214B2mXQQSgzK8moktlGEqYvVD0 tbkLz4ofihRksQtmKeeSZ86bgnHPqm3F4I6IzQHsW6bN6Lvh8xxreHS97IMgpn4mSVMzMSZSTk9 lLND+JCMydpnwRj7dOVxdITJJDO7FKbPYkMCNreJPCelrYixEtvEmP346WeBfRojZootMODpR0v KXM3vZ3GY3Mvmn/E3KzZEwm2IPIVUPZ+22C4jacRQ8CouvQkRLfveH3zp+z+ruw0k6aYQtKa0RA bEsa8aLyuAC5nN13BMKAjj4hKcBrySG2Jeyg03xxRVVnZ8fr8dBc8KNUJxj9TKAk/psyepEs186 /omd5mVaX406CJY+cT+0crP2DK6LkTf7tgI+VgTqDwo6t8OrtcKDwpFZTtlA3uDr3lMMKuRcBPd cfnIpPCdHpZrCtBrxXyazM7TYbDZaKGU2eJmu6goEWiyaEyJwDIFUbFwvk9WmCcrD0Glb2/llGA 2qvMxIf5RUZSjoCPgXpSUR0S6Jk0gTNH3F68Hk7brI6dVt19zmBPjrtT+74gKxCpKpPuqeF2pOT yjZwCRi/SHSubYw== 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 5C284354AE6; Tue, 18 Nov 2025 12:03:44 +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=1763467425; cv=none; b=ZnfTxbjxqUX6/nIGqpcp1RSJdzS6Fn57gU+totE8EwNtmvq6qIejK+eeXuI7hMwnWJXJ5koUyGGvwoSPTn10EUte0OVOxOaOJbIJodjydz/Jn3ONra6TyhOEUXEreMh70Dz8Hfhw2hxbzhYFkEh7FIVhJyNXfkzYH/TPA3fzIqc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467425; c=relaxed/simple; bh=4o2wSEZtfhxVZELUbPZsLlNJj6/xjS1zxgpkP1Hnv/w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f0R53JFhV+eAIG9Zk0NxKWarONWkTR9AXehGcfurNQBJhbUH1UskGoHDAIcU7qOJCVB7DUM48vgBsUU9aKLZTtbcJoyLsrpLpoUEHds03aMOWLYzSqCGUZoiX33oE8Gm4I5YwMgbqwT7h41izpzeZ0IwF/pxAb5P27zl1FfPOi0= 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=BX9sq57b; 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="BX9sq57b" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C1EDC20F5; Tue, 18 Nov 2025 13:01:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467299; bh=4o2wSEZtfhxVZELUbPZsLlNJj6/xjS1zxgpkP1Hnv/w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BX9sq57b0p9OzKCQnbqdOTKeRqUGW5RkwMfjaz2BUsGZ2vnYu0xJuX6O2GCNFA3Lu vh43NNKacB741q/jrb/g+rjrLPrgCXfeE4baKAZLtMeb4pCsX64mcJcjavptL7WBEk Wsp2GnaDHh9FQ2f5osemR853zLHj4j+nRilA70c0= From: Jai Luthra Date: Tue, 18 Nov 2025 17:32:56 +0530 Subject: [PATCH v2 03/16] 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: <20251118-b4-rpi-ov5647-v2-3-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=1muuSQ4oB1srNRF7JZwbFGZgnharHekQalVk0S8hxDY=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGB8F3t3XFPo0hnEoI2NSVeekUgI7Vy381cbo tyiEUanSB+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgfAAKCRBD3pH5JJpx ReHKD/4lnDyomT7XosGfVPwyrHCNz8iauvzQYs4tCWeg8NrqN0w/Z2GaGggMtuNnkCvbsT4eTk2 EG82I1Xy0w8Kp+OhVxYybmatdpGGVhy2rd5r+eD5ZHs21Mo+m+onRKwfxG7PBdZGMcdaz2wg7jV jZfW7Q18D/0O3dzERLwGs8LbnYvCCWvkACQkXIDR3bAl95xQJJHoCSxtjEI/R39f35n3tC6eV61 7GvqxvUXmG/VJZeOjJH+Nc7qWB8+0X/fBSwKFxBiLm9E+1WJAQYIHw4ZlKNnnXSEyIo0hMhf+ul MAEKsVhRwsHCbjS4+FmVvp+AyPqVfkx9iGtoHoexLylGUEU9/88FZS6p3Fh7rWVKFN65dYNIW4z crYL9Cxs/99dENKWJ7c2HShLS06oC+rJZV1FU6+fVyPBmLRJC5+6gWnCAP79M8ELKjZtpFefK4/ 5FqjCeokwauLRsg/1t0+8RoOuCEaioFGaEPi9hxLsp8aNyP6eh7k8nYvz0BhNvDqWPMG08CZvvQ C3lv6tp4YertYEF7jsS58YUKAuJEIEGOQUTM7x9de8e2QOiGRgkJPcES71cTCG6CIoYN5Rabj7P raGuBJzrv/coq3ga90ZPXX0TzXsAap/xV2k4E9LR6CyObGAlyNQC+liJaOqBcjJABo5Q8B+Tjym ge2v9R+nq+qGtMg== 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 9D6BC3559C9; Tue, 18 Nov 2025 12:03:48 +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=1763467431; cv=none; b=m2mRMNij3EKNMbNeqmytGAFC+LoURStJDadBiuZakbKDatKWrcXkCOKyEqVPSTmZ36S28ruKfJVCKrWC1Sf0MHepGl8BmQ2AVNoCACEyeSLxOR7SGNqG877HSJ4Xruvui9fCDS7KHsOgMTOo+lzU6cZROBqYM/CgXXGZ81s/IHw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467431; c=relaxed/simple; bh=x2cu8j6UmAda2SDhN/5Ft0ZGyqR6SbTVxeJ1Zvms/kQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f784d6fyyaAENwtdVodYHol37cvUuQwGs+BFJildtXYnKmGtG3rMih5dfo9z2YGo+XUMLMm4Qr8+Cba/pth9EIUgATNcCu792+7QqOgNP5UMPfJJsSbx6scrdsw25yHHwuSzSOHfC7ACNUr/9eyyLyena1tSbfxxGb4kf0+gRRw= 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=HcL1kECp; 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="HcL1kECp" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 41ED31FE4; Tue, 18 Nov 2025 13:01:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467303; bh=x2cu8j6UmAda2SDhN/5Ft0ZGyqR6SbTVxeJ1Zvms/kQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HcL1kECpJBokdF+kWBr5iClnZzpRX5DUy3rX2llxHCiQF/QFy6hez7EZ0Xf/jmX/A fucGJEZDcS1c7oJJjvG1T/SQKfkbB/RVVxJ4oZBunH5gJEwUByi5nLC5ipI2qg4XHu 9489h5zUmowtKNYWSL1p4idIemDsyNFgXzgsa764= From: Jai Luthra Date: Tue, 18 Nov 2025 17:32:57 +0530 Subject: [PATCH v2 04/16] 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: <20251118-b4-rpi-ov5647-v2-4-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=3YyHwvwXP2TLRC7CnMo5LWgSE/bL4N04rQIJqEJyl3A=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGB9KlnbI3BxXGKWLVte73j4/8SW5shQTrvfY oROzt/jg26JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgfQAKCRBD3pH5JJpx RZ95D/4wPs3SLa6LOUhJRjYprVp4nGg6HV15zYA4gkUi1nwYbL1pOyYBIZXF/Yh0ygjntvlbbaG ySkgrDY/y+cQzfq5tRZQge5c3Ik4AH0hzWChdwQ+9Ze7DxWwS8cKvicXnBIeyDENYUn9ucU9cQp rHpi5XUaeR8SPkJBYmSR9oy1iJ4eQcG4Oo3Mrcp95acDFxt/lk2c07CoqV2TZdbNkQwXmAMn8Lo 9s/ZlSb3PTXoBUkSOBAm3hZbYJvuNYN31b8OOmAQXIlIKjgm+H/3548/rd/8Wa942xAbs8XNxzj FbVP0lzJf9htlKG8e8cCRki56OSE3qlBfKlqzfybf3F4NseARr75rNZHxRPu0OXVzfCd3YhCZZT ReKkCUYm+8THy+po/XXcd9TuJHiXNz2FMn7BNlvj9uU0nRuXWM15n6lyryhgkXGMCZ3AfYCpZQK MTI2wQlHRRvbHcIJhre7fMsRont6h5BLEnFntAN4t1s1DswHwXJbmq++syucJ3aNUUsTxwiS7/q mafly/AMmVaRVp138Z3E4BoJfnDlNDyg/S0x8ZEcFk7K9cYEv7SJmsrn0St2LwRdTkbwIHTPCP7 YMffO8miI5+TereZj6yuqD0dO/j2Z403CwCAP68H5rv0ZVpLEudEtHSD8cwf1zlPrgLfqYvQlow LsSLuUasO3ZXJVA== 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 036993559FE; Tue, 18 Nov 2025 12:03:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467435; cv=none; b=GDKTUqfAFfFRXWR3IBkfAGA1N+XvsFSSqRDiX4h4IOTFHAV+K0zkqvnNpunap38Bi/qqqwO9jrtUCOTKtzbAEzUniPoL3e7mlCbO0PhkyfdPC8hEHObVKwXhMq+ErpvYqDx/Wcz8kPAALJQSPTDhqFpYicN6V5msD25BaivYx5A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467435; c=relaxed/simple; bh=5I/Q+eoXXlRQ1U7SNlP0oIbzqlqzBd4tuW/Mv2fKQTg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ut3amI0YFjBIezqalxtQc+SeAjvu2VoCw3Ta58dBLr9piSgjM9DKu1fCsLAlNtT6RNQMSkmvsMXSOgRIIsO0SZuZ8pCxK4KGJkX/BeLwz9IzsBSHb0EstSz8RCWHXwKTF/AmK+05mZzQba8JVscqfaQ/6l4pm1Oyq7i4GL8kKOg= 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=lYWtDkNC; 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="lYWtDkNC" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7A47A20FB; Tue, 18 Nov 2025 13:01:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467309; bh=5I/Q+eoXXlRQ1U7SNlP0oIbzqlqzBd4tuW/Mv2fKQTg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lYWtDkNCokLkPsvF/jj1HjyiyjOt6GSuFRxhB/Jwd8EUMgG7Fo24lV7ff+KGTPI++ M798bVVBKaE5gfMZGfYebyeo5BjhWvCdVcsWb3wpBYbOn82h5bQDzfuO0ltZsufclc VWxzT8CkPM8rAW7k5FcRiB86cxN5XRmJB3bTsCuA= From: Jai Luthra Date: Tue, 18 Nov 2025 17:32:58 +0530 Subject: [PATCH v2 05/16] 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: <20251118-b4-rpi-ov5647-v2-5-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=1162; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=5I/Q+eoXXlRQ1U7SNlP0oIbzqlqzBd4tuW/Mv2fKQTg=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGB+FiefbloeJ5UbphHsHoSYZtIudwHouepV1 NWV4TvONK+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgfgAKCRBD3pH5JJpx RdbiD/0RVtufQztzB3xZaiCd55N4OCEsk5PYfZvq/GbKfh5oo7d6JqSsSt9po8UUIHH0vQ4X1ny mZpcjPWW1X6xdA8rzbGPK84s+X/CrhaUz3IFEE/5oU8UgJQQiXLxFhhgBFT2YZfXlK4VvbwlOLU 8qiNJYWOGeAZm6V26BXXNI1X++gyIR1Jf9ckwnjXEfGPYFRKUYbbl6TMlZtTnUqpt1LnhmXevTz Vs1jQQ7vcfsDw5zLoDz0Sw+v/VnDRFYhHSLzZ/QKsQlqJ+mJQTwtbhEMqFYoSo2SM5LYDC4IWNX G9A3rrmhrOk1Yf2Qgd8rl0hjqLTp2AdOypDT8ldtqpT1+jyfYMA12MLp9c39hbbV9MkpR0KKb1G 5pnIym68tQI/MPopQFmpIyFXZiqQ0uEBWcEOEeJW6CPdVyPzHdy6hZaCpmz27TVuBllkH6Z8DyD N8ggMujpDHkhQXd4ToiExt8rO7mGY1xHBdfytbTy3FzoEyvtbvIiSmkvH+pPYDNinCQnx3wFjnP /7n14TG7N7bUd7j5QT4TdOOZmjZk4SXBHH+cyAxkxH5zPkBgcBIz+oVc6QtUFwE63mwikoNxdB5 iAx3EzEYjcCRx+/ZVBesyXo3K2ImG4YL6ngGYSjRmVEUHacZ4IxbOX2oUOFz17NlmHRUci2LVdw qdHB9X1N6CJkw5Q== 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. Signed-off-by: Jai Luthra Acked-by: Krzysztof Kozlowski --- 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 BB5363563EB; Tue, 18 Nov 2025 12:03:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467440; cv=none; b=rrA7wUcA31uaudsvjkQyLRwcv/VkE6kxYYYCwy9Qw6pbEloxITQmlweZAMuzol9OFuxstH4fZTRPQhjmYOJdmicnZridXcdHVzxzLwkQtBgdgqSprzzhZ1Bad3lF89fP/iRcLq9EWPRqdsmYCQWShQ+117q323a1x5xeAR8Kpdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467440; c=relaxed/simple; bh=BbYnf+lZQKtPcDsbMtt5Y0Jkyyr/gp91qMKAv+n6olc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t0nhemDs/gPbomirKzWVbwwx4DRoFAemcik59mNCE3BqkDiNEKAsYqZTfiq4OH+Vhhni8+k16J5DqnM/OAzlWk7wZw6L1203GkcuDct+wmpOzZX42FKG7oAV21OqFIur5LpOyX5zEtaOHAJMSMjZTSaRcle9xJhcDZT98AqsQFI= 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=p6/2wEwe; 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="p6/2wEwe" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 0545120FF; Tue, 18 Nov 2025 13:01:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467313; bh=BbYnf+lZQKtPcDsbMtt5Y0Jkyyr/gp91qMKAv+n6olc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=p6/2wEwen1KiVX0gQpnq4d4rMk/EJKRlSlDUOrKFQU5UAzeX+/nVF7DwX8X9lbrTE WUA0jhl2vxyURvTIXCQhSQFKy0ybZcpHcoANIXczGy2ODLYiTMqiOSkcXOcyJubCsn oXglo3oXvcslbvJj7M1XHkaCeniGqtqiXoqCDYww= From: Jai Luthra Date: Tue, 18 Nov 2025 17:32:59 +0530 Subject: [PATCH v2 06/16] 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: <20251118-b4-rpi-ov5647-v2-6-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=3622; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=pN7HijDRVxQuU0cEhXwHce7FLXdp1+/5EWj5OBY67sk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGB/bbhW8NCa+ulRYE7DQRF2O00XjWejTilnl NIlYEmq8qaJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgfwAKCRBD3pH5JJpx RV2nEACJgTmWtgs5PyDtZsVYccWnJRMxZDgNkrMTtEbXy0c0nlcuTCKEDjLPzpzFWW3g3mveDHw GPcSF/nQ68sYx3cUcxJAR9eyRnpuv9/vck43m7NkyCHZlNAdRrndq2P0NzzuttKla4OJQ9Or0oS YiBvxLpf2VmHWpoQnnvf7kAnwiFmfp/Gx8n/V1lYUclYYi/8SzLDagtjyIiprX9gr4ZmYb/4KRW /srd4DCK5DTdlVhbN39i3fMCxvTZCd9eclJNBDfja77VAbxqOQmsaUWLLWbzK7FaozEJJz7eMM0 k0yHdWlAjoPkLQNwFp0vN7zXGbwz4xaDReris6LvnPIM3LRG7jVe8KwqXFI815NnYh+jDGVmvcU tI5NfJDxIUG6RvYXAvmy9jYme37LZBkpNLbA2yleIgQUHpKMhdy1vxkIbQy4jmAIuxWaH6opL1r m08eupMRbGeKSp7SqBOMF5VaWrIFQoTFN9Ylq3vaVFpznMlg6cjH6Ijxmzcin7Zi2xSA2vVYU8D rGt9CTOw5QiSYEdD54J57ZJPL5kXHaufdbOf9F3ndtOv+uYnbjHt4G2Y/Zyc25QsmUF7U4kIFnb 7J6mi6omYf5QjZZekm1BQdgBicGfxaGV/7gcXmYraXaP/R6Kywc7dBXul3aPVAXPfGnszl/nJwz V1H9RAH/dYwbF5Q== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 c0f1121b025e5592d6fd4d5fd23e4262dde2d84c..dbc134af06a26e0e31b12a6360d= 794afa8bad5dd 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 4464A3570AC; Tue, 18 Nov 2025 12:04: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=1763467445; cv=none; b=IKINe+NYCIBmlHlFAhiHXWBvil6ot0WAruoHHT5HzoDUYoqmOTu2tAaRft3HKc5SWiTE7WVPHORBkxnFuV8aHlr5hzMjl0kOwlx4Zg52PfoKL8pq+aDMG0jeaR27jfK17mN0Klf8qY5lfQ6QaY6nz7ED+idt0F9AXMpAgPrCUBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467445; c=relaxed/simple; bh=81GOwsSJOTnG/k04fTwbNWn7mJdu/iyHP4/xMNXV0LU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K0qWEeezxRJGi+1/U1TdfnYKCqqyzPolaVckRM96LQqzgH9TDrOtYRFA3JDbBU6L+XidzE5UK+q/RlGbgyBs+mZGOlmB1MhadE1jA2xhAXYW4iDOceU5lwRZkJSDTuYcqtD86vRvF3AdpRx0c3NIRM+CibuXiWQUbXpAYAboWKc= 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=aazr/Vuv; 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="aazr/Vuv" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B865920E3; Tue, 18 Nov 2025 13:01:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467318; bh=81GOwsSJOTnG/k04fTwbNWn7mJdu/iyHP4/xMNXV0LU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aazr/VuvzkpMZ8cf+kqA6KiPEHi/EL8U9GtnJuV4dONAV508vhrG9rZoOY1qSBZj7 4wuR9j0f+zwNLtoPaMIWuxA24yvAKJpULTTtvmzofFeUvgBWysI2IvBhgz/2dstqhg Te1dYJwAs8RDsDJi2pRpV87kyrF0LS2xRa4+w0oo= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:00 +0530 Subject: [PATCH v2 07/16] 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: <20251118-b4-rpi-ov5647-v2-7-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=1177; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=81GOwsSJOTnG/k04fTwbNWn7mJdu/iyHP4/xMNXV0LU=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCAnf41nn1SWCg3Yy6awUleP1xZJTQ0YL40O 5R2BbvMgsWJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxggAAKCRBD3pH5JJpx RV/sD/kBUaYtpg5P5EjkSxEPgfgbpyRyD2iHYgFSj49W/UISjkOoDBQ4fi2QV/aQhw5qUy89498 i5wWpc0mbezXZbF0OP/chgcx9+wtxVo5hcdxpUxnkF/Kkyy7dNa6s5bogMQ/wdGd2aqD4DrZAJl lRu2ysyspEFBa+kNVFIAKftHChp28xYYtSI8lSggK0KoWtNhI+NZv5L4JHTuPrFEiFWV5MHV3/E 6saEMohOlpGRhnwIcj5E7LTaerslND6ftTW09D8q+mMIci/D//II8dkWCt8sONUGeHQPdhzmoiG GCXSrpYqpfUVJqn2E9Jiqqpi7FR//qDavQ3oiz+EZmhW5UomXCZ3GtAdahBsYtjfrwh6MXPHYe5 mDZvDGOy720EOZZsZsSRSlBaw5sjb9upDX49hl343EMXE4oikmcq1iOQ5baoYjG/Iv7bam560tI Uud8w1LjKR9gNlE1oNtLnHyMYtUS9+BlnXopTVWPZz7Q7qobljH8/NKZ20PCg3/45MqI+6WlVTF 3T+M/JeOqxyvEJAJFp8oBmUl1tsD2Xymey1Y+aex9KJ08t7D//QpfLOdHvqAyErwyL7asNHTb8N 3na0If5M9lp0qacUu24QLtFXlKwKf+895A86lN3qRPkjX5r8cVyem0H66GvZ+sOgEVUnDmsn+Mj Oxtpcb4vAsQtORw== 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") Signed-off-by: Jai Luthra Reviewed-by: Krzysztof Kozlowski --- 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 97002354AED; Tue, 18 Nov 2025 12:04: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=1763467450; cv=none; b=mPaECVaGZxhpuT2OQunMQ915wVJDFEpvfE6h8IC60prBSZY4yZH9kfKBWK3gZN3kwT8NRjaU2o4Bd31Y2tmQ3ih06lLRcVN2TGxBHHpCysdKeOWLmcx/DI20XYqUvfaMNd3xt0vLP4A1ytP3KlUdEq3ZZ2MieXiDb1czuA83xEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467450; c=relaxed/simple; bh=EagBiosbmA2aeUNJ2gjYfEbWX3f+2KZqocjltwmKjnQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gPLi/2rlGUciPn7bqH+JeUBaHI+Pq/35MP6sQXPN9KwM4N9RYpRH0BnTgwepgTP7n1UK0RKYF5hMv4PDjpaDinK50AJ7A/aSIVXWnppTzG3NkkmnNTjsWkc9M8VteFUt1YF4596Y3z21hlBK8rh5RTdM76nBQmrlqAYogCy/XwU= 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=NaNIN0KW; 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="NaNIN0KW" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id DE484215A; Tue, 18 Nov 2025 13:02:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467323; bh=EagBiosbmA2aeUNJ2gjYfEbWX3f+2KZqocjltwmKjnQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NaNIN0KWGt481At/fTEsGmysR7aWTD+DXqp91zm5B3Pd2iyBIfincxyayIxyWZPvf TtyOjK9psMNfefhdbSRAbwG/BsTyKEkNyxgjoG8KqPUdkOV4nIQmWE1CZp3BiQsdTT vcBl2ULQMaM6dfyBuKztbP9Y9Kw4+32EU6w7ioa4= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:01 +0530 Subject: [PATCH v2 08/16] 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: <20251118-b4-rpi-ov5647-v2-8-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=1472; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=ggNyXAJEahrB0cW+L33CIKmXjx7qgHZNZzZcak6sQ6Y=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCBD3Z3roM7KqqUSDASFFsWzxrJW0tzQFL1f Pged84+Tq+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxggQAKCRBD3pH5JJpx RccKEADAAgWhaNskPDgflvrV0F9pU33cp+wB+jWN3KHDinuocdMmWrU6IfuYiXOXUNang2C7V8n 8yFpskItZvTbJvoukn/axOrIRf7deYcx1ZjC9Wy9v66DwB7Lrn/jzmVcaTE1p8eYGeeE9Ov3BE+ wneS3Jspv72XMQRYc2bSWoMF1DCIolzQRLPcfZ2SUvRzQPmVxix7gqggKG++mssTQPiXhYCuH/O SrTEUvEGk0NBNoF5WRyttgCd3EDGlYzYhGYaMqdh9fCqmoATXxk5kbj4kC7ov6PkMrqBuP554BS zSxsbEv7+26TmsSIWqneXLQcSnkBWPc6E844CnNToAVJbWBUvI+lJ4NXLon2sf9DDONoCm9+HcI U3HQdw4O5hQSjHY34GTaPrzYJl98nXJBU5/ZQ9AJOcsdTSBNJ0wbyrf8ZkOtRnuixbsHjJ+kPYj CsPlAYOTQHX9MNX1z6PJ06MB76DA44kMOSyslZkmepBedPCoh5hCiWpMjGI+dQ2FUFXvsz1e5ED trC//ne4yeGk0WA9s+IKn3K+sMaUI5j6GcAf484iHwgUxPFFoFd0T7/9sDh7FY7dvihNOJq1cCG EqorskrQ65R6U0iEaV13pB0gstTE9XLus6G9OVTJxEW59OHYMA2mTL8FYyiQac+5OpwnIR76tLP /LCc0+ByyO0mtkg== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 dbc134af06a26e0e31b12a6360d794afa8bad5dd..5009fd8c05a64d7e06f66f8f75f= 0a881cd0b95c1 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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 E2198355037; Tue, 18 Nov 2025 12:04: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=1763467454; cv=none; b=qrrr2/yUZ5G+Jozp0ztx4a9f8wvkkaFy0zGZi9zgFysfTO1zmYupRnCqt4pNij4TtvYHOiwBxGwM09ar5kNntlFCntSKclwjKCxASqtsBHmjWYZnOVokqTEwa+D55A9sGOdpnzuvW3wauf4DZHGKg2MbdyxZhr1TaioK2FJfWFI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467454; c=relaxed/simple; bh=jyzgEO0aQlJegY8Jx7D//InarZS2fTgiPjn0MGiyc4Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gkjG5lFmLEwLoSVvNVIY1xxiYV9+x6SgDQkUzd1ZYR8o5z2pQtLraCfhbe92ulBgbfdaRrVWQNTxcRRc41jlax9MdUm1peycmL8f/WzXdFo6KFKcdQ6/+HQGKQY51vAjnvwcGFOgFLVTyHqyu0P5/fu/wsO84iV7qxWukjTDx+8= 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=Q4RGIfDu; 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="Q4RGIfDu" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A3D99215F; Tue, 18 Nov 2025 13:02:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467328; bh=jyzgEO0aQlJegY8Jx7D//InarZS2fTgiPjn0MGiyc4Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Q4RGIfDuxO1HUiv5F2xWKk6m25UY8hTXtGKyL1JnnNes9Fg8tgb7VbMEW1cRNfGkG mgvoHBC9mVMkXvEv6wby+63CZe99PWNnr76vbGQn/smZB9DbWOt0MTVDCicbdFImf4 CN47LNu3KcCdD4JtH54T3WVwWnlZPi3u2Bc3P3lY= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:02 +0530 Subject: [PATCH v2 09/16] 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: <20251118-b4-rpi-ov5647-v2-9-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=6880; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=vplnmqsjp3Ny6WQgN/SqrpBxHZsZgT6DBzkTzqLEvDk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCC1lYNanhRwLz5Z92dvRCqfmpmpEMPkVLAT sV3yLwOOiOJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgggAKCRBD3pH5JJpx RTsGD/9Fe0M/DIRbJdejPvYmW6RbgEYkmjjxVIuf6qMBJzIqcwo/dXMtdBzzVRltQMLvM/lnw1I crxioNSjEJ3zt+F7JjAVJrW2++7XjQ9RirUIqz4B8R3H7WylbwHfQnbPlQnku6mVEroqJLnEltj 2houNRXAbUEiHRsa3BKMxBQSAA22I+oMu9mGLy6DAsAw3msEbA47ShWCIFoEwyfAfa9ZnDnuLKe bUb93ujI4f2G9dHDWTwipyMSsU7LCIqWoVLrDNz6mQXM86VxlufVlSyYn91PmZVm1BIMknG16bT PMdV+wmXb7BHdMF6SGmSMQEyQMF0ZZkUxuYqJsxgqIcao2TnzceBSfTYzf50/phzQOj1jEYFB+r YMPC40nq+CGgiO+Kqgx9KujIb7uS+k3d00E5DMoB9AXFZTwG/jei9k+jy3TWdj9uPPN01CzZEbV TFG4AR9SQeZccCnWVJSGqtuJnp5ykcJPOLcdM06yfH5fPTxv7xZ9Nd9LmlncuHum0b9x/l3UOQP DMg1Wl1qJ+SXvrPNKhoEBRXO9xjQjgS8MR13OMFgMPTIIM+ACBum/TlAz/zsfI0J3CN/O86OJng e/1mOQkl9pUuBaoVulSlXG50I704PIEzeS68coR/ZD4p2n/COePFHEUxmoFQcm363a2NyIsWLxd yhEsVdyIFNBGIKQ== 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 Co-developed-by: Jai Luthra Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- drivers/media/i2c/ov5647.c | 86 ++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 5009fd8c05a64d7e06f66f8f75f0a881cd0b95c1..0343583692ab9bcca1a07d874a7= 07ac6093a9035 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, 0x00}, {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, 0x00}, {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, 0x01}, {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, 0x01}, {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,36 @@ 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) +{ + int ret; + u8 reg_val; + + /* + * 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 =3D=3D 0) { + if (ctrl_val) + reg_val |=3D BIT(1); + else + reg_val &=3D ~BIT(1); + + ret =3D ov5647_write(sd, reg, reg_val); + } + + return ret; +} + static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) { struct ov5647 *sensor =3D container_of(ctrl->handler, @@ -1291,6 +1349,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. */ + ov5647_s_flip(sd, OV5647_REG_TIMING_TC_H, !ctrl->val); + break; + case V4L2_CID_VFLIP: + 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 +1390,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 +1439,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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 3A089357A4D; Tue, 18 Nov 2025 12:04:18 +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=1763467459; cv=none; b=Rc0Yk5VNRT0SBnfIffyvF+dmXGnaUiM2SKbUz6HkFdbgMfCuWJW18a5PSg4BpAKYoiyTa586ucLI5iIT1cKGVo72n8gh39pDGeiAbHzETH7AhnQm4IE6oVvoQEWEU0wu3rKf+/EDaKJmaCjgnqljTw/tWn7qOTgr9xYYmmSlmMQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467459; c=relaxed/simple; bh=VeKkHzWuINFdUnFm2Ht3xugKKa8EVomEmG03TCbjK8I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TaRbT5DcqqD5CAPRsX3GkVIqnTwQMr6bP9sjcRUURywsrU2vlT2igyejJbYynvszEUzpjkHihOkBSVVVJBtloCknDsAadx3pGxT6gZcELw0bT6VhOOKdObzcfWhvnSvT0wn6cauCWBOKi+vMYGPqhiYhmry8uUfvbk9pLLSD97I= 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=n7R/pjeP; 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="n7R/pjeP" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E204C1FE4; Tue, 18 Nov 2025 13:02:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467333; bh=VeKkHzWuINFdUnFm2Ht3xugKKa8EVomEmG03TCbjK8I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=n7R/pjePPI+kCcdFAm5OOC1A7VpyOTZJPOyqv/kpVzYAP0sFNUp4WXmVAG8kRty+y Jsy4jE/80l9yM4JWft1fmxUhFB7BH+qNVmXFhTUB8Njmuz/HuNF27unQl9Udas+LNt CyRMuMGJtsZoQSk8dxgkXp5TzcS4JalOTzcUkVx8= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:03 +0530 Subject: [PATCH v2 10/16] 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: <20251118-b4-rpi-ov5647-v2-10-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=hTNfD9i+foAwbOBG1v56XbjkCj27bvn8cNIgksw6IEw=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCDB2Z+L69J2oAMTDA3Hd6CpvPjfITIbm48X U+7CPC+5xSJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxggwAKCRBD3pH5JJpx RQLtEACMVOTdI3I/bJ/uwj+vgEMzi/4yAgrdReP5nfTvUUbaDoTo5qS/D6izf2lQPiPvqQZddAo zSLsmE4CFnawXw6GrSYGOT+Sj5vurVoM3zphSnwiDKRhUXbKezddPd/HN5MIa2ya8UPdPsHOMFn W5X/EbybevM0q/B3zdXo1ydeVh03StHOjKlZs03T/IByg3T+RcgFWEc7zcTNtbOPV7spsjm9NIL 0D0jaRAKvPmLHxmtoqwAKW9UC3uUM5wC3HrJ/QGCKMxePj6E5a8cOlViSKbd3RlhGTFYlPFmRpF taNvAIVLspKXj8TB5TVzzn2BQ7VcXDjRukijJYAqN+U6F8cnapOKmsD2nIo+99U0GbFCyzYlLHA I/n7kO3B23BSwYtanfsE3PkC4sdcPOGakg2EPDvFPhSCGJr6zeudpgx8RnL4SJa9rdJSK9tBhSi UFokrI0rPtfty3ZJCZDx/SPwzikULmZ6LSUR81anI3z2vxrMl/nGRREoSQo1+FkPy8tQFT8AgWU +/lqmkoQ9omt/5/oE8BRxRNrmZkxfXfJDUCs9bstD4VYu2QRwzjUnw/bRlJ+8jT2tzo90Q/rvZt wSWDTweckDFQUE5axGd9HCakpTZ+ly72k6q599NdWVxwi6rok9ro8kSjChNHv3G3UD3EyIDMO99 WQnv50hOZMZRchQ== 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 0343583692ab9bcca1a07d874a707ac6093a9035..9b5a1275c29877dff99c74aa8d4= 9605c02fa6ed6 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1559,7 +1559,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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 8DA8F34B43D; Tue, 18 Nov 2025 12:04:23 +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=1763467465; cv=none; b=EqJseYO1O4Foc3sIK/5sHw1MuVQaBQKIb/czVsBu01fVSuS82RTOEZIOJS+Iu8I5OoJCRHqnFLEy5U3AoL9oNrTqhenSl1FR7VzAs0R82B+nujGG9zn7EMmwwrii2cUKYc9rs9rFzzRT0g6ZE4839iIuoHxaYM0U2Kw0AbvpGb0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467465; c=relaxed/simple; bh=1irBu6cJLTfs7Tdq3rgpbbLXe54lmsiy+kz3MrJ2EH4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JIfjwvs5DejLJ6MxuN6/tUdHnjMMsHQOsi9McFS87JRpXvkmNd+CKBxkshQTUzpi9BCAQN6wJmPOXXFYGWCTuW3BnDj7DO3+UcadhNmOZMxnVZcrf98dzDjKwPALgoij6mmU8zwqPUS+zFGCdcMbo3KtNqVZYxoeC/kafim6g70= 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=wmxLiqzK; 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="wmxLiqzK" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E81F320FB; Tue, 18 Nov 2025 13:02:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467338; bh=1irBu6cJLTfs7Tdq3rgpbbLXe54lmsiy+kz3MrJ2EH4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=wmxLiqzKz4TKmHSRebzgdvQOmFgx9FHx/Yd19WpIYUmosfuNAmnvbaXOaR6glJrQM FtdNqv3FWeqXNiQtn1075tzcLzi3qXR+qc2xqRuGfEAmXUbEFqdfMBwM+6reJiq7Il WJJAOsEbUV3BBj5oLd1XXPK7wC0vA8lIZC+ZIUSY= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:04 +0530 Subject: [PATCH v2 11/16] 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: <20251118-b4-rpi-ov5647-v2-11-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=4323; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=oDXaaG5T92XczKd4fvTILltQ4U+P7TvumEQTtd8oLnE=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCEs5NT8z+U7/ZQzLcTSIZu+EoVEGPrNmiad ykIlkUCvz2JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxghAAKCRBD3pH5JJpx ReHpD/4h6TAR0+RbtPuoD647A88vOvICxkTTCW1B/g24XPjI56Hsc3Be910xjfkm6c6XWFuFDNy PQN2V1rapjFAXcUSsFIQAppABbBm6e+iM5NQRrKpkpIqq6sgnDvzdFj8YZXx/TcJKtCsLqcYIlB iFCa2M1qWG7a94hBm1cuReWl7yDXIEIculbOeH4i0oUQVLGQ1RkqiBAqbQF7qAETSS0HNLeG0pj 5l5O0PJA5tN7YawiIdrZkmyP07oWuIEbe655+IJt/H3mWWo/iWNn9dfKMmusPcth/judT2DlDdd W78Lji4pXZJNnceWsuIJ/sVnSsNfsrNhFBOXkTs9UhfCLL6G1J9MHFca6xItWZNMh36flcyULt4 S7pHma9dCvbcQgjhM+Ud11cV4Pt1w7aAw75IrmDE73Ue0DG6FyWNQtI/dk/+6BaK2WlDkoxKgW3 ngn4Eqq7duJmnVce+TEJ5oSFv/9KeLuXMBephv5f0KK7RNWhq7/g7vCXMR0tMwK9ijbEzHLJ5WY B8AJWy1eqeExekBvhINlKPuVMNDfLZ/l1xJ00zxF2FWh43JEGtsXUAIYi2JCCv/rwVOxJ5vQ8Uk BJMNz+fOAaAvZTngAOFq8ki6G6f439Euf/zJGJpiV6ri+vBd5t5Dz1mKrnBA0HZQ6FYa5PK14n4 8ngQtqPkAA9NXTQ== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 9b5a1275c29877dff99c74aa8d49605c02fa6ed6..48c0e302319d724a20aa7885a62= e517d515c6191 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; @@ -1338,6 +1335,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]); @@ -1345,7 +1346,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 @@ -1421,10 +1421,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, @@ -1454,7 +1455,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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 0254F358D0A; Tue, 18 Nov 2025 12:04:28 +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=1763467470; cv=none; b=rSl7s1IEDc4APMBL0pCQcbDqHkkkKtuVNI3ofNvIFXHv++GQU6KpEUw/8OaGTwGQzW0ePqtm/Hg7pMxJs2X1bJYAYfyqA8+GY01WFoPni4AfTGZwuxULpQlT0ZwBMw3u2JxqnIPsy/KvMWfGU3Itg23aegvpk9MK6q21jaIsjYI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467470; c=relaxed/simple; bh=kZaKOzvwpyChOfT/lMLxG9AQzTHFkzeWiJxq0V5sP+w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FfACa3wPBnZirqCP5+2T4LBhM6ozS5OFiA+4HSzwPV+Vclhd0bBZhABJXv283j1mJ1PxdIxmz87blZSOcXAxwlZTayYQVo3wJ/p3MBeuxHyJWtrMYYrQZLr1JrsGjTe0+yYntA75WSG+El5VPImBr++VkcFXc2D2CsnyIYM2w8c= 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=hADgZku6; 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="hADgZku6" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7A81A20E3; Tue, 18 Nov 2025 13:02:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467344; bh=kZaKOzvwpyChOfT/lMLxG9AQzTHFkzeWiJxq0V5sP+w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hADgZku6kqcvIXycBSsQYQFKHlxiJN/iHwRz3f8oI34RBMnvQoHBTd+RmotdaVSok FQV+rpvkd0q5mu63wcG3vcyHpiRE36vYcFeT2vhg3+LDk6kVY1433sgQqulqqSxyu2 Ls9oEYDj+Jb7etIiXXMomdxwxf11I/whqDahEA9Y= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:05 +0530 Subject: [PATCH v2 12/16] 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: <20251118-b4-rpi-ov5647-v2-12-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=MdwSTLoMX+IlELYXo3stkVr1LSzQidt87P7CDuW6ax0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCFHZRKqPFSh2D0nKW8FH3HPo4ljNBLxZMyi o4Vtf9iwp2JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxghQAKCRBD3pH5JJpx RU6ED/9tTENVP76/aCZrbkm/ESaoPyTIkyBzmH5OIAqCqabvLOIxrrD6e6fB+rB8WOQpGmATwPX oBD2CD0e17Pvc8plUZL4QePrHoFAj92yj8RZkFfJwFNfgjUbg6slJ9N6s5gN6E9Md/6clt7bQnI oYdipQ+OApkTH5Lde6+aItDSX6G5VO4eVzYl3/LqJM9z7j65z+FlJ4svhy+yUUxAQQc0yrdXwCB z2qX0Be/suczBhDU8NKsxtLJ4Qo1H5jDk3jxXVVBQgG8JtQUF+8NWvwIb8FAd69yRW2moseqwpL XUh5b7WeIYcZ5QdSEuN8Wj4z5zR1lchAsQCgSsIJs+aPqX+YdtBmIkMvYQo55rbvm95qnDoOe90 Q9ukeh/uFh1VN5j1uWPF9qeWPHGYSJ8ZmJWkaZYJ+oy5MgEMrVZsI2FqpP7Ye9QNvWK/df0KqWN cSqxyVexcbH9NdB/AmdRVWOuVQXm28GNGoD1BGcxDn3vLLLXUQmpwy3yoNu7Q+NJwoKzqxCVTI4 1DWlX5AftzetJxdSF4c3SIU+0QmuRfS+lzmMyHI63r8z6NAQmZnPFaMHTUhDDZdmBmlCsohs4da DKhR6kS+7T9lpwzhtHLmyVnWAKw+s4naMtwHBcucOE7+n5oWla5kWa3a847H7YxSFjROtTKDo7X LPZwx+2ojz3VB6A== 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 48c0e302319d724a20aa7885a62e517d515c6191..5cfc35e79562a6017719710935a= 72c2dd84405b6 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, 0x01}, + {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, 0x01}, {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, 0x01}, {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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 E0E07358D0A; Tue, 18 Nov 2025 12:04:33 +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=1763467475; cv=none; b=NwKvGrIc5K1/DwozyS/SPz4X2Rr4Uc90JwJbENYy1N3q3+4kJHPAZNCydctrPW+6srsYeywl5A+ivVa9NdNMoqR0qiN8A0LCu1qjPc9L6ngvP02frvGB8axgGBrSWddjRT8VfZ4Fw/8XtgmatXJTIgE4iAg3yX2ZsSyTKmALXKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467475; c=relaxed/simple; bh=SoAar5e4cczyJk7rnolZNfzYWZRMmnk5ii1wO1Ebu8k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GLrAej0JUkeDOPfURvf0+EKGsCZvmmD1v8XtITLpN8MAtIWiSLnzfFjEJa7bokv64seCnVCyo4riG0jcmlxtF62cP/x/rzrtmKp0v14BXE3LbFsf4pAasdRfJOe+nRlHSMkG84cFQ4GKCEIOTdbyYmcRfiQ8AmmtPij393hd3Qo= 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=VxH2RudP; 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="VxH2RudP" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 72EDE20F5; Tue, 18 Nov 2025 13:02:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467349; bh=SoAar5e4cczyJk7rnolZNfzYWZRMmnk5ii1wO1Ebu8k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VxH2RudPFIleSO+fm7ScUZq+c65nb3rSWM5IS42QJ9iIR78RviIOol9RmtMJFICfd h7ElZXMnmWFPnC1wIG4bxN2qY2dZR6T3jlGMqYCezpuunInt5J4m9Tm/5qni4DFSWq YL3Lywfk/I53THG0Rispx/Xkf/dTKv6Y3qZjx+KE= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:06 +0530 Subject: [PATCH v2 13/16] 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: <20251118-b4-rpi-ov5647-v2-13-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=V7FlWOqeSDO4YW+g1M26ZIiLzObGIYwnyseduZBOsrA=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCG0C/uOTAV7B4fOgQDPSeXT4zYKpqdhdVGD iTRugDOaYmJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxghgAKCRBD3pH5JJpx Rb6HEACojfKmJP1E3lRMRUkDn8imbR2etdtMMPpghN9DtQzy04RSGu9Dp2zEK6vqLqfWbAbRo8y CqeETbGYn5LYrG/cCJf8aHY7obvIvT9qc2KInoDFw/z9h1cRJjJvqcsK2hBwZFuPkaH+LoyLOsW 3xdb+5licn4KohIIBcB455602OjItAQGDYMxByv4N6vyooSzkr3uY/KT4UvttjmdlkJ7W+tOBDk 1PDosAt4yJEsCSar3ydCkyxN+vcmaRSGdDx/CW1bz3xyVofRDNhCAyNojEFFX8Gqcx2QLZfthoy IzmgvvJsjRxxkdUxeNWNzNK1YH90iCeQDYS5mzsknqDk1wJdPZ9oogl5saRU3vpCbuFwNxzjbLG U1e3CIVm2M7qY8eGn2gqie33uCRpRIzao7T/mzqAxJbrfQL44aZr5TwKozbkzFr15zkxA/g+RiR hrykPT06CWIyevvc+9ny3c6Nrbqh+VsTDZifBH80MtNHqylOrN+PB8ncLF/JZgEMCs1DnsiKK1W QqgQxuSHr3UYQPRwSz46o6YYfKo27K1b7s9YDQW6aBM5zaDWzk/8vsgzfdQGnrrhkyaVjMc5zxO fmSdN7x7Osk6Y1huxmUeU9iS2dM8Ar5MZxYzCCMJ/IPaOjWH9saR/Gl5n9t2LDhRMdGaolzWYrk WD0JGXIJ97aq93w== 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 5cfc35e79562a6017719710935a72c2dd84405b6..1be170e1de3445d6049d44e7c03= 4f9c2dbe3a9a0 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, 0x00}, - {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, 0x00}, + {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, 0x00}, {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, 0x01}, {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, 0x01}, {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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 824873590B7; Tue, 18 Nov 2025 12:04:39 +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=1763467481; cv=none; b=ssKPcRVlbewG9h5o30i6E9w063GKb8+D0X3zqjEvIrZPripT2Frg2mxr0ZJzL8ciMyNxGU5/OnxgjL2v/kkqx2M02ebw8XEqX95GBRrSoVcQ8pGTcu0ZLm2oaWvVWRuXp84W9XKa8rEGHt2pe03JQ5gNwGiFOQRxyVZQ/Yf3//A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467481; c=relaxed/simple; bh=lvlMiOHNFbBwE/omPTqvB45A1Bm6s9ZJxvDePfFJ3Y8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jTo3CjTL+2WBG7+lb032zs9/wcpUHnBAVGQajrgLlM5XmvetLeR9yZQSfIdKMcpWozEVxqygVYA4628l3VcjjJWR2/w0GHr1vN+QPKUBji3Q5Tr3j4OpyOTMqhLCMtgDOuGdjEFpFPD4O82Ue2R+9RNmpKXyJZh0WinH00hmzV8= 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=tVRJbrr3; 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="tVRJbrr3" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 151D220FF; Tue, 18 Nov 2025 13:02:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467354; bh=lvlMiOHNFbBwE/omPTqvB45A1Bm6s9ZJxvDePfFJ3Y8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tVRJbrr3FCGIJq1nl9r7OhYrMOjv1ixgub77IhvQLLepsoFkdEt8fm+SqNQDdGZWx /NVlAnhYNap2EHzPAJAoLXgfx1qDbPMCMHLtnLFXGgR3udC5nMfg6YTOkgKgIM8h7P HH9Xbo9ep4EPE8gPtaLvQWYEYFntSXL6ePjZq64o= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:07 +0530 Subject: [PATCH v2 14/16] 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: <20251118-b4-rpi-ov5647-v2-14-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=WADhihksI3ywjmJz+4fYQ0ub8IRvrIxD/OvaFCnAiOg=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCH1atkUAdUX00Y7Wq57b/IGMem867E5CGYp vRzI64kyF+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxghwAKCRBD3pH5JJpx Rcs5D/98DFOOLxo24kawh4HcyrZSVCxcOKEGQr0qJ9wB4TrYb/EMuVhk9DyTMlpIqJyBYhdIyK5 /euf2Qy5M6IwLfa/9dU/Jqz9ontz8qE3JDC8GmNYCLP9sGnfsgUPgqQkcuw19XEL+Wrv7/RAxBD zqFWCjLFtixA9od9f+AzOlOSYTR3ZIVBIq9XnO7xEBmfzndfsMNxrZHg4TS+I5bEpryEBUGARVw Olx57q2Y6d5ZImgRYgcHL2HiP2dIh1ERy/KBwfo3ujhj+JRjL2m28G4WebDymQj7bEpeCsIrMPz 8Hj9+pXG9zbDvgtlx3hr50WbnK/GlvRcBNQLV/zf0C3/VbaswRtdjyjmVeKas3Hb9hXx/tqxOaP wBstvnfK9UHZmr6mkkhRftiEjcwx0mfHYGELIZSL8Te1J9m7V1f0M0I6LrQ1+rb2qgcfIbmQxkY YZf7T7owIJ+qODRwUtPmg92xysaEFO/CaEr5n+UmOVVdySLZThfqFyZGQd6ZBda7OFryMegDW40 Dq3g7rmeccbyTdreQH6Sv/nN3T7pPX9sOS+FAvBsLtvXwoBHXCAPOJ3YVGz09JYyhfwEgZl7xFA BNu5cdz9OjOsJ9VCOlK457EiOuS4G+LBNv9mALMTSyxHKmz8I+1zAUaAidC+iGw+/PDG+xLNl5f dLaa5R+aMFxw3zw== 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 1be170e1de3445d6049d44e7c034f9c2dbe3a9a0..3a2c25a6b6808bf1289a2357ac5= b79bf6bf99daa 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, 0x00}, {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, 0x01}, {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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 0343F3596EF; Tue, 18 Nov 2025 12:04:44 +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=1763467487; cv=none; b=NoMjvhIClz0HYXqb7K1wlIrhdJEzk8oCZ2mIvsNlKJwlog0sFCSHXPN1lTuIqzHUn27JSfxyoUpmxd4HuSDQjIuJsTf9Ij/D6VOhcfD09f4b9nmNq8R2YcoWkvkJZBPhcX70G55VFBcj8He59tKOcgt4vgjLgXX3K3AQcuh7kBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467487; c=relaxed/simple; bh=BpDORgbM71EJEbjswrJR7b3OCq74fh8zDCvCzLzXjb8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GxGDqIRukuFji71tgWOqc75Q9KM2jdE/51NtXH7DRZIQoo5fuTxmZ+InI6CDD1jdAJVAjRKpkjFukKcLNs5N85P1Ii2K1CQvlL2VBqVKXw9B8tCPQQARSTK+uvGHF8yM5UItVzYLPivSmRxwqiMNTyOJBL7txO5tue++Zs0l/y0= 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=C9uijmVZ; 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="C9uijmVZ" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 37191211E; Tue, 18 Nov 2025 13:02:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467359; bh=BpDORgbM71EJEbjswrJR7b3OCq74fh8zDCvCzLzXjb8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=C9uijmVZOd8UsSeMNSCI7KfZLrRYEKALTMedcPckGYpQ3cG39x+qJjLF+0xYsACLz s2wfpLqqT4YBGrEWUwaZzsiBinN24S9AbCaffGAVneTSRmIgNIh8EDo9CGG1RA2b5B 3zx02kAhcRz5zEgY+lrdkR+5AfnlbKTTdK1k3qfE= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:08 +0530 Subject: [PATCH v2 15/16] 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: <20251118-b4-rpi-ov5647-v2-15-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=1881; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=BpDORgbM71EJEbjswrJR7b3OCq74fh8zDCvCzLzXjb8=; b=kA0DAAoBQ96R+SSacUUByyZiAGkcYIijDh5yI5Hv5/Tlgpk2AT/c1PfagZFouwVWHulWP18zf YkCMwQAAQoAHRYhBE3g2Bjl1XXo1FqvxUPekfkkmnFFBQJpHGCIAAoJEEPekfkkmnFFDkwP/0tm IErMO6/s9hHe7I0g8md/TG2Nr6gbnTDtGBeh2y5eSgK/46vpEaLdGX3tG+5S6B8Y9iMvhA0+YOL 1+vFlmPdVA4zXLCxv0ZWsB3LTwYVzt7PhZzAFU56K244s3eK3/2ZyTPqH0sjL7aTuSOICFDA0l6 VMyLKZUin/YKJ0eyd3jZhi2dUYcWIfl7eBY9X33BozIxoEzuexjCRFuwDb7+4pl1fRl5/ENf51V u0SJP1Af6vuIfbGyi9zeWHtIYZxmT7xSuCs/Z54q9ZYEFk6OBCUxSji4uNUYLM9CpX5y2KO7/7m qd07Rh+QpYiytZqk6ZdQrBSpMF7kHkNzBcj4IZVNSfbfnw4UrLVddD8abj3rXYukhms92bK24Iz bVnR+OyqFeo4yUTvNAOU0+ZRntRRJec4Oiu6cW9wOkaKY8xvAb5fl/MiEa9ufKKrdhl8KnlErdG uXrhY1kVHaqTYWvCZ/gfiF3GCu3ekUJF9ejZRUfTjFUHArBmU0xF/vCUSwb4CK2gXV/jufdzt1t +8RIOTEv0j8J2ccCaemszBOQVGDSL+F1xYyaqyNBPnnwByAcZsHLwtOl4AgmHKiefcSXyjMrC4j tIaFDHy6t44ows4NOg8uSfLiR40DewlLVKQm3+jSiilsrHQlG5kJUigyZvW7Gndc5JSB4AdmIdE tto1n 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 Signed-off-by: Jai Luthra Reviewed-by: Dave Stevenson Reviewed-by: Jacopo Mondi --- 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 3a2c25a6b6808bf1289a2357ac5b79bf6bf99daa..71107d74f2900b39233a52b29a2= 29282bd087963 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1195,12 +1195,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. */ ov5647_s_flip(sd, OV5647_REG_TIMING_TC_H, !ctrl->val); @@ -1267,7 +1261,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, @@ -1306,7 +1300,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.51.1 From nobody Tue Dec 2 02:49:48 2025 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 AF6E93559E3; Tue, 18 Nov 2025 12:04:51 +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=1763467495; cv=none; b=BVSG+ig5NcuQxEEU9ISu+HylkWqDaXzekEUpJhA5Hhq2tWsTcewjKalEtiP4A0KH+yEs8orBtVoOtO4/Jb6hnTQspzQQ27lW73kz3NGNBp0jXNDOp6SYXNJuOWWQAhsJjbWNhZd+0qTxPHJhRWSphiQqjpDvZl5N20xBCEuDq5U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763467495; c=relaxed/simple; bh=DpkWuYfncaRWDOJhDgPhlnJ5he9guBR6UviCskUoiR4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l+Hf+gA3k7DcqOeytCJXmEC35W61tN7Z2wPnanPqdKxTPS3kBs0JyovlBLwcRa4fIF1Yz0vRSS1oQ9/X7XdTkemzJO3rihg/pkFDFbHC+nUh99Yz2ELzEKAzS2lJ5m/nM0d2P756Ig/4FF00x+HdaLoXOon3iQLLsDpevKhEIdQ= 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=QwuI/du4; 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="QwuI/du4" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c66:4b0d:7040:4d69:4c7c:d231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id F21B71FE4; Tue, 18 Nov 2025 13:02:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763467364; bh=DpkWuYfncaRWDOJhDgPhlnJ5he9guBR6UviCskUoiR4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QwuI/du4Y4KGUJr1AOwwDoDKsDUSEPyAh1EhWqqkOAFUgQ+CWufRO+YHIYQGgmfvL MTwcsV2TAYEWtXR83l8GRRzpjB/amAa9nNfEBV/oj5DDCLZmL6hpMMBq5Acx4cyyPo Yf4ASKXIGWjVjtkJ4B9eaiov0XyAxzy6aUJmLHAE= From: Jai Luthra Date: Tue, 18 Nov 2025 17:33:09 +0530 Subject: [PATCH v2 16/16] 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: <20251118-b4-rpi-ov5647-v2-16-5e78e7cb7f9b@ideasonboard.com> References: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@ideasonboard.com> In-Reply-To: <20251118-b4-rpi-ov5647-v2-0-5e78e7cb7f9b@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=3628; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=T1d9Hy1J4BXcVdPBAf0njg5hJALA68gH9mII9MKw4KY=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpHGCJMpN5i9euon65piigJ4n86ZUUGguRBoi0r 97PVr64yx6JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaRxgiQAKCRBD3pH5JJpx RYriD/oCtozvC3aZ94C3UYAo5HMNMiKMABMquC6EyiFQAqBTDdxYoiA0gK9NriiU6iS0aho6B9f IzJ2ZtC/CpFdCgJxeiJcb79M8j0nYMe0vfoXxegeorvN5OiA9gB6HRQNGUk6s0R1mW/7kfhmtyq BKgBEoajIvoERDrXA2iex8pepcDL2UWeQhBAPZri5tbHeIkPqxal+orP8d3vAce282XjrhzHoen mQL/X02RBujXmkIkUIQGteswzTSWPywy0GHN5YuH5Iy57YJkiO39wG/D4DLZV8ggF94dpXXAAp8 rjVrxHfISnvkUPuwIUbJ1/5yMWJzWFNNXo0cOWE5N9XwE2rveYAzeieT9zYjaZWb+Gh3hDQK9Pm XCHboJ3AelAHDProMiyctYRwEyZTrNdd5ZKO7jEAsg/RZkNazYu/SeMRixG8OpWhALr6pB38Cca jkvxxPoOZtdxm3N0lQmYfQEseTiiWsP/3rGMPzXuxcDF738sbkbNWHMGHIstUYpgt+0UWwacGx8 EoZ1XtoA1yfF2mUuzkJfjUENlQ7329b9U9Hjp99jBuBqehMlnaINIUOjP0Oribt7NRtwMtRK+gm 2OeUT2SbRqTffc8mucPp6YebLgOjGc7y8Buf0Vj1KhebCJMsrQH06IDHUFBH+FOc6RWoq4T59lB wbXVWqBKCWDgZqw== 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 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 71107d74f2900b39233a52b29a229282bd087963..de27e76b487957bfa0a072359f2= 8194425950eaf 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 208333000, +}; + 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 55000000, + .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. */ @@ -1236,7 +1251,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); @@ -1292,6 +1307,13 @@ 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, 0, + 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.51.1