• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: (GPL-2.0+ WITH Linux-syscall-note) OR MIT
2  *
3  * Rockchip isp2 driver
4  * Copyright (C) 2020 Rockchip Electronics Co., Ltd.
5  */
6 
7 #ifndef _UAPI_RKISP21_CONFIG_H
8 #define _UAPI_RKISP21_CONFIG_H
9 
10 #include <linux/types.h>
11 #include <linux/v4l2-controls.h>
12 #include <linux/rkisp2-config.h>
13 
14 #define ISP2X_MODULE_BAYNR BIT_ULL(36)
15 #define ISP2X_MODULE_BAY3D BIT_ULL(37)
16 #define ISP2X_MODULE_YNR BIT_ULL(38)
17 #define ISP2X_MODULE_CNR BIT_ULL(39)
18 #define ISP2X_MODULE_SHARP BIT_ULL(40)
19 #define ISP2X_MODULE_DRC BIT_ULL(41)
20 #define ISP2X_MODULE_CSM BIT_ULL(43)
21 
22 #define ISP21_DHAZ_ENH_CURVE_NUM 17
23 #define ISP21_DHAZ_HIST_IIR_NUM 64
24 #define ISP21_RAWAWB_HSTBIN_NUM 8
25 #define ISP21_RAWAWB_WEIGHT_NUM 225
26 #define ISP21_DRC_Y_NUM 17
27 #define ISP21_YNR_XY_NUM 17
28 #define ISP21_BAYNR_XY_NUM 16
29 #define ISP21_BAY3D_XY_NUM 16
30 #define ISP21_SHARP_X_NUM 7
31 #define ISP21_SHARP_Y_NUM 8
32 #define ISP21_CSM_COEFF_NUM 9
33 
34 struct isp21_csm_cfg {
35     u8 csm_full_range;
36     u16 csm_y_offset;
37     u16 csm_c_offset;
38 
39     u32 csm_coeff[ISP21_CSM_COEFF_NUM];
40 } __attribute__((packed));
41 
42 struct isp21_bls_cfg {
43     u8 enable_auto;
44     u8 en_windows;
45     u8 bls1_en;
46     struct isp2x_window bls_window1;
47     struct isp2x_window bls_window2;
48     u8 bls_samples;
49     struct isp2x_bls_fixed_val fixed_val;
50     struct isp2x_bls_fixed_val bls1_val;
51 } __attribute__((packed));
52 
53 struct isp21_awb_gain_cfg {
54     u16 gain0_red;
55     u16 gain0_green_r;
56     u16 gain0_blue;
57     u16 gain0_green_b;
58     u16 gain1_red;
59     u16 gain1_green_r;
60     u16 gain1_blue;
61     u16 gain1_green_b;
62     u16 gain2_red;
63     u16 gain2_green_r;
64     u16 gain2_blue;
65     u16 gain2_green_b;
66 } __attribute__((packed));
67 
68 struct isp21_gic_cfg {
69     u16 regmingradthrdark2;
70     u16 regmingradthrdark1;
71     u16 regminbusythre;
72 
73     u16 regdarkthre;
74     u16 regmaxcorvboth;
75     u16 regdarktthrehi;
76 
77     u8 regkgrad2dark;
78     u8 regkgrad1dark;
79     u8 regstrengthglobal_fix;
80     u8 regdarkthrestep;
81     u8 regkgrad2;
82     u8 regkgrad1;
83     u8 reggbthre;
84 
85     u16 regmaxcorv;
86     u16 regmingradthr2;
87     u16 regmingradthr1;
88 
89     u8 gr_ratio;
90     u8 noise_scale;
91     u16 noise_base;
92     u16 diff_clip;
93 
94     u16 sigma_y[ISP2X_GIC_SIGMA_Y_NUM];
95 } __attribute__((packed));
96 
97 struct isp21_baynr_cfg {
98     u8 sw_baynr_gauss_en;
99     u8 sw_baynr_log_bypass;
100     u16 sw_baynr_dgain1;
101     u16 sw_baynr_dgain0;
102     u16 sw_baynr_dgain2;
103     u16 sw_baynr_pix_diff;
104     u16 sw_baynr_diff_thld;
105     u16 sw_baynr_softthld;
106     u16 sw_bltflt_streng;
107     u16 sw_baynr_reg_w1;
108     u16 sw_sigma_x[ISP21_BAYNR_XY_NUM];
109     u16 sw_sigma_y[ISP21_BAYNR_XY_NUM];
110     u16 weit_d2;
111     u16 weit_d1;
112     u16 weit_d0;
113 } __attribute__((packed));
114 
115 struct isp21_bay3d_cfg {
116     u8 sw_bay3d_exp_sel;
117     u8 sw_bay3d_bypass_en;
118     u8 sw_bay3d_pk_en;
119     u16 sw_bay3d_softwgt;
120     u16 sw_bay3d_sigratio;
121     u32 sw_bay3d_glbpk2;
122     u16 sw_bay3d_exp_str;
123     u16 sw_bay3d_str;
124     u16 sw_bay3d_wgtlmt_h;
125     u16 sw_bay3d_wgtlmt_l;
126     u16 sw_bay3d_sig_x[ISP21_BAY3D_XY_NUM];
127     u16 sw_bay3d_sig_y[ISP21_BAY3D_XY_NUM];
128 } __attribute__((packed));
129 
130 struct isp21_ynr_cfg {
131     u8 sw_ynr_thumb_mix_cur_en;
132     u8 sw_ynr_global_gain_alpha;
133     u8 sw_ynr_global_gain;
134     u8 sw_ynr_flt1x1_bypass_sel;
135     u8 sw_ynr_sft5x5_bypass;
136     u8 sw_ynr_flt1x1_bypass;
137     u8 sw_ynr_lgft3x3_bypass;
138     u8 sw_ynr_lbft5x5_bypass;
139     u8 sw_ynr_bft3x3_bypass;
140 
141     u16 sw_ynr_rnr_max_r;
142 
143     u16 sw_ynr_low_bf_inv1;
144     u16 sw_ynr_low_bf_inv0;
145 
146     u16 sw_ynr_low_peak_supress;
147     u16 sw_ynr_low_thred_adj;
148 
149     u16 sw_ynr_low_dist_adj;
150     u16 sw_ynr_low_edge_adj_thresh;
151 
152     u16 sw_ynr_low_bi_weight;
153     u16 sw_ynr_low_weight;
154     u16 sw_ynr_low_center_weight;
155     u16 sw_ynr_hi_min_adj;
156     u16 sw_ynr_high_thred_adj;
157     u8 sw_ynr_high_retain_weight;
158     u8 sw_ynr_hi_edge_thed;
159     u8 sw_ynr_base_filter_weight2;
160     u8 sw_ynr_base_filter_weight1;
161     u8 sw_ynr_base_filter_weight0;
162     u16 sw_ynr_low_gauss1_coeff2;
163     u16 sw_ynr_low_gauss1_coeff1;
164     u16 sw_ynr_low_gauss1_coeff0;
165     u16 sw_ynr_low_gauss2_coeff2;
166     u16 sw_ynr_low_gauss2_coeff1;
167     u16 sw_ynr_low_gauss2_coeff0;
168     u8 sw_ynr_direction_weight3;
169     u8 sw_ynr_direction_weight2;
170     u8 sw_ynr_direction_weight1;
171     u8 sw_ynr_direction_weight0;
172     u8 sw_ynr_direction_weight7;
173     u8 sw_ynr_direction_weight6;
174     u8 sw_ynr_direction_weight5;
175     u8 sw_ynr_direction_weight4;
176     u16 sw_ynr_luma_points_x[ISP21_YNR_XY_NUM];
177     u16 sw_ynr_lsgm_y[ISP21_YNR_XY_NUM];
178     u16 sw_ynr_hsgm_y[ISP21_YNR_XY_NUM];
179     u8 sw_ynr_rnr_strength3[ISP21_YNR_XY_NUM];
180 } __attribute__((packed));
181 
182 struct isp21_cnr_cfg {
183     u8 sw_cnr_thumb_mix_cur_en;
184     u8 sw_cnr_lq_bila_bypass;
185     u8 sw_cnr_hq_bila_bypass;
186     u8 sw_cnr_exgain_bypass;
187     u8 sw_cnr_exgain_mux;
188     u8 sw_cnr_gain_iso;
189     u8 sw_cnr_gain_offset;
190     u8 sw_cnr_gain_1sigma;
191     u8 sw_cnr_gain_uvgain1;
192     u8 sw_cnr_gain_uvgain0;
193     u8 sw_cnr_lmed3_alpha;
194     u8 sw_cnr_lbf5_gain_y;
195     u8 sw_cnr_lbf5_gain_c;
196     u8 sw_cnr_lbf5_weit_d3;
197     u8 sw_cnr_lbf5_weit_d2;
198     u8 sw_cnr_lbf5_weit_d1;
199     u8 sw_cnr_lbf5_weit_d0;
200     u8 sw_cnr_lbf5_weit_d4;
201     u8 sw_cnr_hmed3_alpha;
202     u16 sw_cnr_hbf5_weit_src;
203     u16 sw_cnr_hbf5_min_wgt;
204     u16 sw_cnr_hbf5_sigma;
205     u16 sw_cnr_lbf5_weit_src;
206     u16 sw_cnr_lbf3_sigma;
207 } __attribute__((packed));
208 
209 struct isp21_sharp_cfg {
210     u8 sw_sharp_bypass;
211     u8 sw_sharp_sharp_ratio;
212     u8 sw_sharp_bf_ratio;
213     u8 sw_sharp_gaus_ratio;
214     u8 sw_sharp_pbf_ratio;
215     u8 sw_sharp_luma_dx[ISP21_SHARP_X_NUM];
216     u16 sw_sharp_pbf_sigma_inv[ISP21_SHARP_Y_NUM];
217     u16 sw_sharp_bf_sigma_inv[ISP21_SHARP_Y_NUM];
218     u8 sw_sharp_bf_sigma_shift;
219     u8 sw_sharp_pbf_sigma_shift;
220     u16 sw_sharp_ehf_th[ISP21_SHARP_Y_NUM];
221     u16 sw_sharp_clip_hf[ISP21_SHARP_Y_NUM];
222     u8 sw_sharp_pbf_coef_2;
223     u8 sw_sharp_pbf_coef_1;
224     u8 sw_sharp_pbf_coef_0;
225     u8 sw_sharp_bf_coef_2;
226     u8 sw_sharp_bf_coef_1;
227     u8 sw_sharp_bf_coef_0;
228     u8 sw_sharp_gaus_coef_2;
229     u8 sw_sharp_gaus_coef_1;
230     u8 sw_sharp_gaus_coef_0;
231 } __attribute__((packed));
232 
233 struct isp21_ccm_cfg {
234     u8 highy_adjust_dis;
235     u8 bound_bit;
236 
237     s16 coeff0_r;
238     s16 coeff1_r;
239     s16 coeff2_r;
240     s16 offset_r;
241 
242     s16 coeff0_g;
243     s16 coeff1_g;
244     s16 coeff2_g;
245     s16 offset_g;
246 
247     s16 coeff0_b;
248     s16 coeff1_b;
249     s16 coeff2_b;
250     s16 offset_b;
251 
252     u16 coeff0_y;
253     u16 coeff1_y;
254     u16 coeff2_y;
255 
256     u16 alp_y[ISP21_DHAZ_ENH_CURVE_NUM];
257 } __attribute__((packed));
258 
259 struct isp21_dhaz_cfg {
260     u8 enhance_en;
261     u8 air_lc_en;
262     u8 hpara_en;
263     u8 hist_en;
264     u8 dc_en;
265 
266     u8 yblk_th;
267     u8 yhist_th;
268     u8 dc_max_th;
269     u8 dc_min_th;
270 
271     u16 wt_max;
272     u8 bright_max;
273     u8 bright_min;
274 
275     u8 tmax_base;
276     u8 dark_th;
277     u8 air_max;
278     u8 air_min;
279 
280     u16 tmax_max;
281     u16 tmax_off;
282 
283     u8 hist_k;
284     u8 hist_th_off;
285     u16 hist_min;
286 
287     u16 hist_gratio;
288     u16 hist_scale;
289 
290     u16 enhance_value;
291     u16 enhance_chroma;
292 
293     u16 iir_wt_sigma;
294     u16 iir_sigma;
295     u16 stab_fnum;
296 
297     u16 iir_tmax_sigma;
298     u16 iir_air_sigma;
299     u8 iir_pre_wet;
300 
301     u16 cfg_wt;
302     u16 cfg_air;
303     u16 cfg_alpha;
304 
305     u16 cfg_gratio;
306     u16 cfg_tmax;
307 
308     u16 range_sima;
309     u8 space_sigma_pre;
310     u8 space_sigma_cur;
311 
312     u16 dc_weitcur;
313     u16 bf_weight;
314 
315     u16 enh_curve[ISP21_DHAZ_ENH_CURVE_NUM];
316 
317     u8 gaus_h2;
318     u8 gaus_h1;
319     u8 gaus_h0;
320 } __attribute__((packed));
321 
322 struct isp21_dhaz_stat {
323     u16 dhaz_adp_air_base;
324     u16 dhaz_adp_wt;
325 
326     u16 dhaz_adp_gratio;
327     u16 dhaz_adp_tmax;
328 
329     u16 h_rgb_iir[ISP21_DHAZ_HIST_IIR_NUM];
330 } __attribute__((packed));
331 
332 struct isp21_drc_cfg {
333     u8 sw_drc_offset_pow2;
334     u16 sw_drc_compres_scl;
335     u16 sw_drc_position;
336     u16 sw_drc_delta_scalein;
337     u16 sw_drc_hpdetail_ratio;
338     u16 sw_drc_lpdetail_ratio;
339     u8 sw_drc_weicur_pix;
340     u8 sw_drc_weipre_frame;
341     u16 sw_drc_force_sgm_inv0;
342     u8 sw_drc_motion_scl;
343     u8 sw_drc_edge_scl;
344     u16 sw_drc_space_sgm_inv1;
345     u16 sw_drc_space_sgm_inv0;
346     u16 sw_drc_range_sgm_inv1;
347     u16 sw_drc_range_sgm_inv0;
348     u8 sw_drc_weig_maxl;
349     u8 sw_drc_weig_bilat;
350     u16 sw_drc_gain_y[ISP21_DRC_Y_NUM];
351     u16 sw_drc_compres_y[ISP21_DRC_Y_NUM];
352     u16 sw_drc_scale_y[ISP21_DRC_Y_NUM];
353     u16 sw_drc_iir_weight;
354     u16 sw_drc_min_ogain;
355 } __attribute__((packed));
356 
357 struct isp21_rawawb_meas_cfg {
358     u8 rawawb_sel;
359     u8 sw_rawawb_xy_en0;
360     u8 sw_rawawb_uv_en0;
361     u8 sw_rawawb_xy_en1;
362     u8 sw_rawawb_uv_en1;
363     u8 sw_rawawb_3dyuv_en0;
364     u8 sw_rawawb_3dyuv_en1;
365     u8 sw_rawawb_wp_blk_wei_en0;
366     u8 sw_rawawb_wp_blk_wei_en1;
367     u8 sw_rawawb_wp_luma_wei_en0;
368     u8 sw_rawawb_wp_luma_wei_en1;
369     u8 sw_rawlsc_bypass_en;
370     u8 sw_rawawb_blk_measure_enable;
371     u8 sw_rawawb_blk_measure_mode;
372     u8 sw_rawawb_blk_measure_xytype;
373     u8 sw_rawawb_blk_measure_illu_idx;
374     u8 sw_rawawb_wp_hist_xytype;
375     u8 sw_rawawb_light_num;
376     u8 sw_rawawb_wind_size;
377     u8 sw_rawawb_r_max;
378     u8 sw_rawawb_g_max;
379     u8 sw_rawawb_b_max;
380     u8 sw_rawawb_y_max;
381     u8 sw_rawawb_r_min;
382     u8 sw_rawawb_g_min;
383     u8 sw_rawawb_b_min;
384     u8 sw_rawawb_y_min;
385     u8 sw_rawawb_3dyuv_ls_idx0;
386     u8 sw_rawawb_3dyuv_ls_idx1;
387     u8 sw_rawawb_3dyuv_ls_idx2;
388     u8 sw_rawawb_3dyuv_ls_idx3;
389     u8 sw_rawawb_exc_wp_region0_excen0;
390     u8 sw_rawawb_exc_wp_region0_excen1;
391     u8 sw_rawawb_exc_wp_region0_domain;
392     u8 sw_rawawb_exc_wp_region1_excen0;
393     u8 sw_rawawb_exc_wp_region1_excen1;
394     u8 sw_rawawb_exc_wp_region1_domain;
395     u8 sw_rawawb_exc_wp_region2_excen0;
396     u8 sw_rawawb_exc_wp_region2_excen1;
397     u8 sw_rawawb_exc_wp_region2_domain;
398     u8 sw_rawawb_exc_wp_region3_excen0;
399     u8 sw_rawawb_exc_wp_region3_excen1;
400     u8 sw_rawawb_exc_wp_region3_domain;
401     u8 sw_rawawb_exc_wp_region4_excen0;
402     u8 sw_rawawb_exc_wp_region4_excen1;
403     u8 sw_rawawb_exc_wp_region4_domain;
404     u8 sw_rawawb_exc_wp_region5_excen0;
405     u8 sw_rawawb_exc_wp_region5_excen1;
406     u8 sw_rawawb_exc_wp_region5_domain;
407     u8 sw_rawawb_exc_wp_region6_excen0;
408     u8 sw_rawawb_exc_wp_region6_excen1;
409     u8 sw_rawawb_exc_wp_region6_domain;
410     u8 sw_rawawb_wp_luma_weicurve_y0;
411     u8 sw_rawawb_wp_luma_weicurve_y1;
412     u8 sw_rawawb_wp_luma_weicurve_y2;
413     u8 sw_rawawb_wp_luma_weicurve_y3;
414     u8 sw_rawawb_wp_luma_weicurve_y4;
415     u8 sw_rawawb_wp_luma_weicurve_y5;
416     u8 sw_rawawb_wp_luma_weicurve_y6;
417     u8 sw_rawawb_wp_luma_weicurve_y7;
418     u8 sw_rawawb_wp_luma_weicurve_y8;
419     u8 sw_rawawb_wp_luma_weicurve_w0;
420     u8 sw_rawawb_wp_luma_weicurve_w1;
421     u8 sw_rawawb_wp_luma_weicurve_w2;
422     u8 sw_rawawb_wp_luma_weicurve_w3;
423     u8 sw_rawawb_wp_luma_weicurve_w4;
424     u8 sw_rawawb_wp_luma_weicurve_w5;
425     u8 sw_rawawb_wp_luma_weicurve_w6;
426     u8 sw_rawawb_wp_luma_weicurve_w7;
427     u8 sw_rawawb_wp_luma_weicurve_w8;
428     u8 sw_rawawb_rotu0_ls0;
429     u8 sw_rawawb_rotu1_ls0;
430     u8 sw_rawawb_rotu2_ls0;
431     u8 sw_rawawb_rotu3_ls0;
432     u8 sw_rawawb_rotu4_ls0;
433     u8 sw_rawawb_rotu5_ls0;
434     u8 sw_rawawb_dis_x1x2_ls0;
435     u8 sw_rawawb_rotu0_ls1;
436     u8 sw_rawawb_rotu1_ls1;
437     u8 sw_rawawb_rotu2_ls1;
438     u8 sw_rawawb_rotu3_ls1;
439     u8 sw_rawawb_rotu4_ls1;
440     u8 sw_rawawb_rotu5_ls1;
441     u8 sw_rawawb_dis_x1x2_ls1;
442     u8 sw_rawawb_rotu0_ls2;
443     u8 sw_rawawb_rotu1_ls2;
444     u8 sw_rawawb_rotu2_ls2;
445     u8 sw_rawawb_rotu3_ls2;
446     u8 sw_rawawb_rotu4_ls2;
447     u8 sw_rawawb_rotu5_ls2;
448     u8 sw_rawawb_dis_x1x2_ls2;
449     u8 sw_rawawb_rotu0_ls3;
450     u8 sw_rawawb_rotu1_ls3;
451     u8 sw_rawawb_rotu2_ls3;
452     u8 sw_rawawb_rotu3_ls3;
453     u8 sw_rawawb_rotu4_ls3;
454     u8 sw_rawawb_rotu5_ls3;
455     u8 sw_rawawb_dis_x1x2_ls3;
456     u8 sw_rawawb_blk_rtdw_measure_en;
457     u8 sw_rawawb_blk_with_luma_wei_en;
458     u8 sw_rawawb_wp_blk_wei_w[ISP21_RAWAWB_WEIGHT_NUM];
459 
460     u16 sw_rawawb_h_offs;
461     u16 sw_rawawb_v_offs;
462     u16 sw_rawawb_h_size;
463     u16 sw_rawawb_v_size;
464     u16 sw_rawawb_vertex0_u_0;
465     u16 sw_rawawb_vertex0_v_0;
466     u16 sw_rawawb_vertex1_u_0;
467     u16 sw_rawawb_vertex1_v_0;
468     u16 sw_rawawb_vertex2_u_0;
469     u16 sw_rawawb_vertex2_v_0;
470     u16 sw_rawawb_vertex3_u_0;
471     u16 sw_rawawb_vertex3_v_0;
472     u16 sw_rawawb_vertex0_u_1;
473     u16 sw_rawawb_vertex0_v_1;
474     u16 sw_rawawb_vertex1_u_1;
475     u16 sw_rawawb_vertex1_v_1;
476     u16 sw_rawawb_vertex2_u_1;
477     u16 sw_rawawb_vertex2_v_1;
478     u16 sw_rawawb_vertex3_u_1;
479     u16 sw_rawawb_vertex3_v_1;
480     u16 sw_rawawb_vertex0_u_2;
481     u16 sw_rawawb_vertex0_v_2;
482     u16 sw_rawawb_vertex1_u_2;
483     u16 sw_rawawb_vertex1_v_2;
484     u16 sw_rawawb_vertex2_u_2;
485     u16 sw_rawawb_vertex2_v_2;
486     u16 sw_rawawb_vertex3_u_2;
487     u16 sw_rawawb_vertex3_v_2;
488     u16 sw_rawawb_vertex0_u_3;
489     u16 sw_rawawb_vertex0_v_3;
490     u16 sw_rawawb_vertex1_u_3;
491     u16 sw_rawawb_vertex1_v_3;
492     u16 sw_rawawb_vertex2_u_3;
493     u16 sw_rawawb_vertex2_v_3;
494     u16 sw_rawawb_vertex3_u_3;
495     u16 sw_rawawb_vertex3_v_3;
496     u16 sw_rawawb_vertex0_u_4;
497     u16 sw_rawawb_vertex0_v_4;
498     u16 sw_rawawb_vertex1_u_4;
499     u16 sw_rawawb_vertex1_v_4;
500     u16 sw_rawawb_vertex2_u_4;
501     u16 sw_rawawb_vertex2_v_4;
502     u16 sw_rawawb_vertex3_u_4;
503     u16 sw_rawawb_vertex3_v_4;
504     u16 sw_rawawb_vertex0_u_5;
505     u16 sw_rawawb_vertex0_v_5;
506     u16 sw_rawawb_vertex1_u_5;
507     u16 sw_rawawb_vertex1_v_5;
508     u16 sw_rawawb_vertex2_u_5;
509     u16 sw_rawawb_vertex2_v_5;
510     u16 sw_rawawb_vertex3_u_5;
511     u16 sw_rawawb_vertex3_v_5;
512     u16 sw_rawawb_vertex0_u_6;
513     u16 sw_rawawb_vertex0_v_6;
514     u16 sw_rawawb_vertex1_u_6;
515     u16 sw_rawawb_vertex1_v_6;
516     u16 sw_rawawb_vertex2_u_6;
517     u16 sw_rawawb_vertex2_v_6;
518     u16 sw_rawawb_vertex3_u_6;
519     u16 sw_rawawb_vertex3_v_6;
520 
521     u16 sw_rawawb_wt0;
522     u16 sw_rawawb_wt1;
523     u16 sw_rawawb_wt2;
524     u16 sw_rawawb_mat0_x;
525     u16 sw_rawawb_mat1_x;
526     u16 sw_rawawb_mat2_x;
527     u16 sw_rawawb_mat0_y;
528     u16 sw_rawawb_mat1_y;
529     u16 sw_rawawb_mat2_y;
530     u16 sw_rawawb_nor_x0_0;
531     u16 sw_rawawb_nor_x1_0;
532     u16 sw_rawawb_nor_y0_0;
533     u16 sw_rawawb_nor_y1_0;
534     u16 sw_rawawb_big_x0_0;
535     u16 sw_rawawb_big_x1_0;
536     u16 sw_rawawb_big_y0_0;
537     u16 sw_rawawb_big_y1_0;
538     u16 sw_rawawb_nor_x0_1;
539     u16 sw_rawawb_nor_x1_1;
540     u16 sw_rawawb_nor_y0_1;
541     u16 sw_rawawb_nor_y1_1;
542     u16 sw_rawawb_big_x0_1;
543     u16 sw_rawawb_big_x1_1;
544     u16 sw_rawawb_big_y0_1;
545     u16 sw_rawawb_big_y1_1;
546     u16 sw_rawawb_nor_x0_2;
547     u16 sw_rawawb_nor_x1_2;
548     u16 sw_rawawb_nor_y0_2;
549     u16 sw_rawawb_nor_y1_2;
550     u16 sw_rawawb_big_x0_2;
551     u16 sw_rawawb_big_x1_2;
552     u16 sw_rawawb_big_y0_2;
553     u16 sw_rawawb_big_y1_2;
554     u16 sw_rawawb_nor_x0_3;
555     u16 sw_rawawb_nor_x1_3;
556     u16 sw_rawawb_nor_y0_3;
557     u16 sw_rawawb_nor_y1_3;
558     u16 sw_rawawb_big_x0_3;
559     u16 sw_rawawb_big_x1_3;
560     u16 sw_rawawb_big_y0_3;
561     u16 sw_rawawb_big_y1_3;
562     u16 sw_rawawb_nor_x0_4;
563     u16 sw_rawawb_nor_x1_4;
564     u16 sw_rawawb_nor_y0_4;
565     u16 sw_rawawb_nor_y1_4;
566     u16 sw_rawawb_big_x0_4;
567     u16 sw_rawawb_big_x1_4;
568     u16 sw_rawawb_big_y0_4;
569     u16 sw_rawawb_big_y1_4;
570     u16 sw_rawawb_nor_x0_5;
571     u16 sw_rawawb_nor_x1_5;
572     u16 sw_rawawb_nor_y0_5;
573     u16 sw_rawawb_nor_y1_5;
574     u16 sw_rawawb_big_x0_5;
575     u16 sw_rawawb_big_x1_5;
576     u16 sw_rawawb_big_y0_5;
577     u16 sw_rawawb_big_y1_5;
578     u16 sw_rawawb_nor_x0_6;
579     u16 sw_rawawb_nor_x1_6;
580     u16 sw_rawawb_nor_y0_6;
581     u16 sw_rawawb_nor_y1_6;
582     u16 sw_rawawb_big_x0_6;
583     u16 sw_rawawb_big_x1_6;
584     u16 sw_rawawb_big_y0_6;
585     u16 sw_rawawb_big_y1_6;
586     u16 sw_rawawb_pre_wbgain_inv_r;
587     u16 sw_rawawb_pre_wbgain_inv_g;
588     u16 sw_rawawb_pre_wbgain_inv_b;
589     u16 sw_rawawb_exc_wp_region0_xu0;
590     u16 sw_rawawb_exc_wp_region0_xu1;
591     u16 sw_rawawb_exc_wp_region0_yv0;
592     u16 sw_rawawb_exc_wp_region0_yv1;
593     u16 sw_rawawb_exc_wp_region1_xu0;
594     u16 sw_rawawb_exc_wp_region1_xu1;
595     u16 sw_rawawb_exc_wp_region1_yv0;
596     u16 sw_rawawb_exc_wp_region1_yv1;
597     u16 sw_rawawb_exc_wp_region2_xu0;
598     u16 sw_rawawb_exc_wp_region2_xu1;
599     u16 sw_rawawb_exc_wp_region2_yv0;
600     u16 sw_rawawb_exc_wp_region2_yv1;
601     u16 sw_rawawb_exc_wp_region3_xu0;
602     u16 sw_rawawb_exc_wp_region3_xu1;
603     u16 sw_rawawb_exc_wp_region3_yv0;
604     u16 sw_rawawb_exc_wp_region3_yv1;
605     u16 sw_rawawb_exc_wp_region4_xu0;
606     u16 sw_rawawb_exc_wp_region4_xu1;
607     u16 sw_rawawb_exc_wp_region4_yv0;
608     u16 sw_rawawb_exc_wp_region4_yv1;
609     u16 sw_rawawb_exc_wp_region5_xu0;
610     u16 sw_rawawb_exc_wp_region5_xu1;
611     u16 sw_rawawb_exc_wp_region5_yv0;
612     u16 sw_rawawb_exc_wp_region5_yv1;
613     u16 sw_rawawb_exc_wp_region6_xu0;
614     u16 sw_rawawb_exc_wp_region6_xu1;
615     u16 sw_rawawb_exc_wp_region6_yv0;
616     u16 sw_rawawb_exc_wp_region6_yv1;
617     u16 sw_rawawb_rgb2ryuvmat0_u;
618     u16 sw_rawawb_rgb2ryuvmat1_u;
619     u16 sw_rawawb_rgb2ryuvmat2_u;
620     u16 sw_rawawb_rgb2ryuvofs_u;
621     u16 sw_rawawb_rgb2ryuvmat0_v;
622     u16 sw_rawawb_rgb2ryuvmat1_v;
623     u16 sw_rawawb_rgb2ryuvmat2_v;
624     u16 sw_rawawb_rgb2ryuvofs_v;
625     u16 sw_rawawb_rgb2ryuvmat0_y;
626     u16 sw_rawawb_rgb2ryuvmat1_y;
627     u16 sw_rawawb_rgb2ryuvmat2_y;
628     u16 sw_rawawb_rgb2ryuvofs_y;
629     u16 sw_rawawb_th0_ls0;
630     u16 sw_rawawb_th1_ls0;
631     u16 sw_rawawb_th2_ls0;
632     u16 sw_rawawb_th3_ls0;
633     u16 sw_rawawb_th4_ls0;
634     u16 sw_rawawb_th5_ls0;
635     u16 sw_rawawb_coor_x1_ls0_u;
636     u16 sw_rawawb_coor_x1_ls0_v;
637     u16 sw_rawawb_coor_x1_ls0_y;
638     u16 sw_rawawb_vec_x21_ls0_u;
639     u16 sw_rawawb_vec_x21_ls0_v;
640     u16 sw_rawawb_vec_x21_ls0_y;
641     u16 sw_rawawb_th0_ls1;
642     u16 sw_rawawb_th1_ls1;
643     u16 sw_rawawb_th2_ls1;
644     u16 sw_rawawb_th3_ls1;
645     u16 sw_rawawb_th4_ls1;
646     u16 sw_rawawb_th5_ls1;
647     u16 sw_rawawb_coor_x1_ls1_u;
648     u16 sw_rawawb_coor_x1_ls1_v;
649     u16 sw_rawawb_coor_x1_ls1_y;
650     u16 sw_rawawb_vec_x21_ls1_u;
651     u16 sw_rawawb_vec_x21_ls1_v;
652     u16 sw_rawawb_vec_x21_ls1_y;
653     u16 sw_rawawb_th0_ls2;
654     u16 sw_rawawb_th1_ls2;
655     u16 sw_rawawb_th2_ls2;
656     u16 sw_rawawb_th3_ls2;
657     u16 sw_rawawb_th4_ls2;
658     u16 sw_rawawb_th5_ls2;
659     u16 sw_rawawb_coor_x1_ls2_u;
660     u16 sw_rawawb_coor_x1_ls2_v;
661     u16 sw_rawawb_coor_x1_ls2_y;
662     u16 sw_rawawb_vec_x21_ls2_u;
663     u16 sw_rawawb_vec_x21_ls2_v;
664     u16 sw_rawawb_vec_x21_ls2_y;
665     u16 sw_rawawb_th0_ls3;
666     u16 sw_rawawb_th1_ls3;
667     u16 sw_rawawb_th2_ls3;
668     u16 sw_rawawb_th3_ls3;
669     u16 sw_rawawb_th4_ls3;
670     u16 sw_rawawb_th5_ls3;
671     u16 sw_rawawb_coor_x1_ls3_u;
672     u16 sw_rawawb_coor_x1_ls3_v;
673     u16 sw_rawawb_coor_x1_ls3_y;
674     u16 sw_rawawb_vec_x21_ls3_u;
675     u16 sw_rawawb_vec_x21_ls3_v;
676     u16 sw_rawawb_vec_x21_ls3_y;
677 
678     u32 sw_rawawb_islope01_0;
679     u32 sw_rawawb_islope12_0;
680     u32 sw_rawawb_islope23_0;
681     u32 sw_rawawb_islope30_0;
682     u32 sw_rawawb_islope01_1;
683     u32 sw_rawawb_islope12_1;
684     u32 sw_rawawb_islope23_1;
685     u32 sw_rawawb_islope30_1;
686     u32 sw_rawawb_islope01_2;
687     u32 sw_rawawb_islope12_2;
688     u32 sw_rawawb_islope23_2;
689     u32 sw_rawawb_islope30_2;
690     u32 sw_rawawb_islope01_3;
691     u32 sw_rawawb_islope12_3;
692     u32 sw_rawawb_islope23_3;
693     u32 sw_rawawb_islope30_3;
694     u32 sw_rawawb_islope01_4;
695     u32 sw_rawawb_islope12_4;
696     u32 sw_rawawb_islope23_4;
697     u32 sw_rawawb_islope30_4;
698     u32 sw_rawawb_islope01_5;
699     u32 sw_rawawb_islope12_5;
700     u32 sw_rawawb_islope23_5;
701     u32 sw_rawawb_islope30_5;
702     u32 sw_rawawb_islope01_6;
703     u32 sw_rawawb_islope12_6;
704     u32 sw_rawawb_islope23_6;
705     u32 sw_rawawb_islope30_6;
706 } __attribute__((packed));
707 
708 struct isp21_isp_other_cfg {
709     struct isp21_bls_cfg bls_cfg;
710     struct isp2x_dpcc_cfg dpcc_cfg;
711     struct isp2x_lsc_cfg lsc_cfg;
712     struct isp21_awb_gain_cfg awb_gain_cfg;
713     struct isp21_gic_cfg gic_cfg;
714     struct isp2x_debayer_cfg debayer_cfg;
715     struct isp21_ccm_cfg ccm_cfg;
716     struct isp2x_gammaout_cfg gammaout_cfg;
717     struct isp2x_cproc_cfg cproc_cfg;
718     struct isp2x_ie_cfg ie_cfg;
719     struct isp2x_sdg_cfg sdg_cfg;
720     struct isp21_drc_cfg drc_cfg;
721     struct isp2x_hdrmge_cfg hdrmge_cfg;
722     struct isp21_dhaz_cfg dhaz_cfg;
723     struct isp2x_3dlut_cfg isp3dlut_cfg;
724     struct isp2x_ldch_cfg ldch_cfg;
725     struct isp21_baynr_cfg baynr_cfg;
726     struct isp21_bay3d_cfg bay3d_cfg;
727     struct isp21_ynr_cfg ynr_cfg;
728     struct isp21_cnr_cfg cnr_cfg;
729     struct isp21_sharp_cfg sharp_cfg;
730     struct isp21_csm_cfg csm_cfg;
731 } __attribute__((packed));
732 
733 struct isp21_isp_meas_cfg {
734     struct isp2x_siawb_meas_cfg siawb;
735     struct isp21_rawawb_meas_cfg rawawb;
736     struct isp2x_rawaelite_meas_cfg rawae0;
737     struct isp2x_rawaebig_meas_cfg rawae1;
738     struct isp2x_rawaebig_meas_cfg rawae2;
739     struct isp2x_rawaebig_meas_cfg rawae3;
740     struct isp2x_yuvae_meas_cfg yuvae;
741     struct isp2x_rawaf_meas_cfg rawaf;
742     struct isp2x_siaf_cfg siaf;
743     struct isp2x_rawhistlite_cfg rawhist0;
744     struct isp2x_rawhistbig_cfg rawhist1;
745     struct isp2x_rawhistbig_cfg rawhist2;
746     struct isp2x_rawhistbig_cfg rawhist3;
747     struct isp2x_sihst_cfg sihst;
748 } __attribute__((packed));
749 
750 struct isp21_isp_params_cfg {
751     u64 module_en_update;
752     u64 module_ens;
753     u64 module_cfg_update;
754 
755     u32 frame_id;
756     struct isp21_isp_meas_cfg meas;
757     struct isp21_isp_other_cfg others;
758 } __attribute__((packed));
759 
760 struct isp21_rawawb_meas_stat {
761     u16 ro_yhist_bin[ISP21_RAWAWB_HSTBIN_NUM];
762     u32 ro_rawawb_sum_rgain_nor[ISP2X_RAWAWB_SUM_NUM];
763     u32 ro_rawawb_sum_bgain_nor[ISP2X_RAWAWB_SUM_NUM];
764     u32 ro_rawawb_wp_num_nor[ISP2X_RAWAWB_SUM_NUM];
765     u32 ro_rawawb_sum_rgain_big[ISP2X_RAWAWB_SUM_NUM];
766     u32 ro_rawawb_sum_bgain_big[ISP2X_RAWAWB_SUM_NUM];
767     u32 ro_rawawb_wp_num_big[ISP2X_RAWAWB_SUM_NUM];
768     struct isp2x_rawawb_ramdata ramdata[ISP2X_RAWAWB_RAMDATA_NUM];
769 } __attribute__((packed));
770 
771 struct isp21_stat {
772     struct isp2x_siawb_stat siawb;
773     struct isp21_rawawb_meas_stat rawawb;
774     struct isp2x_rawaelite_stat rawae0;
775     struct isp2x_rawaebig_stat rawae1;
776     struct isp2x_rawaebig_stat rawae2;
777     struct isp2x_rawaebig_stat rawae3;
778     struct isp2x_yuvae_stat yuvae;
779     struct isp2x_rawaf_stat rawaf;
780     struct isp2x_siaf_stat siaf;
781     struct isp2x_rawhistlite_stat rawhist0;
782     struct isp2x_rawhistbig_stat rawhist1;
783     struct isp2x_rawhistbig_stat rawhist2;
784     struct isp2x_rawhistbig_stat rawhist3;
785     struct isp2x_sihst_stat sihst;
786 
787     struct isp2x_bls_stat bls;
788     struct isp21_dhaz_stat dhaz;
789 } __attribute__((packed));
790 
791 /**
792  * struct rkisp_isp21_stat_buffer - Rockchip ISP2 Statistics Meta Data
793  *
794  * @meas_type: measurement types (CIFISP_STAT_ definitions)
795  * @frame_id: frame ID for sync
796  * @params: statistics data
797  */
798 struct rkisp_isp21_stat_buffer {
799     unsigned int meas_type;
800     unsigned int frame_id;
801     struct isp21_stat params;
802 } __attribute__((packed));
803 
804 #endif /* _UAPI_RKISP21_CONFIG_H */
805