From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7B08221714; Tue, 28 Oct 2025 07:28:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636484; cv=none; b=m1Vs7Uw29uU+5AcApIVWaFHVdq+Qaj7N6+EhoXoJcJWRxEuKJRIqWXFPYah0cItcvc94b636Ss5wXCP/ceGTVvi+3JxUqzIDf0KUp/EnI+IF4VJ77/jQNGDlXwkJoztAJLXAm0MD02BoPR8IphiTxv70WSM/DED/x+foSfDFass= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636484; c=relaxed/simple; bh=og8LkaaN/yOnabmGm0NkoOn9PcLr++/M9jUek2uOYnc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=udonouW9YVxSQTdL1fCxCvBSripVGdluBCAzxVgfe5ZvPOPD6CD4oOjPE5/SRmw25mjFuAwTJzmr/xcLSjF2l5W/U/teZ6gMC63qRmZYfq+pLpJhO1Pg+fDhES0tMIQ10x5e8uxzzdLwjKGAGtFvsGd5z4weS4XbfzsezZ8vk0A= 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=s/fwEuaj; 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="s/fwEuaj" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 66ACD176B; Tue, 28 Oct 2025 08:26:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636372; bh=og8LkaaN/yOnabmGm0NkoOn9PcLr++/M9jUek2uOYnc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=s/fwEuaj7SGDlDOLE14TYeHILm+XVuvCrfoB2fRjhhIkJMUMwAqFRSPYbga/7YvrI zgOwmWCOeke8F5xS0CwYs1y8I2LoeO3fm+SnaiwGBSpDQ5mf1f0EFhj86/skg/eaPx H/CiUyYoLUYXlNAfdY2IZ8ULhnQbh7cVynTf3vDM= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:12 +0530 Subject: [PATCH 01/13] 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: <20251028-b4-rpi-ov5647-v1-1-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1646; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=3k/xCjZp6XqE/F7ObaCjn7FHHU/2F9CezCuQyktY/ds=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBqPqb/GpQ5KhEjgfqKCxGc5EiwzXEbhVtgf fgrhoujWgqJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwagAKCRBD3pH5JJpx RSoXD/9ceKCWv1LttIPTTeKrjZO+CEbkICWbVKVFvfJHfXuzRWWrNCiD5hvIY/SdAJAEhheUV5b NFlw2knVae0dmcSyg5MEQNweaU+He70bqErTXqNqcpf+FmLGXdnhnxUnHnYVFFfU0vqpNJ4WAFD ddQCKgByIEN5XJlTTJyv3WzHojBp6DmHy3/6CKyp0+uqJDrOQ/694auM3hdWb+7ZTFupZ+vr7OR CXsvsPNFdX9vTSjthf8RO8w0LHclUatteyhFLB5cxovxrbTIw1FfjblWC8pic1d35finp/HIpZl fR8wPUc8DYY2WJ2mLdBFzR3grh52ZT5m3zPke8IGOKOX3aZFJv6YG1ECZzVCtCBp4qiu4p0cBmM sZOSD2RyGLSzcYnO0CP851rooc+HN3bnvf+rOhe1mXFrQb7PUbqxQQk2C3EwSN7P+XV9vMRnabu aI8sQeFb55fqUR4ddESXIBJLQcD2ov+raoQHSb1YbOh7SaGCyfUN1Gg5seVItfnLNNdd/bV01n0 9M6dfu/3UlJDgTU/iA7TEOAbf47Liuc+rX1gsoqg4rohflqvvrirtL6nqenJSG/LnOkiMEO1hN2 K6WssNtM5+atKFq2SxvQ06NZxyt6ba8LXRrYsd6MOJ4Mldqxx/fnlZWX9V8yMqgiDpaqOfpOjE5 8fue0Ie3OHgvlpg== 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 --- drivers/media/i2c/ov5647.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index e193fef4fcedf4661564c032cd7dbd80a9fd30a6..985a8e81529d2f88cb38ccb8c94= f8605026a28a9 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1284,10 +1284,11 @@ static const struct v4l2_ctrl_ops ov5647_ctrl_ops = =3D { .s_ctrl =3D ov5647_s_ctrl, }; =20 -static int ov5647_init_controls(struct ov5647 *sensor) +static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev) { struct i2c_client *client =3D v4l2_get_subdevdata(&sensor->sd); int hblank, exposure_max, exposure_def; + struct v4l2_fwnode_device_properties props; =20 v4l2_ctrl_handler_init(&sensor->ctrls, 9); =20 @@ -1338,6 +1339,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 @@ -1420,7 +1426,7 @@ static int ov5647_probe(struct i2c_client *client) =20 sensor->mode =3D OV5647_DEFAULT_MODE; =20 - ret =3D ov5647_init_controls(sensor); + ret =3D ov5647_init_controls(sensor, dev); if (ret) goto mutex_destroy; =20 --=20 2.51.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD102221714; Tue, 28 Oct 2025 07:28:07 +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=1761636489; cv=none; b=a/67Na0lFEIRlV0LtOqYBdnC+vOb1InA9YG/nFggqZQbIjZQTE6/hjYCde/MyiVHingQtuKuvfsnbmWCg6B8vWMMO9Vp+mQfz8L/H1Mih/YWS/rQMoJ6Uk9f3AJKwjYuxtZHPDodYzaYxSGz1jTrECoPWUGYeN4WAAFhYsEjBKA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636489; c=relaxed/simple; bh=30ILoPo77xBySjkLXEw7QlvqmU5skf7BIfuEYHZdR98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a5srEhbuhBJunPffCuR/ihCda/zfIBHptfBHRe85BwcGbFuT0AohF4qOHgqCldDzpRwbE7/IjVqb6QQoc0KFqN4Kke5zpMAvK86lZb7RC3WLVmWUt9+FyjtuZUGrmHU/Z3kZ0rQQ/6HFFkW9m/Lsyf0C5BZoTeh9JePyxS3cZeI= 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=fscolYsD; 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="fscolYsD" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C73C616CD; Tue, 28 Oct 2025 08:26:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636378; bh=30ILoPo77xBySjkLXEw7QlvqmU5skf7BIfuEYHZdR98=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fscolYsDGzTMBnZVwO9bJdofCml2Q8L3gWfif4PfIb8W+8XbNscMk26M2yfeWoKtx 7DiTDVbUu5xPsOhq4henR4UjQXv3oTQl7pW1QoG4KMHYbayEoCHQ6Swg/WTaHojiSq QEadO8lyQbr8DOI8z2V5nzBxmmYSGTP6SVviA4zw= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:13 +0530 Subject: [PATCH 02/13] 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: <20251028-b4-rpi-ov5647-v1-2-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=885; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=CJs7e9E+Hg5gO+HcnPJdxVoMvaJYhqSv0fuOv7YG5f0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBriJGY9PeKO+7BJRX3vHbKElUWEMTMO/gh+ qgg3kSDiWGJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwawAKCRBD3pH5JJpx RcezD/9/hUDud7CVVpXygBnrcmgkz22uA8mD92QmuvUuGfkM+tJc/5GTrqQzNZ8/eNefGxlfSVK Ysr8MIsAYg6KC56McKq1TbPSl2JPMEi1ZQQsQAQ/yPIUzoSU7o7w/L3AEmtK+O6UXY18///YoRy YMtWhXM4DGGYmSVlp3oIstJbvWkjF3k+v6SdWUa7Yqe9iviVmD1bG/RDJeNbdKXtfSGlkZL/qIv 7V1DimKWdeiG9fGaqcly+id+vu8QN3HQ/Y64cAR7F+e6wZ0WJuYk+1TiBjJ3TXGUspfM+3/Yh96 cOpomWW7TWz3NbvB0hV7USqZjri0KTtWLONohxZCeSwR2qwq79auWm5krM7Ol4L+7xMU9wzxpdX MfaeOm/WyL1fd6BIXwAB6HBXdOCegNlQkhLQafkUz1OvRgtmF/wcupP4sZgCczOwXd9sB40rxkj +5Ne+AsMwCHK3T8LmI8dYoZDin6Jhl+/keZRmDo0lxQLFdOSbgHPkcdzPYOidpcDDFfnFUh4zbt bswBr3iUR2Nc+kFF7b2GPI/9CEM03jUGKDUwzA3BcUO8VJ4Vv04QuIt6jWeO3BfP+zp+mur6O63 uTUrwqX92GEAMeaAW3jqmHPWG0WhTHCZ0WdmpSybeTpvzWZcY2iZtWll2de1yQS48AIZEfDPn3q gXlTdwqdqQ3Dm2w== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 985a8e81529d2f88cb38ccb8c94f8605026a28a9..4fed655f5a11c38e76d1ccc9ae9= 155cf945684ab 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D559D2C0293; Tue, 28 Oct 2025 07:28: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=1761636495; cv=none; b=MwdroX1MYyrfINPigqFD+xBQj40j8lVXZAXyG0BqDbcXryF4h82RyfgDSRcFGf7SSmWAeWpjoepr9jaLNGu3XaarlU/gstj5mo4UnRVzLDZLF0eHih6u9zqV3H/tmjlQvNDdSrRFEvsc97wLNynqABi+eoR/U/fSWLxMhiY503A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636495; c=relaxed/simple; bh=Fh80gJ3lgO5wPHm6q3smMCDKrH9wSJ1/al9aJipyqDU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GV+Ym/tgcaIaVATrMZFBH/Y3ipGv32ezx/Hn0PaSWSagzzgZ4fJ9Qo4QWq6rZ+pbf0a+IOMaBQra29GjSj3hm4vyp6aKr2JzFkhLxi/8lP/950elneXZHKi8tQqYsA5XeesxASA91dHgQ0EdGF8LD/2d1AO/xuliuKW2gSKOABc= 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=gWrCpmmW; 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="gWrCpmmW" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 2400416CD; Tue, 28 Oct 2025 08:26:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636383; bh=Fh80gJ3lgO5wPHm6q3smMCDKrH9wSJ1/al9aJipyqDU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gWrCpmmWXudked9fq+1WeZDgdsvABB6yBwn3AY3Uq2FdhMQo6Mqho4SjNKFiVSAH9 1L5kflxFdqfaJ4teXc0z+DQrDuEY64ufF9A2XyPmTIDXCuIfvsFH+uix+zRUGbQbPd 8Oepd9QsFtI2iXkRzneZ4RKQbLCq4GQIuZXknyoU= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:14 +0530 Subject: [PATCH 03/13] 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: <20251028-b4-rpi-ov5647-v1-3-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=949; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=txOyxp6ia1h8UAHDRUonSqN/ZHogzMl/0zPZ6skqky0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBssG5A18DKQ/N9wRq1TUQpGsr/4J3VJEnca 5r9EKpfwpuJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwbAAKCRBD3pH5JJpx RXz6EADBOnadJip4LwDCzTE5txUSlFVY2Hmdf3nyepFGvLr2wb/O16vzYST+/j8uOv9iNJ+6xHh ZZLRq10I394kiKEnhNp0YXIR4DHcFebyEWrr78u72AmI5RMp8yAL8laJ3/RdCLtkB8uVWFCmwPC NwIG8flyr+k+pg+HOX4MGsq6qx/vo7oqjGixL1RIAOBqTN2l9/z/jbmbucXrAtdek7CsmG6yWvM w+ZsHHTSP/GGO6mg35QKyGgqDjSyzpEiDihQdxLryM8gTClWiI1vtIjHYA2NnW7Xy7grN9JfhkY iHfCwvtgSSFgKabUMZcice3R3VoF5gA0+Dx57aVmK9kcynR1GDObdRWUAmgtO/ut8PpSL2yOGQq eE9uRo1O0t1loH7BLdQ8teWp6uoA791kgxSjmrXhQXKnYRL58H53r7Cnma/5yN8D+iSSSPzm5cs HqJpDjDI4IZZzbnNhR1idnnpyZZOFfhZWxYS1vt8DCOw19oEdzZyp7vKCQTSnqshmKSyN/WO38J zuuN3pMfqxv9UVOiek6alPyUxKrT39v/GB/ak48YVMIHGbz4HoB5ZKAVDIB4tMGum9xWbh7IkBc zIlI2hxtlOGtnMa1qAX/DQh6rbGPXAY+MYjclBwukz9svqjLBpRff3f4zzGwPLCslSqIm1Y61fN przmWS7uG5CMTQQ== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 4fed655f5a11c38e76d1ccc9ae9155cf945684ab..dfe36116e6d3936aa0568f172c7= 9ad4dad21f8c2 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B1062264D3; Tue, 28 Oct 2025 07:28: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=1761636501; cv=none; b=s2sJUSa4b6sabjB/yaBYQNhoXZEOQrhWbM3V5JBhKVd/ASoeSMCUz+dM7kuJv7d36xyVH3dII6sBF1CqCmb/7xbz/75Vnwvy/6yYyKnoOL1rd/NreDfxP+WqURe3IdxBWy0eYWuUeiUUWk9V4ri/GZILnyfd7WfIZICq3Nf0GgA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636501; c=relaxed/simple; bh=RvzVEAoJMHvm4dGEH4RiaP1tEVtynTIVShAwG9CuE6Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gIav/iBSB1FIa3aimlq5L+SUr22UC3relVL9ky+/ewDgbk9NrdeXxobKRwFBIREGgvwVrHFNoVw2iShmKrEuq18B8UwGh676lfmEsXMwVf6cm1OXqmRtntF3JSlqXdnsPBcvOmLRgoi4/J1gv7XBA1cAGOD461rWBXbDm/7yPO0= 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=c4Uad7QA; 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="c4Uad7QA" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9A3BC16CD; Tue, 28 Oct 2025 08:26:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636389; bh=RvzVEAoJMHvm4dGEH4RiaP1tEVtynTIVShAwG9CuE6Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=c4Uad7QAnDYe1V86WoEWqvhWRujml35IZ6g20UxWbp2uYxoRnewDJAl2Pba4zZV/J Qy5DaIOebLvKLcc84Cf3q22tOsl11VFOygboy5r9MzzR210POkI8DUsyrXjBkq8Q4T 9iH9PmnYfLrnJ+uBpob3v8+59KyRV9zoQ93mpzwY= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:15 +0530 Subject: [PATCH 04/13] media: i2c: ov5647: Fix v4l2-compliance failure subscribing to events 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: <20251028-b4-rpi-ov5647-v1-4-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=932; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=TYUKLKxqjPcJ9GcXCpkS091eTQQurQJjbZE3kfXO1f4=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBtlz4WjZitASM+pNPaItfM8DlBxOCrjiIv5 2sZexRJeJCJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwbQAKCRBD3pH5JJpx RaGaEAC6/7N9eMTj2UDIdUp2OYlNH2gjnneUeU+Bk0ItpNlirurwCEGGpLXsq78Cfnjp8hC2/vI Jk7zSwDkDiwzsc3UxsbyJibZ71xXpwfYDmAl2fStxs3e2XW3O9d9rn7N18IE2ODOrDzxd5udvPJ A1I+rYEU1Vi1CnzgF/R5N9YqOkAuXfh09vrdvPKTPIIiR2yo4nfoD/hPaCgcgQ+U4CGqT9dzmgK NNCpLajIM6brsz72cvs52/JQnthKF4ayH0v64UkwjjscdDqtrQv6Jx3POkF5P3XnxbnbuHZ4E3x 7fuycwYwnEUEtTgOpe+SRWPUtUmllHL/oLBMxIV/iQo0pjKYXP2px99YiHFTsP8QEyABMUXnMXb bGlGWyoOxa1L5a6fePNVs+v/q1fczEHJqUi5gO2SRiOLHTYo1TOsl/eo2uLiHMrPnHRC6p18zEQ QVjXJbJ2tXQXB+8giL3fsKZi/njhjRS2QBoLV4sFw2nNUCfhP0Xt06pnH8JK2EPEH9tp/di9na+ AAi/+BOG+obdTMF94YDBO3uqx6zxNBbMPUsZKlOxTyyV5MRD/Pkg79KOkfYJzatMf8SlcJavqE/ 5YBQdyu9KlQe/zoVRD0727TJfPjGAJMNhRBAIyKJeiwPEDrODkBr+Ba8apqMGh2HZpP+eJ1P1Ko RBMmzOx2eJ8F+8Q== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman Fixes the following v4l2-compliance failure: fail: v4l2-test-controls.cpp(871): subscribe event for control 'User Controls' failed test Signed-off-by: David Plowman Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index dfe36116e6d3936aa0568f172c79ad4dad21f8c2..8f11b5cbdc1658019e1340e641c= 7e6f398bff503 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -873,6 +873,8 @@ static const struct v4l2_subdev_core_ops ov5647_subdev_= core_ops =3D { .g_register =3D ov5647_sensor_get_register, .s_register =3D ov5647_sensor_set_register, #endif + .subscribe_event =3D v4l2_ctrl_subdev_subscribe_event, + .unsubscribe_event =3D v4l2_event_subdev_unsubscribe, }; =20 static const struct v4l2_rect * --=20 2.51.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E9465270EAB; Tue, 28 Oct 2025 07:28:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636507; cv=none; b=TtUzh91N7g0aj0VJa5zndTPfn3YWtCOLC1EWu7s8ALEk9LBA5Ee6nEVZe2xMkm2JxCVT6FM+HRq1ZHOtH93oO12HdCHE91WrfZmiiL6s1spF8o8gZaooPeXcVoaSEvcfqG3pOz+lvbtKyaHHo/+sjjcqfL/iJ3gLdcG6Dx3YHoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636507; c=relaxed/simple; bh=y2/5q2c963HrAKPoNqekg85MiTjudgkhnTO49szxG1w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kK0RcUg/GxL5ZAr/5Fulw+7y43Ohsl2piYJOvFwgfmu/0khAEr6+BrCv/sOH0ZrBpP5uNJLEraGdfPk09vMkpMdCQ+YG1xvbrRX1Obl8zYhOfVNcFa3txGa0bLga8fPk1XwNsHeIDTCkPYLQMglwVhH34wi9SSIO1qziK5IF50A= 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=Wf8NHudd; 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="Wf8NHudd" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 0808A16CD; Tue, 28 Oct 2025 08:26:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636395; bh=y2/5q2c963HrAKPoNqekg85MiTjudgkhnTO49szxG1w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Wf8NHuddwsskBOuBNq1kMr5xdgtBGpo1TLCz4NinctEwz3K3pIdvGWEnjHkSPmF2S RPpp/WIbHyg7WZqVoX9A1Ip4k0vWlY9J+Nel1IFvY5mRVZpCf7Ms1eftyvcSC1TERz rRIvT9vfXXt76v/mKagoZCCCeXj9Yn9JyNDOEniw= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:16 +0530 Subject: [PATCH 05/13] 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: <20251028-b4-rpi-ov5647-v1-5-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1733; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=UxmCaD46HmJQuUVO8AEj5Rqgfb7dYdy3dtfPYb6H5qI=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBuDpoXdhukx7/xQxGDhkhxz4OSK9x/kzL+M bg7m3+L78WJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwbgAKCRBD3pH5JJpx RQ5AEACfnCEJMYZgqnLfdXP4Q3qrreuyBk9IRT9P1xQNtLbGo+sgqvZgXSOMz5+WvaXlsKhkfzD 6h2sKot0ofkeKLV/9b9/o/GJzsISgJvjlsmJxeOoNt2tY7Z3OdYt50pHzS9G7RnWiHJGt+8c/vG HesDbKtYmXaRTBmJZ7U1nd14Ps/2Mg+bdK5vY5FnRCYemYaJlhlTHLxH+9ZPEr4jURzR2cqO0Ho P/bIXdO+zSlNBCBRKQrOGo9SfJHsNSTmcm1DYMqMP46j0v0KqhZ+cObPWsvrRWYxeU5olccX1CB vq+MR+u+3bxEixIRwItzADV9pYWSce+5bfUWS6NRxJ+r6dJ4m1oW1QbfQTa0Wo/mJx/IuY1+Kp8 YLV+sh5Y4++6tsD1/2gKdDl+piw2AIUv/A96asicLzX7TsUtRVxi5ltOaGQi+CPny9okWQ7Cc56 s36G5tJIcISrubt5PWqQqsBjl8ArJxCWBbiWyBW5dJ/qMpkpTDXcezwaB1cDxNZy0Mser27dFdL 1RbwRu0LP28F2iFzFvwfwbXfdsCitlqSOvVvlitXj8SDlCmC3EpKqyakFY9bVmZXUH3OPrPdt1G AC1bl3qVBPdXg9EuuIVP6E66Xw7QrgjVD5aucgYy9jY2ABq11f+vpDPkgv4dfg0/yhW0wrysxRP M7tlxY48jXLUTrA== 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. Signed-off-by: David Plowman Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 8f11b5cbdc1658019e1340e641c7e6f398bff503..977b878b0d4b8cd5f39f510ebd8= b33c9163f7da2 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E6892D4B68; Tue, 28 Oct 2025 07:28:30 +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=1761636512; cv=none; b=mp/89htf2SAIkPKiLGzEG/ueMshYeuPZ2GfmsOcPP1YoUCB3MXy6pBf2ts0K3hGCImcICPuRs84Seg3DmUEO3l9KrsHEbX5u8fyecXNkapsuPwKk/mvBGlwQEB6tR8lmT3hAoULBKz6EL4eJDLcT75PEGu05ezlQR0n80xZ7KcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636512; c=relaxed/simple; bh=ftmUckqZaFlan2uKP1aUiUWQwXNBw/6Mln/tkJnryx0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b83tc+ar/3XvqgDh7bQ6X4YsftWHXSfGRhyfRSXS3hLjvhaGzkDEZYlwy+Ci58MLf2sptHNVioH15k7mmxuupEWKOfNTp43uPE7oIfhdu/5vJJVzOyaKoQZcgkKn4pufOtmm0WtN2FMginI9QyNyHiSHioBBSE5gLQ5pCMkF8so= 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=v0EOzCwp; 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="v0EOzCwp" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5DB2016CD; Tue, 28 Oct 2025 08:26:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636400; bh=ftmUckqZaFlan2uKP1aUiUWQwXNBw/6Mln/tkJnryx0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=v0EOzCwp7h8aOK4HPD8Iu8uh8wNW5cRL3HT6Aoeadm8iBL8KUC8pGDmacoLk/ijX3 +zqXBtVtsEvEbS4tnBwvPGFst8kgWLJvy/tQbB808ox8aYFdEC6q8gJRv8f/IhbLfW aMEGIKrkERjVrXWW0EFm5xx72ZnfN+WxYi2fSpwA= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:17 +0530 Subject: [PATCH 06/13] 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: <20251028-b4-rpi-ov5647-v1-6-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5774; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=1EXulmXFa/lZKYReuXi6AgteQ2bqUWS/5ziep5MHILE=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBvMnck6nVP5XQg95TnRX3G7qQLO+wYQUQ9G WVKlXcUlP+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwbwAKCRBD3pH5JJpx RSNMD/9DZUWeHUe3HFJb2cx/lPFKk0mS+nqOWjabPgA+LXQqbNtWdkoZUWPde69Eszak+5Dykog EuNnE5GwIxiOhs6itul2hdXAzYBr8ThSfdVag2kDgE0f2yajBH2AQPPq9fQgd2kSuiL2SWmYWOj 2dtATyYl0aG2ymYsePvJ1YX2Fo/MxGlvlNu68xTSE82qlJ0G1YGAEBrI0gxeENSLoBh+KIv/6Y7 ECi7BPwsFAwKbEm8TbvuC7Sce4AQFYzwpXaLo9FH3VXMiOqweJe7peKTU9FOwOGVB6resOoUFjS kIfO99mJBBomZgXvcjw5LiTZB7K49I53LuQp64ToOBX25bdzrUHYJR8BVeMHBHXSOLbQJs2riBi tODQYsaXnK+P9haBMEixA/DETmAwidSfy3P8w1CKIH9M9RPr/uAA2Bl2lw0S5dRZNs78IOGdGCS py+oYDTVAkYjamfxoLE/t1bPBVr8q8KJaQbjs4DPI2z3t8MR4WXFPMIxhi5gNonRo237v3BUtzF HVjvbwcB84pfCE0Qa6rBBPZ1KwKRh5NgoVQVUHD67AfxYb+JOLPzx+I+8zfwFvrmCgJOtWX21KK kZvQPG4MQRYksqeYmo3lyI7wU2XeI+JiuHdQ4bwSEbHSKbU1w77jxQE71Ti0nvZmm12DVaZx46W Koi97xHcbSknilQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman Add missing controls for horizontal and vertical flipping. Signed-off-by: David Plowman Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 77 ++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 71 insertions(+), 6 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 977b878b0d4b8cd5f39f510ebd8b33c9163f7da2..a33e2d8edc114d302e830639cb7= cb161f16a6208 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -54,6 +54,8 @@ #define OV5647_REG_GAIN_LO 0x350b #define OV5647_REG_VTS_HI 0x380e #define OV5647_REG_VTS_LO 0x380f +#define OV5647_REG_VFLIP 0x3820 +#define OV5647_REG_HFLIP 0x3821 #define OV5647_REG_FRAME_OFF_NUMBER 0x4202 #define OV5647_REG_MIPI_CTRL00 0x4800 #define OV5647_REG_MIPI_CTRL14 0x4814 @@ -109,6 +111,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) @@ -150,7 +154,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}, @@ -239,7 +243,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}, @@ -403,7 +407,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}, @@ -419,7 +423,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}, @@ -935,6 +939,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) @@ -942,7 +966,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; } @@ -953,7 +977,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 @@ -986,6 +1010,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; @@ -1033,6 +1059,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; @@ -1208,6 +1236,25 @@ 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; + + /* Set or clear bit 1 and leave everything else alone. */ + ret =3D ov5647_read(sd, reg, ®_val); + if (ret =3D=3D 0) { + if (ctrl_val) + reg_val |=3D 2; + else + reg_val &=3D ~2; + + 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, @@ -1270,6 +1317,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_HFLIP, !ctrl->val); + break; + case V4L2_CID_VFLIP: + ov5647_s_flip(sd, OV5647_REG_VFLIP, ctrl->val); + break; + default: dev_info(&client->dev, "Control (id:0x%x, val:0x%x) not supported\n", @@ -1341,6 +1396,16 @@ static int ov5647_init_controls(struct ov5647 *senso= r, struct device *dev) 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); + if (sensor->hflip) + sensor->hflip->flags |=3D V4L2_CTRL_FLAG_MODIFY_LAYOUT; + + sensor->vflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + V4L2_CID_VFLIP, 0, 1, 1, 0); + if (sensor->vflip) + sensor->vflip->flags |=3D V4L2_CTRL_FLAG_MODIFY_LAYOUT; + v4l2_fwnode_device_parse(dev, &props); =20 v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, --=20 2.51.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B8222D543E; Tue, 28 Oct 2025 07:28:34 +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=1761636516; cv=none; b=uXvePCM4UMwDu2gCkS/bOSYsOELdEfdAZgknNtDkOAZ8CPqsHXhkcmeCDWsyjygJH/QmbG28YE+0niMDHBU0Ws1ou7GYqMUwVbhetbnXiWy5eyNFmMck1mhFBazOQIup6jE9hQamoArTh1ghT3bKXV8MKhhUMhnHuY6+ty034MI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636516; c=relaxed/simple; bh=q+StBYTzmejv/5l/RiGMUXSrJLwqE/dTzzi+5/MoYY4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BSBPijRCwJQdYd9B/C4BtiKnswpf6bddcuI4ge3BzrreQdm5DbekzNtsocRqhSRqGTDswUUNpdd22mJPPE9dx4LsyiMiz2yaUK9YW8OT4huDmBQGxYV5xd5HUbo7QAX/2RSHqpMt828tv1ffADDVDQq6JRgGJ59P8x/kL3tJfDI= 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=RIlDdkm4; 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="RIlDdkm4" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 2344816CD; Tue, 28 Oct 2025 08:26:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636405; bh=q+StBYTzmejv/5l/RiGMUXSrJLwqE/dTzzi+5/MoYY4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RIlDdkm47a8oRu7Z2r01nJopJ9Cl2/++aaMCWFBp17CnuaSKUMjelVnR8vIIsVbzu HfR0uD/i3GWUlsaav8wtwvQLqbm5RpmTpF8W3oGN9JJGCGSaeZuT8TmGqURnsgtBQ7 VVemHTSld1NC+1ltQ3+RCdbhhQzqKBgmWe6NGyqY= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:18 +0530 Subject: [PATCH 07/13] 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: <20251028-b4-rpi-ov5647-v1-7-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3299; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=mWcpcpF6s2jr/LpS7qwHjUxpm3VuRWyeuyBAMhYHvTs=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBwLU6weLK1hXNoS4ohKmzLElXLBLJCgtlsD wvvMRjytfmJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwcAAKCRBD3pH5JJpx RZGdD/4/W+XTFslGF6zX0HGwviFdZUoo8Ylg/wAERX/hQC8J/A/LPvXqgpFKv7GIU7//9/BZdXt 2P67m2/JGHMH0bifCMawaAF/bMQ+IBlL5mQYy8yj7lc9NLHHGPje1kj9nI4v9VXJRxHA433ocXy EieGrZKdi9EmfrhXtkwVqu9sNVdIR+4Mk2AbBmm8dnrIA8JfTa/hgt/+D4WMfKy1hGdDcbBeY+5 FSaXcj3MB2Kv+TZFCijO8smjj10Kn/bhxmyO/4p6s1SfXjRp6IbYD18cZc5OPkQdCG+NMuSqe0v jmnThGvXKaUz6bZKnJIzyVJgPPaJQI6C/t3gaqLFS6YfvvQ3QGBOXdlXXfrWZAU11e8xD0E2RZh /rWy8rQhGmcMQKD/qcSw7s+HmAiKb1Ht4bD7rMis7DGSiwYRtd+kHS3L7nxayHfn3dT2R0au1W3 /UbztBxbV+7v+W9A6TPuFhwf1fgPa6VFapj/Pgy9MlaF4Z7zQbupcYNTYnkqMDx/Mffaj63teCq RT77Qxg1GJRhWPmu6z7dtYCF0c6MAF3DABFG+O7tPPZKf1xdAuT7um8hu+zSdms/uNvIfu+ShpM g6aP9ZPlT8h31FZYA0R4Xyeo4ATO3F7r1IT4H3QcmSgEcte7XOxwnTgLPik3R9HbT+gIMKnqwjW mCfgq9KyUYcvw3Q== 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 --- drivers/media/i2c/ov5647.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index a33e2d8edc114d302e830639cb7cb161f16a6208..598764638d518a28c8ac61ea590= b996f09ecd45c 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -83,6 +84,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; @@ -104,6 +114,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; @@ -781,6 +792,12 @@ static int ov5647_power_on(struct device *dev) =20 dev_dbg(dev, "OV5647 power on\n"); =20 + ret =3D regulator_bulk_enable(OV5647_NUM_SUPPLIES, sensor->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators\n"); + return ret; + } + if (sensor->pwdn) { gpiod_set_value_cansleep(sensor->pwdn, 0); msleep(PWDN_ACTIVE_DELAY_MS); @@ -812,6 +829,7 @@ static int ov5647_power_on(struct device *dev) clk_disable_unprepare(sensor->xclk); error_pwdn: gpiod_set_value_cansleep(sensor->pwdn, 1); + regulator_bulk_disable(OV5647_NUM_SUPPLIES, sensor->supplies); =20 return ret; } @@ -841,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; } @@ -1341,6 +1360,18 @@ 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) +{ + unsigned int i; + + for (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 device *dev) { struct i2c_client *client =3D v4l2_get_subdevdata(&sensor->sd); @@ -1489,6 +1520,12 @@ static int ov5647_probe(struct i2c_client *client) return -EINVAL; } =20 + ret =3D ov5647_configure_regulators(dev, sensor); + if (ret) { + dev_err(dev, "Failed to get power regulators\n"); + return ret; + } + mutex_init(&sensor->lock); =20 sensor->mode =3D OV5647_DEFAULT_MODE; --=20 2.51.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEC612D6E74; Tue, 28 Oct 2025 07:28: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=1761636521; cv=none; b=fThV9t4xAsT0EZpByQfWbBYtVuPTw6dXbxTBLTOd8Eu0+Y+ffA4lox8I8QbAwCd7vB4tlckgJRxlua/fr6cdJ1P23mIkD2Sdom3QyY9EMrhfW0ULzoABu1/v3WnbssCIZyhPYnBIsU1HXuyZMZgXzRaDacCJe/PL1Ehv5HTHZKw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636521; c=relaxed/simple; bh=uhlL1+rGtT3FixHKqfVFrwRFvamKgHLjbuQUzUyVxjw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KnD2kv/opRNfj7BccCkS13/mJ3Xnq3GOBYKwo8c6mXHd5//cvxH4W4Mdkc4ibrDewuBBHMVPZyuKh8z4wJQSGJWOeyOhIQeSSJ2HnDRuZCtw/ciL0LvNpucJ16QAWKgqa7betw6ha08aj/wE4x5vZcM3HMnfKsGD3dh0ZVH/iCs= 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=B76ipwWi; 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="B76ipwWi" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D5C8016CD; Tue, 28 Oct 2025 08:26:49 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636410; bh=uhlL1+rGtT3FixHKqfVFrwRFvamKgHLjbuQUzUyVxjw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=B76ipwWiAyYE/GLnID7e1Hetf4vj6Q54s/hEaL9gWTl8MmOe2EpPPnoAd0Yi+3Xv8 OOtMx3FkM6aVgs7vJBulAZ8urYAhrQ7aeA5gbWtyTUxZ155oeEudK2T2lfuZqRnKb3 cr0fS0MiqBXrHPMaN/kzc3OwM2WgnpZ8Tuz7z0rE= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:19 +0530 Subject: [PATCH 08/13] 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: <20251028-b4-rpi-ov5647-v1-8-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=869; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=9JGvy8SNuXsAUgJA+2YZKoOTql44ybWcLqyn8tSBJuM=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBx4tFHS+uhKrQqHOdtg8wV+3hqeRTLPApxc I9Qn4bfbk6JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwcQAKCRBD3pH5JJpx RZ46D/9EtiLRDuKoEXI6eeEiSOigLtxt+J6UlGA0DB7upXa39+gv8SZyggRh6XGFuue+sUQd6m1 25ib867raCbIHd5Gw6kWO9HHQELfo9j4g3yp41ELQYr8L1jqb/I9CXlJIZpl+JC6PTzlGQiNMcq XsgEOOqan7zCETIx1a0jGl6HcVjjTa/aT3bPGfB7hX5oiWSxrSvpE+Giih4qY3VfBaYDOWCgeoV YDy7bNQ510I8EnmooHeVZgw5hlRpA/QZXxDTP5TM37t7a89/o+N6XjksJrZalXyRhcdu64ySk57 vPYBhLmSwUk6r/r0HbLRT95gL+LEIeKrjiRJm3IyHXSaLvu0tCSEIv+JWBxOjbGOkx8SKBgZRu7 fx5IRvdFOizoiEBHOaNmQWTDzYVKnreKzD/5OLRCirtFScU0mPLL2RaU1/y/2vSkOuOLCOYMo53 fjzTZUHCnAQC1ToUA2Ng/awqH2QPaLwIUnr0/FE+o5HrQf22OAKAZawMtMVuZvzu/q+HDqmoeF0 aITW01Y3Ep0uzLbEHSjYAgELunvbhYRO+9P4+IDAUe2l3HnSYHaYQyw14JQCVuMnqrlUVeOlOkJ NwTqmIlYSf9ZnLCEdlDNWQ/DbsXGxtEIKKW8Uq4JSbuul6jXdXLENqNhVW3zJag3vKC92TH7AeY SiZKGQY0Bh5JKHg== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 598764638d518a28c8ac61ea590b996f09ecd45c..3aad3dc9b5cd0c24c07a37e2567= e3c61c52e4fc2 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1553,7 +1553,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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CDA372D7DF9; Tue, 28 Oct 2025 07:28: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=1761636526; cv=none; b=U3BnJvdRv9py5TR4yJG7GAe75vJ6Ood//kxnusAbtDeH2wCvEWJUt54yxeAufgmzyG5X3DLXuVgZfuPxL8k0XpFWeE1O8Z02kNQwilXVG3V5e0CzWEpDaC/PN9HWu7uH7qIGMl4t/fyDC2oM0O0S1ANAbFwUJfDzUlxXQ7qLjps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636526; c=relaxed/simple; bh=HcRfHafi+fSKKt8vTtoNShb7iTHV8TCHOmA90RRFdvo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VzF1DvaLNuNSTQCW9ZbQnHuMZOQJgwSGPEVmYubwNwoZMwe2WmuNL5cekISGTdhxmk9l2OMSgIVtdzg8F4MRnYY+DVdXn999LcKhCs+H2ee3HtNwK5/1JYBNxotMVvIJEHz0eowR5OEUrdsbOvkjwN17HyiTR1U5h01v86a2X+o= 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=TXHY89Gs; 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="TXHY89Gs" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EB2EA176B; Tue, 28 Oct 2025 08:26:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636415; bh=HcRfHafi+fSKKt8vTtoNShb7iTHV8TCHOmA90RRFdvo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TXHY89Gs7Tb11B2Du5y1U3o/Dx2Fq1vaAcNxdKCqUXKUDs5s5D0yTrQAL9jg8g6gk DqHesYT4YWiRXL0pARaOOJwZXQVmB0g8Q38x4t3P5WLh42kHik3mpEyHoKhcACRbrU o3099qjDey8MexP+glY8+ExDs4w7ODeoxsy9pHMM= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:20 +0530 Subject: [PATCH 09/13] 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: <20251028-b4-rpi-ov5647-v1-9-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4357; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=QS1AqsJCLG9Gp+IXHfYjJ8vL/00BWzwShpKdv+nNPPo=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHByzrjSVjzDTm9urlmHEHk+rCTXz1AHSEZOv oDNE8PMjnCJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwcgAKCRBD3pH5JJpx RUrCEADGt4oKwPBs3zuvKjyEBzCMadStQ5P1vL85ky37wdKu+GaXG/Ch8vYOeXUUpfKkdT2MHtL g6jXdn6FTVQPDvVoT59hHK8dxDUBC1cOakSQGMPGlKQzygvw/NiIllSSdqYIGjYBgmLr1NVSI+A fe/sR5DzdRyUOvED/wf3r+otVQ48ZL3/k27agPZINRHXHDVd9LhaEyRa7+ZLnYVsnmLNY9+RsjN 9yStCUomPvcfg0/ECTmUxb0TMJHqbKa5ZOA3p9WKnNs2iJJTnDuzYn8zxQESB5aCfqAVldvGYp+ vOdPGrSCRAWvj27dUzsNbfKXbwHfBEeGrHr2vasa8ejzmtXhYvvoM5/ff7CcsT9kJn9q6j2n6PE 5JeBKXOw5IM62HB3MkGJzo2HfazK/LBNfUWrAalOaXo6h8Fm3q3fvk6mNsegkyNbwSFSUGegcW1 1x/HGKSFdQq9EyTP9vtwfmJKVuh3+sa4CQ/l35ti2Nsn3zgHqh1sgacIXSDGTwEwOBRr6N+nPWr M37X2VaeUcki5UuzRaEP+gkLEzXoM1DvO7JBreNoB37dNVyQ8LzqMtteNprgRGT6OE/O58nOZG/ 0KRdSnltFD55w/TcaustOC8xdATypKEhW1dgEY+953Q4Afepnt7u/y15bvHlIE55g4XLYepHpuA XvYQrBmGJkvwbxw== 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 --- 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 3aad3dc9b5cd0c24c07a37e2567e3c61c52e4fc2..59c21b91d09d79f073a54871221= f197a0bcf3aa2 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_VFLIP 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}, @@ -1061,7 +1057,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; @@ -1325,6 +1322,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]); @@ -1332,7 +1333,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 @@ -1409,10 +1409,11 @@ static int ov5647_init_controls(struct ov5647 *sens= or, struct device *dev) 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, @@ -1446,7 +1447,6 @@ static int ov5647_init_controls(struct ov5647 *sensor= , struct device *dev) 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 974572D876F; Tue, 28 Oct 2025 07:28:49 +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=1761636531; cv=none; b=jEnVC6yoEgQHvXVinTFk9GyFAzINdsPcy/eTvIrSIhX3clK7uBBf00AZv2z0lFN6DYvB82uOXwGRoHtrQ6IxH79fstZ/wXZpxi/IExfHLU7ROdiQhGoRaByrMaa/bVsTdtwQQN3+Ek6TgTeBs7NCmg4Cd4tSA2mvKjmA2Kmu3Mk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636531; c=relaxed/simple; bh=Y1/26dzEd77XyetzZ/0mO9uHh2DhkztIYFSx+0MbeZQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lZdKzFB30Z+wilNdEcEM9E5CZHS+awQnCI16X3YMy3ufFQG3w91dxx4GsOA1slkI3wldLGCcYl06v066Iy8TU/g+jv0R/Tkl6Pp+rMxA3IbfzYBVicezFPyXOkrm3lnulBmF5OP3XZYGqRhpsb1oFJvfvOJS4fkR1vn5nHelDHU= 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=ZSwZTDyT; 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="ZSwZTDyT" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D967D16CD; Tue, 28 Oct 2025 08:26:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636420; bh=Y1/26dzEd77XyetzZ/0mO9uHh2DhkztIYFSx+0MbeZQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZSwZTDyTSILl+RjSJe38RxfMGzifaSldLfW0zs/ZSkhQ/vODQfAE7WrRtajYTR8pI oDrJ227mUhYrRnuHRaaMiNvTBu8GJ/I0+fUOuSvqaCDZe2ohXiRM6MoeA5f4iwkHXD sPaV+kolIoBG8+3oKen4QGesHyHtaE6Elwc4bACo= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:21 +0530 Subject: [PATCH 10/13] 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: <20251028-b4-rpi-ov5647-v1-10-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2434; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=TxtetA0j6SEqZTPCyiZhG7ILf0Ne1xu8jY6nz+JSsHI=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHBzegDGnAEEKz/IiCQNw8inwXWstF+tLn3Ry umjqDYPilSJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwcwAKCRBD3pH5JJpx Re5tEADL/ljvYD1O2v1i2jzFMiZvQNbRCTZ6WLaUQoEYRtjP133bPs0J99iU7QenAGnnOB/j9aL s4vO7BLic0F1S3c4cZHRmTOEbDGAe8S+KZV57lGIFjoEuqAuXwN95KQJ3uciZvjt75bZ/lKSQQi yaqmFthAwjjalu3WLTP6Eje1ePAI2zlcswUMKZatXqBwvNbQMn6n3wAjIqlWQXA0W4MMVF8SQC0 NacugRWBidmnkr99M6KSrZK3VXHuSHzj0wZVSuTwgqLagnHvJX+udOHMxS++vPb1fbmmLqOYvzX 6XhPcTyypKwjP3qLX58wqOSzvpYBD6NmDgTL5DGKCKAuIrausJH9MFZtw3F2PJdIhsIXfVDIsN1 QvU+GMhJEHMvYw3ik9oUph6x+rG0g/6wo62MFaXlVHeOTDKdtA6ZspoDY/KeuwHXuJySCPLBerI tQa0tohk1d83Oug37M+oirWwOKMfJPPGdpLs2SGpyjA3BV1XZ+thb7RSBI2h+6DP1a9lztllXON npM8sH1HFcT8Fodg5qEA2lGFk6/NqFo3Nv6Sz5OkK/DkOmAFmOMDaKTDxb9I5g+rdweHmzOvSgK u5dNih/8rDH8b99AAe0yyPh6mpk2AHw/14Akl9bKJcCP9hfhrm3Nx+KP/nSkspQP70XKEIRQksQ XrkWDxtLyPHYO0w== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 59c21b91d09d79f073a54871221f197a0bcf3aa2..2c9f50fd20d99f2adce2a1fbe42= 89cf7aeea2ba4 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F1A82C21E1; Tue, 28 Oct 2025 07:28:56 +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=1761636538; cv=none; b=H3NXk6Y5bjJLFe9e0U3dBjonn0y74GmWty13cGg/sgg1nvH6PdSlYcYCqvFVjWkFi+LdQExzdQNccMxEuxPIDoxojNT0djjf0j2hvemmgPIxv7ngg+T+/XnyNl98uka7HyA+rPCEHYIv+GSnyz7UUHm2teGF93ifLYJ1A3yA7ls= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636538; c=relaxed/simple; bh=xy5XoDe+1/n1Y2Ho5FCjs/qGtxGTj8Vl2fwFoMAhzIg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZvNcQU97ZqlV4I0fXgs5x1ifuy4XUfQU+1ZryUcgIxfFZnujCrj/Uazlgk9T8LzrxAtVGOocyyM1FqPLypdA84XmSgeRwRSmQPt9ZUZFDg/+UWWm9uDc12iWd1/B1KmhjDb1ouSqNPt5r0BH8L4vf4a4VZvst4TYZobWTHpTGdA= 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=VOg4HzfQ; 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="VOg4HzfQ" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 6AE1E16CD; Tue, 28 Oct 2025 08:27:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636426; bh=xy5XoDe+1/n1Y2Ho5FCjs/qGtxGTj8Vl2fwFoMAhzIg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VOg4HzfQT6XlZBfoGeWKHCpBsuNC1VAstGY4E2VGuvgFMASUj0QXg5c3H+6J/4Qp6 XXlur6aNL/C3pTcDUzFc8xEpZtyRHz8mVgPNEeuzJGw5FTvHnE2Pj8Ya8HHXwCqAMO R+AdywhQscYEIp/wr2ujMD6d2zch/EcD+ZzI2sIM= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:22 +0530 Subject: [PATCH 11/13] 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: <20251028-b4-rpi-ov5647-v1-11-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , 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=uCRAq8bqHkEEmKe6CqBeCCkKdUqeGaQ11owpBWc3yIs=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHB0hgDibkedo5qshZrj1f7KAE5XyBf1JUJyE /5L1PvB6leJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwdAAKCRBD3pH5JJpx ReVzD/9AAiNHZbqlXQHYX+4lvPZjgjX3wLUDqxykt0of+L0EEEj9a/gyaG/JKl4WYjr4jRJDN/r M6bu9chMyNYQaoO8JrDQJ+bSgODM/GpWKJ7xUzlQG/EHr4py/dfRfD9Ax32IxTOzTgJTL6RN2Y/ c6ntHQh5TKP5/3ZYk4jcnIkmPURXhf0ZbRXzZdkzU5wFUZfc7uBerE4sOy7Knf5GjZvOtvYVEBX vLEU2rptUk5L7dpdqNTbOgKM+LImhB5J+QBi7e5eSM0pD2dwVV3kBJ5So8Zbln+gCsxCww1uE6S 061nvGK8mh7lkpwaXoEXvG3iwIAEAWl379QgnpgHPkYZ1urerYjX6GZFmVTxQqeZ1z4Me5Lef1I ix4WU/Lf6bsj0g2Te8vYa4sj3lnBw3RTZukCSKo0OfaiWx+GN2RICB39EUCvf6L+T7pa6kasDEy /mc+05vhOvbyJ6BcCviPNqGGYi0uB6Zvnme8nYF8jacy/oPU0QiG1UsveQefljzOaYtwF1f+h7x /Y4kk8tKdSR929/WlzSAQOurNrs771l+djGH6ZajX2JFvcndcTDnWhwaz80yDOHtiNYzVSD4Gfh Z1u7wjQy12aHiKepUPPgMg4q92P8bv/aVmmFZm5zTjm2WeUx5OR+pnDA/DiqN09DEsckZf/Xxzl Yms+nGjOGUhnu2A== 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 2c9f50fd20d99f2adce2a1fbe4289cf7aeea2ba4..a0aaf83759e089aea727c44b614= c6a9f3237586c 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1963F2C3768; Tue, 28 Oct 2025 07:29:00 +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=1761636542; cv=none; b=m5BBq6bHBIaqFLPk/YANt7XH2EAqvSWtUb9M/7tiOudnokcjan4RZDMh6649YiwoqnCt+kA5czFNHyr1aKj3ployMLbV9ZogJwBFs0ZzP9WOcwryVW1XUaAnz9C8yraSR6pnSD5+kKXxPuQVfhlV71+cyUQYNt7/uVyWeT2shsA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636542; c=relaxed/simple; bh=qHR/xmbUa+4DKnxIvNk+ihQdaa79OzKFIbf3A5YyeCY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EYBiZvBYWBIguBhkhO1KDQqumxHDNKcVbdF4yhoHtJzF7OQthfR7DWdTVE4bRX2dyu0qSuUR2dUyAHDl++HSkfJJzYHSe1gptuh5kM1Uvh/acRnhIE8StaVZReOAikFMmkjhbCpaOT9yqkLWyzJkQUV8RS4QtBxeC/QVsHzM3Fs= 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=dkF4qZ70; 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="dkF4qZ70" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 41D8816CD; Tue, 28 Oct 2025 08:27:11 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636431; bh=qHR/xmbUa+4DKnxIvNk+ihQdaa79OzKFIbf3A5YyeCY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dkF4qZ70rCaErhKPQNYdYvowptXAgJTFEawzSgeeyCT555SQMJlDVbtUs9MvCTKBi kYPP79SLjyz9Z6e4W93rW+WIAfzrBTGfkoZBx4p5N+C9qdfuD+UrrZzvv9mxIhFXbg UXMTKUX98epY/yJ5M2I64feHxAQzWVJLO3GIXV4o= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:23 +0530 Subject: [PATCH 12/13] 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: <20251028-b4-rpi-ov5647-v1-12-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1618; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=Qf7Yqxt4zOy5GHKzlAXyeUZIkGJ9i63am4o+DzG62vw=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHB1FnkJX+fwmSeeu77kSksuur+a/SNSfxfYr QuVYiThg4WJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwdQAKCRBD3pH5JJpx RdhdD/sGtnJS3Wq4+lIC7KR5H4N51vkR0W8W4dFKANZ4jKgER5bAK76PeoXq/E/0Dp5TomDzaA/ oi0xmfyvSr6yCVIIvCrCLeRy/SG5FIc+9ZRFOqqfF+zr03jQb8zrvFFSUdU0gAXyF4BiY6zEeVc MKfjlrBJtDPFIfoIYxL7ygNKe79cnsgmM5QZe+d9ey3uZSPEdkrd43THjhI7yUt1kAedFktRaCK 8uF8Q6a9slsfA+WdSF38e9UqBxaY7THCu3wOHw+i05foQKWk0GdN+dExFAOawraJrYhQPMIp4Jk MX+Mo2LGKNxi/95DMjaiFGoh/v+x6HyxVvpFgQKajdEncI2r9aSNzAneVtYZJG91YSqZY1cgOCo w0f8IUEzOis9R1ut2hzn378UfUUXq3dGYB6UNn1Fg5/t3KFz1SXmREYtmT9imOF5pyKkTzskSlS Bn8ZYXCVlO/ok9X+LFmvSnuNyaEdhZGK2bR//IdsxNyg6sNFCBGsAHQrJUih+nyY+RX+fyu4bNm GKWm77iLhWWeWg1ABaUNPXWkNRWmj+ASZeiOsoi/y4XL83Og0RmxtxHd4s1Ccd7Oic7cpIS7Stb fs9NLCACuW8EsDyu1/SdWTaH6OWBCWOMMs5cILvIZgOfBJFfkjGIB2x8Gq1wcdYOGL04cuLH8xW 3+MerC/8CCQYSTQ== 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 Signed-off-by: Jai Luthra Reviewed-by: Jacopo Mondi --- 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 a0aaf83759e089aea727c44b614c6a9f3237586c..be0b96c4372ae0c6d8fc57280b1= 95d6069dd7019 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.0 From nobody Mon Feb 9 22:20:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6635F2C0293; Tue, 28 Oct 2025 07:29:06 +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=1761636547; cv=none; b=N8KlCFENGu4rLkj72d5EOjBSRalYG7vkZUUTMNdlUHCN2MsmFKQXjoNgYn5qExEGE54P9cC+9dSC+myVH+c9FBtUEYwRDhxnLBpBCvWkTMPhQHRd+V7mfBzififI7Zyg21zkdaLOhUlvxi+iZsFopuYnUtrH3PZbinWFjo2JePQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761636547; c=relaxed/simple; bh=hvfA4Ah59qm/v8O8K2KW1GDfsB5vN1xxLwWQ74787r0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FjKGxIu10HrVuLO23UDR5uxzvLArAik4rb+uT/AxshfdfUXZBnvL6K5bElSCSv46M8o3TG28iXHNtVAxFo/O06fNbhJBX8/8GkvG+xvXymcWZ/MxAwxv7FByFpCjwUt8bQpQZmua/+NkfQD2u6TChrQEu3j1modJQXRYyqQcebw= 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=T3AJvbia; 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="T3AJvbia" Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c69:314e:ee86:ae6e:30:9d13]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5A48616CD; Tue, 28 Oct 2025 08:27:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1761636436; bh=hvfA4Ah59qm/v8O8K2KW1GDfsB5vN1xxLwWQ74787r0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=T3AJvbiaG5sBLaw9ULddFdbsD8MjN7OolTKZw0pp5A7rISY4MjCWdD/Kdh5oowpt2 xwWg50+PGWixPy1VAqA8N9wqp2Cj8P3sOVYQsN8tDhUo5XOz+uwgIedW+Uewm9+Ws2 HTONtSHFba/G2h73g7MVlPLKngqkFxuDUxaXx9m0= From: Jai Luthra Date: Tue, 28 Oct 2025 12:57:24 +0530 Subject: [PATCH 13/13] 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: <20251028-b4-rpi-ov5647-v1-13-098413454f5e@ideasonboard.com> References: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> In-Reply-To: <20251028-b4-rpi-ov5647-v1-0-098413454f5e@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3673; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=52a32CqFPvBiwD5Owyt1AoUV8v1FmZr4CihFE6NrvFo=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpAHB2YkPCA9SBw0Ha5S8iuboMj/AaSQmas5Bgz IeQMHLWctKJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaQBwdgAKCRBD3pH5JJpx Re8qEADLonQ4dc68GpOKoazvhDQtjkLug5grwuIg0qbcey+qYhdqqHTSSVUqJF/8DeywQQ8Q6+Y KYnJZVe6WjO61hfRhPRWfO6lhHUSzdkGqyIBPFDNht4V5i+QApuuW7uDy1bQlr8PRaahi0W17O6 Mg8Y/8qpoARS3YFhPhXhR2/zaXk/Et+RZO0JxUp57H3/RSLGStYCVie76jhBKVScfu/el0ZJdBv eJzevAYX2Agod7IsrpT6YuYIECorSgs5jTULD6bF/UZOJ5ydsEBlp5PaM5NgZRwt7I5fcJZtjXb 7Zt0JxZkoBoBaomHUhFQRlbo5iEP3fOAhlYh7YomO0MRisFR2E2q1d1QFKbHT1A8gRlIMnDjko+ EgtCj24+XfBrjAE+DKBRAjp3yBEIz6RdaGHigbDfhIGqE+RHSSaHQzk01SlJd6tH0LHQHZvUsVZ uwOGPZyzDlLw2HtE6Hd4+a5ZmGlrUQCGjSwLR575TOZDomPBESwP0cmg7RukPJ9DuLZl21JQKYa sfMh8yWyylP/+6T8nt9lOWDbw1b5cx+pcmoPCu7+WrWKgjJZNeZpdMcPaTTA9g2RodcHBWcaQ2V dkFt7R1LGJHQ3yQP5bvhQ+OHukhLA7v2uG7GH6N/Q/+4O0NYRVYb3akqEckMpAIY3nK4e/NknFa lBAeBiQHMxHDcUw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The link frequency can vary between modes, so add it as a control. Signed-off-by: Dave Stevenson Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index be0b96c4372ae0c6d8fc57280b195d6069dd7019..dea978305c3c868819780f7f631= b225f4c1e7756 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 218500000, + [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, @@ -925,6 +938,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. */ @@ -1230,7 +1245,7 @@ static int ov5647_init_controls(struct ov5647 *sensor= , struct device *dev) int hblank, exposure_max, exposure_def; struct v4l2_fwnode_device_properties props; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 9); + v4l2_ctrl_handler_init(&sensor->ctrls, 10); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1290,6 +1305,14 @@ static int ov5647_init_controls(struct ov5647 *senso= r, struct device *dev) if (sensor->vflip) sensor->vflip->flags |=3D V4L2_CTRL_FLAG_MODIFY_LAYOUT; =20 + sensor->link_freq =3D + v4l2_ctrl_new_int_menu(&sensor->ctrls, &ov5647_ctrl_ops, + 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.0