{"id":26650,"url":"https://patchwork.libcamera.org/api/patches/26650/?format=json","web_url":"https://patchwork.libcamera.org/patch/26650/","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":"<20260506221945.ACDC41EA006B@mailuser.phl.internal>","date":"2026-05-06T21:46:42","name":"[v5,3/3] ipa: libipa: camera_sensor_helper: Add OV2740 black level","commit_ref":null,"pull_url":null,"state":"accepted","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/26650/mbox/","series":[{"id":5913,"url":"https://patchwork.libcamera.org/api/series/5913/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5913","date":"2026-05-06T21:45:28","name":"ipa: simple: Proportional AGC and statistics normalization","version":5,"mbox":"https://patchwork.libcamera.org/series/5913/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/26650/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26650/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 72E1EC32F8\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  6 May 2026 22:19:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E61026302A;\n\tThu,  7 May 2026 00:19:49 +0200 (CEST)","from fout-a5-smtp.messagingengine.com\n\t(fout-a5-smtp.messagingengine.com [103.168.172.148])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 172F563022\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  7 May 2026 00:19:47 +0200 (CEST)","from phl-compute-02.internal (phl-compute-02.internal\n\t[10.202.2.42])\n\tby mailfout.phl.internal (Postfix) with ESMTP id CED21EC00BF;\n\tWed,  6 May 2026 18:19:45 -0400 (EDT)","from phl-imap-07 ([10.202.2.97])\n\tby phl-compute-02.internal (MEProxy); Wed, 06 May 2026 18:19:45 -0400","by mailuser.phl.internal (Postfix, from userid 501)\n\tid ACDC41EA006B; Wed,  6 May 2026 18:19:45 -0400 (EDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=jetm.me header.i=@jetm.me header.b=\"Ad72/8UJ\";\n\tdkim=pass (2048-bit key;\n\tunprotected) header.d=messagingengine.com\n\theader.i=@messagingengine.com header.b=\"q+cW6hwV\"; \n\tdkim-atps=neutral","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc: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=fm2; t=1778105985;\n\tx=1778192385; bh=tprWUqY3r3XJz5Ghie815JLR38HBm1QesliNd+yOXh4=; b=\n\tAd72/8UJdLeQkIt3PoMtHB+1EIpGyr/Z5MPoVffABpvavsBgNajkLbsIcp7v7Hrz\n\tYK9KrpyidrImDG5T8kDCKjcyaXeBXiMkCFT3gNm1ijoPRYkfiO21OXkvHAKDdiEr\n\tnjY//gj03J70bwUyLd193rQeLxwaakNw6RqbhJXTJ2nbYAsvkvishbg+UmwqOvfe\n\t8m4PEhFTu49iJUolQsSZc2wqaowAWXY5KQ6GPcGsBT6GdfNhz806wNwtJ9skZc1Y\n\tR5iqfPXJn4YbQMWM5+F1OuiNDfpypia+dtVGWbeZlxSUX4x1Nr+Po72Fp2pkh8iy\n\tYedU+wd1Ma+Owimu3wUkmA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n\tmessagingengine.com; h=cc:cc:content-transfer-encoding\n\t:content-type:content-type:date:date:feedback-id:feedback-id\n\t:from:from:in-reply-to:in-reply-to:message-id:mime-version\n\t:references:reply-to:subject:subject:to:to:x-me-proxy\n\t:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1778105985; x=\n\t1778192385; bh=tprWUqY3r3XJz5Ghie815JLR38HBm1QesliNd+yOXh4=; b=q\n\t+cW6hwVDe4dbf8wCnrD/ZO/YY+24qcp4rnykqkTYXjVY2lLxN1Xnn9WI9IkU0TL0\n\tkhvT50rtNmskG4PEMSRz+e87vAAzmA/LCV5W7CZcw/9Ta+sgtV+8Anv+ebBRRlL7\n\tWsnTpooH9UtT3uJbL+YGVuSjwu5F+znPA8NJaU6W5TW17EKceZb8rCDPhlOKJwxV\n\tkmcjt1gsP/p1bjyw3g/R81rvSDwN/y4gVH7vzva7wMz+UgrshcVU2ZpQh6Hxk9qg\n\tkhgXbbcJcsXUDWR290+1GEwi7FX3fc9Net4QOLTrGfR+i8c7V3d/5BBx8DuNSnF1\n\tz4AUGf5B0XFZgnYKxl/vQ=="],"X-ME-Sender":"<xms:gb77abtbYcSVhImjt1JJ4KD7kQQa-d_oaE9UELgolSPqqkghHm5sMQ>\n\t<xme:gb77aXTk0Ks6CnthAj709OGrhR4GNNXgfhVE5-bPHzgyUr6cpKNF_H7iWUlRVGA1V\n\tGt6LdN3G8I0b8y8MwxKu-3fFjD6ETda-WbCrhCvoc_ygMIJ4V0hZ80>","X-ME-Proxy-Cause":"gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddutdehjeejucetufdoteggodetrf\n\tdotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu\n\trghilhhouhhtmecufedttdenucgopfhokfffucdluddtmdenucfjughrpefotggggffhvf\n\tffufevjghfsehtkedttdertdejnecuhfhrohhmpeflrghvihgvrhcuvfhirgcuoehflhho\n\tshhssehjvghtmhdrmhgvqeenucggtffrrghtthgvrhhnpedtudejffejkeekteelueefvd\n\tejvdeuhfefteehkeevtddvleduteekleetvdelhfenucevlhhushhtvghrufhiiigvpedv\n\tnecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhssehjvghtmhdrmhgvpdhnsggprh\n\tgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehrohgsvghrthdr\n\tmhgruggvrhestgholhhlrggsohhrrgdrtghomhdprhgtphhtthhopehkihgvrhgrnhdrsg\n\thinhhghhgrmhesihguvggrshhonhgsohgrrhgurdgtohhmpdhrtghpthhtoheplhhisggt\n\trghmvghrrgdquggvvhgvlheslhhishhtshdrlhhisggtrghmvghrrgdrohhrghdprhgtph\n\thtthhopehmiigrmhgriigrlhesrhgvughhrghtrdgtohhm","X-ME-Proxy":"<xmx:gb77aTWdr9yKJQN2SJgWD22QBOkAnY1ZKNyDdjOtPF5ecfiEwaN_RA>\n\t<xmx:gb77aZab_3l-RSB56DyAeHdf8RO7NH7iDXQJoXPZFH_3R7-ji6hsWg>\n\t<xmx:gb77aZ04J8fijwCUIjZ7zh3NvfXA5dGIeGs6GRJwtepwIcnpNN4vLA>\n\t<xmx:gb77abh24q1mLggadnuX2FY6UYvkCqeTVO4iesvwxMgXtvo5Zb4geA>\n\t<xmx:gb77acA9ET74U2hye6_6HG8YcSPZZADNs9ENrc3jh74UliDQuj2_5ZDk>","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, 06 May 2026 15:46:42 -0600","Subject":"[PATCH v5 3/3] ipa: libipa: camera_sensor_helper: Add OV2740 black\n\tlevel","Cc":"mzamazal@redhat.com, kieran.bingham@ideasonboard.com,\n\trobert.mader@collabora.com","In-Reply-To":"<177810597783.688418.1631246733707368646@jetm.me>","References":"<177810597783.688418.1631246733707368646@jetm.me>","Message-Id":"<20260506221945.ACDC41EA006B@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>\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\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":["v5","3/3"]}