Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: rockchip: rkisp1: Define macros for DPCC configurations in UAPI

Extend the UAPI rkisp1-config.h header with macros for all DPCC
configuration fields. While at it, clarify of fix issues in the DPCC
documentation.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>

authored by

Laurent Pinchart and committed by
Mauro Carvalho Chehab
8e2b7442 9daa2b84

+61 -17
-1
drivers/media/platform/rockchip/rkisp1/rkisp1-regs.h
··· 620 620 /* DPCC */ 621 621 #define RKISP1_CIF_ISP_DPCC_MODE_DPCC_ENABLE BIT(0) 622 622 #define RKISP1_CIF_ISP_DPCC_MODE_GRAYSCALE_MODE BIT(1) 623 - #define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE BIT(2) 624 623 #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_MASK GENMASK(3, 0) 625 624 #define RKISP1_CIF_ISP_DPCC_SET_USE_MASK GENMASK(3, 0) 626 625 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_MASK 0x00001f1f
+61 -16
include/uapi/linux/rkisp1-config.h
··· 117 117 /* 118 118 * Defect Pixel Cluster Correction 119 119 */ 120 - #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3 120 + #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3 121 + 122 + #define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2) 123 + 124 + #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0) 125 + #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1) 126 + #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2) 127 + #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3) 128 + 129 + /* 0-2 for sets 1-3 */ 130 + #define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0) 131 + #define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3) 132 + 133 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0) 134 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1) 135 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2) 136 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3) 137 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4) 138 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8) 139 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9) 140 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10) 141 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11) 142 + #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12) 143 + 144 + #define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0) 145 + #define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8) 146 + #define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0) 147 + #define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8) 148 + #define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0) 149 + #define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8) 150 + #define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0) 151 + #define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8) 152 + #define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0) 153 + #define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8) 154 + 155 + #define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n, v) ((v) << ((n) * 4)) 156 + #define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n, v) ((v) << ((n) * 4 + 2)) 157 + 158 + #define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n, v) ((v) << ((n) * 4)) 159 + #define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n, v) ((v) << ((n) * 4 + 2)) 121 160 122 161 /* 123 162 * Denoising pre filter ··· 288 249 }; 289 250 290 251 /** 291 - * struct rkisp1_cif_isp_dpcc_methods_config - Methods Configuration used by DPCC 252 + * struct rkisp1_cif_isp_dpcc_methods_config - DPCC methods set configuration 292 253 * 293 - * Methods Configuration used by Defect Pixel Cluster Correction 254 + * This structure stores the configuration of one set of methods for the DPCC 255 + * algorithm. Multiple methods can be selected in each set (independently for 256 + * the Green and Red/Blue components) through the @method field, the result is 257 + * the logical AND of all enabled methods. The remaining fields set thresholds 258 + * and factors for each method. 294 259 * 295 - * @method: Method enable bits 296 - * @line_thresh: Line threshold 297 - * @line_mad_fac: Line MAD factor 298 - * @pg_fac: Peak gradient factor 299 - * @rnd_thresh: Rank Neighbor Difference threshold 300 - * @rg_fac: Rank gradient factor 260 + * @method: Method enable bits (RKISP1_CIF_ISP_DPCC_METHODS_SET_*) 261 + * @line_thresh: Line threshold (RKISP1_CIF_ISP_DPCC_LINE_THRESH_*) 262 + * @line_mad_fac: Line Mean Absolute Difference factor (RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_*) 263 + * @pg_fac: Peak gradient factor (RKISP1_CIF_ISP_DPCC_PG_FAC_*) 264 + * @rnd_thresh: Rank Neighbor Difference threshold (RKISP1_CIF_ISP_DPCC_RND_THRESH_*) 265 + * @rg_fac: Rank gradient factor (RKISP1_CIF_ISP_DPCC_RG_FAC_*) 301 266 */ 302 267 struct rkisp1_cif_isp_dpcc_methods_config { 303 268 __u32 method; ··· 315 272 /** 316 273 * struct rkisp1_cif_isp_dpcc_config - Configuration used by DPCC 317 274 * 318 - * Configuration used by Defect Pixel Cluster Correction 275 + * Configuration used by Defect Pixel Cluster Correction. Three sets of methods 276 + * can be configured and selected through the @set_use field. The result is the 277 + * logical OR of all enabled sets. 319 278 * 320 - * @mode: dpcc output mode 321 - * @output_mode: whether use hard coded methods 322 - * @set_use: stage1 methods set 323 - * @methods: methods config 324 - * @ro_limits: rank order limits 325 - * @rnd_offs: differential rank offsets for rank neighbor difference 279 + * @mode: DPCC mode (RKISP1_CIF_ISP_DPCC_MODE_*) 280 + * @output_mode: Interpolation output mode (RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_*) 281 + * @set_use: Methods sets selection (RKISP1_CIF_ISP_DPCC_SET_USE_*) 282 + * @methods: Methods sets configuration 283 + * @ro_limits: Rank order limits (RKISP1_CIF_ISP_DPCC_RO_LIMITS_*) 284 + * @rnd_offs: Differential rank offsets for rank neighbor difference (RKISP1_CIF_ISP_DPCC_RND_OFFS_*) 326 285 */ 327 286 struct rkisp1_cif_isp_dpcc_config { 328 287 __u32 mode;