From patchwork Fri Sep 5 09:08:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Mugnier X-Patchwork-Id: 24286 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 6B5ADC328C for ; Fri, 5 Sep 2025 09:10:15 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 421A86934D; Fri, 5 Sep 2025 11:10:11 +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="Le22L1He"; dkim=pass (1024-bit key; unprotected) header.d=stmicroelectronics.onmicrosoft.com header.i=@stmicroelectronics.onmicrosoft.com header.b="i7UVnqnE"; dkim-atps=neutral Received: from mx07-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 6E6D169333 for ; Fri, 5 Sep 2025 11:10:05 +0200 (CEST) Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58599D3j027706; Fri, 5 Sep 2025 11:10:03 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= IFOvgfkh8/GXtOTq7HEnLPeFwpz7YY4Jihx11NDdwlg=; b=Le22L1HeaE3ACJVk JBVYZkg7nFCEW70LNbdLAsWOUnyhazoFFe97a2Hh7tVVh+Svw8FAFrqlVFWGfXK/ ZFBYAmaubi/mOWqPbA4YOfXEWX09Ohajxa3aICd1cAV92GdFEZZMkUbx84PSJ+Wf wD2OJFd9XeKcG/8HQW2dnv5D7y/LV6RNn8Bl6+xWZXTzmFfmjIa3UaYZRLGClJU2 Zjex2MaWqUDZPZmL1SWj5Bq0giyCvUtlSISS3hwOwNecrfHrYC22twS85Adqk8DV dKtN2VCrxkjcepYulcTps4MteAO3gOXJ5LMV6yObDgW2zYPooaeiiqjEgLmp1T00 6rcVgw== Received: from pa4pr04cu001.outbound.protection.outlook.com (mail-francecentralazon11013010.outbound.protection.outlook.com [40.107.162.10]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 48ur6g16r0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 05 Sep 2025 11:10:03 +0200 (MEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rP4oJ3rFbcrKaBgGFS0GboSH7pYPL/IgoCKIcBk33Wb7V/YjYaIFh31D99siN3V5MlMwe3L8vHD0nHztLIz8iBRlfZ+rDGYfqYnGEiD3l/aVkd1osToLCevdT6taQRSvj0xIRYuReEEEk/JYaO4eBrhijDpceIrJpHhXMGxwbahNGStx9vtIglaw6qQAv5x4p24L9zwiq312rkW9nPc7Y5Dzfa+T7OAE9XjFK43ZR0k3V/suuy5G4WU2DROIKXcNNxyiqIiXoiqHIjsue9nBWozdwG+cudzXkKa+pcGTALz/PZSQwqIfNbTGC7xrNrpq7zKPx1BBSpCNUzhRkt53+g== 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=PsPLma36lJhwp3RehBP0oFKTmATHfS99NGfDTH6g9ZOIzzCmxQi/55yNADVT1vnsYCHHevN5a2UCpDJeTakcqPynVlaQyuFl8U6e9HZMGED1v/mJUE9nSFnAApEWPClGUeQ4m+bItg6fEn1ecYhi3nZFtH8lLdKAyzJCOhCdtBWQ+CMU7ex7JFbJ5xMj2l1dIBlG+w9Th2YBajAF3vSIxRmOm2Jp5jJn8CxViXLjyjhpoWaFXmsAqwWpj6ldZs6uAc72O9BU/jq9Ic4XatFAUtSAYLA+6ZcvCXpDKpGGNIKXak8AMVhK2GeM79af/F9MJgOLw0CGh5InXqqWci4omw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 164.130.1.43) 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=stmicroelectronics.onmicrosoft.com; s=selector2-stmicroelectronics-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IFOvgfkh8/GXtOTq7HEnLPeFwpz7YY4Jihx11NDdwlg=; b=i7UVnqnE/W88wucA4XRHqUUe38DcgQq/sBdriPKVHSQUPLn5egnGBqH2/UB/0Yq6lk0v7jUQbeD7+Uh6eG/QfkhMNxrMz8z1faEKeg04WfxSfxcvuplcaVGHtnGIrZpaa5Is96viRZ6dVi86XCyxDXOpxxFPlpWmgatmD26w4+k= Received: from AS4P190CA0003.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::8) by PA1PR10MB8932.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:453::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.20; Fri, 5 Sep 2025 09:10:00 +0000 Received: from AM3PEPF0000A792.eurprd04.prod.outlook.com (2603:10a6:20b:5de:cafe::87) by AS4P190CA0003.outlook.office365.com (2603:10a6:20b:5de::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.20 via Frontend Transport; Fri, 5 Sep 2025 09:10:00 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 164.130.1.43) 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.43 as permitted sender) receiver=protection.outlook.com; client-ip=164.130.1.43; helo=smtpO365.st.com; Received: from smtpO365.st.com (164.130.1.43) by AM3PEPF0000A792.mail.protection.outlook.com (10.167.16.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.14 via Frontend Transport; Fri, 5 Sep 2025 09:09:59 +0000 Received: from SHFDAG1NODE1.st.com (10.75.129.69) by smtpO365.st.com (10.250.44.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.57; Fri, 5 Sep 2025 11:07:41 +0200 Received: from localhost (10.252.26.31) 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; Fri, 5 Sep 2025 11:09:59 +0200 From: Benjamin Mugnier Date: Fri, 5 Sep 2025 11:08:23 +0200 Subject: [PATCH 2/4] ipa: rpi: Add vd55g1 support for rpi MIME-Version: 1.0 Message-ID: <20250905-vd55g1_support-v1-2-545d39f280b2@foss.st.com> References: <20250905-vd55g1_support-v1-0-545d39f280b2@foss.st.com> In-Reply-To: <20250905-vd55g1_support-v1-0-545d39f280b2@foss.st.com> To: , Naushir Patuck , Kieran Bingham CC: Sylvain Petinot , Benjamin Mugnier X-Mailer: b4 0.14.2 X-Originating-IP: [10.252.26.31] 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: AM3PEPF0000A792:EE_|PA1PR10MB8932:EE_ X-MS-Office365-Filtering-Correlation-Id: b77739d7-893d-4550-f6a4-08ddec5bfdbf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?q?WX/SsjntD1uzmhL6QoO9Pwyn4LQt?= =?utf-8?q?9kzECZEhkF4QzqWLyCU5EsOhFmTJFlAp3MbSZamhkpBTNG8THqAREqOm?= =?utf-8?q?UPC7nQlcGfgw762vdCEiEdm/a4yxFAu6s0SBsv6g9TNW9ZriFJBvtL8e?= =?utf-8?q?cTjEBeoC+YVFzaQcxs5HhvRQ3sjTQFr9mbeWMkIs/jBqPe1l67Sem9tv?= =?utf-8?q?5BKiVKWWsCsFT0GGk2CQ2grhb3ivrcEWcTfGspdmBKeGZn4j+zQkuB0B?= =?utf-8?q?u4S/v8t7vwovoPTwXmm2HpIZ0dErl15X46AUblNQcGyJOSgvXJgGyurR?= =?utf-8?q?1JDs0dSqhe5OQJTMtHL6+1IpNo/OVdbNSy8WFPTu3X710fdT/ttYZi/Z?= =?utf-8?q?kgdks3VcaAItJ/UniWoAVfN1IwaLfDZcnHNq+Y8KTYfHghsOBU3xOs1J?= =?utf-8?q?Q9bLUVl9PtUgin+82djqc6nCQIXU1RYU+B2FBTWU1p6neULObRNmCRYj?= =?utf-8?q?MVLfx4a0TPYMTy+vte+hNWz/fvqrsAx5ocaVbYtUYodQNMD5usqm05+G?= =?utf-8?q?+LeRw/jvFqeJyCnVtbGO5UVop41Uj0JrrByGrAPeL9u9TUxdoEL8sp3c?= =?utf-8?q?aMljdGt8vReMq4HYIEnwk20aiQeUbFMDNToRwQRFMApX6bUBIZ5mR5Pb?= =?utf-8?q?0ZO1VU/vB6cX/ru6TNYy7tG8fVg7q7+CusbWEACI3J2ePh1gB8st0ARy?= =?utf-8?q?e3WK06mT0tefdnKnlumLdQbTJJgRWHK3nvhH5l8oc/mZMHFBui5lK6VB?= =?utf-8?q?kLw3F2UQorQmYi0l5t0g0rOl4lKLSGmD7+1akp20B+qs7irXniihDRrr?= =?utf-8?q?A3eKQDLfvNU0sgvAAGjwt+yskzERmjAh7QpgAXVqpeKRxdyYt82SJ8WV?= =?utf-8?q?GjiE4hWYSfz5tnZnyNFtofQZkRMYllGzhTAxNqD4gde26ABUsLOyfM3T?= =?utf-8?q?4GFJpi9GCaXDjywUB8aSeFKj/0oB0yWEoI/15EQBA8NaouMZMDVPYnfS?= =?utf-8?q?qSFN5JcU9IVTDmq0efNwrZEeR/wOI9pKDz9iL/xKQPobFh3lC9ia/Vw3?= =?utf-8?q?tWWrfAXGRbbrT0owmeTVdUXqEmmaKsbdmjC0wPljqYXw4B422uXGL/zo?= =?utf-8?q?qV/CIlI+5YkOwJqlBjweTLJuOmLZlE1L/ha4pegYjuaDVBLgiCrRm3El?= =?utf-8?q?Xx66SaAtxY2DnICmsRrelr4goWj8KH/DtJOYrTGVcu/3kQeuZrQsbJJI?= =?utf-8?q?fKhWI+SVRT4zvVc8DpM3z6CCc6A3qm9uoYdM4yOkxosI7mumNwRB+Jgm?= =?utf-8?q?T0V9gTP4OJHDyS5gFvYtmU9E9qhzqiEB4uKm8ovPuQ0qCJ54TGm1vrn5?= =?utf-8?q?HxZsm1bb+xQfYw8KcNHAASqzE80H80D9IzHbSX3m4L48hWcZOEph8YnO?= =?utf-8?q?Z44DAJbSxsIaSga5zuLBRI/V+ANfz+BWAkUNML64Hcyd2GDOosFJtUr3?= =?utf-8?q?Qz1zkplfh3+KdubmPokNuEX6PxZ35X88Za5JLmRBdDhsHV5aeiwu6Ryw?= =?utf-8?q?w/+WwiJU+5tugjQqMp6agQ1nsHFe0oz6/h6RYHSZEzgI8E9rzix1?= X-Forefront-Antispam-Report: CIP:164.130.1.43; CTRY:IT; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:smtpO365.st.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: foss.st.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2025 09:09:59.8970 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b77739d7-893d-4550-f6a4-08ddec5bfdbf 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.43]; Helo=[smtpO365.st.com] X-MS-Exchange-CrossTenant-AuthSource: AM3PEPF0000A792.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR10MB8932 X-Authority-Analysis: v=2.4 cv=Ts3mhCXh c=1 sm=1 tr=0 ts=68baa8eb cx=c_pps a=6eCpzUxAHqa0kiPdty4tFw==:117 a=peP7VJn1Wk7OJvVWh4ABVQ==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=h8e1o3o8w34MuCiiGQrqVE4VwXA=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=58ASqn27JyAA:10 a=IkcTkHD0fZMA:10 a=yJojWOMRYYMA:10 a=s63m1ICgrNkA:10 a=FUbXzq8tPBIA:10 a=8b9GpE9nAAAA:8 a=CLyXKx3vXmGqdc0cRRIA:9 a=QEXdDO2ut3YA:10 a=T3LWEMljR5ZiDmsYVIUa:22 X-Proofpoint-ORIG-GUID: WTV8NWbSfcg2_DF5--6XATCDghiih_v- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAxOCBTYWx0ZWRfXzglzBtOIH40W aYYYP9OGIEmnveJFSxjQoLoMdC2WwtMxiL/2BzC/YeEa0a11bnm4pbHiUktJBSN1RKwu05IPNV1 hfIIRTSAfFcEjNCCvnbuT6ldFHal/RJrDhVCrlDY/nNkdHYd9YhG3h/zs7A0IXMc8b0YrDFLW+G kYgqEzV+oXaYn4T83xyQu3W9tPf1JxeOdz/7ZxLcSrJz+eGH5JGdZfr2rrIxzaj58CJHdwXgQu4 Ph7aE2bawSm7tYabE15UbBA5JMDIbvpIdHXdltwL+Vz1C4UNnnMaW5KEnIubGmQGvrd/q1YMLFM OcZYZa1/QxO/Q52h7wuFCxACBmQzb+febo67lXjUdKMqEGHC2cz1dyZ0aK1qJzRNfP9Zan34Eul u1ExRAMk X-Proofpoint-GUID: WTV8NWbSfcg2_DF5--6XATCDghiih_v- 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-05_02,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 clxscore=1011 priorityscore=1501 malwarescore=0 adultscore=0 impostorscore=0 phishscore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300018 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 --- 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', ])