Patch Detail
Show a patch.
GET /api/patches/26876/?format=api
{ "id": 26876, "url": "https://patchwork.libcamera.org/api/patches/26876/?format=api", "web_url": "https://patchwork.libcamera.org/patch/26876/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "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/people/273/?format=api", "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/series/5991/?format=api", "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" ] }