Show a patch.

GET /api/patches/27528/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 27528,
    "url": "https://patchwork.libcamera.org/api/patches/27528/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/27528/",
    "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": "<CALr1FG9fxSqkZNpejfc2D--VzoJ37LS=G+zAE1T9ESg9MAoVmg@mail.gmail.com>",
    "date": "2026-07-31T14:45:56",
    "name": "[v3,1/2] libipa: camera_sensor_helper: Add imx471",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "e4daa9233f4c60bc3b9f368c689fda18a222e05c",
    "submitter": {
        "id": 476,
        "url": "https://patchwork.libcamera.org/api/people/476/?format=api",
        "name": "John Cronin",
        "email": "john@stromback.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/27528/mbox/",
    "series": [
        {
            "id": 6095,
            "url": "https://patchwork.libcamera.org/api/series/6095/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6095",
            "date": "2026-07-31T14:33:06",
            "name": "Add imx471 soft-ISP sensor support",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/6095/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/27528/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/27528/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 B6D24BDE4C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 31 Jul 2026 14:46:00 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C6AD467FDA;\n\tFri, 31 Jul 2026 16:45:59 +0200 (CEST)",
            "from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com\n\t[IPv6:2607:f8b0:4864:20::112d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7052965F9F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 31 Jul 2026 16:45:58 +0200 (CEST)",
            "by mail-yw1-x112d.google.com with SMTP id\n\t00721157ae682-7dbcb505578so10178627b3.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 31 Jul 2026 07:45:58 -0700 (PDT)",
            "from 313336824172 named unknown by gmailapi.google.com with\n\tHTTPREST; Fri, 31 Jul 2026 07:45:56 -0700",
            "from 313336824172 named unknown by gmailapi.google.com with\n\tHTTPREST; Fri, 31 Jul 2026 07:45:56 -0700"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=stromback-com.20251104.gappssmtp.com\n\theader.i=@stromback-com.20251104.gappssmtp.com\n\theader.b=\"JUaFHc8h\"; dkim-atps=neutral",
        "ARC-Seal": "i=1; a=rsa-sha256; t=1785509157; cv=none;\n\td=google.com; s=arc-20260327;\n\tb=laPTd73RKmHWFG/pxHAXidCrHDogtJaMz9SWLluVtn89wp7aLIydYBdf9ficuPnayI\n\terxB3HAUDLewwfkzPgu7ktdP67GUjL4F5Pl3+JMsPdL5M+pAbhbySfhw5m7ZK1u1O9FU\n\tL6tHohqVkYvQ9UY0gl79r7xpjk2GFDu6CLBivpO7pG6X6DTcf6MZ1ooBRa0I7h891aaa\n\twrZ2RUAfVrnY4QVVmEJhJzrXD1mOfnXdZL09+FEdPDsib6vea/lfE6EucCAcEIhmfNcv\n\t3gUoAET06GMFqjrX30F6d0jKQPKeQIOMyEFudVPFM3xepeKUYQKjCY92pi286brFLsaA\n\th0Kw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n\ts=arc-20260327; \n\th=cc:to:subject:message-id:date:from:references:in-reply-to\n\t:mime-version:dkim-signature;\n\tbh=BZ1QTkb3aEZhQf2+b9MsGmJBNHwb2M2es/NFRg3iihM=;\n\tfh=hN8mNPnxBXjCARLz6VoZGvcnfJs454t5dBv/gP0fGlc=;\n\tb=Ugx3desh1fpRIxs1TKBAKw9m0fErsLAKrZ1Xi+OfLHivN4z7y/0/iWuUtKz/f5Nquv\n\tSkS0XfC5tnPDyY8XABOp/IhrRTOoBHPjBPCe1q8KK84rJcoIKqH3k6b8nGaGnBBJA42D\n\tA94Z5/VelvD7asCNA49vWAp3rQ8YlYmBB26QMGfmbqx3k/A5bEb9G+5S9BidtqgJ3WbU\n\t6DsnfJDv7HTg9ACP0c/xV0P36sfvN/z5cWuNyACZOi6HdpoWPQM63/8YnyeXHr9Z/fnl\n\tIP2+CL66IvOmKGuo5l3K/IZ8wVy7wiGa1PPppd2PN+UTpwQNjhhQI6Zh0xaOOcuc2+yt\n\tVPsQ==; darn=lists.libcamera.org",
        "ARC-Authentication-Results": "i=1; mx.google.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=stromback-com.20251104.gappssmtp.com; s=20251104; t=1785509157;\n\tx=1786113957; darn=lists.libcamera.org; \n\th=content-type:cc:to:subject:message-id:date:from:references\n\t:in-reply-to:mime-version:from:to:cc:subject:date:message-id\n\t:reply-to:content-type;\n\tbh=BZ1QTkb3aEZhQf2+b9MsGmJBNHwb2M2es/NFRg3iihM=;\n\tb=JUaFHc8h5dpvZ8q2hLzo9PF7b66saVbTDcf9Ue+whnPFIRP+QzBonVoMMkKoM/9WTy\n\tvvkyv6bb4kjKhudO88uRF9sjyCNY+n0UV/gbVzq/Q52VM6v+bb2slTo/NfOOuJIvqxV1\n\taab4Ru0nQYp+fM85ibHpu0tHl80P/fuDwJkLwNcnJojcRcsojNd5yR8GW2MVfOXJvSLZ\n\tsVg9gzUOXVfSk7gLk3i8p0kJtIzWGcP7p5FBVeXIcD/yKaIUR4pb2D4QuCQJuQmv02Cy\n\tGLZo8zyjhotbkWmZKwVN8e/fVGAnsJnYQ+mUc5edKsd+vFSQMK5gSyD37BkzN5mdRCb+\n\ty5TQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1785509157; x=1786113957;\n\th=content-type:cc:to:subject:message-id:date:from:references\n\t:in-reply-to:mime-version:x-gm-gg:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to:content-type;\n\tbh=BZ1QTkb3aEZhQf2+b9MsGmJBNHwb2M2es/NFRg3iihM=;\n\tb=AgEHpjfIZP8QzkMFUMTgR66NEFg0glVBywTaunt/T82r8aDTqHJV5DmPn75UYnWCqg\n\tcOrmQoI+ID19DoF7VhsuL4lGqecKkknZ0eJsQP97wWB5q8pVJF8xhSvMdAAq5X4f8kbP\n\tx0LE67dN9xCvU9fzEliL7EWRB3F3+oQmbStqcvAz/ZYOuz5+Rj48py/eCTvmxly5cQFj\n\t+HI7X4R1sNQll4T99IzN9uHmT3r2o26gMLRUIKwZJ5stJ6nIgX7xg6SS5Wj/hT3MfKSn\n\tQWdOo5lPhMjHuP+tEFRYELi0gMWuQ58E83jiGs+DiiERR+fqZTdKtNRUukqITpDiPEEa\n\toV1A==",
        "X-Gm-Message-State": "AOJu0YzTbvRi8c7ayWr+JnVjpFuCpgrLo81WiMSKcCCddUXtARVSyTOv\n\tJB5h+1zlzWUU3K1M4lI/r4a4/oyEQQ7ccbKmWPPhC9E61wReoW4HyT+XMmmdorEPLIDveX9PglI\n\tPpsJRBu6HK8p3oJX/hNEp03L/EkSgoLx7RZiepYLgd0XZmcNR4kWQ/MA=",
        "X-Gm-Gg": "AR+sD13LCjbbqmGwGi3jA9tWoVDtRabD4PJaUcfh7m/UYaB7TuvcTL4VoCaGroSJc+c\n\tO9kxAhdH9pBIZDgujXwYJfnCF5cvid3rc6fT97h29E2IO0W5vULF+KmTbQV3Nzlg4q3DHkyGdP2\n\tcOJJY24ZhB+Ub/uWJRBD+TZ5SqLfkgJgLEtIwVdMDdlYsZA1yB+eTm8uaZ+dwW5OPJ4c408PzYY\n\tungncu9TS/lHx34cj96Xf837QRg/efGRSA5xXdFuTcojZ/ACXBZx5Hm5gQ16IjJ8WBJTWmUY4UZ\n\tl/p2wS0fQf8vmpHFqfJDmGz0TzYoTgc9IwLRb44dnCFWjPhGM6sppkJZxqPMynsEWBiTFnE8Ee2\n\t0RZea5tBDo8ZiqvThI6Hnh3DSMLPmkib4xwVhjxjoQrEAC8J0uRbsxiTQLb5a9vnyCMKzMH6Vyu\n\taZNz4L+i7n6dFS7+W1nsuDLsqLehkXSK6zUt+huNb2FDhFFkvVFWyIonMlnSkSmeT8LPf9lBOCv\n\tsYTSvSq2pIf4mYEG2ogKUTPZqPODLRvLcvlOw0SyQ==",
        "X-Received": "by 2002:a05:690c:278a:b0:81c:b865:2231 with SMTP id\n\t00721157ae682-81fd4bf88ecmr591327b3.33.1785509157174; Fri, 31 Jul 2026\n\t07:45:57 -0700 (PDT)",
        "MIME-Version": "1.0",
        "In-Reply-To": "<CALr1FG9wKCZLfcCo0_Cbvz__FpqerY_SFMdUdtiFgq=N4gx8Bw@mail.gmail.com>",
        "References": "<CALr1FG9wKCZLfcCo0_Cbvz__FpqerY_SFMdUdtiFgq=N4gx8Bw@mail.gmail.com>",
        "From": "John Cronin <john@stromback.com>",
        "Date": "Fri, 31 Jul 2026 07:45:56 -0700",
        "X-Gm-Features": "AUfX_mzazH7GswSaAar4Y5Fpq3lA7KA4e7DENRaNbsB2be89WxBVtczFQT9qqG0",
        "Message-ID": "<CALr1FG9fxSqkZNpejfc2D--VzoJ37LS=G+zAE1T9ESg9MAoVmg@mail.gmail.com>",
        "Subject": "[PATCH v3 1/2] libipa: camera_sensor_helper: Add imx471",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "jacopo.mondi@ideasonboard.com, kieran.bingham@ideasonboard.com",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "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": "Add CameraSensorHelper for Sony IMX471 (SONY471A), used on Lenovo\nThinkPad X9 / X1 Carbon Gen14 and related IPU7 platforms.\n\nThe kernel imx471 driver writes V4L2_CID_ANALOGUE_GAIN codes 0..800\ndirectly to register 0x0204 and does not document a gain formula. Use\nthe same Sony linear model G = 1024/(1024-code) already used for\nimx355/imx477/imx708. Under that model code 800 implies ~4.57x; that\nfigure is derived from the V4L2 range, not a datasheet max-gain claim\n(no public datasheet available here).\n\nBlack level 4096 (64 DN at 10-bit, scaled to 16-bit) follows the same\npedestal convention as imx355. It has not yet been measured on a covered\nlens on this hardware.\n\nSoft-ISP loads without \"Failed to create camera sensor helper for\nimx471\" on Fedora 44 / ThinkPad X9-15 Gen 1 (kernel 7.1.5).\n\nSigned-off-by: John Cronin <john.cronin@opcenter.com>\n---\n src/ipa/libipa/camera_sensor_helper.cpp | 30 +++++++++++++++++++++++++\n 1 file changed, 30 insertions(+)\n\n public:",
    "diff": "diff --git a/src/ipa/libipa/camera_sensor_helper.cpp\nb/src/ipa/libipa/camera_sensor_helper.cpp\nindex cc16e25..bae2603 100644\n--- a/src/ipa/libipa/camera_sensor_helper.cpp\n+++ b/src/ipa/libipa/camera_sensor_helper.cpp\n@@ -644,6 +644,36 @@ class CameraSensorHelperImx462 : public\nCameraSensorHelperImx290\n };\n REGISTER_CAMERA_SENSOR_HELPER(\"imx462\", CameraSensorHelperImx462)\n\n+class CameraSensorHelperImx471 : public CameraSensorHelper\n+{\n+public:\n+\tCameraSensorHelperImx471()\n+\t{\n+\t\t/*\n+\t\t * Sony IMX471 (IPU7 platforms: ThinkPad X9 / X1 Carbon Gen14,\n+\t\t * ACPI SONY471A).\n+\t\t *\n+\t\t * Kernel imx471 writes V4L2_CID_ANALOGUE_GAIN directly to\n+\t\t * register 0x0204 with range 0..800 (IMX471_ANA_GAIN_MIN/MAX).\n+\t\t * The driver does not document a conversion formula.\n+\t\t *\n+\t\t * Use the same Sony linear model as imx355/imx477/imx708:\n+\t\t *   G = 1024 / (1024 - code)\n+\t\t * which yields code 0 -> 1.0x and code 800 -> ~4.57x. That max\n+\t\t * is a consequence of the V4L2 code range under this model,\n+\t\t * not an independent datasheet claim (no public datasheet\n+\t\t * available to this author).\n+\t\t *\n+\t\t * Black level: 64 DN at 10-bit -> 4096 at 16-bit, same pedestal\n+\t\t * convention as imx355 (\"From datasheet: 64 at 10bits\"). Not\n+\t\t * independently measured on a covered lens yet.\n+\t\t */\n+\t\tblackLevel_ = 4096;\n+\t\tgain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 };\n+\t}\n+};\n+REGISTER_CAMERA_SENSOR_HELPER(\"imx471\", CameraSensorHelperImx471)\n+\n class CameraSensorHelperImx477 : public CameraSensorHelper\n {\n",
    "prefixes": [
        "v3",
        "1/2"
    ]
}