Show a patch.

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

{
    "id": 20692,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/20692/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/20692/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/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": "<20240717100913.16640-7-jacopo.mondi@ideasonboard.com>",
    "date": "2024-07-17T10:09:09",
    "name": "[RFC,6/9] libcamera: rkisp1: Prepare for additional camera controls",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "7ca5e08a9417b765dd8dae60649b3d55cceee7ac",
    "submitter": {
        "id": 143,
        "url": "https://patchwork.libcamera.org/api/1.1/people/143/?format=api",
        "name": "Jacopo Mondi",
        "email": "jacopo.mondi@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/20692/mbox/",
    "series": [
        {
            "id": 4455,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4455/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4455",
            "date": "2024-07-17T10:09:03",
            "name": "Handle Converter features differently",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/4455/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/20692/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/20692/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 E15C3BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 17 Jul 2024 10:09:45 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 452986338A;\n\tWed, 17 Jul 2024 12:09:40 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 48CB963371\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Jul 2024 12:09:29 +0200 (CEST)",
            "from uno.LocalDomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4B218836;\n\tWed, 17 Jul 2024 12:08:51 +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=\"atDxJk5f\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1721210931;\n\tbh=BcRM7ZeiiuQLERHPK89P4dXChjgt3Lr9NFfcQBMuePw=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=atDxJk5fYXOE/+dT1wK7RuDf9CvGN871z6ZFDGt5I3ODWI83ngCWw6DdpWlqsSBk/\n\tqS3miwcGhiW/hX3YYOeF3+8byS7SH5jgwlv66MGsJwWm1TvMX/He6qndZKexLeQX4N\n\t0mB60cU/qa3k3Ed2ZROysWBGF0SqfjPhyrcKIP1U=",
        "From": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>",
        "To": "Umang Jain <umang.jain@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org",
        "Cc": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>",
        "Subject": "[RFC 6/9] libcamera: rkisp1: Prepare for additional camera controls",
        "Date": "Wed, 17 Jul 2024 12:09:09 +0200",
        "Message-ID": "<20240717100913.16640-7-jacopo.mondi@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.45.2",
        "In-Reply-To": "<20240717100913.16640-1-jacopo.mondi@ideasonboard.com>",
        "References": "<20240717100913.16640-1-jacopo.mondi@ideasonboard.com>",
        "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": "From: Umang Jain <umang.jain@ideasonboard.com>\n\nCurrently the rkisp1 pipeline handler only registers controls that are\nrelated to the IPA. This patch prepares the rkisp1 pipeline-handler to\nregister camera controls which are not related to the IPA.\n\nHence, introduce a additional ControlInfoMap for IPA controls. These\ncontrols will be merged together with the controls in the pipeline\nhandler (introduced subsequently) as part of updateControls() and\ntogether will be registered during the registration of the camera.\nThis is similar to what IPU3 pipeline handler handles its controls.\n\nSigned-off-by: Umang Jain <umang.jain@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 28 +++++++++++++++++++++---\n 1 file changed, 25 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 4cbf105dbdcd..bfc44239dc3d 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -109,6 +109,8 @@ public:\n \n \tstd::unique_ptr<ipa::rkisp1::IPAProxyRkISP1> ipa_;\n \n+\tControlInfoMap ipaControls_;\n+\n private:\n \tvoid paramFilled(unsigned int frame);\n \tvoid setSensorControls(unsigned int frame,\n@@ -184,6 +186,8 @@ private:\n \tint allocateBuffers(Camera *camera);\n \tint freeBuffers(Camera *camera);\n \n+\tint updateControls(RkISP1CameraData *data);\n+\n \tMediaDevice *media_;\n \tstd::unique_ptr<V4L2Subdevice> isp_;\n \tstd::unique_ptr<V4L2VideoDevice> param_;\n@@ -370,7 +374,7 @@ int RkISP1CameraData::loadIPA(unsigned int hwRevision)\n \t}\n \n \tret = ipa_->init({ ipaTuningFile, sensor_->model() }, hwRevision,\n-\t\t\t sensorInfo, sensor_->controls(), &controlInfo_);\n+\t\t\t sensorInfo, sensor_->controls(), &ipaControls_);\n \tif (ret < 0) {\n \t\tLOG(RkISP1, Error) << \"IPA initialization failure\";\n \t\treturn ret;\n@@ -820,12 +824,13 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n \n \tipaConfig.sensorControls = data->sensor_->controls();\n \n-\tret = data->ipa_->configure(ipaConfig, streamConfig, &data->controlInfo_);\n+\tret = data->ipa_->configure(ipaConfig, streamConfig, &data->ipaControls_);\n \tif (ret) {\n \t\tLOG(RkISP1, Error) << \"failed configuring IPA (\" << ret << \")\";\n \t\treturn ret;\n \t}\n-\treturn 0;\n+\n+\treturn updateControls(data);\n }\n \n int PipelineHandlerRkISP1::exportFrameBuffers([[maybe_unused]] Camera *camera, Stream *stream,\n@@ -1101,8 +1106,23 @@ int PipelineHandlerRkISP1::initLinks(Camera *camera,\n \treturn 0;\n }\n \n+int PipelineHandlerRkISP1::updateControls(RkISP1CameraData *data)\n+{\n+\tControlInfoMap::Map rkisp1Controls;\n+\n+\t/* Add the IPA registered controls to list of camera controls. */\n+\tfor (const auto &ipaControl : data->ipaControls_)\n+\t\trkisp1Controls[ipaControl.first] = ipaControl.second;\n+\n+\tdata->controlInfo_ = ControlInfoMap(std::move(rkisp1Controls),\n+\t\t\t\t\t    controls::controls);\n+\n+\treturn 0;\n+}\n+\n int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n {\n+\tControlInfoMap::Map rkisp1Controls;\n \tint ret;\n \n \tstd::unique_ptr<RkISP1CameraData> data =\n@@ -1137,6 +1157,8 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \tif (ret)\n \t\treturn ret;\n \n+\tupdateControls(data.get());\n+\n \tstd::set<Stream *> streams{\n \t\t&data->mainPathStream_,\n \t\t&data->selfPathStream_,\n",
    "prefixes": [
        "RFC",
        "6/9"
    ]
}