• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2020 Rockchip Electronics Co., Ltd. */
3 
4 #ifndef _RKISP_ISP_PARAM_V3X_H
5 #define _RKISP_ISP_PARAM_V3X_H
6 
7 #include <linux/rkisp1-config.h>
8 #include <linux/rk-preisp.h>
9 #include "common.h"
10 #include "isp_params.h"
11 
12 #define ISP3X_3DLUT_BUF_NUM			2
13 #define ISP3X_3DLUT_BUF_SIZE			(9 * 9 * 9 * 4)
14 
15 #define ISP3X_LSC_LUT_BUF_NUM			2
16 #define ISP3X_LSC_LUT_TBL_SIZE			(9 * 17 * 4)
17 #define ISP3X_LSC_LUT_BUF_SIZE			(ISP3X_LSC_LUT_TBL_SIZE * 4)
18 
19 #define ISP3X_RAWHISTBIG_ROW_NUM		15
20 #define ISP3X_RAWHISTBIG_COLUMN_NUM		15
21 #define ISP3X_RAWHISTBIG_WEIGHT_REG_SIZE	\
22 	(ISP3X_RAWHISTBIG_ROW_NUM * ISP3X_RAWHISTBIG_COLUMN_NUM)
23 
24 #define ISP3X_RAWHISTLITE_ROW_NUM		5
25 #define ISP3X_RAWHISTLITE_COLUMN_NUM		5
26 #define ISP3X_RAWHISTLITE_WEIGHT_REG_SIZE	\
27 	(ISP3X_RAWHISTLITE_ROW_NUM * ISP3X_RAWHISTLITE_COLUMN_NUM)
28 
29 struct rkisp_isp_params_vdev;
30 struct rkisp_isp_params_ops_v3x {
31 	void (*dpcc_config)(struct rkisp_isp_params_vdev *params_vdev,
32 			    const struct isp2x_dpcc_cfg *arg, u32 id);
33 	void (*dpcc_enable)(struct rkisp_isp_params_vdev *params_vdev,
34 			    bool en, u32 id);
35 	void (*bls_config)(struct rkisp_isp_params_vdev *params_vdev,
36 			   const struct isp21_bls_cfg *arg, u32 id);
37 	void (*bls_enable)(struct rkisp_isp_params_vdev *params_vdev,
38 			   bool en, u32 id);
39 	void (*sdg_config)(struct rkisp_isp_params_vdev *params_vdev,
40 			   const struct isp2x_sdg_cfg *arg, u32 id);
41 	void (*sdg_enable)(struct rkisp_isp_params_vdev *params_vdev,
42 			   bool en, u32 id);
43 	void (*lsc_config)(struct rkisp_isp_params_vdev *params_vdev,
44 			   const struct isp3x_lsc_cfg *arg, u32 id);
45 	void (*lsc_enable)(struct rkisp_isp_params_vdev *params_vdev,
46 			   bool en, u32 id);
47 	void (*awbgain_config)(struct rkisp_isp_params_vdev *params_vdev,
48 			       const struct isp21_awb_gain_cfg *arg, u32 id);
49 	void (*awbgain_enable)(struct rkisp_isp_params_vdev *params_vdev,
50 			       bool en, u32 id);
51 	void (*debayer_config)(struct rkisp_isp_params_vdev *params_vdev,
52 			       const struct isp2x_debayer_cfg *arg, u32 id);
53 	void (*debayer_enable)(struct rkisp_isp_params_vdev *params_vdev,
54 			       bool en, u32 id);
55 	void (*ccm_config)(struct rkisp_isp_params_vdev *params_vdev,
56 			   const struct isp21_ccm_cfg *arg, u32 id);
57 	void (*ccm_enable)(struct rkisp_isp_params_vdev *params_vdev,
58 			   bool en, u32 id);
59 	void (*goc_config)(struct rkisp_isp_params_vdev *params_vdev,
60 			   const struct isp3x_gammaout_cfg *arg, u32 id);
61 	void (*goc_enable)(struct rkisp_isp_params_vdev *params_vdev,
62 			   bool en, u32 id);
63 	void (*cproc_config)(struct rkisp_isp_params_vdev *params_vdev,
64 			     const struct isp2x_cproc_cfg *arg, u32 id);
65 	void (*cproc_enable)(struct rkisp_isp_params_vdev *params_vdev,
66 			     bool en, u32 id);
67 	void (*ie_config)(struct rkisp_isp_params_vdev *params_vdev,
68 			  const struct isp2x_ie_cfg *arg, u32 id);
69 	void (*ie_enable)(struct rkisp_isp_params_vdev *params_vdev,
70 			  bool en, u32 id);
71 	void (*rawaf_config)(struct rkisp_isp_params_vdev *params_vdev,
72 			     const struct isp3x_rawaf_meas_cfg *arg, u32 id);
73 	void (*rawaf_enable)(struct rkisp_isp_params_vdev *params_vdev,
74 			     bool en, u32 id);
75 	void (*rawae0_config)(struct rkisp_isp_params_vdev *params_vdev,
76 			      const struct isp2x_rawaelite_meas_cfg *arg, u32 id);
77 	void (*rawae0_enable)(struct rkisp_isp_params_vdev *params_vdev,
78 			      bool en, u32 id);
79 	void (*rawae1_config)(struct rkisp_isp_params_vdev *params_vdev,
80 			      const struct isp2x_rawaebig_meas_cfg *arg, u32 id);
81 	void (*rawae1_enable)(struct rkisp_isp_params_vdev *params_vdev,
82 			      bool en, u32 id);
83 	void (*rawae2_config)(struct rkisp_isp_params_vdev *params_vdev,
84 			      const struct isp2x_rawaebig_meas_cfg *arg, u32 id);
85 	void (*rawae2_enable)(struct rkisp_isp_params_vdev *params_vdev,
86 			      bool en, u32 id);
87 	void (*rawae3_config)(struct rkisp_isp_params_vdev *params_vdev,
88 			      const struct isp2x_rawaebig_meas_cfg *arg, u32 id);
89 	void (*rawae3_enable)(struct rkisp_isp_params_vdev *params_vdev,
90 			      bool en, u32 id);
91 	void (*rawawb_config)(struct rkisp_isp_params_vdev *params_vdev,
92 			      const struct isp3x_rawawb_meas_cfg *arg, u32 id);
93 	void (*rawawb_enable)(struct rkisp_isp_params_vdev *params_vdev,
94 			      bool en, u32 id);
95 	void (*rawhst0_config)(struct rkisp_isp_params_vdev *params_vdev,
96 			       const struct isp2x_rawhistlite_cfg *arg, u32 id);
97 	void (*rawhst0_enable)(struct rkisp_isp_params_vdev *params_vdev,
98 			       bool en, u32 id);
99 	void (*rawhst1_config)(struct rkisp_isp_params_vdev *params_vdev,
100 			       const struct isp2x_rawhistbig_cfg *arg, u32 id);
101 	void (*rawhst1_enable)(struct rkisp_isp_params_vdev *params_vdev,
102 			       bool en, u32 id);
103 	void (*rawhst2_config)(struct rkisp_isp_params_vdev *params_vdev,
104 			       const struct isp2x_rawhistbig_cfg *arg, u32 id);
105 	void (*rawhst2_enable)(struct rkisp_isp_params_vdev *params_vdev,
106 			       bool en, u32 id);
107 	void (*rawhst3_config)(struct rkisp_isp_params_vdev *params_vdev,
108 			       const struct isp2x_rawhistbig_cfg *arg, u32 id);
109 	void (*rawhst3_enable)(struct rkisp_isp_params_vdev *params_vdev,
110 			       bool en, u32 id);
111 	void (*hdrdrc_config)(struct rkisp_isp_params_vdev *params_vdev,
112 			      const struct isp3x_drc_cfg *arg,
113 			      enum rkisp_params_type type, u32 id);
114 	void (*hdrdrc_enable)(struct rkisp_isp_params_vdev *params_vdev,
115 			      bool en, u32 id);
116 	void (*hdrmge_config)(struct rkisp_isp_params_vdev *params_vdev,
117 			      const struct isp3x_hdrmge_cfg *arg,
118 			      enum rkisp_params_type type, u32 id);
119 	void (*hdrmge_enable)(struct rkisp_isp_params_vdev *params_vdev,
120 			      bool en, u32 id);
121 	void (*gic_config)(struct rkisp_isp_params_vdev *params_vdev,
122 			   const struct isp21_gic_cfg *arg, u32 id);
123 	void (*gic_enable)(struct rkisp_isp_params_vdev *params_vdev,
124 			   bool en, u32 id);
125 	void (*dhaz_config)(struct rkisp_isp_params_vdev *params_vdev,
126 			    const struct isp3x_dhaz_cfg *arg, u32 id);
127 	void (*dhaz_enable)(struct rkisp_isp_params_vdev *params_vdev,
128 			    bool en, u32 id);
129 	void (*isp3dlut_config)(struct rkisp_isp_params_vdev *params_vdev,
130 				const struct isp2x_3dlut_cfg *arg, u32 id);
131 	void (*isp3dlut_enable)(struct rkisp_isp_params_vdev *params_vdev,
132 				bool en, u32 id);
133 	void (*ldch_config)(struct rkisp_isp_params_vdev *params_vdev,
134 			    const struct isp2x_ldch_cfg *arg, u32 id);
135 	void (*ldch_enable)(struct rkisp_isp_params_vdev *params_vdev,
136 			    bool en, u32 id);
137 	void (*ynr_config)(struct rkisp_isp_params_vdev *params_vdev,
138 			   const struct isp3x_ynr_cfg *arg, u32 id);
139 	void (*ynr_enable)(struct rkisp_isp_params_vdev *params_vdev,
140 			   bool en, u32 id);
141 	void (*cnr_config)(struct rkisp_isp_params_vdev *params_vdev,
142 			   const struct isp3x_cnr_cfg *arg, u32 id);
143 	void (*cnr_enable)(struct rkisp_isp_params_vdev *params_vdev,
144 			   bool en, u32 id);
145 	void (*sharp_config)(struct rkisp_isp_params_vdev *params_vdev,
146 			     const struct isp3x_sharp_cfg *arg, u32 id);
147 	void (*sharp_enable)(struct rkisp_isp_params_vdev *params_vdev,
148 			     bool en, u32 id);
149 	void (*baynr_config)(struct rkisp_isp_params_vdev *params_vdev,
150 			     const struct isp3x_baynr_cfg *arg, u32 id);
151 	void (*baynr_enable)(struct rkisp_isp_params_vdev *params_vdev,
152 			     bool en, u32 id);
153 	void (*bay3d_config)(struct rkisp_isp_params_vdev *params_vdev,
154 			     const struct isp3x_bay3d_cfg *arg, u32 id);
155 	void (*bay3d_enable)(struct rkisp_isp_params_vdev *params_vdev,
156 			     bool en, u32 id);
157 	void (*gain_config)(struct rkisp_isp_params_vdev *params_vdev,
158 			     const struct isp3x_gain_cfg *arg, u32 id);
159 	void (*gain_enable)(struct rkisp_isp_params_vdev *params_vdev,
160 			     bool en, u32 id);
161 	void (*cac_config)(struct rkisp_isp_params_vdev *params_vdev,
162 			     const struct isp3x_cac_cfg *arg, u32 id);
163 	void (*cac_enable)(struct rkisp_isp_params_vdev *params_vdev,
164 			     bool en, u32 id);
165 	void (*csm_config)(struct rkisp_isp_params_vdev *params_vdev,
166 			   const struct isp21_csm_cfg *arg, u32 id);
167 };
168 
169 struct rkisp_isp_params_val_v3x {
170 	struct tasklet_struct lsc_tasklet;
171 
172 	struct rkisp_dummy_buffer buf_3dlut[ISP3_UNITE_MAX][ISP3X_3DLUT_BUF_NUM];
173 	u32 buf_3dlut_idx[ISP3_UNITE_MAX];
174 
175 	struct rkisp_dummy_buffer buf_ldch[ISP3_UNITE_MAX][ISP3X_MESH_BUF_NUM];
176 	u32 buf_ldch_idx[ISP3_UNITE_MAX];
177 
178 	struct rkisp_dummy_buffer buf_lsclut[ISP3_UNITE_MAX][ISP3X_LSC_LUT_BUF_NUM];
179 	u32 buf_lsclut_idx[ISP3_UNITE_MAX];
180 
181 	struct rkisp_dummy_buffer buf_cac[ISP3_UNITE_MAX][ISP3X_MESH_BUF_NUM];
182 	u32 buf_cac_idx[ISP3_UNITE_MAX];
183 
184 	struct rkisp_dummy_buffer buf_3dnr_iir[ISP3_UNITE_MAX];
185 	struct rkisp_dummy_buffer buf_3dnr_cur[ISP3_UNITE_MAX];
186 	struct rkisp_dummy_buffer buf_3dnr_ds[ISP3_UNITE_MAX];
187 
188 	struct isp3x_hdrmge_cfg last_hdrmge;
189 	struct isp3x_drc_cfg last_hdrdrc;
190 	struct isp3x_hdrmge_cfg cur_hdrmge;
191 	struct isp3x_drc_cfg cur_hdrdrc;
192 
193 	bool dhaz_en;
194 	bool drc_en;
195 	bool lsc_en;
196 	bool mge_en;
197 	bool lut3d_en;
198 	bool bay3d_en;
199 	bool is_bigmode;
200 };
201 
202 #if IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V30)
203 int rkisp_init_params_vdev_v3x(struct rkisp_isp_params_vdev *params_vdev);
204 void rkisp_uninit_params_vdev_v3x(struct rkisp_isp_params_vdev *params_vdev);
205 #else
rkisp_init_params_vdev_v3x(struct rkisp_isp_params_vdev * params_vdev)206 static inline int rkisp_init_params_vdev_v3x(struct rkisp_isp_params_vdev *params_vdev) { return -EINVAL; }
rkisp_uninit_params_vdev_v3x(struct rkisp_isp_params_vdev * params_vdev)207 static inline void rkisp_uninit_params_vdev_v3x(struct rkisp_isp_params_vdev *params_vdev) {}
208 #endif
209 
210 #endif /* _RKISP_ISP_PARAM_V3X_H */
211