{"id":16852,"url":"https://patchwork.libcamera.org/api/patches/16852/?format=json","web_url":"https://patchwork.libcamera.org/patch/16852/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20220727222149.30627-5-laurent.pinchart@ideasonboard.com>","date":"2022-07-27T22:21:44","name":"[libcamera-devel,v5,4/9] include: linux: Update rkisp1 kernel header for DPCC configuration","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"cdf093f6c557941c39ebcfaeb31d036236bd45f0","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/16852/mbox/","series":[{"id":3338,"url":"https://patchwork.libcamera.org/api/series/3338/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3338","date":"2022-07-27T22:21:40","name":"ipa: rkisp1: Add GSL, LSC, DPCC, Filter and CProc algorithms","version":5,"mbox":"https://patchwork.libcamera.org/series/3338/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/16852/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/16852/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 748CFBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 27 Jul 2022 22:22:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1146E63328;\n\tThu, 28 Jul 2022 00:22:03 +0200 (CEST)","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 163436331B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 28 Jul 2022 00:21:57 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9A3816D4;\n\tThu, 28 Jul 2022 00:21:56 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1658960523;\n\tbh=Xso8yAif70+FoqGe1qd5tH1uVxULaEXqaICfL7w9BGU=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=mhqCXt4RagM0U7vQKSa/OAcH2EMGT7FtpavzRRHKaC8eCplaZQZFEDDU43v+VEVxo\n\t+DpOoMT5LqfjYZxal/BDKmIcmw6KNpLhO4LOqwG0yYFOPIjfX2drD7X/9MQcPLJwke\n\tKQ9GrY5budzplNyQ909eapfDgPoOoi74X3ZpgkMlOwXIvBTVS8LVyLusngvqZM9vkY\n\tSlL8BGOcuoptxSTMmqOM9LYXHa+EpLb9A86uft/I3U60ftu7ctqptXFKVTyXjTqxfm\n\tHu3uXLRdf9U6+F1ovAs+8HMD/WSZYXQFAeA14CAoTCsJVoJFBqozfpNx8yL//QcsdQ\n\tqSMuFghxEhzNw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1658960516;\n\tbh=Xso8yAif70+FoqGe1qd5tH1uVxULaEXqaICfL7w9BGU=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Rr0hHQBfgsWiLLo5HmXiZ9s2X7ShsfGZuN0qOu+LioF02sQfgE2a18LAKjb4kyG62\n\t1mNp+9B4DpQa9VvDAIlGUSyUy1aLzzh/NwRNOPhP4m0nXoOvysVisDm2MGbyfEx6Br\n\t+K4zBuTWvEzgGLEdOHqernz+XqyXJzlqQHne6Jv0="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"Rr0hHQBf\"; dkim-atps=neutral","To":"libcamera-devel@lists.libcamera.org","Date":"Thu, 28 Jul 2022 01:21:44 +0300","Message-Id":"<20220727222149.30627-5-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.35.1","In-Reply-To":"<20220727222149.30627-1-laurent.pinchart@ideasonboard.com>","References":"<20220727222149.30627-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v5 4/9] include: linux: Update rkisp1\n\tkernel header for DPCC configuration","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"From: Florian Sylvestre <fsylvestre@baylibre.com>\n\nTo improve the kernel interface, a proposal has been made to the\nlinux-kernel [1] to improve the configuration of the Defective\nPixel Cluster Correction (DPCC).\n\n[1]\nhttps://lore.kernel.org/linux-media/20220616160456.21549-1-laurent.pinchart@ideasonboard.com/\n\nUpdate the local copy of the rkisp1-config.h to match the proposal.\n\nSigned-off-by: Florian Sylvestre <fsylvestre@baylibre.com>\nAcked-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n include/linux/rkisp1-config.h | 77 +++++++++++++++++++++++++++--------\n 1 file changed, 61 insertions(+), 16 deletions(-)","diff":"diff --git a/include/linux/rkisp1-config.h b/include/linux/rkisp1-config.h\nindex 012293e3fab3..ec7cde8cd2e3 100644\n--- a/include/linux/rkisp1-config.h\n+++ b/include/linux/rkisp1-config.h\n@@ -117,7 +117,46 @@\n /*\n  * Defect Pixel Cluster Correction\n  */\n-#define RKISP1_CIF_ISP_DPCC_METHODS_MAX       3\n+#define RKISP1_CIF_ISP_DPCC_METHODS_MAX\t\t\t\t3\n+\n+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE\t\t\t(1U << 2)\n+\n+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER\t(1U << 0)\n+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER\t(1U << 1)\n+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3\t\t(1U << 2)\n+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3\t\t(1U << 3)\n+\n+/* 0-2 for sets 1-3 */\n+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n)\t\t((n) << 0)\n+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET\t\t(1U << 3)\n+\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE\t\t(1U << 0)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE\t\t(1U << 1)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE\t\t(1U << 2)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE\t(1U << 3)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE\t\t(1U << 4)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE\t(1U << 8)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE\t(1U << 9)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE\t(1U << 10)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE\t(1U << 11)\n+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE\t(1U << 12)\n+\n+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v)\t\t\t((v) << 0)\n+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v)\t\t\t((v) << 8)\n+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v)\t\t\t((v) << 0)\n+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v)\t\t\t((v) << 8)\n+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v)\t\t\t\t((v) << 0)\n+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v)\t\t\t((v) << 8)\n+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v)\t\t\t((v) << 0)\n+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v)\t\t\t((v) << 8)\n+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v)\t\t\t\t((v) << 0)\n+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v)\t\t\t((v) << 8)\n+\n+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n, v)\t\t\t((v) << ((n) * 4))\n+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n, v)\t\t((v) << ((n) * 4 + 2))\n+\n+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n, v)\t\t\t((v) << ((n) * 4))\n+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n, v)\t\t\t((v) << ((n) * 4 + 2))\n \n /*\n  * Denoising pre filter\n@@ -249,16 +288,20 @@ struct rkisp1_cif_isp_bls_config {\n };\n \n /**\n- * struct rkisp1_cif_isp_dpcc_methods_config - Methods Configuration used by DPCC\n+ * struct rkisp1_cif_isp_dpcc_methods_config - DPCC methods set configuration\n  *\n- * Methods Configuration used by Defect Pixel Cluster Correction\n+ * This structure stores the configuration of one set of methods for the DPCC\n+ * algorithm. Multiple methods can be selected in each set (independently for\n+ * the Green and Red/Blue components) through the @method field, the result is\n+ * the logical AND of all enabled methods. The remaining fields set thresholds\n+ * and factors for each method.\n  *\n- * @method: Method enable bits\n- * @line_thresh: Line threshold\n- * @line_mad_fac: Line MAD factor\n- * @pg_fac: Peak gradient factor\n- * @rnd_thresh: Rank Neighbor Difference threshold\n- * @rg_fac: Rank gradient factor\n+ * @method: Method enable bits (RKISP1_CIF_ISP_DPCC_METHODS_SET_*)\n+ * @line_thresh: Line threshold (RKISP1_CIF_ISP_DPCC_LINE_THRESH_*)\n+ * @line_mad_fac: Line Mean Absolute Difference factor (RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_*)\n+ * @pg_fac: Peak gradient factor (RKISP1_CIF_ISP_DPCC_PG_FAC_*)\n+ * @rnd_thresh: Rank Neighbor Difference threshold (RKISP1_CIF_ISP_DPCC_RND_THRESH_*)\n+ * @rg_fac: Rank gradient factor (RKISP1_CIF_ISP_DPCC_RG_FAC_*)\n  */\n struct rkisp1_cif_isp_dpcc_methods_config {\n \t__u32 method;\n@@ -272,14 +315,16 @@ struct rkisp1_cif_isp_dpcc_methods_config {\n /**\n  * struct rkisp1_cif_isp_dpcc_config - Configuration used by DPCC\n  *\n- * Configuration used by Defect Pixel Cluster Correction\n+ * Configuration used by Defect Pixel Cluster Correction. Three sets of methods\n+ * can be configured and selected through the @set_use field. The result is the\n+ * logical OR of all enabled sets.\n  *\n- * @mode: dpcc output mode\n- * @output_mode: whether use hard coded methods\n- * @set_use: stage1 methods set\n- * @methods: methods config\n- * @ro_limits: rank order limits\n- * @rnd_offs: differential rank offsets for rank neighbor difference\n+ * @mode: DPCC mode (RKISP1_CIF_ISP_DPCC_MODE_*)\n+ * @output_mode: Interpolation output mode (RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_*)\n+ * @set_use: Methods sets selection (RKISP1_CIF_ISP_DPCC_SET_USE_*)\n+ * @methods: Methods sets configuration\n+ * @ro_limits: Rank order limits (RKISP1_CIF_ISP_DPCC_RO_LIMITS_*)\n+ * @rnd_offs: Differential rank offsets for rank neighbor difference (RKISP1_CIF_ISP_DPCC_RND_OFFS_*)\n  */\n struct rkisp1_cif_isp_dpcc_config {\n \t__u32 mode;\n","prefixes":["libcamera-devel","v5","4/9"]}