{"id":16328,"url":"https://patchwork.libcamera.org/api/patches/16328/?format=json","web_url":"https://patchwork.libcamera.org/patch/16328/","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":"<20220622151918.451635-5-fsylvestre@baylibre.com>","date":"2022-06-22T15:19:17","name":"[libcamera-devel,4/5] include: linux: Update rkisp1 kernel header for DPCC configuration","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"cdf093f6c557941c39ebcfaeb31d036236bd45f0","submitter":{"id":123,"url":"https://patchwork.libcamera.org/api/people/123/?format=json","name":"Florian Sylvestre","email":"fsylvestre@baylibre.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/16328/mbox/","series":[{"id":3208,"url":"https://patchwork.libcamera.org/api/series/3208/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3208","date":"2022-06-22T15:19:13","name":"Add GSL, LSC and DPCC tuning support for rkisp1","version":1,"mbox":"https://patchwork.libcamera.org/series/3208/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/16328/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/16328/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 1CCFCBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Jun 2022 15:19:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A947665642;\n\tWed, 22 Jun 2022 17:19:31 +0200 (CEST)","from mail-wr1-x434.google.com (mail-wr1-x434.google.com\n\t[IPv6:2a00:1450:4864:20::434])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AF5886563E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Jun 2022 17:19:25 +0200 (CEST)","by mail-wr1-x434.google.com with SMTP id o8so23914900wro.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Jun 2022 08:19:25 -0700 (PDT)","from BL087.. ([2a01:e34:eea9:e630:4175:47f:ec:c265])\n\tby smtp.gmail.com with ESMTPSA id\n\tbi11-20020a05600c3d8b00b0039c362311d2sm1745388wmb.9.2022.06.22.08.19.23\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 22 Jun 2022 08:19:24 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1655911171;\n\tbh=zQAmQWnuUi/+U5I36BjiAgoDzHjVMM6fD+DwMQ3JIgY=;\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=QrqbIyiWu0njPdDlyiiGivtqTtNB9GDSm1fhc3Q9z/Ybe0QbMmcy+0awJFAv2sKUC\n\tMT+UEq3ZrhPBAlXDDYL2vqmz35pg8U4abdyt8usQsA2+dCiofkJn2RqxPUZ+gwMTQB\n\tgvCzKFH++U+0Apj7Iv4YCQ97m6xZjPR4SMCtiew/t+12eBuf4n5U67wuDF34QEjEkJ\n\tYLW/yVkQvo6pgTM/jQrn3+N339I1m8MNO2cWT69C4vu7XRTIbVgfPHOp/fbQG4061Y\n\t52LbDnyqjWbynKaVRoKCoqZgq8dUtsScPCxzG3GdVlXE8m9hJ+T3ZmYfbOH3nEYP1M\n\tSwQsY3PA308Ig==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=baylibre-com.20210112.gappssmtp.com; s=20210112;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=2L/Pa182ZwtTPjgsQFSJPPJ4EZ2ubQpHO7YGh6L85RU=;\n\tb=xtSQG0sZVErRZc4BqD5PMdy8n14c1WbLs1GcLevvV3WkPvGk9kcRln1BO5g/RnqdQw\n\tKel3JPQ7F+vqC8nV2ZSV49OUHSLX/Znpr4zwvffSOMV+wD+T/5SS2bFON7tU8nINQVZn\n\tzxtvmHvX0Pxtcr9cBQkm9nZrxbWEgQ1LxMlOn+/y0iAgDm5x23dlfVST4kjyXpMAY7dt\n\tFNZt3JgoCvsahYUnh5U9fhqmso/eW6WkuCPxZx7NcJ6i+NAh58OBiqVQ8dbpKERVxNaZ\n\tAGPQdYFbvG1jp1rxNwEIkuioCCE1RU9v8DEUwTP16/BrC1VDg1FSEfQ7Y27tsZv8mLUi\n\tw9rQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected)\n\theader.d=baylibre-com.20210112.gappssmtp.com\n\theader.i=@baylibre-com.20210112.gappssmtp.com header.b=\"xtSQG0sZ\"; \n\tdkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=2L/Pa182ZwtTPjgsQFSJPPJ4EZ2ubQpHO7YGh6L85RU=;\n\tb=yH5hBTB9MsGqANiqZc9wtcbM/n/O4pkA0GKNbnJ59K3AP/nTi0rSDT63jAGW0nVCbf\n\tRLWYkKl9TqfA+ZCh9ebhB76jozPugE/zv1/2z8RQb3WYxMCZ97yXxKM31kwr4lPIosNL\n\toAZR5QHy/7xWo1ZqMZXuBfffeMmrFxInBjscBgpz+wpUei/vNFlBGIPW43PLB5BVh3xw\n\tSTIzP3xY6cMgkLHhdM7Vj3/xFn8sHIOe2SPM0h8Q0L5CIrcLOIyrbqDl2Tn15KyDHlN6\n\tgcLPy4VJnn2BeCdEf704cF3tiesZJZG6AirDyuNgckabhpF1ER+9frmMfaMPhmWQVdpl\n\tPVdw==","X-Gm-Message-State":"AJIora+qQDiKg5B5QqqOLGzPkhk17H/bOrnHxJUZvb0m8Hc7WjWLWmz7\n\tg9KBi8HBRoowgVadfDRFtk2VhApmh88uAw==","X-Google-Smtp-Source":"AGRyM1v3b7BQ6wjd5IA0zp67CF7hmzmD28Xgh6qcHCSyOQDjQaYr4/+D6AS/Pj7FLlOI4plvh3RK1g==","X-Received":"by 2002:a5d:6791:0:b0:21b:9e4b:2f95 with SMTP id\n\tv17-20020a5d6791000000b0021b9e4b2f95mr3920709wru.399.1655911164854; \n\tWed, 22 Jun 2022 08:19:24 -0700 (PDT)","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 22 Jun 2022 17:19:17 +0200","Message-Id":"<20220622151918.451635-5-fsylvestre@baylibre.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20220622151918.451635-1-fsylvestre@baylibre.com>","References":"<20220622151918.451635-1-fsylvestre@baylibre.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 4/5] include: linux: Update rkisp1 kernel\n\theader 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":"Florian Sylvestre via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Florian Sylvestre <fsylvestre@baylibre.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"To 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>\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 9be67d63..0ed3dca8 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@@ -250,16 +289,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@@ -273,14 +316,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","4/5"]}