{"id":26876,"url":"https://patchwork.libcamera.org/api/1.1/patches/26876/?format=json","web_url":"https://patchwork.libcamera.org/patch/26876/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/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":"<20260612074647.3118148-1-bogdan@nimblex.net>","date":"2026-06-12T07:46:47","name":"[v2] ipa: libipa: camera_sensor_helper: add ov08x40","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"273f1ff25a6892f5ae9bcf9ac9f885452d06eb9d","submitter":{"id":273,"url":"https://patchwork.libcamera.org/api/1.1/people/273/?format=json","name":"Bogdan Radulescu","email":"bogdan@nimblex.net"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/26876/mbox/","series":[{"id":5991,"url":"https://patchwork.libcamera.org/api/1.1/series/5991/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5991","date":"2026-06-12T07:46:47","name":"[v2] ipa: libipa: camera_sensor_helper: add ov08x40","version":2,"mbox":"https://patchwork.libcamera.org/series/5991/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/26876/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26876/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 07B38C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Jun 2026 07:46:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A8515623C1;\n\tFri, 12 Jun 2026 09:46:58 +0200 (CEST)","from mail-wr1-x435.google.com (mail-wr1-x435.google.com\n\t[IPv6:2a00:1450:4864:20::435])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id ABCA361E76\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Jun 2026 09:46:56 +0200 (CEST)","by mail-wr1-x435.google.com with SMTP id\n\tffacd0b85a97d-45eee266c6cso548999f8f.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Jun 2026 00:46:56 -0700 (PDT)","from nimblex ([2a02:2f0c:5605:2700:831f:a7f3:441:bb79])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-4606f26f309sm3892588f8f.14.2026.06.12.00.46.54\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 12 Jun 2026 00:46:55 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=nimblex.net header.i=@nimblex.net\n\theader.b=\"AEKqfPJ/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=nimblex.net; s=google; t=1781250416; x=1781855216;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=x81P1+PSXYnb1gCYKmFovk69d8TIXdubOfhhX4nu7Zc=;\n\tb=AEKqfPJ/VyBbU4F5qR6fit8TRPr8UeNadPM1RBqT1aOcwCYqUxDHtj21MJrCvo2NGb\n\tsRu2sihY+qQkza3wI4BA976yjfk5ecvhCu+1TLBl3G6TUqoKPcvPd8h1y2ibLpUVLAF5\n\tgtX3RQDg0nVww0sQ3ORwXPLw3iTwMa+/NsRt8=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1781250416; x=1781855216;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n\t:to:cc:subject:date:message-id:reply-to;\n\tbh=x81P1+PSXYnb1gCYKmFovk69d8TIXdubOfhhX4nu7Zc=;\n\tb=J3AhPzEwGyQFuF9BxLHdHh4HJA24IWnha0KiMfo1gVcK0Q2lmRFMdKTQWG0BnlEYLT\n\ttTL3N4EBZoUKINR8Cl1AQf+3Typ5xdjekzUI1aIfsgkLHR/PG8wcX+oiNpjA7asR/LHf\n\tDkf5qhdxI/tM2Hnne1jDYGIWA3l5qpQVk5hxqH/tFTYd5utBaeg0i++3pPOxs5o8ttdt\n\tJHaw0qSzWVUWVvL3hsk1eMXQWpo/KksjQQpF7uoEPtNVtRsGCUQH56DRvpHbmlIg55UW\n\tzf7gWQd0LObRBAfnCiqNDQY+GEb5OLcA+dQeslnvkWDu9i46ioyCeRXlBKZ4WF9JhCh8\n\tsRvg==","X-Gm-Message-State":"AOJu0YwTj5wDfWeboCPCx2mye/Vg78KZlIL1c60E8J2LLNMc3hqSDofu\n\tHJzG4ODVPv78eqQL/Rof0U+jDJoL6jK5n+ORNEvICsI9ueeZmS2MVgZd9m9Pk2IwBi6PlEX1/RN\n\ttZ66yQgI=","X-Gm-Gg":"Acq92OGmA5lBlCn0Vc8ePmFd0S5KQ2jl2IcUSdbgfJKSY2NNH+lIxthQQ4TnV9SE6XU\n\tK6JrZNH/jAeCH1OlXo4xr+IJXxtuwrPToWCSmktCbKMo/kjLBll8afpLeXnCtyNNAz0Y1/6z+/6\n\tBlr6DSfVlj6lk4pIaFOnEBuY02yH42hKorsZK11reOjLx/rRITq81DlqXLin/HEy+HWbpYtM2LI\n\t3/LkZAp3VNWhVGBcWXcXHXDNooIeKgaIzw7iJQ3NFbnSe2S4nxuldO+8MPWY2nLKm9G0LQHllX0\n\tR3fFR3p14OC69B+G4MYGIGVcUgOLyDgCmT69qlEr660ms6ovr2TiW9M8brs+xORVO3D06s6JAqk\n\t3CSrEp72V225kqmkPN84Shi5IYv1SQBbynJtJjYDn2o63BgIABAe7VMngsgDjcdNUUQdP46e6Tv\n\tC5c3reIR4eVDswN7l2roc=","X-Received":"by 2002:a05:6000:615:b0:45e:e44b:312b with SMTP id\n\tffacd0b85a97d-4606da6a8a7mr2582011f8f.18.1781250415950; \n\tFri, 12 Jun 2026 00:46:55 -0700 (PDT)","From":"Bogdan Radulescu <bogdan@nimblex.net>","To":"libcamera-devel@lists.libcamera.org","Cc":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tHans de Goede <hansg@kernel.org>, Bogdan Radulescu <bogdan@nimblex.net>","Subject":"[PATCH v2] ipa: libipa: camera_sensor_helper: add ov08x40","Date":"Fri, 12 Jun 2026 10:46:47 +0300","Message-ID":"<20260612074647.3118148-1-bogdan@nimblex.net>","X-Mailer":"git-send-email 2.54.0","In-Reply-To":"<20260512164926.2947313-1-bogdan@nimblex.net>","References":"<20260512164926.2947313-1-bogdan@nimblex.net>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","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":"Without an entry for ov08x40, the software ISP used by the simple\npipeline handler can't run AGC for this sensor and logs:\n\n  IPASoft: Failed to create camera sensor helper for ov08x40\n\nThe kernel driver (drivers/media/i2c/ov08x40.c) advertises analogue-\ngain register values in the range 0x80..0x07c0 with a default of 0x80,\nwhich is the same 1/128-step encoding already used by the other\nOmniVision sensors in this file (ov5675, ov8858, ov8865, ov13858).\n\nThe sensor outputs 10-bit Bayer data and, like the other OmniVision\nsensors, applies a fixed 0x40 (64 LSB) black level pedestal, which\nscales to 4096 at the 16-bit width expected by blackLevel().\n\nAdd a helper that follows the same pattern.  Tested on a Lenovo\nThinkPad X1 Carbon Gen 13 (Intel Lunar Lake, IPU7), where this is\nthe only front camera.\n\nSigned-off-by: Bogdan Radulescu <bogdan@nimblex.net>\n---\nChanges since v1:\n- Drop the explanatory comment on the gain model (it is already\n  covered by the commit message).\n- Set blackLevel_ to 4096 (0x40 at 10 bits), which was missing.\n- Move the entry so the helpers stay sorted by sensor model\n  (ov08x40 sorts before ov2685).\n\n src/ipa/libipa/camera_sensor_helper.cpp | 11 +++++++++++\n 1 file changed, 11 insertions(+)","diff":"diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp\nindex 3028197..eb9acd1 100644\n--- a/src/ipa/libipa/camera_sensor_helper.cpp\n+++ b/src/ipa/libipa/camera_sensor_helper.cpp\n@@ -653,6 +653,17 @@\n };\n REGISTER_CAMERA_SENSOR_HELPER(\"imx708\", CameraSensorHelperImx708)\n \n+class CameraSensorHelperOv08x40 : public CameraSensorHelper\n+{\n+public:\n+\tCameraSensorHelperOv08x40()\n+\t{\n+\t\tblackLevel_ = 4096;\n+\t\tgain_ = AnalogueGainLinear{ 1, 0, 0, 128 };\n+\t}\n+};\n+REGISTER_CAMERA_SENSOR_HELPER(\"ov08x40\", CameraSensorHelperOv08x40)\n+\n class CameraSensorHelperOv2685 : public CameraSensorHelper\n {\n public:\n","prefixes":["v2"]}