1/* SPDX-License-Identifier: (GPL-2.0+ WITH Linux-syscall-note) OR MIT
2 *
3 * Rockchip ISP3
4 * Copyright (C) 2022 Rockchip Electronics Co., Ltd.
5 */
6
7#ifndef _UAPI_RKISP3_CONFIG_H
8#define _UAPI_RKISP3_CONFIG_H
9
10#include <linux/types.h>
11#include <linux/v4l2-controls.h>
12#include <linux/rkisp21-config.h>
13
14#define ISP3X_MODULE_DPCC ISP2X_MODULE_DPCC
15#define ISP3X_MODULE_BLS ISP2X_MODULE_BLS
16#define ISP3X_MODULE_SDG ISP2X_MODULE_SDG
17#define ISP3X_MODULE_LSC ISP2X_MODULE_LSC
18#define ISP3X_MODULE_AWB_GAIN ISP2X_MODULE_AWB_GAIN
19#define ISP3X_MODULE_BDM ISP2X_MODULE_BDM
20#define ISP3X_MODULE_CCM ISP2X_MODULE_CCM
21#define ISP3X_MODULE_GOC ISP2X_MODULE_GOC
22#define ISP3X_MODULE_CPROC ISP2X_MODULE_CPROC
23#define ISP3X_MODULE_IE ISP2X_MODULE_IE
24#define ISP3X_MODULE_RAWAF ISP2X_MODULE_RAWAF
25#define ISP3X_MODULE_RAWAE0 ISP2X_MODULE_RAWAE0
26#define ISP3X_MODULE_RAWAE1 ISP2X_MODULE_RAWAE1
27#define ISP3X_MODULE_RAWAE2 ISP2X_MODULE_RAWAE2
28#define ISP3X_MODULE_RAWAE3 ISP2X_MODULE_RAWAE3
29#define ISP3X_MODULE_RAWAWB ISP2X_MODULE_RAWAWB
30#define ISP3X_MODULE_RAWHIST0 ISP2X_MODULE_RAWHIST0
31#define ISP3X_MODULE_RAWHIST1 ISP2X_MODULE_RAWHIST1
32#define ISP3X_MODULE_RAWHIST2 ISP2X_MODULE_RAWHIST2
33#define ISP3X_MODULE_RAWHIST3 ISP2X_MODULE_RAWHIST3
34#define ISP3X_MODULE_HDRMGE ISP2X_MODULE_HDRMGE
35#define ISP3X_MODULE_RAWNR ISP2X_MODULE_RAWNR
36#define ISP3X_MODULE_GIC ISP2X_MODULE_GIC
37#define ISP3X_MODULE_DHAZ ISP2X_MODULE_DHAZ
38#define ISP3X_MODULE_3DLUT ISP2X_MODULE_3DLUT
39#define ISP3X_MODULE_LDCH ISP2X_MODULE_LDCH
40#define ISP3X_MODULE_GAIN ISP2X_MODULE_GAIN
41#define ISP3X_MODULE_DEBAYER ISP2X_MODULE_DEBAYER
42#define ISP3X_MODULE_BAYNR ISP2X_MODULE_BAYNR
43#define ISP3X_MODULE_BAY3D ISP2X_MODULE_BAY3D
44#define ISP3X_MODULE_YNR ISP2X_MODULE_YNR
45#define ISP3X_MODULE_CNR ISP2X_MODULE_CNR
46#define ISP3X_MODULE_SHARP ISP2X_MODULE_SHARP
47#define ISP3X_MODULE_DRC ISP2X_MODULE_DRC
48#define ISP3X_MODULE_CAC BIT_ULL(42)
49#define ISP3X_MODULE_CSM ISP2X_MODULE_CSM
50
51/* Measurement types */
52#define ISP3X_STAT_RAWAWB ISP2X_STAT_RAWAWB
53#define ISP3X_STAT_RAWAF ISP2X_STAT_RAWAF
54#define ISP3X_STAT_RAWAE0 ISP2X_STAT_RAWAE0
55#define ISP3X_STAT_RAWAE1 ISP2X_STAT_RAWAE1
56#define ISP3X_STAT_RAWAE2 ISP2X_STAT_RAWAE2
57#define ISP3X_STAT_RAWAE3 ISP2X_STAT_RAWAE3
58#define ISP3X_STAT_RAWHST0 ISP2X_STAT_RAWHST0
59#define ISP3X_STAT_RAWHST1 ISP2X_STAT_RAWHST1
60#define ISP3X_STAT_RAWHST2 ISP2X_STAT_RAWHST2
61#define ISP3X_STAT_RAWHST3 ISP2X_STAT_RAWHST3
62#define ISP3X_STAT_BLS ISP2X_STAT_BLS
63#define ISP3X_STAT_DHAZ ISP2X_STAT_DHAZ
64
65#define ISP3X_MESH_BUF_NUM ISP2X_MESH_BUF_NUM
66
67#define ISP3X_LSC_GRAD_TBL_SIZE 16
68#define ISP3X_LSC_SIZE_TBL_SIZE 16
69#define ISP3X_LSC_DATA_TBL_SIZE ISP2X_LSC_DATA_TBL_SIZE
70
71#define ISP3X_DEGAMMA_CURVE_SIZE ISP2X_DEGAMMA_CURVE_SIZE
72
73#define ISP3X_GAIN_IDX_NUM ISP2X_GAIN_IDX_NUM
74#define ISP3X_GAIN_LUT_NUM ISP2X_GAIN_LUT_NUM
75
76#define ISP3X_RAWAWB_MULWD_NUM 4
77#define ISP3X_RAWAWB_EXCL_STAT_NUM 4
78#define ISP3X_RAWAWB_HSTBIN_NUM ISP21_RAWAWB_HSTBIN_NUM
79#define ISP3X_RAWAWB_WEIGHT_NUM ISP21_RAWAWB_WEIGHT_NUM
80#define ISP3X_RAWAWB_SUM_NUM ISP2X_RAWAWB_SUM_NUM
81#define ISP3X_RAWAWB_RAMDATA_NUM ISP2X_RAWAWB_RAMDATA_NUM
82
83#define ISP3X_RAWAEBIG_SUBWIN_NUM ISP2X_RAWAEBIG_SUBWIN_NUM
84#define ISP3X_RAWAEBIG_MEAN_NUM ISP2X_RAWAEBIG_MEAN_NUM
85#define ISP3X_RAWAELITE_MEAN_NUM ISP2X_RAWAELITE_MEAN_NUM
86
87#define ISP3X_RAWHISTBIG_SUBWIN_NUM ISP2X_RAWHISTBIG_SUBWIN_NUM
88#define ISP3X_RAWHISTLITE_SUBWIN_NUM ISP2X_RAWHISTLITE_SUBWIN_NUM
89#define ISP3X_HIST_BIN_N_MAX ISP2X_HIST_BIN_N_MAX
90
91#define ISP3X_RAWAF_CURVE_NUM 2
92#define ISP3X_RAWAF_HIIR_COE_NUM 6
93#define ISP3X_RAWAF_V1IIR_COE_NUM 9
94#define ISP3X_RAWAF_V2IIR_COE_NUM 3
95#define ISP3X_RAWAF_VFIR_COE_NUM 3
96#define ISP3X_RAWAF_WIN_NUM ISP2X_RAWAF_WIN_NUM
97#define ISP3X_RAWAF_LINE_NUM ISP2X_RAWAF_LINE_NUM
98#define ISP3X_RAWAF_GAMMA_NUM ISP2X_RAWAF_GAMMA_NUM
99#define ISP3X_RAWAF_SUMDATA_NUM ISP2X_RAWAF_SUMDATA_NUM
100
101#define ISP3X_DPCC_PDAF_POINT_NUM ISP2X_DPCC_PDAF_POINT_NUM
102
103#define ISP3X_HDRMGE_L_CURVE_NUM ISP2X_HDRMGE_L_CURVE_NUM
104#define ISP3X_HDRMGE_E_CURVE_NUM ISP2X_HDRMGE_E_CURVE_NUM
105
106#define ISP3X_GIC_SIGMA_Y_NUM ISP2X_GIC_SIGMA_Y_NUM
107
108#define ISP3X_CCM_CURVE_NUM ISP2X_CCM_CURVE_NUM
109
110#define ISP3X_3DLUT_DATA_NUM ISP2X_3DLUT_DATA_NUM
111
112#define ISP3X_LDCH_MESH_XY_NUM ISP2X_LDCH_MESH_XY_NUM
113
114#define ISP3X_GAMMA_OUT_MAX_SAMPLES 49
115
116#define ISP3X_DHAZ_SIGMA_IDX_NUM 15
117#define ISP3X_DHAZ_SIGMA_LUT_NUM 17
118#define ISP3X_DHAZ_HIST_WR_NUM 64
119#define ISP3X_DHAZ_ENH_CURVE_NUM ISP21_DHAZ_ENH_CURVE_NUM
120#define ISP3X_DHAZ_HIST_IIR_NUM ISP21_DHAZ_HIST_IIR_NUM
121
122#define ISP3X_DRC_Y_NUM ISP21_DRC_Y_NUM
123
124#define ISP3X_CNR_SIGMA_Y_NUM 13
125
126#define ISP3X_YNR_XY_NUM ISP21_YNR_XY_NUM
127
128#define ISP3X_BAYNR_XY_NUM ISP21_BAYNR_XY_NUM
129
130#define ISP3X_BAY3D_XY_NUM ISP21_BAY3D_XY_NUM
131
132#define ISP3X_SHARP_X_NUM ISP21_SHARP_X_NUM
133#define ISP3X_SHARP_Y_NUM ISP21_SHARP_Y_NUM
134#define ISP3X_SHARP_GAUS_COEF_NUM 6
135
136#define ISP3X_CAC_STRENGTH_NUM 22
137
138#define ISP3X_CSM_COEFF_NUM ISP21_CSM_COEFF_NUM
139
140enum isp3x_unite_id {
141    ISP3_LEFT = 0,
142    ISP3_RIGHT,
143    ISP3_UNITE_MAX,
144};
145
146struct isp3x_gammaout_cfg {
147    u8 equ_segm;
148    u8 finalx4_dense_en;
149    u16 offset;
150    u16 gamma_y[ISP3X_GAMMA_OUT_MAX_SAMPLES];
151} __attribute__((packed));
152
153struct isp3x_lsc_cfg {
154    u8 sector_16x16;
155
156    u16 r_data_tbl[ISP3X_LSC_DATA_TBL_SIZE];
157    u16 gr_data_tbl[ISP3X_LSC_DATA_TBL_SIZE];
158    u16 gb_data_tbl[ISP3X_LSC_DATA_TBL_SIZE];
159    u16 b_data_tbl[ISP3X_LSC_DATA_TBL_SIZE];
160
161    u16 x_grad_tbl[ISP3X_LSC_GRAD_TBL_SIZE];
162    u16 y_grad_tbl[ISP3X_LSC_GRAD_TBL_SIZE];
163
164    u16 x_size_tbl[ISP3X_LSC_SIZE_TBL_SIZE];
165    u16 y_size_tbl[ISP3X_LSC_SIZE_TBL_SIZE];
166} __attribute__((packed));
167
168struct isp3x_baynr_cfg {
169    u8 lg2_mode;
170    u8 gauss_en;
171    u8 log_bypass;
172
173    u16 dgain1;
174    u16 dgain0;
175    u16 dgain2;
176
177    u16 pix_diff;
178
179    u16 diff_thld;
180    u16 softthld;
181
182    u16 bltflt_streng;
183    u16 reg_w1;
184
185    u16 sigma_x[ISP3X_BAYNR_XY_NUM];
186    u16 sigma_y[ISP3X_BAYNR_XY_NUM];
187
188    u16 weit_d2;
189    u16 weit_d1;
190    u16 weit_d0;
191
192    u16 lg2_lgoff;
193    u16 lg2_off;
194
195    u32 dat_max;
196} __attribute__((packed));
197
198struct isp3x_bay3d_cfg {
199    u8 bypass_en;
200    u8 hibypass_en;
201    u8 lobypass_en;
202    u8 himed_bypass_en;
203    u8 higaus_bypass_en;
204    u8 hiabs_possel;
205    u8 hichnsplit_en;
206    u8 lomed_bypass_en;
207    u8 logaus5_bypass_en;
208    u8 logaus3_bypass_en;
209    u8 glbpk_en;
210    u8 loswitch_protect;
211
212    u16 softwgt;
213    u16 hidif_th;
214
215    u32 glbpk2;
216
217    u16 wgtlmt;
218    u16 wgtratio;
219
220    u16 sig0_x[ISP3X_BAY3D_XY_NUM];
221    u16 sig0_y[ISP3X_BAY3D_XY_NUM];
222    u16 sig1_x[ISP3X_BAY3D_XY_NUM];
223    u16 sig1_y[ISP3X_BAY3D_XY_NUM];
224    u16 sig2_x[ISP3X_BAY3D_XY_NUM];
225    u16 sig2_y[ISP3X_BAY3D_XY_NUM];
226} __attribute__((packed));
227
228struct isp3x_ynr_cfg {
229    u8 rnr_en;
230    u8 thumb_mix_cur_en;
231    u8 global_gain_alpha;
232    u8 flt1x1_bypass_sel;
233    u8 sft5x5_bypass;
234    u8 flt1x1_bypass;
235    u8 lgft3x3_bypass;
236    u8 lbft5x5_bypass;
237    u8 bft3x3_bypass;
238    u16 global_gain;
239
240    u16 rnr_max_r;
241    u16 local_gainscale;
242
243    u16 rnr_center_coorh;
244    u16 rnr_center_coorv;
245
246    u16 loclagain_adj_thresh;
247    u16 localgain_adj;
248
249    u16 low_bf_inv1;
250    u16 low_bf_inv0;
251
252    u16 low_peak_supress;
253    u16 low_thred_adj;
254
255    u16 low_dist_adj;
256    u16 low_edge_adj_thresh;
257
258    u16 low_bi_weight;
259    u16 low_weight;
260    u16 low_center_weight;
261    u16 hi_min_adj;
262    u16 high_thred_adj;
263    u8 high_retain_weight;
264    u8 hi_edge_thed;
265    u8 base_filter_weight2;
266    u8 base_filter_weight1;
267    u8 base_filter_weight0;
268    u16 frame_full_size;
269    u16 lbf_weight_thres;
270    u16 low_gauss1_coeff2;
271    u16 low_gauss1_coeff1;
272    u16 low_gauss1_coeff0;
273    u16 low_gauss2_coeff2;
274    u16 low_gauss2_coeff1;
275    u16 low_gauss2_coeff0;
276    u8 direction_weight3;
277    u8 direction_weight2;
278    u8 direction_weight1;
279    u8 direction_weight0;
280    u8 direction_weight7;
281    u8 direction_weight6;
282    u8 direction_weight5;
283    u8 direction_weight4;
284    u16 luma_points_x[ISP3X_YNR_XY_NUM];
285    u16 lsgm_y[ISP3X_YNR_XY_NUM];
286    u16 hsgm_y[ISP3X_YNR_XY_NUM];
287    u8 rnr_strength3[ISP3X_YNR_XY_NUM];
288} __attribute__((packed));
289
290struct isp3x_cnr_cfg {
291    u8 thumb_mix_cur_en;
292    u8 lq_bila_bypass;
293    u8 hq_bila_bypass;
294    u8 exgain_bypass;
295
296    u8 global_gain_alpha;
297    u16 global_gain;
298
299    u8 gain_iso;
300    u8 gain_offset;
301    u8 gain_1sigma;
302
303    u8 gain_uvgain1;
304    u8 gain_uvgain0;
305
306    u8 lmed3_alpha;
307
308    u8 lbf5_gain_y;
309    u8 lbf5_gain_c;
310
311    u8 lbf5_weit_d3;
312    u8 lbf5_weit_d2;
313    u8 lbf5_weit_d1;
314    u8 lbf5_weit_d0;
315
316    u8 lbf5_weit_d4;
317
318    u8 hmed3_alpha;
319
320    u16 hbf5_weit_src;
321    u16 hbf5_min_wgt;
322    u16 hbf5_sigma;
323
324    u16 lbf5_weit_src;
325    u16 lbf3_sigma;
326
327    u8 sigma_y[ISP3X_CNR_SIGMA_Y_NUM];
328} __attribute__((packed));
329
330struct isp3x_sharp_cfg {
331    u8 bypass;
332    u8 center_mode;
333    u8 exgain_bypass;
334
335    u8 sharp_ratio;
336    u8 bf_ratio;
337    u8 gaus_ratio;
338    u8 pbf_ratio;
339
340    u8 luma_dx[ISP3X_SHARP_X_NUM];
341
342    u16 pbf_sigma_inv[ISP3X_SHARP_Y_NUM];
343
344    u16 bf_sigma_inv[ISP3X_SHARP_Y_NUM];
345
346    u8 bf_sigma_shift;
347    u8 pbf_sigma_shift;
348
349    u16 ehf_th[ISP3X_SHARP_Y_NUM];
350
351    u16 clip_hf[ISP3X_SHARP_Y_NUM];
352
353    u8 pbf_coef2;
354    u8 pbf_coef1;
355    u8 pbf_coef0;
356
357    u8 bf_coef2;
358    u8 bf_coef1;
359    u8 bf_coef0;
360
361    u8 gaus_coef[ISP3X_SHARP_GAUS_COEF_NUM];
362} __attribute__((packed));
363
364struct isp3x_dhaz_cfg {
365    u8 round_en;
366    u8 soft_wr_en;
367    u8 enhance_en;
368    u8 air_lc_en;
369    u8 hpara_en;
370    u8 hist_en;
371    u8 dc_en;
372
373    u8 yblk_th;
374    u8 yhist_th;
375    u8 dc_max_th;
376    u8 dc_min_th;
377
378    u16 wt_max;
379    u8 bright_max;
380    u8 bright_min;
381
382    u8 tmax_base;
383    u8 dark_th;
384    u8 air_max;
385    u8 air_min;
386
387    u16 tmax_max;
388    u16 tmax_off;
389
390    u8 hist_k;
391    u8 hist_th_off;
392    u16 hist_min;
393
394    u16 hist_gratio;
395    u16 hist_scale;
396
397    u16 enhance_value;
398    u16 enhance_chroma;
399
400    u16 iir_wt_sigma;
401    u16 iir_sigma;
402    u16 stab_fnum;
403
404    u16 iir_tmax_sigma;
405    u16 iir_air_sigma;
406    u8 iir_pre_wet;
407
408    u16 cfg_wt;
409    u16 cfg_air;
410    u16 cfg_alpha;
411
412    u16 cfg_gratio;
413    u16 cfg_tmax;
414
415    u16 range_sima;
416    u8 space_sigma_pre;
417    u8 space_sigma_cur;
418
419    u16 dc_weitcur;
420    u16 bf_weight;
421
422    u16 enh_curve[ISP3X_DHAZ_ENH_CURVE_NUM];
423
424    u8 gaus_h2;
425    u8 gaus_h1;
426    u8 gaus_h0;
427
428    u8 sigma_idx[ISP3X_DHAZ_SIGMA_IDX_NUM];
429    u16 sigma_lut[ISP3X_DHAZ_SIGMA_LUT_NUM];
430
431    u16 adp_wt_wr;
432    u16 adp_air_wr;
433
434    u16 adp_tmax_wr;
435    u16 adp_gratio_wr;
436
437    u16 hist_wr[ISP3X_DHAZ_HIST_WR_NUM];
438} __attribute__((packed));
439
440struct isp3x_dhaz_stat {
441    u32 dhaz_pic_sumh;
442
443    u16 dhaz_adp_air_base;
444    u16 dhaz_adp_wt;
445
446    u16 dhaz_adp_gratio;
447    u16 dhaz_adp_tmax;
448
449    u16 h_rgb_iir[ISP3X_DHAZ_HIST_IIR_NUM];
450} __attribute__((packed));
451
452struct isp3x_drc_cfg {
453    u8 bypass_en;
454    u8 offset_pow2;
455    u16 compres_scl;
456    u16 position;
457    u16 delta_scalein;
458    u16 hpdetail_ratio;
459    u16 lpdetail_ratio;
460    u8 weicur_pix;
461    u8 weipre_frame;
462    u8 bilat_wt_off;
463    u16 force_sgm_inv0;
464    u8 motion_scl;
465    u8 edge_scl;
466    u16 space_sgm_inv1;
467    u16 space_sgm_inv0;
468    u16 range_sgm_inv1;
469    u16 range_sgm_inv0;
470    u8 weig_maxl;
471    u8 weig_bilat;
472    u8 enable_soft_thd;
473    u16 bilat_soft_thd;
474    u16 gain_y[ISP3X_DRC_Y_NUM];
475    u16 compres_y[ISP3X_DRC_Y_NUM];
476    u16 scale_y[ISP3X_DRC_Y_NUM];
477    u16 wr_cycle;
478    u16 iir_weight;
479    u16 min_ogain;
480} __attribute__((packed));
481
482struct isp3x_hdrmge_cfg {
483    u8 s_base;
484    u8 mode;
485
486    u16 gain0_inv;
487    u16 gain0;
488    u16 gain1_inv;
489    u16 gain1;
490    u8 gain2;
491
492    u8 lm_dif_0p15;
493    u8 lm_dif_0p9;
494    u8 ms_diff_0p15;
495    u8 ms_dif_0p8;
496
497    u16 ms_thd1;
498    u16 ms_thd0;
499    u16 ms_scl;
500    u16 lm_thd1;
501    u16 lm_thd0;
502    u16 lm_scl;
503    struct isp2x_hdrmge_curve curve;
504    u16 e_y[ISP3X_HDRMGE_E_CURVE_NUM];
505} __attribute__((packed));
506
507struct isp3x_rawawb_meas_cfg {
508    u8 rawawb_sel;
509    u8 sw_rawawb_xy_en0;
510    u8 sw_rawawb_uv_en0;
511    u8 sw_rawawb_xy_en1;
512    u8 sw_rawawb_uv_en1;
513    u8 sw_rawawb_3dyuv_en0;
514    u8 sw_rawawb_3dyuv_en1;
515    u8 sw_rawawb_wp_blk_wei_en0;
516    u8 sw_rawawb_wp_blk_wei_en1;
517    u8 sw_rawawb_wp_luma_wei_en0;
518    u8 sw_rawawb_wp_luma_wei_en1;
519    u8 sw_rawlsc_bypass_en;
520    u8 sw_rawawb_blk_measure_enable;
521    u8 sw_rawawb_blk_measure_mode;
522    u8 sw_rawawb_blk_measure_xytype;
523    u8 sw_rawawb_blk_measure_illu_idx;
524    u8 sw_rawawb_wp_hist_xytype;
525    u8 sw_rawawb_light_num;
526    u8 sw_rawawb_wind_size;
527    u8 sw_rawawb_r_max;
528    u8 sw_rawawb_g_max;
529    u8 sw_rawawb_b_max;
530    u8 sw_rawawb_y_max;
531    u8 sw_rawawb_r_min;
532    u8 sw_rawawb_g_min;
533    u8 sw_rawawb_b_min;
534    u8 sw_rawawb_y_min;
535    u8 sw_rawawb_3dyuv_ls_idx0;
536    u8 sw_rawawb_3dyuv_ls_idx1;
537    u8 sw_rawawb_3dyuv_ls_idx2;
538    u8 sw_rawawb_3dyuv_ls_idx3;
539    u8 sw_rawawb_multiwindow_en;
540    u8 sw_rawawb_exc_wp_region0_excen0;
541    u8 sw_rawawb_exc_wp_region0_excen1;
542    u8 sw_rawawb_exc_wp_region0_measen;
543    u8 sw_rawawb_exc_wp_region0_domain;
544    u8 sw_rawawb_exc_wp_region1_excen0;
545    u8 sw_rawawb_exc_wp_region1_excen1;
546    u8 sw_rawawb_exc_wp_region1_measen;
547    u8 sw_rawawb_exc_wp_region1_domain;
548    u8 sw_rawawb_exc_wp_region2_excen0;
549    u8 sw_rawawb_exc_wp_region2_excen1;
550    u8 sw_rawawb_exc_wp_region2_measen;
551    u8 sw_rawawb_exc_wp_region2_domain;
552    u8 sw_rawawb_exc_wp_region3_excen0;
553    u8 sw_rawawb_exc_wp_region3_excen1;
554    u8 sw_rawawb_exc_wp_region3_measen;
555    u8 sw_rawawb_exc_wp_region3_domain;
556    u8 sw_rawawb_exc_wp_region4_excen0;
557    u8 sw_rawawb_exc_wp_region4_excen1;
558    u8 sw_rawawb_exc_wp_region4_domain;
559    u8 sw_rawawb_exc_wp_region5_excen0;
560    u8 sw_rawawb_exc_wp_region5_excen1;
561    u8 sw_rawawb_exc_wp_region5_domain;
562    u8 sw_rawawb_exc_wp_region6_excen0;
563    u8 sw_rawawb_exc_wp_region6_excen1;
564    u8 sw_rawawb_exc_wp_region6_domain;
565    u8 sw_rawawb_wp_luma_weicurve_y0;
566    u8 sw_rawawb_wp_luma_weicurve_y1;
567    u8 sw_rawawb_wp_luma_weicurve_y2;
568    u8 sw_rawawb_wp_luma_weicurve_y3;
569    u8 sw_rawawb_wp_luma_weicurve_y4;
570    u8 sw_rawawb_wp_luma_weicurve_y5;
571    u8 sw_rawawb_wp_luma_weicurve_y6;
572    u8 sw_rawawb_wp_luma_weicurve_y7;
573    u8 sw_rawawb_wp_luma_weicurve_y8;
574    u8 sw_rawawb_wp_luma_weicurve_w0;
575    u8 sw_rawawb_wp_luma_weicurve_w1;
576    u8 sw_rawawb_wp_luma_weicurve_w2;
577    u8 sw_rawawb_wp_luma_weicurve_w3;
578    u8 sw_rawawb_wp_luma_weicurve_w4;
579    u8 sw_rawawb_wp_luma_weicurve_w5;
580    u8 sw_rawawb_wp_luma_weicurve_w6;
581    u8 sw_rawawb_wp_luma_weicurve_w7;
582    u8 sw_rawawb_wp_luma_weicurve_w8;
583    u8 sw_rawawb_rotu0_ls0;
584    u8 sw_rawawb_rotu1_ls0;
585    u8 sw_rawawb_rotu2_ls0;
586    u8 sw_rawawb_rotu3_ls0;
587    u8 sw_rawawb_rotu4_ls0;
588    u8 sw_rawawb_rotu5_ls0;
589    u8 sw_rawawb_dis_x1x2_ls0;
590    u8 sw_rawawb_rotu0_ls1;
591    u8 sw_rawawb_rotu1_ls1;
592    u8 sw_rawawb_rotu2_ls1;
593    u8 sw_rawawb_rotu3_ls1;
594    u8 sw_rawawb_rotu4_ls1;
595    u8 sw_rawawb_rotu5_ls1;
596    u8 sw_rawawb_dis_x1x2_ls1;
597    u8 sw_rawawb_rotu0_ls2;
598    u8 sw_rawawb_rotu1_ls2;
599    u8 sw_rawawb_rotu2_ls2;
600    u8 sw_rawawb_rotu3_ls2;
601    u8 sw_rawawb_rotu4_ls2;
602    u8 sw_rawawb_rotu5_ls2;
603    u8 sw_rawawb_dis_x1x2_ls2;
604    u8 sw_rawawb_rotu0_ls3;
605    u8 sw_rawawb_rotu1_ls3;
606    u8 sw_rawawb_rotu2_ls3;
607    u8 sw_rawawb_rotu3_ls3;
608    u8 sw_rawawb_rotu4_ls3;
609    u8 sw_rawawb_rotu5_ls3;
610    u8 sw_rawawb_dis_x1x2_ls3;
611    u8 sw_rawawb_blk_rtdw_measure_en;
612    u8 sw_rawawb_blk_with_luma_wei_en;
613    u8 sw_rawawb_wp_blk_wei_w[ISP3X_RAWAWB_WEIGHT_NUM];
614
615    u16 sw_rawawb_h_offs;
616    u16 sw_rawawb_v_offs;
617    u16 sw_rawawb_h_size;
618    u16 sw_rawawb_v_size;
619    u16 sw_rawawb_vertex0_u_0;
620    u16 sw_rawawb_vertex0_v_0;
621    u16 sw_rawawb_vertex1_u_0;
622    u16 sw_rawawb_vertex1_v_0;
623    u16 sw_rawawb_vertex2_u_0;
624    u16 sw_rawawb_vertex2_v_0;
625    u16 sw_rawawb_vertex3_u_0;
626    u16 sw_rawawb_vertex3_v_0;
627    u16 sw_rawawb_vertex0_u_1;
628    u16 sw_rawawb_vertex0_v_1;
629    u16 sw_rawawb_vertex1_u_1;
630    u16 sw_rawawb_vertex1_v_1;
631    u16 sw_rawawb_vertex2_u_1;
632    u16 sw_rawawb_vertex2_v_1;
633    u16 sw_rawawb_vertex3_u_1;
634    u16 sw_rawawb_vertex3_v_1;
635    u16 sw_rawawb_vertex0_u_2;
636    u16 sw_rawawb_vertex0_v_2;
637    u16 sw_rawawb_vertex1_u_2;
638    u16 sw_rawawb_vertex1_v_2;
639    u16 sw_rawawb_vertex2_u_2;
640    u16 sw_rawawb_vertex2_v_2;
641    u16 sw_rawawb_vertex3_u_2;
642    u16 sw_rawawb_vertex3_v_2;
643    u16 sw_rawawb_vertex0_u_3;
644    u16 sw_rawawb_vertex0_v_3;
645    u16 sw_rawawb_vertex1_u_3;
646    u16 sw_rawawb_vertex1_v_3;
647    u16 sw_rawawb_vertex2_u_3;
648    u16 sw_rawawb_vertex2_v_3;
649    u16 sw_rawawb_vertex3_u_3;
650    u16 sw_rawawb_vertex3_v_3;
651    u16 sw_rawawb_vertex0_u_4;
652    u16 sw_rawawb_vertex0_v_4;
653    u16 sw_rawawb_vertex1_u_4;
654    u16 sw_rawawb_vertex1_v_4;
655    u16 sw_rawawb_vertex2_u_4;
656    u16 sw_rawawb_vertex2_v_4;
657    u16 sw_rawawb_vertex3_u_4;
658    u16 sw_rawawb_vertex3_v_4;
659    u16 sw_rawawb_vertex0_u_5;
660    u16 sw_rawawb_vertex0_v_5;
661    u16 sw_rawawb_vertex1_u_5;
662    u16 sw_rawawb_vertex1_v_5;
663    u16 sw_rawawb_vertex2_u_5;
664    u16 sw_rawawb_vertex2_v_5;
665    u16 sw_rawawb_vertex3_u_5;
666    u16 sw_rawawb_vertex3_v_5;
667    u16 sw_rawawb_vertex0_u_6;
668    u16 sw_rawawb_vertex0_v_6;
669    u16 sw_rawawb_vertex1_u_6;
670    u16 sw_rawawb_vertex1_v_6;
671    u16 sw_rawawb_vertex2_u_6;
672    u16 sw_rawawb_vertex2_v_6;
673    u16 sw_rawawb_vertex3_u_6;
674    u16 sw_rawawb_vertex3_v_6;
675
676    u16 sw_rawawb_wt0;
677    u16 sw_rawawb_wt1;
678    u16 sw_rawawb_wt2;
679    u16 sw_rawawb_mat0_x;
680    u16 sw_rawawb_mat1_x;
681    u16 sw_rawawb_mat2_x;
682    u16 sw_rawawb_mat0_y;
683    u16 sw_rawawb_mat1_y;
684    u16 sw_rawawb_mat2_y;
685    u16 sw_rawawb_nor_x0_0;
686    u16 sw_rawawb_nor_x1_0;
687    u16 sw_rawawb_nor_y0_0;
688    u16 sw_rawawb_nor_y1_0;
689    u16 sw_rawawb_big_x0_0;
690    u16 sw_rawawb_big_x1_0;
691    u16 sw_rawawb_big_y0_0;
692    u16 sw_rawawb_big_y1_0;
693    u16 sw_rawawb_nor_x0_1;
694    u16 sw_rawawb_nor_x1_1;
695    u16 sw_rawawb_nor_y0_1;
696    u16 sw_rawawb_nor_y1_1;
697    u16 sw_rawawb_big_x0_1;
698    u16 sw_rawawb_big_x1_1;
699    u16 sw_rawawb_big_y0_1;
700    u16 sw_rawawb_big_y1_1;
701    u16 sw_rawawb_nor_x0_2;
702    u16 sw_rawawb_nor_x1_2;
703    u16 sw_rawawb_nor_y0_2;
704    u16 sw_rawawb_nor_y1_2;
705    u16 sw_rawawb_big_x0_2;
706    u16 sw_rawawb_big_x1_2;
707    u16 sw_rawawb_big_y0_2;
708    u16 sw_rawawb_big_y1_2;
709    u16 sw_rawawb_nor_x0_3;
710    u16 sw_rawawb_nor_x1_3;
711    u16 sw_rawawb_nor_y0_3;
712    u16 sw_rawawb_nor_y1_3;
713    u16 sw_rawawb_big_x0_3;
714    u16 sw_rawawb_big_x1_3;
715    u16 sw_rawawb_big_y0_3;
716    u16 sw_rawawb_big_y1_3;
717    u16 sw_rawawb_nor_x0_4;
718    u16 sw_rawawb_nor_x1_4;
719    u16 sw_rawawb_nor_y0_4;
720    u16 sw_rawawb_nor_y1_4;
721    u16 sw_rawawb_big_x0_4;
722    u16 sw_rawawb_big_x1_4;
723    u16 sw_rawawb_big_y0_4;
724    u16 sw_rawawb_big_y1_4;
725    u16 sw_rawawb_nor_x0_5;
726    u16 sw_rawawb_nor_x1_5;
727    u16 sw_rawawb_nor_y0_5;
728    u16 sw_rawawb_nor_y1_5;
729    u16 sw_rawawb_big_x0_5;
730    u16 sw_rawawb_big_x1_5;
731    u16 sw_rawawb_big_y0_5;
732    u16 sw_rawawb_big_y1_5;
733    u16 sw_rawawb_nor_x0_6;
734    u16 sw_rawawb_nor_x1_6;
735    u16 sw_rawawb_nor_y0_6;
736    u16 sw_rawawb_nor_y1_6;
737    u16 sw_rawawb_big_x0_6;
738    u16 sw_rawawb_big_x1_6;
739    u16 sw_rawawb_big_y0_6;
740    u16 sw_rawawb_big_y1_6;
741    u16 sw_rawawb_pre_wbgain_inv_r;
742    u16 sw_rawawb_pre_wbgain_inv_g;
743    u16 sw_rawawb_pre_wbgain_inv_b;
744    u16 sw_rawawb_multiwindow0_v_offs;
745    u16 sw_rawawb_multiwindow0_h_offs;
746    u16 sw_rawawb_multiwindow0_v_size;
747    u16 sw_rawawb_multiwindow0_h_size;
748    u16 sw_rawawb_multiwindow1_v_offs;
749    u16 sw_rawawb_multiwindow1_h_offs;
750    u16 sw_rawawb_multiwindow1_v_size;
751    u16 sw_rawawb_multiwindow1_h_size;
752    u16 sw_rawawb_multiwindow2_v_offs;
753    u16 sw_rawawb_multiwindow2_h_offs;
754    u16 sw_rawawb_multiwindow2_v_size;
755    u16 sw_rawawb_multiwindow2_h_size;
756    u16 sw_rawawb_multiwindow3_v_offs;
757    u16 sw_rawawb_multiwindow3_h_offs;
758    u16 sw_rawawb_multiwindow3_v_size;
759    u16 sw_rawawb_multiwindow3_h_size;
760    u16 sw_rawawb_exc_wp_region0_xu0;
761    u16 sw_rawawb_exc_wp_region0_xu1;
762    u16 sw_rawawb_exc_wp_region0_yv0;
763    u16 sw_rawawb_exc_wp_region0_yv1;
764    u16 sw_rawawb_exc_wp_region1_xu0;
765    u16 sw_rawawb_exc_wp_region1_xu1;
766    u16 sw_rawawb_exc_wp_region1_yv0;
767    u16 sw_rawawb_exc_wp_region1_yv1;
768    u16 sw_rawawb_exc_wp_region2_xu0;
769    u16 sw_rawawb_exc_wp_region2_xu1;
770    u16 sw_rawawb_exc_wp_region2_yv0;
771    u16 sw_rawawb_exc_wp_region2_yv1;
772    u16 sw_rawawb_exc_wp_region3_xu0;
773    u16 sw_rawawb_exc_wp_region3_xu1;
774    u16 sw_rawawb_exc_wp_region3_yv0;
775    u16 sw_rawawb_exc_wp_region3_yv1;
776    u16 sw_rawawb_exc_wp_region4_xu0;
777    u16 sw_rawawb_exc_wp_region4_xu1;
778    u16 sw_rawawb_exc_wp_region4_yv0;
779    u16 sw_rawawb_exc_wp_region4_yv1;
780    u16 sw_rawawb_exc_wp_region5_xu0;
781    u16 sw_rawawb_exc_wp_region5_xu1;
782    u16 sw_rawawb_exc_wp_region5_yv0;
783    u16 sw_rawawb_exc_wp_region5_yv1;
784    u16 sw_rawawb_exc_wp_region6_xu0;
785    u16 sw_rawawb_exc_wp_region6_xu1;
786    u16 sw_rawawb_exc_wp_region6_yv0;
787    u16 sw_rawawb_exc_wp_region6_yv1;
788    u16 sw_rawawb_rgb2ryuvmat0_u;
789    u16 sw_rawawb_rgb2ryuvmat1_u;
790    u16 sw_rawawb_rgb2ryuvmat2_u;
791    u16 sw_rawawb_rgb2ryuvofs_u;
792    u16 sw_rawawb_rgb2ryuvmat0_v;
793    u16 sw_rawawb_rgb2ryuvmat1_v;
794    u16 sw_rawawb_rgb2ryuvmat2_v;
795    u16 sw_rawawb_rgb2ryuvofs_v;
796    u16 sw_rawawb_rgb2ryuvmat0_y;
797    u16 sw_rawawb_rgb2ryuvmat1_y;
798    u16 sw_rawawb_rgb2ryuvmat2_y;
799    u16 sw_rawawb_rgb2ryuvofs_y;
800    u16 sw_rawawb_th0_ls0;
801    u16 sw_rawawb_th1_ls0;
802    u16 sw_rawawb_th2_ls0;
803    u16 sw_rawawb_th3_ls0;
804    u16 sw_rawawb_th4_ls0;
805    u16 sw_rawawb_th5_ls0;
806    u16 sw_rawawb_coor_x1_ls0_u;
807    u16 sw_rawawb_coor_x1_ls0_v;
808    u16 sw_rawawb_coor_x1_ls0_y;
809    u16 sw_rawawb_vec_x21_ls0_u;
810    u16 sw_rawawb_vec_x21_ls0_v;
811    u16 sw_rawawb_vec_x21_ls0_y;
812    u16 sw_rawawb_th0_ls1;
813    u16 sw_rawawb_th1_ls1;
814    u16 sw_rawawb_th2_ls1;
815    u16 sw_rawawb_th3_ls1;
816    u16 sw_rawawb_th4_ls1;
817    u16 sw_rawawb_th5_ls1;
818    u16 sw_rawawb_coor_x1_ls1_u;
819    u16 sw_rawawb_coor_x1_ls1_v;
820    u16 sw_rawawb_coor_x1_ls1_y;
821    u16 sw_rawawb_vec_x21_ls1_u;
822    u16 sw_rawawb_vec_x21_ls1_v;
823    u16 sw_rawawb_vec_x21_ls1_y;
824    u16 sw_rawawb_th0_ls2;
825    u16 sw_rawawb_th1_ls2;
826    u16 sw_rawawb_th2_ls2;
827    u16 sw_rawawb_th3_ls2;
828    u16 sw_rawawb_th4_ls2;
829    u16 sw_rawawb_th5_ls2;
830    u16 sw_rawawb_coor_x1_ls2_u;
831    u16 sw_rawawb_coor_x1_ls2_v;
832    u16 sw_rawawb_coor_x1_ls2_y;
833    u16 sw_rawawb_vec_x21_ls2_u;
834    u16 sw_rawawb_vec_x21_ls2_v;
835    u16 sw_rawawb_vec_x21_ls2_y;
836    u16 sw_rawawb_th0_ls3;
837    u16 sw_rawawb_th1_ls3;
838    u16 sw_rawawb_th2_ls3;
839    u16 sw_rawawb_th3_ls3;
840    u16 sw_rawawb_th4_ls3;
841    u16 sw_rawawb_th5_ls3;
842    u16 sw_rawawb_coor_x1_ls3_u;
843    u16 sw_rawawb_coor_x1_ls3_v;
844    u16 sw_rawawb_coor_x1_ls3_y;
845    u16 sw_rawawb_vec_x21_ls3_u;
846    u16 sw_rawawb_vec_x21_ls3_v;
847    u16 sw_rawawb_vec_x21_ls3_y;
848
849    u32 sw_rawawb_islope01_0;
850    u32 sw_rawawb_islope12_0;
851    u32 sw_rawawb_islope23_0;
852    u32 sw_rawawb_islope30_0;
853    u32 sw_rawawb_islope01_1;
854    u32 sw_rawawb_islope12_1;
855    u32 sw_rawawb_islope23_1;
856    u32 sw_rawawb_islope30_1;
857    u32 sw_rawawb_islope01_2;
858    u32 sw_rawawb_islope12_2;
859    u32 sw_rawawb_islope23_2;
860    u32 sw_rawawb_islope30_2;
861    u32 sw_rawawb_islope01_3;
862    u32 sw_rawawb_islope12_3;
863    u32 sw_rawawb_islope23_3;
864    u32 sw_rawawb_islope30_3;
865    u32 sw_rawawb_islope01_4;
866    u32 sw_rawawb_islope12_4;
867    u32 sw_rawawb_islope23_4;
868    u32 sw_rawawb_islope30_4;
869    u32 sw_rawawb_islope01_5;
870    u32 sw_rawawb_islope12_5;
871    u32 sw_rawawb_islope23_5;
872    u32 sw_rawawb_islope30_5;
873    u32 sw_rawawb_islope01_6;
874    u32 sw_rawawb_islope12_6;
875    u32 sw_rawawb_islope23_6;
876    u32 sw_rawawb_islope30_6;
877} __attribute__((packed));
878
879struct isp3x_rawawb_meas_stat {
880    u16 ro_yhist_bin[ISP3X_RAWAWB_HSTBIN_NUM];
881    u32 ro_rawawb_sum_rgain_nor[ISP3X_RAWAWB_SUM_NUM];
882    u32 ro_rawawb_sum_bgain_nor[ISP3X_RAWAWB_SUM_NUM];
883    u32 ro_rawawb_wp_num_nor[ISP3X_RAWAWB_SUM_NUM];
884    u32 ro_rawawb_sum_rgain_big[ISP3X_RAWAWB_SUM_NUM];
885    u32 ro_rawawb_sum_bgain_big[ISP3X_RAWAWB_SUM_NUM];
886    u32 ro_rawawb_wp_num_big[ISP3X_RAWAWB_SUM_NUM];
887    u32 ro_wp_num2[ISP3X_RAWAWB_SUM_NUM];
888    u32 ro_sum_r_nor_multiwindow[ISP3X_RAWAWB_MULWD_NUM];
889    u32 ro_sum_b_nor_multiwindow[ISP3X_RAWAWB_MULWD_NUM];
890    u32 ro_wp_nm_nor_multiwindow[ISP3X_RAWAWB_MULWD_NUM];
891    u32 ro_sum_r_big_multiwindow[ISP3X_RAWAWB_MULWD_NUM];
892    u32 ro_sum_b_big_multiwindow[ISP3X_RAWAWB_MULWD_NUM];
893    u32 ro_wp_nm_big_multiwindow[ISP3X_RAWAWB_MULWD_NUM];
894    u32 ro_sum_r_exc[ISP3X_RAWAWB_EXCL_STAT_NUM];
895    u32 ro_sum_b_exc[ISP3X_RAWAWB_EXCL_STAT_NUM];
896    u32 ro_wp_nm_exc[ISP3X_RAWAWB_EXCL_STAT_NUM];
897    struct isp2x_rawawb_ramdata ramdata[ISP3X_RAWAWB_RAMDATA_NUM];
898} __attribute__((packed));
899
900struct isp3x_rawaf_curve {
901    u8 ldg_lumth;
902    u8 ldg_gain;
903    u16 ldg_gslp;
904} __attribute__((packed));
905
906struct isp3x_rawaf_meas_cfg {
907    u8 rawaf_sel;
908    u8 num_afm_win;
909    /* CTRL */
910    u8 gamma_en;
911    u8 gaus_en;
912    u8 v1_fir_sel;
913    u8 hiir_en;
914    u8 viir_en;
915    u8 accu_8bit_mode;
916    u8 ldg_en;
917    u8 h1_fv_mode;
918    u8 h2_fv_mode;
919    u8 v1_fv_mode;
920    u8 v2_fv_mode;
921    u8 ae_mode;
922    u8 y_mode;
923    /* WINA_B */
924    struct isp2x_window win[ISP3X_RAWAF_WIN_NUM];
925    /* INT_LINE */
926    u8 line_num[ISP3X_RAWAF_LINE_NUM];
927    u8 line_en[ISP3X_RAWAF_LINE_NUM];
928    /* THRES */
929    u16 afm_thres;
930    /* VAR_SHIFT */
931    u8 afm_var_shift[ISP3X_RAWAF_WIN_NUM];
932    u8 lum_var_shift[ISP3X_RAWAF_WIN_NUM];
933    /* HVIIR_VAR_SHIFT */
934    u8 h1iir_var_shift;
935    u8 h2iir_var_shift;
936    u8 v1iir_var_shift;
937    u8 v2iir_var_shift;
938    /* GAMMA_Y */
939    u16 gamma_y[ISP3X_RAWAF_GAMMA_NUM];
940    /* HIIR_THRESH */
941    u16 h_fv_thresh;
942    u16 v_fv_thresh;
943    struct isp3x_rawaf_curve curve_h[ISP3X_RAWAF_CURVE_NUM];
944    struct isp3x_rawaf_curve curve_v[ISP3X_RAWAF_CURVE_NUM];
945    s16 h1iir1_coe[ISP3X_RAWAF_HIIR_COE_NUM];
946    s16 h1iir2_coe[ISP3X_RAWAF_HIIR_COE_NUM];
947    s16 h2iir1_coe[ISP3X_RAWAF_HIIR_COE_NUM];
948    s16 h2iir2_coe[ISP3X_RAWAF_HIIR_COE_NUM];
949    s16 v1iir_coe[ISP3X_RAWAF_V1IIR_COE_NUM];
950    s16 v2iir_coe[ISP3X_RAWAF_V2IIR_COE_NUM];
951    s16 v1fir_coe[ISP3X_RAWAF_VFIR_COE_NUM];
952    s16 v2fir_coe[ISP3X_RAWAF_VFIR_COE_NUM];
953    u16 highlit_thresh;
954} __attribute__((packed));
955
956struct isp3x_rawaf_ramdata {
957    u32 v1;
958    u32 v2;
959    u32 h1;
960    u32 h2;
961} __attribute__((packed));
962
963struct isp3x_rawaf_stat {
964    u32 int_state;
965    u32 afm_sum_b;
966    u32 afm_lum_b;
967    u32 highlit_cnt_winb;
968    struct isp3x_rawaf_ramdata ramdata[ISP3X_RAWAF_SUMDATA_NUM];
969} __attribute__((packed));
970
971struct isp3x_cac_cfg {
972    u8 bypass_en;
973    u8 center_en;
974
975    u8 psf_sft_bit;
976    u16 cfg_num;
977
978    u16 center_width;
979    u16 center_height;
980
981    u16 strength[ISP3X_CAC_STRENGTH_NUM];
982
983    u32 hsize;
984    u32 vsize;
985    s32 buf_fd;
986} __attribute__((packed));
987
988struct isp3x_gain_cfg {
989    u32 g0;
990    u16 g1;
991    u16 g2;
992} __attribute__((packed));
993
994struct isp3x_isp_other_cfg {
995    struct isp21_bls_cfg bls_cfg;
996    struct isp2x_dpcc_cfg dpcc_cfg;
997    struct isp3x_lsc_cfg lsc_cfg;
998    struct isp21_awb_gain_cfg awb_gain_cfg;
999    struct isp21_gic_cfg gic_cfg;
1000    struct isp2x_debayer_cfg debayer_cfg;
1001    struct isp21_ccm_cfg ccm_cfg;
1002    struct isp3x_gammaout_cfg gammaout_cfg;
1003    struct isp2x_cproc_cfg cproc_cfg;
1004    struct isp2x_ie_cfg ie_cfg;
1005    struct isp2x_sdg_cfg sdg_cfg;
1006    struct isp3x_drc_cfg drc_cfg;
1007    struct isp3x_hdrmge_cfg hdrmge_cfg;
1008    struct isp3x_dhaz_cfg dhaz_cfg;
1009    struct isp2x_3dlut_cfg isp3dlut_cfg;
1010    struct isp2x_ldch_cfg ldch_cfg;
1011    struct isp3x_baynr_cfg baynr_cfg;
1012    struct isp3x_bay3d_cfg bay3d_cfg;
1013    struct isp3x_ynr_cfg ynr_cfg;
1014    struct isp3x_cnr_cfg cnr_cfg;
1015    struct isp3x_sharp_cfg sharp_cfg;
1016    struct isp3x_cac_cfg cac_cfg;
1017    struct isp3x_gain_cfg gain_cfg;
1018    struct isp21_csm_cfg csm_cfg;
1019} __attribute__((packed));
1020
1021struct isp3x_isp_meas_cfg {
1022    struct isp3x_rawaf_meas_cfg rawaf;
1023    struct isp3x_rawawb_meas_cfg rawawb;
1024    struct isp2x_rawaelite_meas_cfg rawae0;
1025    struct isp2x_rawaebig_meas_cfg rawae1;
1026    struct isp2x_rawaebig_meas_cfg rawae2;
1027    struct isp2x_rawaebig_meas_cfg rawae3;
1028    struct isp2x_rawhistlite_cfg rawhist0;
1029    struct isp2x_rawhistbig_cfg rawhist1;
1030    struct isp2x_rawhistbig_cfg rawhist2;
1031    struct isp2x_rawhistbig_cfg rawhist3;
1032} __attribute__((packed));
1033
1034struct isp3x_isp_params_cfg {
1035    u64 module_en_update;
1036    u64 module_ens;
1037    u64 module_cfg_update;
1038
1039    u32 frame_id;
1040    struct isp3x_isp_meas_cfg meas;
1041    struct isp3x_isp_other_cfg others;
1042} __attribute__((packed));
1043
1044struct isp3x_stat {
1045    struct isp2x_rawaebig_stat rawae3;
1046    struct isp2x_rawaebig_stat rawae1;
1047    struct isp2x_rawaebig_stat rawae2;
1048    struct isp2x_rawaelite_stat rawae0;
1049    struct isp2x_rawhistbig_stat rawhist3;
1050    struct isp2x_rawhistlite_stat rawhist0;
1051    struct isp2x_rawhistbig_stat rawhist1;
1052    struct isp2x_rawhistbig_stat rawhist2;
1053    struct isp3x_rawaf_stat rawaf;
1054    struct isp3x_rawawb_meas_stat rawawb;
1055    struct isp3x_dhaz_stat dhaz;
1056    struct isp2x_bls_stat bls;
1057} __attribute__((packed));
1058
1059/**
1060 * struct rkisp3x_isp_stat_buffer - Rockchip ISP3 Statistics Meta Data
1061 *
1062 * @meas_type: measurement types (ISP3X_STAT_ definitions)
1063 * @frame_id: frame ID for sync
1064 * @params: statistics data
1065 */
1066struct rkisp3x_isp_stat_buffer {
1067    u32 meas_type;
1068    u32 frame_id;
1069    struct isp3x_stat params;
1070} __attribute__((packed));
1071
1072#endif /* _UAPI_RKISP3_CONFIG_H */
1073