From patchwork Sun Apr 26 19:37:43 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcel Berger X-Patchwork-Id: 26576 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 E5E47BDCB5 for ; Sun, 26 Apr 2026 19:46:39 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 20AC762FB3; Sun, 26 Apr 2026 21:46:39 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmx.de header.i=marbe@gmx.de header.b="FFrP0Geg"; dkim-atps=neutral Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5881762F5F for ; Sun, 26 Apr 2026 21:38:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1777232299; x=1777837099; i=marbe@gmx.de; bh=Q117tCvUsZRqoMUwbrREdB851gHhC24LWqQhOE39LxA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID: MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=FFrP0GegXTKpnyfC5nwbHZm13cRGIgy74HeXgbowJyzdyfod+E7tbaDi6H95/LBA VjMvAUc90nJheegPx2BzX0nE+jVA8flk+F10Sm70cVEbXXPFEpMTSMPIftMCXdIns twD5osIdwmXoyj9vCSjWEf/F+/06jypmaHk+1Y3pg1Wt/ZpXvWJGigZJrRxnoJNAK 4SvtvdtbqGSZxxtt4MF7HX+Cr8nXT9cfjyG5bmbwZvMaZioMpzCVqTta85Wwg1UUY JdSe8DGlyqvV25Ij85rIrqnHIA1zxWeLa9HOc2GwqQflLusenQeaP5Ol73+9BVswt 5P2ULsGAlcWE6RWypQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M1poA-1wEsNf3Si8-00CFR7; Sun, 26 Apr 2026 21:38:19 +0200 From: Marcel Berger To: libcamera-devel@lists.libcamera.org Cc: Marcel Berger Subject: [PATCH v2] libcamera: Add initial OV02E10 sensor support Date: Sun, 26 Apr 2026 21:37:43 +0200 Message-ID: <20260426193743.107637-1-marbe@gmx.de> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:kTg8klXL3GyOToAbCWJlC4hhnFGt7HjJAdIvq0k9adZcOJu6NBP AaYPnB+aXTQJT69nK3PhfxFw3KA7bcCTnwi9A5IjnMofw7RMA0YK7uhmakTO8q2SsgfZYH4 nCzpq8eaLh/hVNGGLngCsE7ZL132M+EBlHhsGsl9zS/lMiuPpT8Xb/GGlojjfed+o+WK6x2 rP9IW6UCDPei2364fqGsw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1; M01:P0:7dqubq+F6Nk=; M/pI4/i0gx62QrHwORman9CB46W 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 FyfAn1wfACOrMdw== X-Mailman-Approved-At: Sun, 26 Apr 2026 21:46:37 +0200 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" Signed-off-by: Marcel Berger --- Changes in v2: - Update the OV02E10 analogue gain model. - Treat gain code 0x10 as 1.0x, resulting in a 1.0x to 15.5x range. - Keep the simple IPA YAML intentionally minimal; image tuning is left for follow-up work. src/ipa/libipa/camera_sensor_helper.cpp | 18 ++++++++++++++++++ src/ipa/simple/data/ov02e10.yaml | 19 +++++++++++++++++++ .../sensor/camera_sensor_properties.cpp | 12 ++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/ipa/simple/data/ov02e10.yaml diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp index e3e3e535..bee50ec8 100644 --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -653,6 +653,24 @@ public: }; REGISTER_CAMERA_SENSOR_HELPER("imx708", CameraSensorHelperImx708) +class CameraSensorHelperOv02e10 : public CameraSensorHelper +{ +public: + CameraSensorHelperOv02e10() + { + /* + * OV02E10 reports RAW10. The Intel IPU6 HAL configuration uses + * SGRBG10 at 1928x1088 and exposure/gain lag of 2 frames. + * + * The analogue gain model is not yet datasheet-validated. + * Use the common OmniVision 1/128 linear gain model as a + * conservative first approximation. + */ + gain_ = AnalogueGainLinear{ 1, 0, 0, 16 }; + } +}; +REGISTER_CAMERA_SENSOR_HELPER("ov02e10", CameraSensorHelperOv02e10) + class CameraSensorHelperOv2685 : public CameraSensorHelper { public: diff --git a/src/ipa/simple/data/ov02e10.yaml b/src/ipa/simple/data/ov02e10.yaml new file mode 100644 index 00000000..fc90ca52 --- /dev/null +++ b/src/ipa/simple/data/ov02e10.yaml @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: CC0-1.0 +%YAML 1.1 +--- +version: 1 +algorithms: + - BlackLevel: + - Awb: + # Color correction matrices can be defined here. The CCM algorithm + # has a significant performance impact, and should only be enabled + # if tuned. + # - Ccm: + # ccms: + # - ct: 6500 + # ccm: [ 1, 0, 0, + # 0, 1, 0, + # 0, 0, 1] + - Adjust: + - Agc: +... diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp index b217363d..30638836 100644 --- a/src/libcamera/sensor/camera_sensor_properties.cpp +++ b/src/libcamera/sensor/camera_sensor_properties.cpp @@ -325,6 +325,18 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen .hblankDelay = 3 }, } }, + { "ov02e10", { + .unitCellSize = { 1120, 1120 }, + .testPatternModes = { + { controls::draft::TestPatternModeOff, 0 }, + }, + .sensorDelays = { + .exposureDelay = 2, + .gainDelay = 2, + .vblankDelay = 2, + .hblankDelay = 2 + }, + } }, { "ov2685", { .unitCellSize = { 1750, 1750 }, .testPatternModes = {