Patch Detail
Show a patch.
GET /api/patches/22078/?format=api
{ "id": 22078, "url": "https://patchwork.libcamera.org/api/patches/22078/?format=api", "web_url": "https://patchwork.libcamera.org/patch/22078/", "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": "<20241125153003.3309066-3-paul.elder@ideasonboard.com>", "date": "2024-11-25T15:30:01", "name": "[2/4] utils: codegen: controls.py: Parse direction information", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "89108ad4eb4a7f0354da098e75f661ab336bbb01", "submitter": { "id": 17, "url": "https://patchwork.libcamera.org/api/people/17/?format=api", "name": "Paul Elder", "email": "paul.elder@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/22078/mbox/", "series": [ { "id": 4819, "url": "https://patchwork.libcamera.org/api/series/4819/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4819", "date": "2024-11-25T15:29:59", "name": "Add direction field to ControlId", "version": 1, "mbox": "https://patchwork.libcamera.org/series/4819/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/22078/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/22078/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 AFA82C32A3\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 25 Nov 2024 15:30:21 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B3DFD66034;\n\tMon, 25 Nov 2024 16:30:19 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 33C8065F6B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 25 Nov 2024 16:30:17 +0100 (CET)", "from neptunite.flets-east.jp (unknown\n\t[IPv6:2404:7a81:160:2100:9d06:dcbb:7303:4be6])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8F71F6B5;\n\tMon, 25 Nov 2024 16:29:54 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Dn72Mo/d\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1732548595;\n\tbh=mX5StPOhw3lNpFAxIQJVyz+ZcGk92qAi9J2FXoJF/mI=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Dn72Mo/dIBG2jFESslevwmTHyZIFFDqZqvewPR6R5lfF1lgOZjoU3aZ/cJ3xMo1R4\n\tQfcvAtfwZ/TlHTabjkz0A8oqUv4by/k29+8ooVPX08Owu1/KVNIRO5/y26BG0uO1HE\n\tVaJKDnv25FAL4QvIORRZ7De1xG6G6MN2J0B4kmZ0=", "From": "Paul Elder <paul.elder@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Paul Elder <paul.elder@ideasonboard.com>", "Subject": "[PATCH 2/4] utils: codegen: controls.py: Parse direction information", "Date": "Tue, 26 Nov 2024 00:30:01 +0900", "Message-Id": "<20241125153003.3309066-3-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.39.2", "In-Reply-To": "<20241125153003.3309066-1-paul.elder@ideasonboard.com>", "References": "<20241125153003.3309066-1-paul.elder@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": "In preparation for adding support for querying direction information\nfrom controls, parse the direction information from control ID\ndefinitions. This can later be plugged in directly to the IPA code\ngenerators simply by using ctrl.direction.\n\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n utils/codegen/controls.py | 21 +++++++++++++++++++++\n 1 file changed, 21 insertions(+)", "diff": "diff --git a/utils/codegen/controls.py b/utils/codegen/controls.py\nindex 03c77cc64abe..bc1c655f1b9b 100644\n--- a/utils/codegen/controls.py\n+++ b/utils/codegen/controls.py\n@@ -60,6 +60,15 @@ class Control(object):\n \n self.__size = num_elems\n \n+ direction = self.__data.get('direction')\n+ if direction is not None:\n+ valid_values = ['in', 'out', 'inout']\n+ if direction not in valid_values:\n+ raise RuntimeError(f'Control `{self.__name}` direction `{direction}` is invalid; must be one of `in`, `out`, or `inout`')\n+ self.__direction = direction\n+ else:\n+ self.__direction = 'inout'\n+\n @property\n def description(self):\n \"\"\"The control description\"\"\"\n@@ -111,6 +120,18 @@ class Control(object):\n else:\n return f\"Span<const {typ}>\"\n \n+ @property\n+ def direction(self):\n+ in_flag = 'static_cast<ControlId::DirectionFlags>(ControlId::Direction::In)'\n+ out_flag = 'static_cast<ControlId::DirectionFlags>(ControlId::Direction::Out)'\n+\n+ if self.__direction == 'inout':\n+ return f'{in_flag} | {out_flag}'\n+ if self.__direction == 'in':\n+ return in_flag\n+ if self.__direction == 'out':\n+ return out_flag\n+\n @property\n def element_type(self):\n return self.__data.get('type')\n", "prefixes": [ "2/4" ] }