xref: /OK3568_Linux_fs/kernel/drivers/media/platform/rockchip/isp/isp_params_v32.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2022 Rockchip Electronics Co., Ltd. */
3 
4 #ifndef _RKISP_ISP_PARAM_V32_H
5 #define _RKISP_ISP_PARAM_V32_H
6 
7 #include <linux/rk-isp1-config.h>
8 #include <linux/rk-preisp.h>
9 #include "common.h"
10 #include "isp_params.h"
11 
12 #define ISP32_3DLUT_BUF_NUM			2
13 #define ISP32_3DLUT_BUF_SIZE			(9 * 9 * 9 * 4)
14 
15 #define ISP32_LSC_LUT_BUF_NUM			2
16 #define ISP32_LSC_LUT_TBL_SIZE			(9 * 17 * 4)
17 #define ISP32_LSC_LUT_BUF_SIZE			(ISP32_LSC_LUT_TBL_SIZE * 4)
18 
19 #define ISP32_RAWHISTBIG_ROW_NUM		15
20 #define ISP32_RAWHISTBIG_COLUMN_NUM		15
21 #define ISP32_RAWHISTBIG_WEIGHT_REG_SIZE	\
22 	(ISP32_RAWHISTBIG_ROW_NUM * ISP32_RAWHISTBIG_COLUMN_NUM)
23 
24 #define ISP32_RAWHISTLITE_ROW_NUM		5
25 #define ISP32_RAWHISTLITE_COLUMN_NUM		5
26 #define ISP32_RAWHISTLITE_WEIGHT_REG_SIZE	\
27 	(ISP32_RAWHISTLITE_ROW_NUM * ISP32_RAWHISTLITE_COLUMN_NUM)
28 
29 struct rkisp_isp_params_vdev;
30 struct rkisp_isp_params_ops_v32 {
31 	void (*dpcc_config)(struct rkisp_isp_params_vdev *params_vdev,
32 			    const struct isp2x_dpcc_cfg *arg);
33 	void (*dpcc_enable)(struct rkisp_isp_params_vdev *params_vdev,
34 			    bool en);
35 	void (*bls_config)(struct rkisp_isp_params_vdev *params_vdev,
36 			   const struct isp32_bls_cfg *arg);
37 	void (*bls_enable)(struct rkisp_isp_params_vdev *params_vdev,
38 			   bool en);
39 	void (*sdg_config)(struct rkisp_isp_params_vdev *params_vdev,
40 			   const struct isp2x_sdg_cfg *arg);
41 	void (*sdg_enable)(struct rkisp_isp_params_vdev *params_vdev,
42 			   bool en);
43 	void (*lsc_config)(struct rkisp_isp_params_vdev *params_vdev,
44 			   const struct isp3x_lsc_cfg *arg);
45 	void (*lsc_enable)(struct rkisp_isp_params_vdev *params_vdev,
46 			   bool en);
47 	void (*awbgain_config)(struct rkisp_isp_params_vdev *params_vdev,
48 			       const struct isp32_awb_gain_cfg *arg);
49 	void (*awbgain_enable)(struct rkisp_isp_params_vdev *params_vdev,
50 			       bool en);
51 	void (*debayer_config)(struct rkisp_isp_params_vdev *params_vdev,
52 			       const struct isp32_debayer_cfg *arg);
53 	void (*debayer_enable)(struct rkisp_isp_params_vdev *params_vdev,
54 			       bool en);
55 	void (*ccm_config)(struct rkisp_isp_params_vdev *params_vdev,
56 			   const struct isp32_ccm_cfg *arg);
57 	void (*ccm_enable)(struct rkisp_isp_params_vdev *params_vdev,
58 			   bool en);
59 	void (*goc_config)(struct rkisp_isp_params_vdev *params_vdev,
60 			   const struct isp3x_gammaout_cfg *arg);
61 	void (*goc_enable)(struct rkisp_isp_params_vdev *params_vdev,
62 			   bool en);
63 	void (*cproc_config)(struct rkisp_isp_params_vdev *params_vdev,
64 			     const struct isp2x_cproc_cfg *arg);
65 	void (*cproc_enable)(struct rkisp_isp_params_vdev *params_vdev,
66 			     bool en);
67 	void (*ie_config)(struct rkisp_isp_params_vdev *params_vdev,
68 			  const struct isp2x_ie_cfg *arg);
69 	void (*ie_enable)(struct rkisp_isp_params_vdev *params_vdev,
70 			  bool en);
71 	void (*rawaf_config)(struct rkisp_isp_params_vdev *params_vdev,
72 			     const struct isp32_rawaf_meas_cfg *arg);
73 	void (*rawaf_enable)(struct rkisp_isp_params_vdev *params_vdev,
74 			     bool en);
75 	void (*rawae0_config)(struct rkisp_isp_params_vdev *params_vdev,
76 			      const struct isp2x_rawaelite_meas_cfg *arg);
77 	void (*rawae0_enable)(struct rkisp_isp_params_vdev *params_vdev,
78 			      bool en);
79 	void (*rawae1_config)(struct rkisp_isp_params_vdev *params_vdev,
80 			      const struct isp2x_rawaebig_meas_cfg *arg);
81 	void (*rawae1_enable)(struct rkisp_isp_params_vdev *params_vdev,
82 			      bool en);
83 	void (*rawae2_config)(struct rkisp_isp_params_vdev *params_vdev,
84 			      const struct isp2x_rawaebig_meas_cfg *arg);
85 	void (*rawae2_enable)(struct rkisp_isp_params_vdev *params_vdev,
86 			      bool en);
87 	void (*rawae3_config)(struct rkisp_isp_params_vdev *params_vdev,
88 			      const struct isp2x_rawaebig_meas_cfg *arg);
89 	void (*rawae3_enable)(struct rkisp_isp_params_vdev *params_vdev,
90 			      bool en);
91 	void (*rawawb_config)(struct rkisp_isp_params_vdev *params_vdev,
92 			      const struct isp32_rawawb_meas_cfg *arg);
93 	void (*rawawb_enable)(struct rkisp_isp_params_vdev *params_vdev,
94 			      bool en);
95 	void (*rawhst0_config)(struct rkisp_isp_params_vdev *params_vdev,
96 			       const struct isp2x_rawhistlite_cfg *arg);
97 	void (*rawhst0_enable)(struct rkisp_isp_params_vdev *params_vdev,
98 			       bool en);
99 	void (*rawhst1_config)(struct rkisp_isp_params_vdev *params_vdev,
100 			       const struct isp2x_rawhistbig_cfg *arg);
101 	void (*rawhst1_enable)(struct rkisp_isp_params_vdev *params_vdev,
102 			       bool en);
103 	void (*rawhst2_config)(struct rkisp_isp_params_vdev *params_vdev,
104 			       const struct isp2x_rawhistbig_cfg *arg);
105 	void (*rawhst2_enable)(struct rkisp_isp_params_vdev *params_vdev,
106 			       bool en);
107 	void (*rawhst3_config)(struct rkisp_isp_params_vdev *params_vdev,
108 			       const struct isp2x_rawhistbig_cfg *arg);
109 	void (*rawhst3_enable)(struct rkisp_isp_params_vdev *params_vdev,
110 			       bool en);
111 	void (*hdrdrc_config)(struct rkisp_isp_params_vdev *params_vdev,
112 			      const struct isp32_drc_cfg *arg,
113 			      enum rkisp_params_type type);
114 	void (*hdrdrc_enable)(struct rkisp_isp_params_vdev *params_vdev,
115 			      bool en);
116 	void (*hdrmge_config)(struct rkisp_isp_params_vdev *params_vdev,
117 			      const struct isp32_hdrmge_cfg *arg,
118 			      enum rkisp_params_type type);
119 	void (*hdrmge_enable)(struct rkisp_isp_params_vdev *params_vdev,
120 			      bool en);
121 	void (*gic_config)(struct rkisp_isp_params_vdev *params_vdev,
122 			   const struct isp21_gic_cfg *arg);
123 	void (*gic_enable)(struct rkisp_isp_params_vdev *params_vdev,
124 			   bool en);
125 	void (*dhaz_config)(struct rkisp_isp_params_vdev *params_vdev,
126 			    const struct isp32_dhaz_cfg *arg);
127 	void (*dhaz_enable)(struct rkisp_isp_params_vdev *params_vdev,
128 			    bool en);
129 	void (*isp3dlut_config)(struct rkisp_isp_params_vdev *params_vdev,
130 				const struct isp2x_3dlut_cfg *arg);
131 	void (*isp3dlut_enable)(struct rkisp_isp_params_vdev *params_vdev,
132 				bool en);
133 	void (*ldch_config)(struct rkisp_isp_params_vdev *params_vdev,
134 			    const struct isp32_ldch_cfg *arg);
135 	void (*ldch_enable)(struct rkisp_isp_params_vdev *params_vdev,
136 			    bool en);
137 	void (*ynr_config)(struct rkisp_isp_params_vdev *params_vdev,
138 			   const struct isp32_ynr_cfg *arg);
139 	void (*ynr_enable)(struct rkisp_isp_params_vdev *params_vdev,
140 			   bool en);
141 	void (*cnr_config)(struct rkisp_isp_params_vdev *params_vdev,
142 			   const struct isp32_cnr_cfg *arg);
143 	void (*cnr_enable)(struct rkisp_isp_params_vdev *params_vdev,
144 			   bool en);
145 	void (*sharp_config)(struct rkisp_isp_params_vdev *params_vdev,
146 			     const struct isp32_sharp_cfg *arg);
147 	void (*sharp_enable)(struct rkisp_isp_params_vdev *params_vdev,
148 			     bool en);
149 	void (*baynr_config)(struct rkisp_isp_params_vdev *params_vdev,
150 			     const struct isp32_baynr_cfg *arg);
151 	void (*baynr_enable)(struct rkisp_isp_params_vdev *params_vdev,
152 			     bool en);
153 	void (*bay3d_config)(struct rkisp_isp_params_vdev *params_vdev,
154 			     const struct isp32_bay3d_cfg *arg);
155 	void (*bay3d_enable)(struct rkisp_isp_params_vdev *params_vdev,
156 			     bool en);
157 	void (*gain_config)(struct rkisp_isp_params_vdev *params_vdev,
158 			     const struct isp3x_gain_cfg *arg);
159 	void (*gain_enable)(struct rkisp_isp_params_vdev *params_vdev,
160 			     bool en);
161 	void (*cac_config)(struct rkisp_isp_params_vdev *params_vdev,
162 			     const struct isp32_cac_cfg *arg);
163 	void (*cac_enable)(struct rkisp_isp_params_vdev *params_vdev,
164 			     bool en);
165 	void (*csm_config)(struct rkisp_isp_params_vdev *params_vdev,
166 			   const struct isp21_csm_cfg *arg);
167 	void (*cgc_config)(struct rkisp_isp_params_vdev *params_vdev,
168 			   const struct isp21_cgc_cfg *arg);
169 	void (*vsm_config)(struct rkisp_isp_params_vdev *params_vdev,
170 			   const struct isp32_vsm_cfg *arg);
171 	void (*vsm_enable)(struct rkisp_isp_params_vdev *params_vdev,
172 			   bool en);
173 };
174 
175 struct rkisp_isp_params_val_v32 {
176 	struct tasklet_struct lsc_tasklet;
177 
178 	struct rkisp_dummy_buffer buf_3dlut[ISP32_3DLUT_BUF_NUM];
179 	u32 buf_3dlut_idx;
180 
181 	struct rkisp_dummy_buffer buf_lsclut[ISP32_LSC_LUT_BUF_NUM];
182 	u32 buf_lsclut_idx;
183 
184 	struct rkisp_dummy_buffer buf_ldch[ISP3X_MESH_BUF_NUM];
185 	u32 buf_ldch_idx;
186 
187 	struct rkisp_dummy_buffer buf_cac[ISP3X_MESH_BUF_NUM];
188 	u32 buf_cac_idx;
189 
190 	struct rkisp_dummy_buffer buf_info[RKISP_INFO2DDR_BUF_MAX];
191 	u32 buf_info_owner;
192 	u32 buf_info_cnt;
193 	int buf_info_idx;
194 
195 	u32 bay3d_cur_size;
196 	u32 bay3d_cur_wsize;
197 	u32 bay3d_cur_wrap_line;
198 	struct rkisp_dummy_buffer buf_3dnr_iir;
199 	struct rkisp_dummy_buffer buf_3dnr_cur;
200 	struct rkisp_dummy_buffer buf_3dnr_ds;
201 
202 	struct rkisp_dummy_buffer buf_frm;
203 
204 	struct isp32_hdrmge_cfg last_hdrmge;
205 	struct isp32_drc_cfg last_hdrdrc;
206 	struct isp32_hdrmge_cfg cur_hdrmge;
207 	struct isp32_drc_cfg cur_hdrdrc;
208 
209 	bool dhaz_en;
210 	bool drc_en;
211 	bool lsc_en;
212 	bool mge_en;
213 	bool lut3d_en;
214 	bool bay3d_en;
215 	bool is_bigmode;
216 	bool is_lo8x8;
217 	bool is_sram;
218 };
219 
220 #if IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V32)
221 int rkisp_init_params_vdev_v32(struct rkisp_isp_params_vdev *params_vdev);
222 void rkisp_uninit_params_vdev_v32(struct rkisp_isp_params_vdev *params_vdev);
223 #else
rkisp_init_params_vdev_v32(struct rkisp_isp_params_vdev * params_vdev)224 static inline int rkisp_init_params_vdev_v32(struct rkisp_isp_params_vdev *params_vdev) { return -EINVAL; }
rkisp_uninit_params_vdev_v32(struct rkisp_isp_params_vdev * params_vdev)225 static inline void rkisp_uninit_params_vdev_v32(struct rkisp_isp_params_vdev *params_vdev) {}
226 #endif
227 
228 #endif /* _RKISP_ISP_PARAM_V32_H */
229