{"id":26269,"url":"https://patchwork.libcamera.org/api/patches/26269/?format=json","web_url":"https://patchwork.libcamera.org/patch/26269/","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":"<20260306-agc-proportional-v4-3-e87c7e0d837a@jetm.me>","date":"2026-03-06T18:46:42","name":"[v4,3/3] ipa: libipa: camera_sensor_helper: Add OV2740 black level","commit_ref":null,"pull_url":null,"state":"new","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/26269/mbox/","series":[{"id":5824,"url":"https://patchwork.libcamera.org/api/series/5824/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5824","date":"2026-03-06T18:46:39","name":"Simple pipeline: proportional AGC, AWB stats fix, OV2740 black level","version":4,"mbox":"https://patchwork.libcamera.org/series/5824/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/26269/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26269/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 4ED13BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Mar 2026 18:47:31 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 040D06262B;\n\tFri,  6 Mar 2026 19:47:31 +0100 (CET)","from fout-b3-smtp.messagingengine.com\n\t(fout-b3-smtp.messagingengine.com [202.12.124.146])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 16EB26262B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Mar 2026 19:47:29 +0100 (CET)","from phl-compute-02.internal (phl-compute-02.internal\n\t[10.202.2.42])\n\tby mailfout.stl.internal (Postfix) with ESMTP id 1E1E41D001EF;\n\tFri,  6 Mar 2026 13:47:28 -0500 (EST)","from phl-imap-07 ([10.202.2.97])\n\tby phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 13:47:28 -0500","by mailuser.phl.internal (Postfix, from userid 501)\n\tid D0D6B1EA006B; Fri,  6 Mar 2026 13:47:27 -0500 (EST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=jetm.me header.i=@jetm.me header.b=\"pmNB6ydX\";\n\tdkim=pass (2048-bit key;\n\tunprotected) header.d=messagingengine.com\n\theader.i=@messagingengine.com header.b=\"auylUig1\"; \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=fm3; t=1772822847;\n\tx=1772909247; bh=CHN1xniAfXlwQmhfXAgCskP+NfdleaM3Yb9Adg8Ets4=; b=\n\tpmNB6ydXRNTtclbQNeoodsvW7c/7plZ6g1V/xSB/9oPr7DSaFDncqd2D2eggsE47\n\t1XgGgrBAi4xERBQJamW2T6gkGRmHZ95xzrxOzQY7EXM0cM9CqepOI07O1eSB7uI1\n\tPfH8SKKSCYKJ1QTvO+lPTVVJ05AibI3RGIUlZormgIZ0ESd7uxfGkForuAy3pbmk\n\t/tQM2urt5Ikq/SK0WyNfABoQ465syPHylKZaBJa1BVYWdXVdC110ZZqNkiKt5FBf\n\tQLG+mtXpQp3uuVVAnCCW+/XRBO8MHpQQ7KnuOXLJV9Vs7PsyXTezhNpBW1gVWmCO\n\tcRUkuQdTouwb8h04QNxE5A==","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=fm1; t=1772822847; x=\n\t1772909247; bh=CHN1xniAfXlwQmhfXAgCskP+NfdleaM3Yb9Adg8Ets4=; b=a\n\tuylUig1/T/LiMaJYy4Sb0iSidhtVztgCfPY1TV1/uv/DKeqaM8e1gLk1BbjcXb22\n\thByPeG+8/zO1NJRXua+ZCJgOc3a9LSS+cLA5nPeIzp2sreQKLeZg4YYjIx59OLzi\n\tDVFHw6MBVpawKY3ojdokGsMYmxxZYXdUHr3bnxu/o16ROgL9Ct9CRI5bAAxW1pib\n\tJKF2EPILvCBPP8ZjcjaWqrYBR0R4sSIpTgtZr8tUgOH8BowYoemGgjJ4I+Uk2L+/\n\to3+seUDyrn1XC3mtRsFIq0N8RgCxBB8T7izyrzbLv11cgTyXW0BtwhjrBg/TWMjL\n\tlpD60Gk69C2VdUweefvEQ=="],"X-ME-Sender":"<xms:PyGraeqA20SO2neup-GuRMoaK60_U4RpqnC8_KcJiXePt9FbhlW-AA>\n\t<xme:PyGraXfzjiZCNXQVrWC7hx6Wv2T89u2FNLyPJcs0SXihuPB71iOuvO6yPP6I5OBdp\n\tvMSqof5pCSzM_kRiOEfbKN3nMkr40_er_RT9TYT5aP177FNvgGI2O8>","X-ME-Proxy-Cause":"gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedttdegucetufdoteggodetrf\n\tdotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu\n\trghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf\n\tgurhepoffhfffugggtgffkvfevofgjfhesthejredtredtjeenucfhrhhomheplfgrvhhi\n\tvghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepvd\n\tdtjeeiheeijedtveeujeevvdekjeeuveekleeijeekfeejhfefveeiffffvdeinecuvehl\n\tuhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh\n\tgvthhmrdhmvgdpnhgspghrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghp\n\tthhtoheprhhosggvrhhtrdhmrgguvghrsegtohhllhgrsghorhgrrdgtohhmpdhrtghpth\n\thtohepkhhivghrrghnrdgsihhnghhhrghmsehiuggvrghsohhnsghorghrugdrtghomhdp\n\trhgtphhtthhopehflhhoshhssehjvghtmhdrmhgvpdhrtghpthhtoheplhhisggtrghmvg\n\thrrgdquggvvhgvlheslhhishhtshdrlhhisggtrghmvghrrgdrohhrghdprhgtphhtthho\n\tpehmiigrmhgriigrlhesrhgvughhrghtrdgtohhm","X-ME-Proxy":"<xmx:PyGraUsFdQ7JNC3o4gk43EVZRFpeNM_UNh5tWkwLqTASJwdUOAArSA>\n\t<xmx:PyGraS_NWbuB7C20Akl_1hKmc2Y0cemnarLU7mj0Nev55TLGr7WQbw>\n\t<xmx:PyGraf1T_pFvmUrwtsQPSKgK5McSQQvRN5UBu2ZOY-PT3-VWPuPPOA>\n\t<xmx:PyGraXBq93-QJRpqf7QMmQAZj5tEToMm8_AYxQ_s2juDv5CRSQwqbw>\n\t<xmx:PyGracir57pt_se61lF9lgjG1jCY1ZeyNzFJKmtFzXbOZTNqKywJkZGl>","Feedback-ID":"i9dde48b3:Fastmail","X-Mailer":["MessagingEngine.com Webmail Interface","b4 0.14.3"],"From":"Javier Tia <floss@jetm.me>","Date":"Fri, 06 Mar 2026 12:46:42 -0600","Subject":"[PATCH v4 3/3] ipa: libipa: camera_sensor_helper: Add OV2740 black\n\tlevel","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260306-agc-proportional-v4-3-e87c7e0d837a@jetm.me>","To":"libcamera-devel@lists.libcamera.org","Cc":"Javier Tia <floss@jetm.me>, Robert Mader <robert.mader@collabora.com>,\n\tMilan Zamazal <mzamazal@redhat.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","X-Developer-Signature":"v=1; a=openpgp-sha256; l=1395; i=floss@jetm.me;\n\th=from:subject:message-id;\n\tbh=CVayJSTkmCsf3E9vSV+wy3VZe+4o2pIj1TTFoqLh3u4=; \n\tb=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpqyEP1N2etlf4hTxq8on0NTxpNs3AChasz/vmZ\n\tzNwj/Eop2OJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaashDwAKCRC17sMLqGd3\n\tH8LqC/9CLvtNbv/tp2eCP2K96dyZq62hLhKNle6Bp4odNM+Cm8Cwv1FW2IPyVUTFO3bSFEnaavp\n\tFDd+GIhf16pXxf8HxP2knf0fH5M9UhkwChLFSttPGXx1Vd22cWPoMgkX2/E91UTYmm2hzq/tTJu\n\tSe9FVRKNOenDMQ/4G9ZMqAMa75LwWc2x/XyTfzXnwC+laGN+gHdZbm9nJSz8KRbBm3DvOkm3q74\n\txsrtcql1wts2eaJFiHcc9UoJERnhSzF+ygo66lWqy21DYoHXd5fRfWEbjdIpYRuFW6KaFk339ZQ\n\tTxvdErmdEwymK41kVvxL7X7IdLcY8aql13p5ObZEp7nOGJfkSwTdq8GnIQ0NfUbZ73rZ2i1Z/37\n\tNbeTFDeH7D3KBBSQkKiVQuH1nMmNCXG41pmnc93QKQkQuWqG5NUoF94QlGOQ2kdpBIJFa4kyrA8\n\tBd8kZW6IYrXqczkQOpqCGz+/G5Xep6FPdn8hx1RPua+EMAHWWhHxw6E//Lj6gXppCVyhs=","X-Developer-Key":"i=floss@jetm.me; a=openpgp;\n\tfpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F","In-Reply-To":"<20260306-agc-proportional-v4-0-e87c7e0d837a@jetm.me>","References":"<20260306-agc-proportional-v4-0-e87c7e0d837a@jetm.me>","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":["v4","3/3"]}