Show a patch.

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

{
    "id": 27539,
    "url": "https://patchwork.libcamera.org/api/patches/27539/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/27539/",
    "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": "<ioJ8nPXN2MBNRgT4B5U28pjyL8KbNNuVXRxABp3f4rV29EizfJc_CM41sGVZGFgKmk2WkpqUGm1si06zKfhXiJmqs2eJwtQFpUYAdB5uaN0=@proton.me>",
    "date": "2026-08-02T13:59:08",
    "name": "[1/3] libcamera: camera_sensor_properties: Add IMX582, IMX586 and OV8856",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "adc2757354fb367c8cc6adb8835b76215a1bb633",
    "submitter": {
        "id": 484,
        "url": "https://patchwork.libcamera.org/api/people/484/?format=api",
        "name": "j4niwzis",
        "email": "j4niwzis@proton.me"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/27539/mbox/",
    "series": [
        {
            "id": 6099,
            "url": "https://patchwork.libcamera.org/api/series/6099/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6099",
            "date": "2026-08-02T13:59:08",
            "name": "[1/3] libcamera: camera_sensor_properties: Add IMX582, IMX586 and OV8856",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/6099/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/27539/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/27539/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 0B40AC32FE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun,  2 Aug 2026 13:59:14 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0DCFE67FEA;\n\tSun,  2 Aug 2026 15:59:13 +0200 (CEST)",
            "from mail-24425.protonmail.ch (mail-24425.protonmail.ch\n\t[109.224.244.25])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CB40C67FC1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun,  2 Aug 2026 15:59:11 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=proton.me header.i=@proton.me\n\theader.b=\"VRYfHKgM\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me;\n\ts=protonmail; t=1785679151; x=1785938351;\n\tbh=QgB9ZY1Lr8iZIRG2Bw98gOl3bg7XYQ/PECaKwOBmQbw=;\n\th=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date:\n\tSubject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector;\n\tb=VRYfHKgMdlECZJtjqpXz4VYNN3LVpVI0qgYbGOMESDPD7wjcOZatM5z1MG6tNKGdT\n\tWIu1ca1OQDrRVpPNY6PqeDZkoR1SjeqHlc4s9c8fXaso0Xv33HGg8ez07Z6hiqYABx\n\tqv2UYOinP3WrGOVYYG139pac4KIpmPU5xcsp4W3cJHNqqiL4LIdVC15NeGkFDhGRWB\n\tk18ySLUlSjdD53ljOCYlw4eMkfyH6BMfV4cIhyIuq134mpWX0unpSh9+/RBwPhLxUy\n\tPIgeUc0Ht23hzIxLqJ+KDZCNcLPwUiR5Rr88tdxepluzIwRLoJN8PAQjG5ihr3rgdz\n\ttLFR9tl+YJdlA==",
        "Date": "Sun, 02 Aug 2026 13:59:08 +0000",
        "To": "\"libcamera-devel@lists.libcamera.org\"\n\t<libcamera-devel@lists.libcamera.org>",
        "From": "j4niwzis <j4niwzis@proton.me>",
        "Subject": "[PATCH 1/3] libcamera: camera_sensor_properties: Add IMX582,\n\tIMX586 and OV8856",
        "Message-ID": "<ioJ8nPXN2MBNRgT4B5U28pjyL8KbNNuVXRxABp3f4rV29EizfJc_CM41sGVZGFgKmk2WkpqUGm1si06zKfhXiJmqs2eJwtQFpUYAdB5uaN0=@proton.me>",
        "Feedback-ID": "156040633:user:proton",
        "X-Pm-Message-ID": "003ab1e69cfe7b533b5d57b06f0d3703482ab7a6",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=utf-8",
        "Content-Transfer-Encoding": "quoted-printable",
        "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": "All three are on the Xiaomi Mi 9T: the IMX582 is its wide camera, the OV8856\nits telephoto one, and the IMX586 is the same silicon as the IMX582 with phase\ndetection, described by the same driver.\n\nWithout an entry the unit cell falls back to one micrometre, which throws off\nevery field of view calculation.  The pitch is 0.8 um for the quad bayer 48\nmegapixel Sony parts and 1.12 um for the OV8856.\n\nThe test pattern numbering of the Sony parts is the MIPI CCS one implemented\nby their register 0x0600; the OV8856 exposes the two bar patterns of its\nregister 0x5e00, the same its sibling the OV8858 does.\n\nSigned-off-by: j4niwzis <j4niwzis@proton.me>\n---",
    "diff": "diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp\n--- a/src/libcamera/sensor/camera_sensor_properties.cpp\n+++ b/src/libcamera/sensor/camera_sensor_properties.cpp\n@@ -325,6 +325,38 @@\n \t\t\t\t.hblankDelay = 3\n \t\t\t},\n \t\t} },\n+\t\t{ \"imx582\", {\n+\t\t\t.unitCellSize = { 800, 800 },\n+\t\t\t.testPatternModes = {\n+\t\t\t\t{ controls::draft::TestPatternModeOff, 0 },\n+\t\t\t\t{ controls::draft::TestPatternModeSolidColor, 1 },\n+\t\t\t\t{ controls::draft::TestPatternModeColorBars, 2 },\n+\t\t\t\t{ controls::draft::TestPatternModeColorBarsFadeToGray, 3 },\n+\t\t\t\t{ controls::draft::TestPatternModePn9, 4 },\n+\t\t\t},\n+\t\t\t.sensorDelays = {\n+\t\t\t\t.exposureDelay = 2,\n+\t\t\t\t.gainDelay = 2,\n+\t\t\t\t.vblankDelay = 3,\n+\t\t\t\t.hblankDelay = 3\n+\t\t\t},\n+\t\t} },\n+\t\t{ \"imx586\", {\n+\t\t\t.unitCellSize = { 800, 800 },\n+\t\t\t.testPatternModes = {\n+\t\t\t\t{ controls::draft::TestPatternModeOff, 0 },\n+\t\t\t\t{ controls::draft::TestPatternModeSolidColor, 1 },\n+\t\t\t\t{ controls::draft::TestPatternModeColorBars, 2 },\n+\t\t\t\t{ controls::draft::TestPatternModeColorBarsFadeToGray, 3 },\n+\t\t\t\t{ controls::draft::TestPatternModePn9, 4 },\n+\t\t\t},\n+\t\t\t.sensorDelays = {\n+\t\t\t\t.exposureDelay = 2,\n+\t\t\t\t.gainDelay = 2,\n+\t\t\t\t.vblankDelay = 3,\n+\t\t\t\t.hblankDelay = 3\n+\t\t\t},\n+\t\t} },\n \t\t{ \"imx662\", {\n \t\t\t.unitCellSize = { 2900, 2900 },\n \t\t\t.testPatternModes = {},\n@@ -495,6 +527,15 @@\n \t\t\t\t.hblankDelay = 2\n \t\t\t},\n \t\t} },\n+\t\t{ \"ov8856\", {\n+\t\t\t.unitCellSize = { 1120, 1120 },\n+\t\t\t.testPatternModes = {\n+\t\t\t\t{ controls::draft::TestPatternModeOff, 0 },\n+\t\t\t\t{ controls::draft::TestPatternModeColorBars, 1 },\n+\t\t\t\t{ controls::draft::TestPatternModeColorBarsFadeToGray, 2 },\n+\t\t\t},\n+\t\t\t.sensorDelays = { },\n+\t\t} },\n \t\t{ \"ov8858\", {\n \t\t\t.unitCellSize = { 1120, 1120 },\n \t\t\t.testPatternModes = {\n",
    "prefixes": [
        "1/3"
    ]
}