xref: /linux/drivers/media/platform/dreamchip/rppx1/rppx1_bdrgb.c (revision f4cdf7ca9a1fdcca413157df19753f388a5a224e)
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