Patch Detail
Show a patch.
GET /api/patches/12571/?format=api
{ "id": 12571, "url": "https://patchwork.libcamera.org/api/patches/12571/?format=api", "web_url": "https://patchwork.libcamera.org/patch/12571/", "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": "<20210611125239.1021944-1-kieran.bingham@ideasonboard.com>", "date": "2021-06-11T12:52:39", "name": "[libcamera-devel] ipa: ipu3: Support return values from configure()", "commit_ref": "15196e5b76f184d3d27900749de0bf7010226261", "pull_url": null, "state": "accepted", "archived": false, "hash": "f5f61db2952f18ca1b1a9630354b0eda03d300eb", "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/12571/mbox/", "series": [ { "id": 2123, "url": "https://patchwork.libcamera.org/api/series/2123/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2123", "date": "2021-06-11T12:52:39", "name": "[libcamera-devel] ipa: ipu3: Support return values from configure()", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2123/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/12571/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/12571/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 DD8BDC320B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Jun 2021 12:52:46 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 478AE6892C;\n\tFri, 11 Jun 2021 14:52:46 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 259086029E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Jun 2021 14:52:44 +0200 (CEST)", "from Monstersaurus.local\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7F7AA4AD;\n\tFri, 11 Jun 2021 14:52:43 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ryFg75cG\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1623415963;\n\tbh=bmVutysiOax/Rzx0KiLqNTZz8gzQwzMXDfrs1UK/TyU=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=ryFg75cGft+Z6/+lvtE3vzwndD8OfLptXb63z1ajNdTH+DRrQkyGAAWEVNs3wob3D\n\ta/I+LQ8r4KONp5ueRB82QUFs1ybO/sYNqAgku1yXq3EvildnvQ/BmlJadp/P4KAXU/\n\t2VT7OZRR6y7u/DmZVQ4NGcc9CQ1Ryfl8CIvqzkaU=", "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "To": "libcamera devel <libcamera-devel@lists.libcamera.org>,\n\tUmang Jain <umang.jain@ideasonboard.com>,\n\tJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>", "Date": "Fri, 11 Jun 2021 13:52:39 +0100", "Message-Id": "<20210611125239.1021944-1-kieran.bingham@ideasonboard.com>", "X-Mailer": "git-send-email 2.30.2", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH] ipa: ipu3: Support return values from\n\tconfigure()", "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 IPU3 IPA interface does not define a return value from configure().\nThis prevents errors from being reported back to the pipeline handler\nwhen they occur in the IPA.\n\nUpdate the IPU3 IPA interface and add return values to the checks in\nIPAIPU3::configure() accordingly\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n include/libcamera/ipa/ipu3.mojom | 2 +-\n src/ipa/ipu3/ipu3.cpp | 18 +++++++++++-------\n src/libcamera/pipeline/ipu3/ipu3.cpp | 6 +++++-\n 3 files changed, 17 insertions(+), 9 deletions(-)", "diff": "diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom\nindex 000c494dbff9..911a3a072464 100644\n--- a/include/libcamera/ipa/ipu3.mojom\n+++ b/include/libcamera/ipa/ipu3.mojom\n@@ -42,7 +42,7 @@ interface IPAIPU3Interface {\n \tstart() => (int32 ret);\n \tstop();\n \n-\tconfigure(IPAConfigInfo configInfo) => ();\n+\tconfigure(IPAConfigInfo configInfo) => (int32 ret);\n \n \tmapBuffers(array<libcamera.IPABuffer> buffers);\n \tunmapBuffers(array<uint32> ids);\ndiff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\nindex 415ea9e58cf4..8b4c7351e9db 100644\n--- a/src/ipa/ipu3/ipu3.cpp\n+++ b/src/ipa/ipu3/ipu3.cpp\n@@ -43,7 +43,7 @@ public:\n \tint start() override;\n \tvoid stop() override {}\n \n-\tvoid configure(const IPAConfigInfo &configInfo) override;\n+\tint configure(const IPAConfigInfo &configInfo) override;\n \n \tvoid mapBuffers(const std::vector<IPABuffer> &buffers) override;\n \tvoid unmapBuffers(const std::vector<unsigned int> &ids) override;\n@@ -142,10 +142,12 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize)\n \t\t\t << (int)bdsGrid_.height << \" << \" << (int)bdsGrid_.block_height_log2 << \")\";\n }\n \n-void IPAIPU3::configure(const IPAConfigInfo &configInfo)\n+int IPAIPU3::configure(const IPAConfigInfo &configInfo)\n {\n-\tif (configInfo.entityControls.empty())\n-\t\treturn;\n+\tif (configInfo.entityControls.empty()) {\n+\t\tLOG(IPAIPU3, Error) << \"No controls provided\";\n+\t\treturn -ENODATA;\n+\t}\n \n \tsensorInfo_ = configInfo.sensorInfo;\n \n@@ -154,19 +156,19 @@ void IPAIPU3::configure(const IPAConfigInfo &configInfo)\n \tconst auto itExp = ctrls_.find(V4L2_CID_EXPOSURE);\n \tif (itExp == ctrls_.end()) {\n \t\tLOG(IPAIPU3, Error) << \"Can't find exposure control\";\n-\t\treturn;\n+\t\treturn -EINVAL;\n \t}\n \n \tconst auto itGain = ctrls_.find(V4L2_CID_ANALOGUE_GAIN);\n \tif (itGain == ctrls_.end()) {\n \t\tLOG(IPAIPU3, Error) << \"Can't find gain control\";\n-\t\treturn;\n+\t\treturn -EINVAL;\n \t}\n \n \tconst auto itVBlank = ctrls_.find(V4L2_CID_VBLANK);\n \tif (itVBlank == ctrls_.end()) {\n \t\tLOG(IPAIPU3, Error) << \"Can't find VBLANK control\";\n-\t\treturn;\n+\t\treturn -EINVAL;\n \t}\n \n \tminExposure_ = std::max(itExp->second.min().get<int32_t>(), 1);\n@@ -188,6 +190,8 @@ void IPAIPU3::configure(const IPAConfigInfo &configInfo)\n \n \tagcAlgo_ = std::make_unique<IPU3Agc>();\n \tagcAlgo_->initialise(bdsGrid_, sensorInfo_);\n+\n+\treturn 0;\n }\n \n void IPAIPU3::mapBuffers(const std::vector<IPABuffer> &buffers)\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex b986bb7035fa..87f6bac83927 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -642,7 +642,11 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)\n \tconfigInfo.bdsOutputSize = config->imguConfig().bds;\n \tconfigInfo.iif = config->imguConfig().iif;\n \n-\tdata->ipa_->configure(configInfo);\n+\tret = data->ipa_->configure(configInfo);\n+\tif (ret) {\n+\t\tLOG(IPU3, Error) << \"Failed to configure IPA\";\n+\t\treturn ret;\n+\t}\n \n \treturn 0;\n }\n", "prefixes": [ "libcamera-devel" ] }