1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (C) 2026 Renesas Electronics Corp. 4 * Copyright (C) 2026 Ideas on Board Oy 5 * Copyright (C) 2026 Ragnatech AB 6 */ 7 8 #include "rpp_module.h" 9 10 #define RGBDENOISE_VERSION_REG 0x0000 11 12 #define RGBDENOISE_HW_BYPASS_REG 0x0004 13 #define RGBDENOISE_HW_BYPASS_BYPASS_EN BIT(0) 14 15 #define RGBDENOISE_SPNR_CTRL_REG 0x0008 16 #define RGBDENOISE_SPNR_CTRL_C2NR_INTENSITY_SHIFT_C_MASK GENMASK(11, 8) 17 #define RGBDENOISE_SPNR_CTRL_C2NR_INTENSITY_SHIFT_Y_MASK GENMASK(7, 4) 18 #define RGBDENOISE_SPNR_CTRL_C2NR_EN BIT(0) 19 20 #define RGBDENOISE_SPNR_LUMA_IF_COEF_00_07_REG 0x000c 21 #define RGBDENOISE_SPNR_LUMA_IF_COEF_08_15_REG 0x0010 22 #define RGBDENOISE_SPNR_LUMA_IF_COEF_16_23_REG 0x0014 23 #define RGBDENOISE_SPNR_LUMA_IF_COEF_24_31_REG 0x0018 24 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_00_07_REG 0x001c 25 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_08_15_REG 0x0020 26 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_16_23_REG 0x0024 27 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_24_31_REG 0x0028 28 #define RGBDENOISE_SPNR_SPATIAL_COEF_0_3_REG 0x002c 29 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_0_REG 0x0030 30 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_1_REG 0x0034 31 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_2_REG 0x0038 32 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_3_REG 0x003c 33 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_4_REG 0x0040 34 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_5_REG 0x0044 35 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_6_REG 0x0048 36 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_7_REG 0x004c 37 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_8_REG 0x0050 38 #define RGBDENOISE_RGB2YUV_CCOR_OFFSET_R_REG 0x0054 39 #define RGBDENOISE_RGB2YUV_CCOR_OFFSET_G_REG 0x0058 40 #define RGBDENOISE_RGB2YUV_CCOR_OFFSET_B_REG 0x005c 41 #define RGBDENOISE_HW_BYPASS_SDW_REG 0x0060 42 #define RGBDENOISE_SPNR_CTRL_SDW_REG 0x0064 43 #define RGBDENOISE_SPNR_LUMA_IF_COEF_00_07_SDW_REG 0x0068 44 #define RGBDENOISE_SPNR_LUMA_IF_COEF_08_15_SDW_REG 0x006c 45 #define RGBDENOISE_SPNR_LUMA_IF_COEF_16_23_SDW_REG 0x0070 46 #define RGBDENOISE_SPNR_LUMA_IF_COEF_24_31_SDW_REG 0x0074 47 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_00_07_SDW_REG 0x0078 48 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_08_15_SDW_REG 0x007c 49 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_16_23_SDW_REG 0x0080 50 #define RGBDENOISE_SPNR_CHROMA_IF_COEF_24_31_SDW_REG 0x0084 51 #define RGBDENOISE_SPNR_SPATIAL_COEFF_0_3_SDW_REG 0x0088 52 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_0_SDW_REG 0x008c 53 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_1_SDW_REG 0x0090 54 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_2_SDW_REG 0x0094 55 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_3_SDW_REG 0x0098 56 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_4_SDW_REG 0x009c 57 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_5_SDW_REG 0x00a0 58 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_6_SDW_REG 0x00a4 59 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_7_SDW_REG 0x00a8 60 #define RGBDENOISE_RGB2YUV_CCOR_COEFF_8_SDW_REG 0x00ac 61 #define RGBDENOISE_RGB2YUV_CCOR_OFFSET_R_SDW_REG 0x00b0 62 #define RGBDENOISE_RGB2YUV_CCOR_OFFSET_G_SDW_REG 0x00b4 63 #define RGBDENOISE_RGB2YUV_CCOR_OFFSET_B_SDW_REG 0x00b8 64 65 static int rppx1_bdrgb_probe(struct rpp_module *mod) 66 { 67 /* Version check. */ 68 switch (rpp_module_read(mod, RGBDENOISE_VERSION_REG)) { 69 case 6: 70 /* 12-bit. */ 71 break; 72 default: 73 return -EINVAL; 74 } 75 76 return 0; 77 } 78 79 const struct rpp_module_ops rppx1_bdrgb_ops = { 80 .probe = rppx1_bdrgb_probe, 81 }; 82