From patchwork Wed Sep 17 13:42:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Mugnier X-Patchwork-Id: 24374 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C2F66BE173 for ; Wed, 17 Sep 2025 13:42:07 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DBB2369379; Wed, 17 Sep 2025 15:42:04 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=foss.st.com header.i=@foss.st.com header.b="YBjY6rUX"; dkim-atps=neutral Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5B20669367 for ; Wed, 17 Sep 2025 15:42:01 +0200 (CEST) Received: from pps.filterd (m0369458.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58HCUiqq003775; Wed, 17 Sep 2025 15:42:00 +0200 Received: from as8pr04cu009.outbound.protection.outlook.com (mail-westeuropeazon11011008.outbound.protection.outlook.com [52.101.70.8]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 497fxav1k2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Sep 2025 15:41:59 +0200 (MEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lUeA0ZDZIbvhr+oPyjtIXgzHagfiueKDYwvT23rvc51CvgCA552z/oQ5NxInXIIzpS9q8NlSN81gVqmRjSiyWvKZY4fiThE8llEafoB3cnz5t5YRhKhgKDVWXaf2MCqWeoSUwCfD9Xd/AfxPcOZk4skVnV4axzUf5GQRz/XyuuXWaM3/MuhQCdSo6M22Y6AE25YGbA/pQDRPqzQ1ho6scpiVbx5dqtEAPZTVNzjPodeqGdDrouLFKS1yOioPr9VvfsqDfH4w7byN4fZBH+Ek8cpFRcibEUZMGRUVPMSwwma6qUYEKxC3DMvpiwUPYHY4F2kb0l1H8Vz1cWPqATnMXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IFOvgfkh8/GXtOTq7HEnLPeFwpz7YY4Jihx11NDdwlg=; b=YB6Q6tSzxk7u6MlwfP9yrmB8aFSxaR2AaPPhN6OoVMldACCNP5tGUrtbvn6VIYphlqUpNLrwoaPaXpAxChD6Fq1X9hBtIY2HymxTeFmTDT3PZCTFAhP4kePBD7wkQrq+bxQgQCxv71JnGErPcNPJhRaeNDzWaHU1uvzwbU2esFrlSZjDT66RpbNTzY0ywYIm8dVmg+5RwZeZ/LW/KJGS+BfuO1XMP1TDNln/INY8HqLeMprvFNUKHCsFrZU+ghV+TtIr7Dn71ecMT3WKV97SK1IM3wVi9Jjv0CdU7FagjbSeDpk3yM0qmZVzrEA6y8Y0QsWblv7dZjICR+AC/sfxnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 164.130.1.44) smtp.rcpttodomain=ideasonboard.com smtp.mailfrom=foss.st.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=foss.st.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IFOvgfkh8/GXtOTq7HEnLPeFwpz7YY4Jihx11NDdwlg=; b=YBjY6rUXmEs6kntdUuF50wgpjiff/tS07O6H+Bngiq/UEM1dHd2M07Uev+wYy8hRmaCpKKxAbfIYzNoZdBlbzkEsoxXz00m5tFfDbkCiIy9mUcYqYBjZT/FySM071X+RaA3AO2HQt4n4mk5CyMNYe/px229bUJ+W54EdB5Zd3u87+2yu+nTXUrgpZjDJht8Wn8Sn6ddzbuDAOpKkm40nWw+rq9RQX6pNVTTK9Uzb3LxXm2ZemjziNNwGW8mbKwFWLVr/dygt80czOiLSOsXu/Nb2eLpTi40bj4DVuiuO6Iqz2tda3JVvML/rCpdvum0TD27ueZZUNf28cO3J319+Sw== Received: from DUZPR01CA0178.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b3::20) by DU0PR10MB5900.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:3b7::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.21; Wed, 17 Sep 2025 13:41:56 +0000 Received: from DU2PEPF00028D01.eurprd03.prod.outlook.com (2603:10a6:10:4b3:cafe::7c) by DUZPR01CA0178.outlook.office365.com (2603:10a6:10:4b3::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.13 via Frontend Transport; Wed, 17 Sep 2025 13:42:01 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 164.130.1.44) smtp.mailfrom=foss.st.com; dkim=none (message not signed) header.d=none;dmarc=fail action=none header.from=foss.st.com; Received-SPF: Fail (protection.outlook.com: domain of foss.st.com does not designate 164.130.1.44 as permitted sender) receiver=protection.outlook.com; client-ip=164.130.1.44; helo=smtpO365.st.com; Received: from smtpO365.st.com (164.130.1.44) by DU2PEPF00028D01.mail.protection.outlook.com (10.167.242.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9137.12 via Frontend Transport; Wed, 17 Sep 2025 13:41:56 +0000 Received: from SHFDAG1NODE1.st.com (10.75.129.69) by smtpO365.st.com (10.250.44.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.57; Wed, 17 Sep 2025 15:34:52 +0200 Received: from localhost (10.130.78.106) by SHFDAG1NODE1.st.com (10.75.129.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.57; Wed, 17 Sep 2025 15:41:55 +0200 From: Benjamin Mugnier Date: Wed, 17 Sep 2025 15:42:12 +0200 Subject: [PATCH v2 2/4] ipa: rpi: Add vd55g1 support for rpi MIME-Version: 1.0 Message-ID: <20250917-vd55g1_support-v2-2-101b53b66add@foss.st.com> References: <20250917-vd55g1_support-v2-0-101b53b66add@foss.st.com> In-Reply-To: <20250917-vd55g1_support-v2-0-101b53b66add@foss.st.com> To: , Naushir Patuck , Kieran Bingham CC: Sylvain Petinot , Benjamin Mugnier X-Mailer: b4 0.14.2 X-Originating-IP: [10.130.78.106] X-ClientProxiedBy: SHFCAS1NODE1.st.com (10.75.129.72) To SHFDAG1NODE1.st.com (10.75.129.69) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PEPF00028D01:EE_|DU0PR10MB5900:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b694463-bbe8-4d62-1e57-08ddf5eff827 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?q?kgSQKXqsk3x0bNTRlC55dheHD35f?= =?utf-8?q?CfY7V9n90/lzSw7nXCc1QFd7R65e7Xzcz4c2ue8IqZLEN2LLsfAoUzX+?= =?utf-8?q?OOScUt6zHLVTRwarmRLKX6ZPvnZdtPaG8R2tvbPCZF/4jl4E/9XPzzXA?= =?utf-8?q?ktzjUgDA+8HukzRDZHMlvYMgYOxgDXw5KIa/ftiFhdRqujnpx8Rojl8U?= =?utf-8?q?Y9dcwKJ51Hsn7/7venNjJg4fpM84KZdzrV9sGipCSQ6l+asaeF+F2CgQ?= =?utf-8?q?CdJ8RRKijhBhpCMrb0Vt1WTEUGhId9+/VEnqQ9WX6QgEH1gYc469ttKI?= =?utf-8?q?2uvogWzFg6nqBBRZ5V9XZsXb/BgJ6rTi+AVYeuIq++dqBfEs9WjvFkdz?= =?utf-8?q?nR0FXzz6IrU+Q0q/c5qu/mc6XQrIU4OR8yc9dmstcXGcOC+flUZQHKJr?= =?utf-8?q?wCGUMueLOV7wVfIMyvYApwMAqLFiloHOcImhYDxAnAallaLMC1PMMhCw?= =?utf-8?q?kJOQllGj5ahnx23Ln7oj3vgBYz9MU71jeSAiKYMsmw8i4TH8UiyePmul?= =?utf-8?q?Phs1zyzTKpSyhwPn6Gv5vV+oEeIPfzO2QK51nBpmG2FJt7B6GmEz2jhu?= =?utf-8?q?QYBVRCVEonXfS9RtMYSe2+N5X7jWh+3ZCJiDq6RgxdwSYGqDnmdHv3zw?= =?utf-8?q?fG5VDvG5PyQar0YmAjeKwbvb6Ue6fRzEAEKDRlnaeMWbQYw7f7/XteIb?= =?utf-8?q?3y+mDmLjdNDCSF9NbUq1SpaVXXW7X8VzllOjVj0o/vKSQYKhX+wGEofR?= =?utf-8?q?twJW16rV9jrxFxd3P6xPfT2Cmb5itCpYgUSdVxU5AKNhrgAEh0WLOl2c?= =?utf-8?q?aBoXEMWD/x55q4twXPIRX1WEC/H2z5yG5XFzmzAdEHFjZ/p+/bjVlChD?= =?utf-8?q?SpKuv7R9vMxxmAeYY5McK7vmb9qbhka3Ww7xuO6eFWeA243pjbqrFowQ?= =?utf-8?q?ug13za72TnbiXahoUGH4jQ0Lv24/6thTtIfS6Nfgg72UuI5AjSR1/N5E?= =?utf-8?q?1juRwGQkr5b6LpsHG7ODVPEm31qCnEqqIyrEl88PDZ39xRG7GZq7A5hh?= =?utf-8?q?W/vrefu1Ai6PK+LVCeJpjdRr8YFvrmAnQbEKwkKhOC8kXiViXksOTlim?= =?utf-8?q?4Yd5YFT6re/fYDs64BM2/tHeDNYq0v/t8FTsRxuhru3pbre6riOy6R9o?= =?utf-8?q?U5DRi6HiSH4PGsz0T0s4r7DxXRk8TFa6bMrrgFmewh73KBRuvuvcVzTZ?= =?utf-8?q?BJm3jqTVhBPn1c386KUL9sfyx/SLU/b+BOFTM2ftD/FfkdtBLu7Nlqc0?= =?utf-8?q?9kenRYRvEtkpRyJy2pPP46d3UAvlcHcP1friIvWEMQEFuwwaYEzAaBEX?= =?utf-8?q?wvzmP8zG6rUBZmdrfYcAloeiyvg0RB9WmEHGa/gjyXd1eF3kkcLyaIbi?= =?utf-8?q?iNdGNNtH+z4O/0cpCA3+U9ebDToL1boY0Yhf9kh6GfAwX3rajd8aKsLN?= =?utf-8?q?C4etzYDD5JgbkSIiHSMQOnEAmqMFO/hA/m1/Ml6IGa6MVT4owZzWC5yv?= =?utf-8?q?9t6GU7TK2JhLmDI1Ka5rIYbUy96zyeIspZN/3gGhmnOG44Pr/Z7B?= X-Forefront-Antispam-Report: CIP:164.130.1.44; CTRY:IT; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:smtpO365.st.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: foss.st.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2025 13:41:56.4589 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b694463-bbe8-4d62-1e57-08ddf5eff827 X-MS-Exchange-CrossTenant-Id: 75e027c9-20d5-47d5-b82f-77d7cd041e8f X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=75e027c9-20d5-47d5-b82f-77d7cd041e8f; Ip=[164.130.1.44]; Helo=[smtpO365.st.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D01.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB5900 X-Authority-Analysis: v=2.4 cv=RPOzH5i+ c=1 sm=1 tr=0 ts=68cabaa7 cx=c_pps a=NTleJMBLGjSDdH8hSBVCOw==:117 a=Tm9wYGWyy1fMlzdxM1lUeQ==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=h8e1o3o8w34MuCiiGQrqVE4VwXA=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=ulpFtCY-0pAA:10 a=IkcTkHD0fZMA:10 a=yJojWOMRYYMA:10 a=s63m1ICgrNkA:10 a=KrXZwBdWH7kA:10 a=8b9GpE9nAAAA:8 a=CLyXKx3vXmGqdc0cRRIA:9 a=QEXdDO2ut3YA:10 a=T3LWEMljR5ZiDmsYVIUa:22 X-Proofpoint-ORIG-GUID: nfj-4ELEB5iN1LUpyD8XWyw8kcVjMzg7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTE2MDIwMiBTYWx0ZWRfX89fp4pcZXZtC x1i++temAs1GHvU97LllNNbiQ4bEGARI0eBdZD9Hy8Nr/hT1kf+O+sm9a0rTHXRwDmDbcyjZ7xy VS7MEanlEiPo4vD5NH3XK6icDJeurFGCHqiFwRWrCSYJIjBfEO5XKeNc5SGlDNpGzQv/6A1e35O +WeDvGo20L68vjdmKOF1yZLOpzhQtDX6qW8wopW4grSyanG9zB7hN+P68WQ9xadggzwpZhMCVn/ VQa8yxC8T5IhF0dRwGN7ZT9UMQ0JmUh3ImwmoSyRz2M2aY+h96hbPevQngG+eBNrub5NqXoz+xD dmHgt48g1Me/9B/cQ52Cw+ynMLgOQwoHvs3fxoJZ6/MlZxMAaHurA8fqOFBgGwV+oxVMhdX2PDN RsgBRa6T X-Proofpoint-GUID: nfj-4ELEB5iN1LUpyD8XWyw8kcVjMzg7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1117, Hydra:6.1.9, FMLib:17.12.80.40 definitions=2025-09-17_01,2025-09-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 impostorscore=0 malwarescore=0 suspectscore=0 adultscore=0 spamscore=0 clxscore=1015 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509160202 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The cam_helper gain formula and frameIntegrationDiff can be found in the vd55g1 user manual. Signed-off-by: Benjamin Mugnier Acked-by: Naushir Patuck --- src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp | 49 ++++++++++++++++++++++++++++ src/ipa/rpi/cam_helper/meson.build | 1 + 2 files changed, 50 insertions(+) diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7a262e2332f3039b1fd35330abfb91099ff0e21e --- /dev/null +++ b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (C) STMicroelectronics SA 2025 + * + * Camera information for vd55g1 sensor + */ + +#include + +#include "cam_helper.h" + +using namespace RPiController; + +class CamHelperVd55g1 : public CamHelper +{ +public: + CamHelperVd55g1(); + uint32_t gainCode(double gain) const override; + double gain(uint32_t gainCode) const override; + +private: + /* + * Smallest difference between the frame length and integration time, + * in units of lines. + */ + static constexpr int frameIntegrationDiff = 64; +}; + +CamHelperVd55g1::CamHelperVd55g1() + : CamHelper({}, frameIntegrationDiff) +{ +} + +uint32_t CamHelperVd55g1::gainCode(double gain) const +{ + return static_cast(32.0 - 32.0 / gain); +} + +double CamHelperVd55g1::gain(uint32_t gainCode) const +{ + return 32.0 / (32.0 - static_cast(gainCode)); +} + +static CamHelper *create() +{ + return new CamHelperVd55g1(); +} + +static RegisterCamHelper reg("vd55g1", &create); diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build index b70acbee5fcaa94265da1f1ad75487563486679f..87b6a3600b18b5d380a9007f92cc620bfbafb830 100644 --- a/src/ipa/rpi/cam_helper/meson.build +++ b/src/ipa/rpi/cam_helper/meson.build @@ -14,6 +14,7 @@ rpi_ipa_cam_helper_sources = files([ 'cam_helper_ov64a40.cpp', 'cam_helper_ov7251.cpp', 'cam_helper_ov9281.cpp', + 'cam_helper_vd55g1.cpp', 'cam_helper_vd56g3.cpp', 'md_parser_smia.cpp', ])