Show a patch.

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

{
    "id": 23364,
    "url": "https://patchwork.libcamera.org/api/patches/23364/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/23364/",
    "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": "<20250513174312.106676-1-kieran.bingham@ideasonboard.com>",
    "date": "2025-05-13T17:43:12",
    "name": "[RFC] libcamera: pipeline: Add h/v blanking delays",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "93ed7a89d78493690fe2f3832709482699ccf6f8",
    "submitter": {
        "id": 4,
        "url": "https://patchwork.libcamera.org/api/people/4/?format=api",
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/23364/mbox/",
    "series": [
        {
            "id": 5172,
            "url": "https://patchwork.libcamera.org/api/series/5172/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5172",
            "date": "2025-05-13T17:43:12",
            "name": "[RFC] libcamera: pipeline: Add h/v blanking delays",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5172/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/23364/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/23364/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 53B24C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 13 May 2025 17:46:24 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7626B68B55;\n\tTue, 13 May 2025 19:46:23 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0722768B40\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 13 May 2025 19:46:22 +0200 (CEST)",
            "from charm.hippo-penny.ts.net (unknown\n\t[IPv6:2001:861:3a80:3300:485e:25b2:e7f9:296e])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 11F0D1D5;\n\tTue, 13 May 2025 19:46:06 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"oQnEV0h6\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1747158366;\n\tbh=x04P91Py/h78lpIUXrjj/vsawVOSVt8WvYt1F1gQG+A=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=oQnEV0h6uUBDoQThP15rzIr7DPq2AFMZBfwQ6os/Ea3NSNqJTP+u75pQfTlu+PR4X\n\tLWgal+mE6KrogZAsBinpPHBxO2qhaSezl4NFdfS9jUMlFm3jNieTnj1h7UPzJUr4tB\n\tdEkDoerzLPdKkji/kq89tMBEQxgFKtvM2iWFj950=",
        "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "To": "libcamera devel <libcamera-devel@lists.libcamera.org>",
        "Cc": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "Subject": "[PATCH] [RFC] libcamera: pipeline: Add h/v blanking delays",
        "Date": "Tue, 13 May 2025 19:43:12 +0200",
        "Message-ID": "<20250513174312.106676-1-kieran.bingham@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.49.0",
        "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": "The HBLANK and VBLANK control delays are not being accounted for in all\nof the libipa platforms. Update their delayed controls instantiation\naccordingly.\n\nIn particular, update the RKISP1 VBLANK control delay to be marked as a\npriority control as well as setting the correct delay to align with the\nexisting Raspberry Pi implementation.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n\nMarking this as RFC because I haven't tested this or explored it yet -\nbut as I was reviewing other parts of the code base - I noted that these\nare inconsistent across pipeline handlers - so lets figure out why and\nmake sure all the pipeline handlers operate in the same way where\npossible.\n\n src/libcamera/pipeline/ipu3/ipu3.cpp         | 2 ++\n src/libcamera/pipeline/mali-c55/mali-c55.cpp | 2 ++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp     | 3 ++-\n src/libcamera/pipeline/simple/simple.cpp     | 2 ++\n 4 files changed, 8 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex e31e3879dcc9..4cec22b01940 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -1082,6 +1082,8 @@ int PipelineHandlerIPU3::registerCameras()\n \t\tstd::unordered_map<uint32_t, DelayedControls::ControlParams> params = {\n \t\t\t{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },\n \t\t\t{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },\n+\t\t\t{ V4L2_CID_HBLANK, { delays.hblankDelay, false } },\n+\t\t\t{ V4L2_CID_VBLANK, { delays.vblankDelay, true } },\n \t\t};\n \n \t\tdata->delayedCtrls_ =\ndiff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\nindex a05e11fccf8d..7d052263b34d 100644\n--- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n+++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp\n@@ -1607,6 +1607,8 @@ bool PipelineHandlerMaliC55::registerSensorCamera(MediaLink *ispLink)\n \t\tstd::unordered_map<uint32_t, DelayedControls::ControlParams> params = {\n \t\t\t{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },\n \t\t\t{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },\n+\t\t\t{ V4L2_CID_HBLANK, { delays.hblankDelay, false } },\n+\t\t\t{ V4L2_CID_VBLANK, { delays.vblankDelay, true } },\n \t\t};\n \n \t\tdata->delayedCtrls_ =\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 52633fe3cb85..6c5b81b9a2ba 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -1325,7 +1325,8 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \tstd::unordered_map<uint32_t, DelayedControls::ControlParams> params = {\n \t\t{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },\n \t\t{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },\n-\t\t{ V4L2_CID_VBLANK, { 1, false } },\n+\t\t{ V4L2_CID_HBLANK, { delays.hblankDelay, false } },\n+\t\t{ V4L2_CID_VBLANK, { delays.vblankDelay, true } },\n \t};\n \n \tdata->delayedCtrls_ =\ndiff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex efb07051b175..fc88efc7a716 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -546,6 +546,8 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,\n \tstd::unordered_map<uint32_t, DelayedControls::ControlParams> params = {\n \t\t{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },\n \t\t{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },\n+\t\t{ V4L2_CID_HBLANK, { delays.hblankDelay, false } },\n+\t\t{ V4L2_CID_VBLANK, { delays.vblankDelay, true } },\n \t};\n \tdelayedCtrls_ = std::make_unique<DelayedControls>(sensor_->device(), params);\n \n",
    "prefixes": [
        "RFC"
    ]
}