{"id":26260,"url":"https://patchwork.libcamera.org/api/patches/26260/?format=json","web_url":"https://patchwork.libcamera.org/patch/26260/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260304232545.DDBF41EA006B@mailuser.phl.internal>","date":"2026-03-04T23:02:18","name":"[v2,4/4] ipa: libipa: camera_sensor_helper: Add OV2740 black level","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"4ff72347bdad59109aafa386d315d1355d718838","submitter":{"id":261,"url":"https://patchwork.libcamera.org/api/people/261/?format=json","name":"Javier Tia","email":"floss@jetm.me"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/26260/mbox/","series":[{"id":5821,"url":"https://patchwork.libcamera.org/api/series/5821/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5821","date":"2026-03-04T23:13:46","name":null,"version":2,"mbox":"https://patchwork.libcamera.org/series/5821/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/26260/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26260/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8E446BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  4 Mar 2026 23:25:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 51BBC623B5;\n\tThu,  5 Mar 2026 00:25:49 +0100 (CET)","from fhigh-b2-smtp.messagingengine.com\n\t(fhigh-b2-smtp.messagingengine.com [202.12.124.153])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0BFD7623B5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  5 Mar 2026 00:25:47 +0100 (CET)","from phl-compute-02.internal (phl-compute-02.internal\n\t[10.202.2.42])\n\tby mailfhigh.stl.internal (Postfix) with ESMTP id 2C2EC7A01E1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  4 Mar 2026 18:25:46 -0500 (EST)","from phl-imap-07 ([10.202.2.97])\n\tby phl-compute-02.internal (MEProxy); Wed, 04 Mar 2026 18:25:46 -0500","by mailuser.phl.internal (Postfix, from userid 501)\n\tid DDBF41EA006B; Wed,  4 Mar 2026 18:25:45 -0500 (EST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=jetm.me header.i=@jetm.me header.b=\"jVFpWFkC\";\n\tdkim=pass (2048-bit key;\n\tunprotected) header.d=messagingengine.com\n\theader.i=@messagingengine.com header.b=\"otrMPJBq\"; \n\tdkim-atps=neutral","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc\n\t:content-transfer-encoding:content-type:content-type:date:date\n\t:from:from:in-reply-to:in-reply-to:message-id:mime-version\n\t:references:reply-to:subject:subject:to:to; s=fm3; t=1772666746;\n\tx=1772753146; bh=uSVBpptbf4yn889L5GYM1TBbtIjcyBWf6/CMfM4pQzM=; b=\n\tjVFpWFkC0E9QfGMo4BE3mNCxrT8SOaZQtZpSHqTRcxvhSexshl9LyUfV+xd8Tmtd\n\tFeet090UmslJtOUg/O9fkN81sDkJuyM+k1YzHKDXBbUX7eeOpnnKHyv2x9IBKt78\n\tRuRfs7lheCwWe8ZzYpMFBX4rJ2Q/f1KXrsjFtxRbcFR9Ab+o0RX6MNVehmRFlkgi\n\tE14n7i3U1VnilVRis0uEONOjdhsBqJm751VCJ6tS8Wfy0nkDJrkPGGWxy2hT3kM1\n\tJNPf1lAZ9HHDLjbcnTXoa6XFqSoqVbBiR+aai9YukuFD9iUmmFBA/mbTUN/2qZDY\n\tL5viHj0jPd0CVD2lM3bZug==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n\tmessagingengine.com; h=cc:content-transfer-encoding:content-type\n\t:content-type:date:date:feedback-id:feedback-id:from:from\n\t:in-reply-to:in-reply-to:message-id:mime-version:references\n\t:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender\n\t:x-me-sender:x-sasl-enc; s=fm1; t=1772666746; x=1772753146; bh=u\n\tSVBpptbf4yn889L5GYM1TBbtIjcyBWf6/CMfM4pQzM=; b=otrMPJBqltOO/M8lp\n\tP4LvET5kGOpZiecGAANW/bGiphSRdBDBNtxYi8hL6q+FmoTzmVZh0o8Xy7s493Qs\n\t7JxBgs/l9uUnwAqMXyEoLMazlUbtbLByy3D0lPzoDZLBhcEE/rP43ZblugnCDcr2\n\tmNJrCPi3GfcRdJLHco4bUaVf4+Phb0iHxRfk/THx+LZxK+C3tuJPwotf/8qucg9T\n\tFznkJ4IqfqBPzEIYoVNWY3zHeha24DFi3/63KvqsFOx6dwNDVmz7Q5+QIzunEHWf\n\tYfFn3SSzxjbBvtU/NM6LqUb9DOf4pqChmCzQGQ/4I3rkKDZee2Gxk7pu4VyXv+8P\n\tcW1+g=="],"X-ME-Sender":"<xms:eb-oaTRAE1u57_zIswzl0nPYtpUeWc62eHbts4pz0QZgUkfPj3GvfA>\n\t<xme:eb-oafnhXzbdlofOApDjEPO6C7P8OxCaNI_O-YZnGYaaMTBOBat1JOCBoJRgX6EtT\n\tfxHWKpM1eKCOX1yMFl_UkNExVR0qWqZnQNc12cRbRpcY6FC5pQ4pCM>","X-ME-Proxy-Cause":"gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvieegkeduucetufdoteggodetrf\n\tdotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu\n\trghilhhouhhtmecufedttdenucgopfhokfffucdluddtmdenucfjughrpefotggggffhvf\n\tffufgjfhesthektddtredtjeenucfhrhhomheplfgrvhhivghrucfvihgruceofhhlohhs\n\tshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepteetvdeklefgledtjefhhfdtle\n\tdvhfffgfeuieelgeeigfekgffhleeghfefhfejnecuvehluhhsthgvrhfuihiivgepgeen\n\tucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjhgvthhmrdhmvgdpnhgspghrtg\n\thpthhtohepuddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheplhhisggtrghmvghr\n\trgdquggvvhgvlheslhhishhtshdrlhhisggtrghmvghrrgdrohhrgh","X-ME-Proxy":"<xmx:eb-oaahUtH92imHmwDtjJ17GMtCXf9IYhVQ0ooQY0lnM5rRqJT8_jw>\n\t<xmx:eb-oaa98LIdZK66ruLGgKFNZahue9xOF-E10S98HLUaoncmWr1WVIQ>\n\t<xmx:eb-oae9Fb9q0EBZP81NPQ_HdBo10sMU_RrnX7MT4BX7YA02ZolkeeA>\n\t<xmx:eb-oabBtNHYqvsYJB4cEvWzT96vFs7CGm293vgmBK4Tba9BCVMJ7LQ>\n\t<xmx:er-oac3GoHdYaIMk8b_GEl8URFEn67IX_9gIcSYdMcGhshOwPlOj6r-s>","Feedback-ID":"i9dde48b3:Fastmail","X-Mailer":"MessagingEngine.com Webmail Interface","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","From":"Javier Tia <floss@jetm.me>","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 04 Mar 2026 17:02:18 -0600","Subject":"[PATCH v2 4/4] ipa: libipa: camera_sensor_helper: Add OV2740 black\n\tlevel","In-Reply-To":"20260225221859.600869-1-floss@jetm.me","References":"20260225221859.600869-1-floss@jetm.me","Message-Id":"<20260304232545.DDBF41EA006B@mailuser.phl.internal>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Set blackLevel_ = 4096 (0x40 at 10-bit) in CameraSensorHelperOv2740.\nThe OV2740 kernel driver programs BLC target register 0x4003 with 0x40\nfor the 180 MHz link frequency mode. This matches the same pattern\nused by OV5675 and other OmniVision sensors with a 10-bit black level\nof 64.\n\nWithout this, the Simple pipeline falls back to auto-guessing the\nblack level, which happens to arrive at the same value but isn't\ndocumented. More importantly, the CameraSensorHelper is the canonical\nlocation for sensor calibration data and is used across all pipeline\nhandlers, not just Simple.\n\nSuggested-by: Robert Mader <robert.mader@collabora.com>\nSigned-off-by: Javier Tia <floss@jetm.me>\n---\n src/ipa/libipa/camera_sensor_helper.cpp | 2 ++\n 1 file changed, 2 insertions(+)","diff":"diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp\nindex e3e3e535..3028197e 100644\n--- a/src/ipa/libipa/camera_sensor_helper.cpp\n+++ b/src/ipa/libipa/camera_sensor_helper.cpp\n@@ -672,6 +672,8 @@ class CameraSensorHelperOv2740 : public CameraSensorHelper\n public:\n \tCameraSensorHelperOv2740()\n \t{\n+\t\t/* From Linux kernel driver: 0x40 at 10bits. */\n+\t\tblackLevel_ = 4096;\n \t\tgain_ = AnalogueGainLinear{ 1, 0, 0, 128 };\n \t}\n };\n","prefixes":["v2","4/4"]}