Patch Detail
Show a patch.
GET /api/patches/27162/?format=api
{ "id": 27162, "url": "https://patchwork.libcamera.org/api/patches/27162/?format=api", "web_url": "https://patchwork.libcamera.org/patch/27162/", "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": "<20260703122543.1991189-4-paul.elder@ideasonboard.com>", "date": "2026-07-03T12:25:09", "name": "[RFC,03/19] ipa: rkisp2: params: Add rkisp2 extensible parameters wrapper", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "34877a8ee1bd37c90dbbc0e0279f13676debd503", "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/27162/mbox/", "series": [ { "id": 6035, "url": "https://patchwork.libcamera.org/api/series/6035/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6035", "date": "2026-07-03T12:25:06", "name": "Add support for rkisp2", "version": 1, "mbox": "https://patchwork.libcamera.org/series/6035/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/27162/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/27162/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 2815FC328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 3 Jul 2026 12:26:13 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C7C5665FCA;\n\tFri, 3 Jul 2026 14:26:12 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CD06F65FC3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 3 Jul 2026 14:26:10 +0200 (CEST)", "from neptunite.hamster-moth.ts.net (unknown\n\t[IPv6:2404:7a81:160:2100:a2cc:2f45:3bd7:2589])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EFEEA8E0;\n\tFri, 3 Jul 2026 14:25:21 +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=\"JrddpVvW\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1783081524;\n\tbh=G/6uyCRD1NKUobvC/oTtrFp+jzbE6ZxVDe2pRKvWNwk=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=JrddpVvW4v1FqYjQ+0ZtRokPPMH7ChmLiYTMc7QHDVKKNqcRhm8wY4+ptAto0W0Gw\n\t7uKaLS/NpQG6Jzcx7JNzeoWAiynsvUiKGbGz5CD2Pl9jsFvS/NJRRI/42XJnAiPHuY\n\taqbr6ed4C2LfiR6L0uUgFYw+EGseppfxPcqyOvbw=", "From": "Paul Elder <paul.elder@ideasonboard.com>", "To": "laurent.pinchart@ideasonboard.com", "Cc": "Paul Elder <paul.elder@ideasonboard.com>, michael.riesch@collabora.com, \n\txuhf@rock-chips.com, stefan.klug@ideasonboard.com,\n\tkieran.bingham@ideasonboard.com, dan.scally@ideasonboard.com,\n\tjacopo.mondi@ideasonboard.com, nicolas.dufresne@collabora.com,\n\tlibcamera-devel@lists.libcamera.org", "Subject": "[RFC PATCH 03/19] ipa: rkisp2: params: Add rkisp2 extensible\n\tparameters wrapper", "Date": "Fri, 3 Jul 2026 21:25:09 +0900", "Message-ID": "<20260703122543.1991189-4-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.47.2", "In-Reply-To": "<20260703122543.1991189-1-paul.elder@ideasonboard.com>", "References": "<20260703122543.1991189-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": "Add the libipa wrapper for extensible parameters for the rkisp2. This\nwraps the extensible parameters in the rkisp2 uapi to make them easier\nto use within libcamera.\n\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\n---\nThis is in a separate patch to reduce the size of the other patches to\nmake them easier to review.\n---\n src/ipa/rkisp2/algorithms/algorithm.h | 42 ++++++++++++++\n src/ipa/rkisp2/params.h | 83 +++++++++++++++++++++++++++\n 2 files changed, 125 insertions(+)\n create mode 100644 src/ipa/rkisp2/algorithms/algorithm.h\n create mode 100644 src/ipa/rkisp2/params.h", "diff": "diff --git a/src/ipa/rkisp2/algorithms/algorithm.h b/src/ipa/rkisp2/algorithms/algorithm.h\nnew file mode 100644\nindex 000000000000..c30596e3299b\n--- /dev/null\n+++ b/src/ipa/rkisp2/algorithms/algorithm.h\n@@ -0,0 +1,42 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+/*\n+ * Copyright (C) 2026, Ideas On Board\n+ *\n+ * RkISP2 control algorithm interface\n+ */\n+\n+#pragma once\n+\n+#include <linux/rkisp2-config.h>\n+\n+#include <libipa/algorithm.h>\n+\n+#include \"module.h\"\n+\n+namespace libcamera {\n+\n+namespace ipa::rkisp2 {\n+\n+class Algorithm : public libcamera::ipa::Algorithm<Module>\n+{\n+};\n+\n+union rkisp2_params_block {\n+\tconst struct v4l2_isp_params_block_header *header;\n+\tconst struct rkisp2_params_bls *bls;\n+\tconst struct rkisp2_params_awb_gains *awb_gains;\n+\tconst struct rkisp2_params_csm *csm;\n+\tconst struct rkisp2_params_ccm *ccm;\n+\tconst struct rkisp2_params_goc *goc;\n+\tconst struct rkisp2_params_lsc *lsc;\n+\tconst struct rkisp2_params_ae_lite *ae_lite;\n+\tconst struct rkisp2_params_hist_lite *hist_lite;\n+\tconst struct rkisp2_params_hist_big *hist_big;\n+\tconst struct rkisp2_params_awb_meas *awb_meas;\n+\tconst __u8 *data;\n+};\n+\n+} /* namespace ipa::rkisp2 */\n+\n+} /* namespace libcamera */\n+\ndiff --git a/src/ipa/rkisp2/params.h b/src/ipa/rkisp2/params.h\nnew file mode 100644\nindex 000000000000..c7c15483ee11\n--- /dev/null\n+++ b/src/ipa/rkisp2/params.h\n@@ -0,0 +1,83 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+/*\n+ * Copyright (C) 2026, Ideas On Board\n+ *\n+ * RkISP2 ISP Parameters\n+ */\n+\n+#pragma once\n+\n+#include <stdint.h>\n+\n+#include <linux/rkisp2-config.h>\n+#include <linux/videodev2.h>\n+\n+#include <libipa/v4l2_params.h>\n+\n+namespace libcamera {\n+\n+namespace ipa::rkisp2 {\n+\n+enum class RkISP2Blocks : uint16_t {\n+\tBls,\n+\tAwbGains,\n+\tCsm,\n+\tCcm,\n+\tGoc,\n+\tLsc,\n+\tAeLite,\n+\tHistLite,\n+\tHistBig0,\n+\tHistBig1,\n+\tHistBig2,\n+\tAwbMeas,\n+};\n+\n+namespace details {\n+\n+template<RkISP2Blocks B>\n+struct block_type {\n+};\n+\n+#define RKISP2_DEFINE_BLOCK_TYPE(id, cfgType, blkType)\t\t\\\n+template<>\t\t\t\t\t\t\t\t\\\n+struct block_type<RkISP2Blocks::id> {\t\t\t\t\t\\\n+\tusing type = struct rkisp2_params_##cfgType;\t\t\t\\\n+\tstatic constexpr rkisp2_params_block_type blockType = \t\t\\\n+\t\trkisp2_params_block_type::RKISP2_PARAMS_##blkType;\t\\\n+}\n+\n+RKISP2_DEFINE_BLOCK_TYPE(Bls,\t\t\tbls,\t\tBLOCK_BLS);\n+RKISP2_DEFINE_BLOCK_TYPE(AwbGains,\t\tawb_gains,\tBLOCK_AWB_GAINS);\n+RKISP2_DEFINE_BLOCK_TYPE(Csm,\t\t\tcsm,\t\tBLOCK_CSM);\n+RKISP2_DEFINE_BLOCK_TYPE(Ccm,\t\t\tccm,\t\tBLOCK_CCM);\n+RKISP2_DEFINE_BLOCK_TYPE(Goc,\t\t\tgoc,\t\tBLOCK_GOC);\n+RKISP2_DEFINE_BLOCK_TYPE(Lsc,\t\t\tlsc,\t\tBLOCK_LSC);\n+RKISP2_DEFINE_BLOCK_TYPE(AeLite,\t\tae_lite,\tBLOCK_AE_LITE);\n+RKISP2_DEFINE_BLOCK_TYPE(HistLite,\t\thist_lite,\tBLOCK_HIST_LITE);\n+RKISP2_DEFINE_BLOCK_TYPE(HistBig0,\t\thist_big,\tBLOCK_HIST_BIG0);\n+RKISP2_DEFINE_BLOCK_TYPE(HistBig1,\t\thist_big,\tBLOCK_HIST_BIG1);\n+RKISP2_DEFINE_BLOCK_TYPE(HistBig2,\t\thist_big,\tBLOCK_HIST_BIG2);\n+RKISP2_DEFINE_BLOCK_TYPE(AwbMeas,\t\tawb_meas,\tBLOCK_AWB_MEAS);\n+\n+struct param_traits {\n+\tusing id_type = RkISP2Blocks;\n+\n+\ttemplate<id_type Id>\n+\tusing id_to_details = block_type<Id>;\n+};\n+\n+} /* namespace details */\n+\n+class RkISP2Params : public V4L2Params<details::param_traits>\n+{\n+public:\n+\tRkISP2Params(Span<uint8_t> data)\n+\t\t: V4L2Params(data, V4L2_ISP_PARAMS_VERSION_V1)\n+\t{\n+\t}\n+};\n+\n+} /* namespace ipa::rkisp2 */\n+\n+} /* namespace libcamera */\n", "prefixes": [ "RFC", "03/19" ] }