xref: /OK3568_Linux_fs/kernel/include/uapi/linux/rk-isp32-config.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ WITH Linux-syscall-note) OR MIT
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Rockchip ISP32
4*4882a593Smuzhiyun  * Copyright (C) 2022 Rockchip Electronics Co., Ltd.
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _UAPI_RK_ISP32_CONFIG_H
8*4882a593Smuzhiyun #define _UAPI_RK_ISP32_CONFIG_H
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <linux/types.h>
11*4882a593Smuzhiyun #include <linux/v4l2-controls.h>
12*4882a593Smuzhiyun #include <linux/rk-isp3-config.h>
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #define RKISP_CMD_GET_TB_HEAD_V32 \
15*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 12, struct rkisp32_thunderboot_resmem_head)
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #define ISP32_MODULE_DPCC		ISP3X_MODULE_DPCC
18*4882a593Smuzhiyun #define ISP32_MODULE_BLS		ISP3X_MODULE_BLS
19*4882a593Smuzhiyun #define ISP32_MODULE_SDG		ISP3X_MODULE_SDG
20*4882a593Smuzhiyun #define ISP32_MODULE_LSC		ISP3X_MODULE_LSC
21*4882a593Smuzhiyun #define ISP32_MODULE_AWB_GAIN		ISP3X_MODULE_AWB_GAIN
22*4882a593Smuzhiyun #define ISP32_MODULE_BDM		ISP3X_MODULE_BDM
23*4882a593Smuzhiyun #define ISP32_MODULE_CCM		ISP3X_MODULE_CCM
24*4882a593Smuzhiyun #define ISP32_MODULE_GOC		ISP3X_MODULE_GOC
25*4882a593Smuzhiyun #define ISP32_MODULE_CPROC		ISP3X_MODULE_CPROC
26*4882a593Smuzhiyun #define ISP32_MODULE_IE			ISP3X_MODULE_IE
27*4882a593Smuzhiyun #define ISP32_MODULE_RAWAF		ISP3X_MODULE_RAWAF
28*4882a593Smuzhiyun #define ISP32_MODULE_RAWAE0		ISP3X_MODULE_RAWAE0
29*4882a593Smuzhiyun #define ISP32_MODULE_RAWAE1		ISP3X_MODULE_RAWAE1
30*4882a593Smuzhiyun #define ISP32_MODULE_RAWAE2		ISP3X_MODULE_RAWAE2
31*4882a593Smuzhiyun #define ISP32_MODULE_RAWAE3		ISP3X_MODULE_RAWAE3
32*4882a593Smuzhiyun #define ISP32_MODULE_RAWAWB		ISP3X_MODULE_RAWAWB
33*4882a593Smuzhiyun #define ISP32_MODULE_RAWHIST0		ISP3X_MODULE_RAWHIST0
34*4882a593Smuzhiyun #define ISP32_MODULE_RAWHIST1		ISP3X_MODULE_RAWHIST1
35*4882a593Smuzhiyun #define ISP32_MODULE_RAWHIST2		ISP3X_MODULE_RAWHIST2
36*4882a593Smuzhiyun #define ISP32_MODULE_RAWHIST3		ISP3X_MODULE_RAWHIST3
37*4882a593Smuzhiyun #define ISP32_MODULE_HDRMGE		ISP3X_MODULE_HDRMGE
38*4882a593Smuzhiyun #define ISP32_MODULE_RAWNR		ISP3X_MODULE_RAWNR
39*4882a593Smuzhiyun #define ISP32_MODULE_GIC		ISP3X_MODULE_GIC
40*4882a593Smuzhiyun #define ISP32_MODULE_DHAZ		ISP3X_MODULE_DHAZ
41*4882a593Smuzhiyun #define ISP32_MODULE_3DLUT		ISP3X_MODULE_3DLUT
42*4882a593Smuzhiyun #define ISP32_MODULE_LDCH		ISP3X_MODULE_LDCH
43*4882a593Smuzhiyun #define ISP32_MODULE_GAIN		ISP3X_MODULE_GAIN
44*4882a593Smuzhiyun #define ISP32_MODULE_DEBAYER		ISP3X_MODULE_DEBAYER
45*4882a593Smuzhiyun #define ISP32_MODULE_BAYNR		ISP3X_MODULE_BAYNR
46*4882a593Smuzhiyun #define ISP32_MODULE_BAY3D		ISP3X_MODULE_BAY3D
47*4882a593Smuzhiyun #define ISP32_MODULE_YNR		ISP3X_MODULE_YNR
48*4882a593Smuzhiyun #define ISP32_MODULE_CNR		ISP3X_MODULE_CNR
49*4882a593Smuzhiyun #define ISP32_MODULE_SHARP		ISP3X_MODULE_SHARP
50*4882a593Smuzhiyun #define ISP32_MODULE_DRC		ISP3X_MODULE_DRC
51*4882a593Smuzhiyun #define ISP32_MODULE_CAC		ISP3X_MODULE_CAC
52*4882a593Smuzhiyun #define ISP32_MODULE_CSM		ISP3X_MODULE_CSM
53*4882a593Smuzhiyun #define ISP32_MODULE_CGC		ISP3X_MODULE_CGC
54*4882a593Smuzhiyun #define ISP32_MODULE_VSM		BIT_ULL(45)
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #define ISP32_MODULE_FORCE		ISP3X_MODULE_FORCE
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun /* Measurement types */
59*4882a593Smuzhiyun #define ISP32_STAT_RAWAWB		ISP3X_STAT_RAWAWB
60*4882a593Smuzhiyun #define ISP32_STAT_RAWAF		ISP3X_STAT_RAWAF
61*4882a593Smuzhiyun #define ISP32_STAT_RAWAE0		ISP3X_STAT_RAWAE0
62*4882a593Smuzhiyun #define ISP32_STAT_RAWAE1		ISP3X_STAT_RAWAE1
63*4882a593Smuzhiyun #define ISP32_STAT_RAWAE2		ISP3X_STAT_RAWAE2
64*4882a593Smuzhiyun #define ISP32_STAT_RAWAE3		ISP3X_STAT_RAWAE3
65*4882a593Smuzhiyun #define ISP32_STAT_RAWHST0		ISP3X_STAT_RAWHST0
66*4882a593Smuzhiyun #define ISP32_STAT_RAWHST1		ISP3X_STAT_RAWHST1
67*4882a593Smuzhiyun #define ISP32_STAT_RAWHST2		ISP3X_STAT_RAWHST2
68*4882a593Smuzhiyun #define ISP32_STAT_RAWHST3		ISP3X_STAT_RAWHST3
69*4882a593Smuzhiyun #define ISP32_STAT_BLS			ISP3X_STAT_BLS
70*4882a593Smuzhiyun #define ISP32_STAT_DHAZ			ISP3X_STAT_DHAZ
71*4882a593Smuzhiyun #define ISP32_STAT_VSM			BIT(18)
72*4882a593Smuzhiyun #define ISP32_STAT_INFO2DDR		BIT(19)
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #define ISP32_MESH_BUF_NUM		ISP3X_MESH_BUF_NUM
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun #define ISP32_LSC_GRAD_TBL_SIZE		ISP3X_LSC_GRAD_TBL_SIZE
77*4882a593Smuzhiyun #define ISP32_LSC_SIZE_TBL_SIZE		ISP3X_LSC_SIZE_TBL_SIZE
78*4882a593Smuzhiyun #define ISP32_LSC_DATA_TBL_SIZE		ISP3X_LSC_DATA_TBL_SIZE
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define ISP32_DEGAMMA_CURVE_SIZE	ISP3X_DEGAMMA_CURVE_SIZE
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define ISP32_GAIN_IDX_NUM		ISP3X_GAIN_IDX_NUM
83*4882a593Smuzhiyun #define ISP32_GAIN_LUT_NUM		ISP3X_GAIN_LUT_NUM
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define ISP32_RAWAWB_EXCL_STAT_NUM	ISP3X_RAWAWB_EXCL_STAT_NUM
86*4882a593Smuzhiyun #define ISP32_RAWAWB_HSTBIN_NUM		ISP3X_RAWAWB_HSTBIN_NUM
87*4882a593Smuzhiyun #define ISP32_RAWAWB_WEIGHT_NUM		ISP3X_RAWAWB_WEIGHT_NUM
88*4882a593Smuzhiyun #define ISP32_RAWAWB_SUM_NUM		4
89*4882a593Smuzhiyun #define ISP32_RAWAWB_RAMDATA_NUM	ISP3X_RAWAWB_RAMDATA_NUM
90*4882a593Smuzhiyun #define ISP32L_RAWAWB_WEIGHT_NUM	5
91*4882a593Smuzhiyun #define ISP32L_RAWAWB_RAMDATA_RGB_NUM	25
92*4882a593Smuzhiyun #define ISP32L_RAWAWB_RAMDATA_WP_NUM	13
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #define	ISP32_RAWAEBIG_SUBWIN_NUM	ISP3X_RAWAEBIG_SUBWIN_NUM
95*4882a593Smuzhiyun #define ISP32_RAWAEBIG_MEAN_NUM		ISP3X_RAWAEBIG_MEAN_NUM
96*4882a593Smuzhiyun #define ISP32_RAWAELITE_MEAN_NUM	ISP3X_RAWAELITE_MEAN_NUM
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define ISP32_RAWHISTBIG_SUBWIN_NUM	ISP3X_RAWHISTBIG_SUBWIN_NUM
99*4882a593Smuzhiyun #define ISP32_RAWHISTLITE_SUBWIN_NUM	ISP3X_RAWHISTLITE_SUBWIN_NUM
100*4882a593Smuzhiyun #define ISP32_HIST_BIN_N_MAX		ISP3X_HIST_BIN_N_MAX
101*4882a593Smuzhiyun #define ISP32L_HIST_LITE_BIN_N_MAX	64
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define ISP32_RAWAF_CURVE_NUM		ISP3X_RAWAF_CURVE_NUM
104*4882a593Smuzhiyun #define ISP32_RAWAF_HIIR_COE_NUM	ISP3X_RAWAF_HIIR_COE_NUM
105*4882a593Smuzhiyun #define ISP32_RAWAF_VFIR_COE_NUM	ISP3X_RAWAF_VFIR_COE_NUM
106*4882a593Smuzhiyun #define ISP32_RAWAF_WIN_NUM		ISP3X_RAWAF_WIN_NUM
107*4882a593Smuzhiyun #define ISP32_RAWAF_LINE_NUM		ISP3X_RAWAF_LINE_NUM
108*4882a593Smuzhiyun #define ISP32_RAWAF_GAMMA_NUM		ISP3X_RAWAF_GAMMA_NUM
109*4882a593Smuzhiyun #define ISP32_RAWAF_SUMDATA_NUM		ISP3X_RAWAF_SUMDATA_NUM
110*4882a593Smuzhiyun #define ISP32_RAWAF_VIIR_COE_NUM	3
111*4882a593Smuzhiyun #define ISP32_RAWAF_GAUS_COE_NUM	9
112*4882a593Smuzhiyun #define ISP32L_RAWAF_WND_DATA		25
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun #define ISP32_DPCC_PDAF_POINT_NUM	ISP3X_DPCC_PDAF_POINT_NUM
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #define ISP32_HDRMGE_L_CURVE_NUM	ISP3X_HDRMGE_L_CURVE_NUM
117*4882a593Smuzhiyun #define ISP32_HDRMGE_E_CURVE_NUM	ISP3X_HDRMGE_E_CURVE_NUM
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define ISP32_GIC_SIGMA_Y_NUM		ISP3X_GIC_SIGMA_Y_NUM
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #define ISP32_CCM_CURVE_NUM		18
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define ISP32_3DLUT_DATA_NUM		ISP3X_3DLUT_DATA_NUM
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define ISP32_LDCH_MESH_XY_NUM		ISP3X_LDCH_MESH_XY_NUM
126*4882a593Smuzhiyun #define ISP32_LDCH_BIC_NUM		36
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #define ISP32_GAMMA_OUT_MAX_SAMPLES     ISP3X_GAMMA_OUT_MAX_SAMPLES
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun #define ISP32_DHAZ_SIGMA_IDX_NUM	ISP3X_DHAZ_SIGMA_IDX_NUM
131*4882a593Smuzhiyun #define ISP32_DHAZ_SIGMA_LUT_NUM	ISP3X_DHAZ_SIGMA_LUT_NUM
132*4882a593Smuzhiyun #define ISP32_DHAZ_HIST_WR_NUM		ISP3X_DHAZ_HIST_WR_NUM
133*4882a593Smuzhiyun #define ISP32_DHAZ_ENH_CURVE_NUM	ISP3X_DHAZ_ENH_CURVE_NUM
134*4882a593Smuzhiyun #define ISP32_DHAZ_HIST_IIR_NUM		ISP3X_DHAZ_HIST_IIR_NUM
135*4882a593Smuzhiyun #define ISP32_DHAZ_ENH_LUMA_NUM		17
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #define ISP32_DRC_Y_NUM			ISP3X_DRC_Y_NUM
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun #define ISP32_CNR_SIGMA_Y_NUM		ISP3X_CNR_SIGMA_Y_NUM
140*4882a593Smuzhiyun #define ISP32_CNR_GAUS_COE_NUM		6
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #define ISP32_YNR_XY_NUM		ISP3X_YNR_XY_NUM
143*4882a593Smuzhiyun #define ISP32_YNR_NLM_COE_NUM		6
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun #define ISP32_BAYNR_XY_NUM		ISP3X_BAYNR_XY_NUM
146*4882a593Smuzhiyun #define ISP32_BAYNR_GAIN_NUM		16
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun #define ISP32_BAY3D_XY_NUM		ISP3X_BAY3D_XY_NUM
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #define ISP32_SHARP_X_NUM		ISP3X_SHARP_X_NUM
151*4882a593Smuzhiyun #define ISP32_SHARP_Y_NUM		ISP3X_SHARP_Y_NUM
152*4882a593Smuzhiyun #define ISP32_SHARP_GAUS_COEF_NUM	ISP3X_SHARP_GAUS_COEF_NUM
153*4882a593Smuzhiyun #define ISP32_SHARP_GAIN_ADJ_NUM	14
154*4882a593Smuzhiyun #define ISP32_SHARP_STRENGTH_NUM	22
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun #define ISP32_CAC_STRENGTH_NUM		ISP3X_CAC_STRENGTH_NUM
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun #define ISP32_CSM_COEFF_NUM		ISP3X_CSM_COEFF_NUM
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun struct isp32_ldch_cfg {
161*4882a593Smuzhiyun 	__u8 frm_end_dis;
162*4882a593Smuzhiyun 	__u8 zero_interp_en;
163*4882a593Smuzhiyun 	__u8 sample_avr_en;
164*4882a593Smuzhiyun 	__u8 bic_mode_en;
165*4882a593Smuzhiyun 	__u8 force_map_en;
166*4882a593Smuzhiyun 	__u8 map13p3_en;
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun 	__u8 bicubic[ISP32_LDCH_BIC_NUM];
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun 	__u32 hsize;
171*4882a593Smuzhiyun 	__u32 vsize;
172*4882a593Smuzhiyun 	__s32 buf_fd;
173*4882a593Smuzhiyun } __attribute__ ((packed));
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun struct isp32_awb_gain_cfg {
176*4882a593Smuzhiyun 	/* AWB1_GAIN_G */
177*4882a593Smuzhiyun 	__u16 awb1_gain_gb;
178*4882a593Smuzhiyun 	__u16 awb1_gain_gr;
179*4882a593Smuzhiyun 	/* AWB1_GAIN_RB */
180*4882a593Smuzhiyun 	__u16 awb1_gain_b;
181*4882a593Smuzhiyun 	__u16 awb1_gain_r;
182*4882a593Smuzhiyun 	/* AWB0_GAIN0_G */
183*4882a593Smuzhiyun 	__u16 gain0_green_b;
184*4882a593Smuzhiyun 	__u16 gain0_green_r;
185*4882a593Smuzhiyun 	/* AWB0_GAIN0_RB*/
186*4882a593Smuzhiyun 	__u16 gain0_blue;
187*4882a593Smuzhiyun 	__u16 gain0_red;
188*4882a593Smuzhiyun 	/* AWB0_GAIN1_G */
189*4882a593Smuzhiyun 	__u16 gain1_green_b;
190*4882a593Smuzhiyun 	__u16 gain1_green_r;
191*4882a593Smuzhiyun 	/* AWB0_GAIN1_RB*/
192*4882a593Smuzhiyun 	__u16 gain1_blue;
193*4882a593Smuzhiyun 	__u16 gain1_red;
194*4882a593Smuzhiyun 	/* AWB0_GAIN2_G */
195*4882a593Smuzhiyun 	__u16 gain2_green_b;
196*4882a593Smuzhiyun 	__u16 gain2_green_r;
197*4882a593Smuzhiyun 	/* AWB0_GAIN2_RB*/
198*4882a593Smuzhiyun 	__u16 gain2_blue;
199*4882a593Smuzhiyun 	__u16 gain2_red;
200*4882a593Smuzhiyun } __attribute__ ((packed));
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun struct isp32_bls_cfg {
203*4882a593Smuzhiyun 	__u8 enable_auto;
204*4882a593Smuzhiyun 	__u8 en_windows;
205*4882a593Smuzhiyun 	__u8 bls1_en;
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun 	__u8 bls_samples;
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun 	struct isp2x_window bls_window1;
210*4882a593Smuzhiyun 	struct isp2x_window bls_window2;
211*4882a593Smuzhiyun 	struct isp2x_bls_fixed_val fixed_val;
212*4882a593Smuzhiyun 	struct isp2x_bls_fixed_val bls1_val;
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun 	__u16 isp_ob_offset;
215*4882a593Smuzhiyun 	__u16 isp_ob_predgain;
216*4882a593Smuzhiyun 	__u32 isp_ob_max;
217*4882a593Smuzhiyun } __attribute__ ((packed));
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun struct isp32_ccm_cfg {
220*4882a593Smuzhiyun 	/* CTRL */
221*4882a593Smuzhiyun 	__u8 highy_adjust_dis;
222*4882a593Smuzhiyun 	__u8 enh_adj_en;
223*4882a593Smuzhiyun 	__u8 asym_adj_en;
224*4882a593Smuzhiyun 	/* BOUND_BIT */
225*4882a593Smuzhiyun 	__u8 bound_bit;
226*4882a593Smuzhiyun 	__u8 right_bit;
227*4882a593Smuzhiyun 	/* COEFF0_R */
228*4882a593Smuzhiyun 	__s16 coeff0_r;
229*4882a593Smuzhiyun 	__s16 coeff1_r;
230*4882a593Smuzhiyun 	/* COEFF1_R */
231*4882a593Smuzhiyun 	__s16 coeff2_r;
232*4882a593Smuzhiyun 	__s16 offset_r;
233*4882a593Smuzhiyun 	/* COEFF0_G */
234*4882a593Smuzhiyun 	__s16 coeff0_g;
235*4882a593Smuzhiyun 	__s16 coeff1_g;
236*4882a593Smuzhiyun 	/* COEFF1_G */
237*4882a593Smuzhiyun 	__s16 coeff2_g;
238*4882a593Smuzhiyun 	__s16 offset_g;
239*4882a593Smuzhiyun 	/* COEFF0_B */
240*4882a593Smuzhiyun 	__s16 coeff0_b;
241*4882a593Smuzhiyun 	__s16 coeff1_b;
242*4882a593Smuzhiyun 	/* COEFF1_B */
243*4882a593Smuzhiyun 	__s16 coeff2_b;
244*4882a593Smuzhiyun 	__s16 offset_b;
245*4882a593Smuzhiyun 	/* COEFF0_Y */
246*4882a593Smuzhiyun 	__u16 coeff0_y;
247*4882a593Smuzhiyun 	__u16 coeff1_y;
248*4882a593Smuzhiyun 	/* COEFF1_Y */
249*4882a593Smuzhiyun 	__u16 coeff2_y;
250*4882a593Smuzhiyun 	/* ALP_Y */
251*4882a593Smuzhiyun 	__u16 alp_y[ISP32_CCM_CURVE_NUM];
252*4882a593Smuzhiyun 	/* ENHANCE0 */
253*4882a593Smuzhiyun 	__u16 color_coef0_r2y;
254*4882a593Smuzhiyun 	__u16 color_coef1_g2y;
255*4882a593Smuzhiyun 	/* ENHANCE1 */
256*4882a593Smuzhiyun 	__u16 color_coef2_b2y;
257*4882a593Smuzhiyun 	__u16 color_enh_rat_max;
258*4882a593Smuzhiyun } __attribute__ ((packed));
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun struct isp32_debayer_cfg {
261*4882a593Smuzhiyun 	/* CONTROL */
262*4882a593Smuzhiyun 	__u8 filter_g_en;
263*4882a593Smuzhiyun 	__u8 filter_c_en;
264*4882a593Smuzhiyun 	/* G_INTERP */
265*4882a593Smuzhiyun 	__u8 clip_en;
266*4882a593Smuzhiyun 	__u8 dist_scale;
267*4882a593Smuzhiyun 	__u8 thed0;
268*4882a593Smuzhiyun 	__u8 thed1;
269*4882a593Smuzhiyun 	__u8 select_thed;
270*4882a593Smuzhiyun 	__u8 max_ratio;
271*4882a593Smuzhiyun 	/* G_INTERP_FILTER1 */
272*4882a593Smuzhiyun 	__s8 filter1_coe1;
273*4882a593Smuzhiyun 	__s8 filter1_coe2;
274*4882a593Smuzhiyun 	__s8 filter1_coe3;
275*4882a593Smuzhiyun 	__s8 filter1_coe4;
276*4882a593Smuzhiyun 	/* G_INTERP_FILTER2 */
277*4882a593Smuzhiyun 	__s8 filter2_coe1;
278*4882a593Smuzhiyun 	__s8 filter2_coe2;
279*4882a593Smuzhiyun 	__s8 filter2_coe3;
280*4882a593Smuzhiyun 	__s8 filter2_coe4;
281*4882a593Smuzhiyun 	/* C_FILTER_GUIDE_GAUS */
282*4882a593Smuzhiyun 	__s8 guid_gaus_coe0;
283*4882a593Smuzhiyun 	__s8 guid_gaus_coe1;
284*4882a593Smuzhiyun 	__s8 guid_gaus_coe2;
285*4882a593Smuzhiyun 	/* C_FILTER_CE_GAUS */
286*4882a593Smuzhiyun 	__s8 ce_gaus_coe0;
287*4882a593Smuzhiyun 	__s8 ce_gaus_coe1;
288*4882a593Smuzhiyun 	__s8 ce_gaus_coe2;
289*4882a593Smuzhiyun 	/* C_FILTER_ALPHA_GAUS */
290*4882a593Smuzhiyun 	__s8 alpha_gaus_coe0;
291*4882a593Smuzhiyun 	__s8 alpha_gaus_coe1;
292*4882a593Smuzhiyun 	__s8 alpha_gaus_coe2;
293*4882a593Smuzhiyun 	/* C_FILTER_IIR_0 */
294*4882a593Smuzhiyun 	__u8 ce_sgm;
295*4882a593Smuzhiyun 	__u8 exp_shift;
296*4882a593Smuzhiyun 	/* C_FILTER_IIR_1 */
297*4882a593Smuzhiyun 	__u8 wet_clip;
298*4882a593Smuzhiyun 	__u8 wet_ghost;
299*4882a593Smuzhiyun 	/* C_FILTER_BF */
300*4882a593Smuzhiyun 	__u8 bf_clip;
301*4882a593Smuzhiyun 	__u8 bf_curwgt;
302*4882a593Smuzhiyun 	__u16 bf_sgm;
303*4882a593Smuzhiyun 	/* G_INTERP_OFFSET */
304*4882a593Smuzhiyun 	__u16 hf_offset;
305*4882a593Smuzhiyun 	__u16 gain_offset;
306*4882a593Smuzhiyun 	/* G_FILTER_OFFSET */
307*4882a593Smuzhiyun 	__u16 offset;
308*4882a593Smuzhiyun 	/* C_FILTER_LOG_OFFSET */
309*4882a593Smuzhiyun 	__u16 loghf_offset;
310*4882a593Smuzhiyun 	__u16 loggd_offset;
311*4882a593Smuzhiyun 	/* C_FILTER_IIR_0 */
312*4882a593Smuzhiyun 	__u16 wgtslope;
313*4882a593Smuzhiyun 	/* C_FILTER_ALPHA */
314*4882a593Smuzhiyun 	__u16 alpha_offset;
315*4882a593Smuzhiyun 	/* C_FILTER_EDGE */
316*4882a593Smuzhiyun 	__u16 edge_offset;
317*4882a593Smuzhiyun 	__u32 edge_scale;
318*4882a593Smuzhiyun 	/* C_FILTER_ALPHA */
319*4882a593Smuzhiyun 	__u32 alpha_scale;
320*4882a593Smuzhiyun } __attribute__ ((packed));
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun struct isp32_baynr_cfg {
323*4882a593Smuzhiyun 	/* BAYNR_CTRL */
324*4882a593Smuzhiyun 	__u8 bay3d_gain_en;
325*4882a593Smuzhiyun 	__u8 lg2_mode;
326*4882a593Smuzhiyun 	__u8 gauss_en;
327*4882a593Smuzhiyun 	__u8 log_bypass;
328*4882a593Smuzhiyun 	/* BAYNR_DGAIN */
329*4882a593Smuzhiyun 	__u16 dgain1;
330*4882a593Smuzhiyun 	__u16 dgain0;
331*4882a593Smuzhiyun 	__u16 dgain2;
332*4882a593Smuzhiyun 	/* BAYNR_PIXDIFF */
333*4882a593Smuzhiyun 	__u16 pix_diff;
334*4882a593Smuzhiyun 	/* BAYNR_THLD */
335*4882a593Smuzhiyun 	__u16 diff_thld;
336*4882a593Smuzhiyun 	__u16 softthld;
337*4882a593Smuzhiyun 	/* BAYNR_W1_STRENG */
338*4882a593Smuzhiyun 	__u16 bltflt_streng;
339*4882a593Smuzhiyun 	__u16 reg_w1;
340*4882a593Smuzhiyun 	/* BAYNR_SIGMA */
341*4882a593Smuzhiyun 	__u16 sigma_x[ISP32_BAYNR_XY_NUM];
342*4882a593Smuzhiyun 	__u16 sigma_y[ISP32_BAYNR_XY_NUM];
343*4882a593Smuzhiyun 	/* BAYNR_WRIT_D */
344*4882a593Smuzhiyun 	__u16 weit_d2;
345*4882a593Smuzhiyun 	__u16 weit_d1;
346*4882a593Smuzhiyun 	__u16 weit_d0;
347*4882a593Smuzhiyun 	/* BAYNR_LG_OFF */
348*4882a593Smuzhiyun 	__u16 lg2_lgoff;
349*4882a593Smuzhiyun 	__u16 lg2_off;
350*4882a593Smuzhiyun 	/* BAYNR_DAT_MAX */
351*4882a593Smuzhiyun 	__u32 dat_max;
352*4882a593Smuzhiyun 	/* BAYNR_SIGOFF */
353*4882a593Smuzhiyun 	__u16 rgain_off;
354*4882a593Smuzhiyun 	__u16 bgain_off;
355*4882a593Smuzhiyun 	/* BAYNR_GAIN */
356*4882a593Smuzhiyun 	__u8 gain_x[ISP32_BAYNR_GAIN_NUM];
357*4882a593Smuzhiyun 	__u16 gain_y[ISP32_BAYNR_GAIN_NUM];
358*4882a593Smuzhiyun } __attribute__ ((packed));
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun struct isp32_bay3d_cfg {
361*4882a593Smuzhiyun 	/* BAY3D_CTRL */
362*4882a593Smuzhiyun 	__u8 bypass_en;
363*4882a593Smuzhiyun 	__u8 hibypass_en;
364*4882a593Smuzhiyun 	__u8 lobypass_en;
365*4882a593Smuzhiyun 	__u8 himed_bypass_en;
366*4882a593Smuzhiyun 	__u8 higaus_bypass_en;
367*4882a593Smuzhiyun 	__u8 hiabs_possel;
368*4882a593Smuzhiyun 	__u8 hichnsplit_en;
369*4882a593Smuzhiyun 	__u8 lomed_bypass_en;
370*4882a593Smuzhiyun 	__u8 logaus5_bypass_en;
371*4882a593Smuzhiyun 	__u8 logaus3_bypass_en;
372*4882a593Smuzhiyun 	__u8 glbpk_en;
373*4882a593Smuzhiyun 	__u8 loswitch_protect;
374*4882a593Smuzhiyun 	__u8 bwsaving_en;
375*4882a593Smuzhiyun 	/* BAY3D_CTRL1 */
376*4882a593Smuzhiyun 	__u8 hiwgt_opt_en;
377*4882a593Smuzhiyun 	__u8 hichncor_en;
378*4882a593Smuzhiyun 	__u8 bwopt_gain_dis;
379*4882a593Smuzhiyun 	__u8 lo4x8_en;
380*4882a593Smuzhiyun 	__u8 lo4x4_en;
381*4882a593Smuzhiyun 	__u8 hisig_ind_sel;
382*4882a593Smuzhiyun 	__u8 pksig_ind_sel;
383*4882a593Smuzhiyun 	__u8 iirwr_rnd_en;
384*4882a593Smuzhiyun 	__u8 curds_high_en;
385*4882a593Smuzhiyun 	__u8 higaus3_mode;
386*4882a593Smuzhiyun 	__u8 higaus5x5_en;
387*4882a593Smuzhiyun 	__u8 wgtmix_opt_en;
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun 	/* for isp32_lite */
390*4882a593Smuzhiyun 	__u8 wgtmm_opt_en;
391*4882a593Smuzhiyun 	__u8 wgtmm_sel_en;
392*4882a593Smuzhiyun 
393*4882a593Smuzhiyun 	/* BAY3D_SIGGAUS */
394*4882a593Smuzhiyun 	__u8 siggaus0;
395*4882a593Smuzhiyun 	__u8 siggaus1;
396*4882a593Smuzhiyun 	__u8 siggaus2;
397*4882a593Smuzhiyun 	__u8 siggaus3;
398*4882a593Smuzhiyun 	/* BAY3D_KALRATIO */
399*4882a593Smuzhiyun 	__u16 softwgt;
400*4882a593Smuzhiyun 	__u16 hidif_th;
401*4882a593Smuzhiyun 	/* BAY3D_WGTLMT */
402*4882a593Smuzhiyun 	__u16 wgtlmt;
403*4882a593Smuzhiyun 	__u16 wgtratio;
404*4882a593Smuzhiyun 	/* BAY3D_SIG */
405*4882a593Smuzhiyun 	__u16 sig0_x[ISP32_BAY3D_XY_NUM];
406*4882a593Smuzhiyun 	__u16 sig0_y[ISP32_BAY3D_XY_NUM];
407*4882a593Smuzhiyun 	__u16 sig1_x[ISP32_BAY3D_XY_NUM];
408*4882a593Smuzhiyun 	__u16 sig1_y[ISP32_BAY3D_XY_NUM];
409*4882a593Smuzhiyun 	__u16 sig2_x[ISP32_BAY3D_XY_NUM];
410*4882a593Smuzhiyun 	__u16 sig2_y[ISP32_BAY3D_XY_NUM];
411*4882a593Smuzhiyun 
412*4882a593Smuzhiyun 	/* LODIF_STAT1 for isp32_lite */
413*4882a593Smuzhiyun 	__u16 wgtmin;
414*4882a593Smuzhiyun 
415*4882a593Smuzhiyun 	/* BAY3D_HISIGRAT */
416*4882a593Smuzhiyun 	__u16 hisigrat0;
417*4882a593Smuzhiyun 	__u16 hisigrat1;
418*4882a593Smuzhiyun 	/* BAY3D_HISIGOFF */
419*4882a593Smuzhiyun 	__u16 hisigoff0;
420*4882a593Smuzhiyun 	__u16 hisigoff1;
421*4882a593Smuzhiyun 	/* BAY3D_LOSIG */
422*4882a593Smuzhiyun 	__u16 losigoff;
423*4882a593Smuzhiyun 	__u16 losigrat;
424*4882a593Smuzhiyun 	/* BAY3D_SIGPK */
425*4882a593Smuzhiyun 	__u16 rgain_off;
426*4882a593Smuzhiyun 	__u16 bgain_off;
427*4882a593Smuzhiyun 	/* BAY3D_GLBPK2 */
428*4882a593Smuzhiyun 	__u32 glbpk2;
429*4882a593Smuzhiyun } __attribute__ ((packed));
430*4882a593Smuzhiyun 
431*4882a593Smuzhiyun struct isp32_ynr_cfg {
432*4882a593Smuzhiyun 	/* YNR_GLOBAL_CTRL */
433*4882a593Smuzhiyun 	__u8 rnr_en;
434*4882a593Smuzhiyun 	__u8 thumb_mix_cur_en;
435*4882a593Smuzhiyun 	__u8 global_gain_alpha;
436*4882a593Smuzhiyun 	__u8 flt1x1_bypass_sel;
437*4882a593Smuzhiyun 	__u8 nlm11x11_bypass;
438*4882a593Smuzhiyun 	__u8 flt1x1_bypass;
439*4882a593Smuzhiyun 	__u8 lgft3x3_bypass;
440*4882a593Smuzhiyun 	__u8 lbft5x5_bypass;
441*4882a593Smuzhiyun 	__u8 bft3x3_bypass;
442*4882a593Smuzhiyun 	/* YNR_RNR_STRENGTH */
443*4882a593Smuzhiyun 	__u8 rnr_strength3[ISP32_YNR_XY_NUM];
444*4882a593Smuzhiyun 	/* YNR_NLM_SIGMA_GAIN */
445*4882a593Smuzhiyun 	__u8 nlm_hi_gain_alpha;
446*4882a593Smuzhiyun 	/* YNR_NLM_COE */
447*4882a593Smuzhiyun 	__u8 nlm_coe[ISP32_YNR_NLM_COE_NUM];
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun 	/* LOWNR_CTRL4 for isp32_lite */
450*4882a593Smuzhiyun 	__u8 frame_add4line;
451*4882a593Smuzhiyun 
452*4882a593Smuzhiyun 	__u16 global_gain;
453*4882a593Smuzhiyun 
454*4882a593Smuzhiyun 	/* YNR_RNR_MAX_R */
455*4882a593Smuzhiyun 	__u16 rnr_max_r;
456*4882a593Smuzhiyun 	__u16 local_gainscale;
457*4882a593Smuzhiyun 	/* YNR_RNR_CENTER_COOR */
458*4882a593Smuzhiyun 	__u16 rnr_center_coorh;
459*4882a593Smuzhiyun 	__u16 rnr_center_coorv;
460*4882a593Smuzhiyun 	/* YNR_LOCAL_GAIN_CTRL */
461*4882a593Smuzhiyun 	__u16 loclagain_adj_thresh;
462*4882a593Smuzhiyun 	__u16 localgain_adj;
463*4882a593Smuzhiyun 	/* YNR_LOWNR_CTRL0 */
464*4882a593Smuzhiyun 	__u16 low_bf_inv1;
465*4882a593Smuzhiyun 	__u16 low_bf_inv0;
466*4882a593Smuzhiyun 	/* YNR_LOWNR_CTRL1 */
467*4882a593Smuzhiyun 	__u16 low_peak_supress;
468*4882a593Smuzhiyun 	__u16 low_thred_adj;
469*4882a593Smuzhiyun 	/* YNR_LOWNR_CTRL2 */
470*4882a593Smuzhiyun 	__u16 low_dist_adj;
471*4882a593Smuzhiyun 	__u16 low_edge_adj_thresh;
472*4882a593Smuzhiyun 	/* YNR_LOWNR_CTRL3 */
473*4882a593Smuzhiyun 	__u16 low_bi_weight;
474*4882a593Smuzhiyun 	__u16 low_weight;
475*4882a593Smuzhiyun 	__u16 low_center_weight;
476*4882a593Smuzhiyun 	/* YNR_LOWNR_CTRL4 */
477*4882a593Smuzhiyun 	__u16 frame_full_size;
478*4882a593Smuzhiyun 	__u16 lbf_weight_thres;
479*4882a593Smuzhiyun 	/* YNR_GAUSS1_COEFF */
480*4882a593Smuzhiyun 	__u16 low_gauss1_coeff2;
481*4882a593Smuzhiyun 	__u16 low_gauss1_coeff1;
482*4882a593Smuzhiyun 	__u16 low_gauss1_coeff0;
483*4882a593Smuzhiyun 	/* YNR_GAUSS2_COEFF */
484*4882a593Smuzhiyun 	__u16 low_gauss2_coeff2;
485*4882a593Smuzhiyun 	__u16 low_gauss2_coeff1;
486*4882a593Smuzhiyun 	__u16 low_gauss2_coeff0;
487*4882a593Smuzhiyun 	/* YNR_SGM_DX */
488*4882a593Smuzhiyun 	__u16 luma_points_x[ISP32_YNR_XY_NUM];
489*4882a593Smuzhiyun 	/* YNR_LSGM_Y */
490*4882a593Smuzhiyun 	__u16 lsgm_y[ISP32_YNR_XY_NUM];
491*4882a593Smuzhiyun 	/* YNR_NLM_SIGMA_GAIN */
492*4882a593Smuzhiyun 	__u16 nlm_min_sigma;
493*4882a593Smuzhiyun 	__u16 nlm_hi_bf_scale;
494*4882a593Smuzhiyun 	/* YNR_NLM_WEIGHT */
495*4882a593Smuzhiyun 	__u16 nlm_nr_weight;
496*4882a593Smuzhiyun 	__u16 nlm_weight_offset;
497*4882a593Smuzhiyun 	/* YNR_NLM_NR_WEIGHT */
498*4882a593Smuzhiyun 	__u32 nlm_center_weight;
499*4882a593Smuzhiyun } __attribute__ ((packed));
500*4882a593Smuzhiyun 
501*4882a593Smuzhiyun struct isp32_cnr_cfg {
502*4882a593Smuzhiyun 	/* CNR_CTRL */
503*4882a593Smuzhiyun 	__u8 exgain_bypass;
504*4882a593Smuzhiyun 	__u8 yuv422_mode;
505*4882a593Smuzhiyun 	__u8 thumb_mode;
506*4882a593Smuzhiyun 	__u8 bf3x3_wgt0_sel;
507*4882a593Smuzhiyun 	/* CNR_LBF_WEITD */
508*4882a593Smuzhiyun 	__u8 lbf1x7_weit_d0;
509*4882a593Smuzhiyun 	__u8 lbf1x7_weit_d1;
510*4882a593Smuzhiyun 	__u8 lbf1x7_weit_d2;
511*4882a593Smuzhiyun 	__u8 lbf1x7_weit_d3;
512*4882a593Smuzhiyun 	/* CNR_IIR_PARA1 */
513*4882a593Smuzhiyun 	__u8 iir_uvgain;
514*4882a593Smuzhiyun 	__u8 iir_strength;
515*4882a593Smuzhiyun 	__u8 exp_shift;
516*4882a593Smuzhiyun 	/* CNR_IIR_PARA2 */
517*4882a593Smuzhiyun 	__u8 chroma_ghost;
518*4882a593Smuzhiyun 	__u8 iir_uv_clip;
519*4882a593Smuzhiyun 	/* CNR_GAUS_COE */
520*4882a593Smuzhiyun 	__u8 gaus_coe[ISP32_CNR_GAUS_COE_NUM];
521*4882a593Smuzhiyun 	/* CNR_GAUS_RATIO */
522*4882a593Smuzhiyun 	__u8 bf_wgt_clip;
523*4882a593Smuzhiyun 	/* CNR_BF_PARA1 */
524*4882a593Smuzhiyun 	__u8 uv_gain;
525*4882a593Smuzhiyun 	__u8 bf_ratio;
526*4882a593Smuzhiyun 	/* CNR_SIGMA */
527*4882a593Smuzhiyun 	__u8 sigma_y[ISP32_CNR_SIGMA_Y_NUM];
528*4882a593Smuzhiyun 	/* CNR_IIR_GLOBAL_GAIN */
529*4882a593Smuzhiyun 	__u8 iir_gain_alpha;
530*4882a593Smuzhiyun 	__u8 iir_global_gain;
531*4882a593Smuzhiyun 	/* CNR_EXGAIN */
532*4882a593Smuzhiyun 	__u8 gain_iso;
533*4882a593Smuzhiyun 	__u8 global_gain_alpha;
534*4882a593Smuzhiyun 	__u16 global_gain;
535*4882a593Smuzhiyun 	/* CNR_THUMB1 */
536*4882a593Smuzhiyun 	__u16 thumb_sigma_c;
537*4882a593Smuzhiyun 	__u16 thumb_sigma_y;
538*4882a593Smuzhiyun 	/* CNR_THUMB_BF_RATIO */
539*4882a593Smuzhiyun 	__u16 thumb_bf_ratio;
540*4882a593Smuzhiyun 	/* CNR_IIR_PARA1 */
541*4882a593Smuzhiyun 	__u16 wgt_slope;
542*4882a593Smuzhiyun 	/* CNR_GAUS_RATIO */
543*4882a593Smuzhiyun 	__u16 gaus_ratio;
544*4882a593Smuzhiyun 	__u16 global_alpha;
545*4882a593Smuzhiyun 	/* CNR_BF_PARA1 */
546*4882a593Smuzhiyun 	__u16 sigma_r;
547*4882a593Smuzhiyun 	/* CNR_BF_PARA2 */
548*4882a593Smuzhiyun 	__u16 adj_offset;
549*4882a593Smuzhiyun 	__u16 adj_ratio;
550*4882a593Smuzhiyun } __attribute__ ((packed));
551*4882a593Smuzhiyun 
552*4882a593Smuzhiyun struct isp32_sharp_cfg {
553*4882a593Smuzhiyun 	/* SHARP_EN */
554*4882a593Smuzhiyun 	__u8 bypass;
555*4882a593Smuzhiyun 	__u8 center_mode;
556*4882a593Smuzhiyun 	__u8 exgain_bypass;
557*4882a593Smuzhiyun 	__u8 radius_ds_mode;
558*4882a593Smuzhiyun 	__u8 noiseclip_mode;
559*4882a593Smuzhiyun 
560*4882a593Smuzhiyun 	/* for isp32_lite */
561*4882a593Smuzhiyun 	__u8 clip_hf_mode;
562*4882a593Smuzhiyun 	__u8 add_mode;
563*4882a593Smuzhiyun 
564*4882a593Smuzhiyun 	/* SHARP_RATIO */
565*4882a593Smuzhiyun 	__u8 sharp_ratio;
566*4882a593Smuzhiyun 	__u8 bf_ratio;
567*4882a593Smuzhiyun 	__u8 gaus_ratio;
568*4882a593Smuzhiyun 	__u8 pbf_ratio;
569*4882a593Smuzhiyun 	/* SHARP_LUMA_DX */
570*4882a593Smuzhiyun 	__u8 luma_dx[ISP32_SHARP_X_NUM];
571*4882a593Smuzhiyun 	/* SHARP_SIGMA_SHIFT */
572*4882a593Smuzhiyun 	__u8 bf_sigma_shift;
573*4882a593Smuzhiyun 	__u8 pbf_sigma_shift;
574*4882a593Smuzhiyun 	/* SHARP_PBF_COEF */
575*4882a593Smuzhiyun 	__u8 pbf_coef2;
576*4882a593Smuzhiyun 	__u8 pbf_coef1;
577*4882a593Smuzhiyun 	__u8 pbf_coef0;
578*4882a593Smuzhiyun 	/* SHARP_BF_COEF */
579*4882a593Smuzhiyun 	__u8 bf_coef2;
580*4882a593Smuzhiyun 	__u8 bf_coef1;
581*4882a593Smuzhiyun 	__u8 bf_coef0;
582*4882a593Smuzhiyun 	/* SHARP_GAUS_COEF */
583*4882a593Smuzhiyun 	__u8 gaus_coef[ISP32_SHARP_GAUS_COEF_NUM];
584*4882a593Smuzhiyun 	/* SHARP_GAIN */
585*4882a593Smuzhiyun 	__u8 global_gain_alpha;
586*4882a593Smuzhiyun 	__u8 local_gainscale;
587*4882a593Smuzhiyun 	/* SHARP_GAIN_DIS_STRENGTH */
588*4882a593Smuzhiyun 	__u8 strength[ISP32_SHARP_STRENGTH_NUM];
589*4882a593Smuzhiyun 	/* SHARP_TEXTURE */
590*4882a593Smuzhiyun 	__u8 enhance_bit;
591*4882a593Smuzhiyun 	/* SHARP_PBF_SIGMA_INV */
592*4882a593Smuzhiyun 	__u16 pbf_sigma_inv[ISP32_SHARP_Y_NUM];
593*4882a593Smuzhiyun 	/* SHARP_BF_SIGMA_INV */
594*4882a593Smuzhiyun 	__u16 bf_sigma_inv[ISP32_SHARP_Y_NUM];
595*4882a593Smuzhiyun 	/* SHARP_CLIP_HF */
596*4882a593Smuzhiyun 	__u16 clip_hf[ISP32_SHARP_Y_NUM];
597*4882a593Smuzhiyun 	/* SHARP_GAIN */
598*4882a593Smuzhiyun 	__u16 global_gain;
599*4882a593Smuzhiyun 	/* SHARP_GAIN_ADJUST */
600*4882a593Smuzhiyun 	__u16 gain_adj[ISP32_SHARP_GAIN_ADJ_NUM];
601*4882a593Smuzhiyun 	/* SHARP_CENTER */
602*4882a593Smuzhiyun 	__u16 center_wid;
603*4882a593Smuzhiyun 	__u16 center_het;
604*4882a593Smuzhiyun 	/* SHARP_TEXTURE */
605*4882a593Smuzhiyun 	__u16 noise_sigma;
606*4882a593Smuzhiyun 	__u16 noise_strength;
607*4882a593Smuzhiyun 
608*4882a593Smuzhiyun 	/* EHF_TH for isp32_lite */
609*4882a593Smuzhiyun 	__u16 ehf_th[ISP32_SHARP_Y_NUM];
610*4882a593Smuzhiyun 	/* CLIP_NEG for isp32_lite */
611*4882a593Smuzhiyun 	__u16 clip_neg[ISP32_SHARP_Y_NUM];
612*4882a593Smuzhiyun } __attribute__ ((packed));
613*4882a593Smuzhiyun 
614*4882a593Smuzhiyun struct isp32_dhaz_cfg {
615*4882a593Smuzhiyun 	/* DHAZ_CTRL */
616*4882a593Smuzhiyun 	__u8 enh_luma_en;
617*4882a593Smuzhiyun 	__u8 color_deviate_en;
618*4882a593Smuzhiyun 	__u8 round_en;
619*4882a593Smuzhiyun 	__u8 soft_wr_en;
620*4882a593Smuzhiyun 	__u8 enhance_en;
621*4882a593Smuzhiyun 	__u8 air_lc_en;
622*4882a593Smuzhiyun 	__u8 hpara_en;
623*4882a593Smuzhiyun 	__u8 hist_en;
624*4882a593Smuzhiyun 	__u8 dc_en;
625*4882a593Smuzhiyun 	/* DHAZ_ADP0 */
626*4882a593Smuzhiyun 	__u8 yblk_th;
627*4882a593Smuzhiyun 	__u8 yhist_th;
628*4882a593Smuzhiyun 	__u8 dc_max_th;
629*4882a593Smuzhiyun 	__u8 dc_min_th;
630*4882a593Smuzhiyun 	/* DHAZ_ADP2 */
631*4882a593Smuzhiyun 	__u8 tmax_base;
632*4882a593Smuzhiyun 	__u8 dark_th;
633*4882a593Smuzhiyun 	__u8 air_max;
634*4882a593Smuzhiyun 	__u8 air_min;
635*4882a593Smuzhiyun 	/* DHAZ_GAUS */
636*4882a593Smuzhiyun 	__u8 gaus_h2;
637*4882a593Smuzhiyun 	__u8 gaus_h1;
638*4882a593Smuzhiyun 	__u8 gaus_h0;
639*4882a593Smuzhiyun 	/* DHAZ_GAIN_IDX */
640*4882a593Smuzhiyun 	__u8 sigma_idx[ISP32_DHAZ_SIGMA_IDX_NUM];
641*4882a593Smuzhiyun 	/* DHAZ_ADP_HIST1 */
642*4882a593Smuzhiyun 	__u8 hist_gratio;
643*4882a593Smuzhiyun 	__u16 hist_scale;
644*4882a593Smuzhiyun 	/* DHAZ_ADP1 */
645*4882a593Smuzhiyun 	__u8 bright_max;
646*4882a593Smuzhiyun 	__u8 bright_min;
647*4882a593Smuzhiyun 	__u16 wt_max;
648*4882a593Smuzhiyun 	/* DHAZ_ADP_TMAX */
649*4882a593Smuzhiyun 	__u16 tmax_max;
650*4882a593Smuzhiyun 	__u16 tmax_off;
651*4882a593Smuzhiyun 	/* DHAZ_ADP_HIST0 */
652*4882a593Smuzhiyun 	__u8 hist_k;
653*4882a593Smuzhiyun 	__u8 hist_th_off;
654*4882a593Smuzhiyun 	__u16 hist_min;
655*4882a593Smuzhiyun 	/* DHAZ_ENHANCE */
656*4882a593Smuzhiyun 	__u16 enhance_value;
657*4882a593Smuzhiyun 	__u16 enhance_chroma;
658*4882a593Smuzhiyun 	/* DHAZ_IIR0 */
659*4882a593Smuzhiyun 	__u16 iir_wt_sigma;
660*4882a593Smuzhiyun 	__u8 iir_sigma;
661*4882a593Smuzhiyun 	__u8 stab_fnum;
662*4882a593Smuzhiyun 	/* DHAZ_IIR1 */
663*4882a593Smuzhiyun 	__u16 iir_tmax_sigma;
664*4882a593Smuzhiyun 	__u8 iir_air_sigma;
665*4882a593Smuzhiyun 	__u8 iir_pre_wet;
666*4882a593Smuzhiyun 	/* DHAZ_SOFT_CFG0 */
667*4882a593Smuzhiyun 	__u16 cfg_wt;
668*4882a593Smuzhiyun 	__u8 cfg_air;
669*4882a593Smuzhiyun 	__u8 cfg_alpha;
670*4882a593Smuzhiyun 	/* DHAZ_SOFT_CFG1 */
671*4882a593Smuzhiyun 	__u16 cfg_gratio;
672*4882a593Smuzhiyun 	__u16 cfg_tmax;
673*4882a593Smuzhiyun 	/* DHAZ_BF_SIGMA */
674*4882a593Smuzhiyun 	__u16 range_sima;
675*4882a593Smuzhiyun 	__u8 space_sigma_pre;
676*4882a593Smuzhiyun 	__u8 space_sigma_cur;
677*4882a593Smuzhiyun 	/* DHAZ_BF_WET */
678*4882a593Smuzhiyun 	__u16 dc_weitcur;
679*4882a593Smuzhiyun 	__u16 bf_weight;
680*4882a593Smuzhiyun 	/* DHAZ_ENH_CURVE */
681*4882a593Smuzhiyun 	__u16 enh_curve[ISP32_DHAZ_ENH_CURVE_NUM];
682*4882a593Smuzhiyun 
683*4882a593Smuzhiyun 	__u16 sigma_lut[ISP32_DHAZ_SIGMA_LUT_NUM];
684*4882a593Smuzhiyun 
685*4882a593Smuzhiyun 	__u16 hist_wr[ISP32_DHAZ_HIST_WR_NUM];
686*4882a593Smuzhiyun 
687*4882a593Smuzhiyun 	__u16 enh_luma[ISP32_DHAZ_ENH_LUMA_NUM];
688*4882a593Smuzhiyun } __attribute__ ((packed));
689*4882a593Smuzhiyun 
690*4882a593Smuzhiyun struct isp32_drc_cfg {
691*4882a593Smuzhiyun 	__u8 bypass_en;
692*4882a593Smuzhiyun 	/* DRC_CTRL1 */
693*4882a593Smuzhiyun 	__u8 offset_pow2;
694*4882a593Smuzhiyun 	__u16 compres_scl;
695*4882a593Smuzhiyun 	__u16 position;
696*4882a593Smuzhiyun 	/* DRC_LPRATIO */
697*4882a593Smuzhiyun 	__u16 hpdetail_ratio;
698*4882a593Smuzhiyun 	__u16 lpdetail_ratio;
699*4882a593Smuzhiyun 	__u8 delta_scalein;
700*4882a593Smuzhiyun 	/* DRC_EXPLRATIO */
701*4882a593Smuzhiyun 	__u8 weicur_pix;
702*4882a593Smuzhiyun 	__u8 weipre_frame;
703*4882a593Smuzhiyun 	__u8 bilat_wt_off;
704*4882a593Smuzhiyun 	/* DRC_SIGMA */
705*4882a593Smuzhiyun 	__u8 edge_scl;
706*4882a593Smuzhiyun 	__u8 motion_scl;
707*4882a593Smuzhiyun 	__u16 force_sgm_inv0;
708*4882a593Smuzhiyun 	/* DRC_SPACESGM */
709*4882a593Smuzhiyun 	__u16 space_sgm_inv1;
710*4882a593Smuzhiyun 	__u16 space_sgm_inv0;
711*4882a593Smuzhiyun 	/* DRC_RANESGM */
712*4882a593Smuzhiyun 	__u16 range_sgm_inv1;
713*4882a593Smuzhiyun 	__u16 range_sgm_inv0;
714*4882a593Smuzhiyun 	/* DRC_BILAT */
715*4882a593Smuzhiyun 	__u16 bilat_soft_thd;
716*4882a593Smuzhiyun 	__u8 weig_maxl;
717*4882a593Smuzhiyun 	__u8 weig_bilat;
718*4882a593Smuzhiyun 	__u8 enable_soft_thd;
719*4882a593Smuzhiyun 	/* DRC_IIRWG_GAIN */
720*4882a593Smuzhiyun 	__u8 iir_weight;
721*4882a593Smuzhiyun 	__u16 min_ogain;
722*4882a593Smuzhiyun 	/* DRC_LUM3X2_CTRL */
723*4882a593Smuzhiyun 	__u16 gas_t;
724*4882a593Smuzhiyun 	/* DRC_LUM3X2_GAS */
725*4882a593Smuzhiyun 	__u8 gas_l0;
726*4882a593Smuzhiyun 	__u8 gas_l1;
727*4882a593Smuzhiyun 	__u8 gas_l2;
728*4882a593Smuzhiyun 	__u8 gas_l3;
729*4882a593Smuzhiyun 
730*4882a593Smuzhiyun 	__u16 gain_y[ISP32_DRC_Y_NUM];
731*4882a593Smuzhiyun 	__u16 compres_y[ISP32_DRC_Y_NUM];
732*4882a593Smuzhiyun 	__u16 scale_y[ISP32_DRC_Y_NUM];
733*4882a593Smuzhiyun } __attribute__ ((packed));
734*4882a593Smuzhiyun 
735*4882a593Smuzhiyun struct isp32_hdrmge_cfg {
736*4882a593Smuzhiyun 	__u8 s_base;
737*4882a593Smuzhiyun 	__u8 mode;
738*4882a593Smuzhiyun 	__u8 dbg_mode;
739*4882a593Smuzhiyun 	__u8 each_raw_en;
740*4882a593Smuzhiyun 
741*4882a593Smuzhiyun 	__u8 gain2;
742*4882a593Smuzhiyun 
743*4882a593Smuzhiyun 	__u8 lm_dif_0p15;
744*4882a593Smuzhiyun 	__u8 lm_dif_0p9;
745*4882a593Smuzhiyun 	__u8 ms_diff_0p15;
746*4882a593Smuzhiyun 	__u8 ms_dif_0p8;
747*4882a593Smuzhiyun 
748*4882a593Smuzhiyun 	__u16 gain0_inv;
749*4882a593Smuzhiyun 	__u16 gain0;
750*4882a593Smuzhiyun 	__u16 gain1_inv;
751*4882a593Smuzhiyun 	__u16 gain1;
752*4882a593Smuzhiyun 
753*4882a593Smuzhiyun 	__u16 ms_thd1;
754*4882a593Smuzhiyun 	__u16 ms_thd0;
755*4882a593Smuzhiyun 	__u16 ms_scl;
756*4882a593Smuzhiyun 	__u16 lm_thd1;
757*4882a593Smuzhiyun 	__u16 lm_thd0;
758*4882a593Smuzhiyun 	__u16 lm_scl;
759*4882a593Smuzhiyun 	struct isp2x_hdrmge_curve curve;
760*4882a593Smuzhiyun 	__u16 e_y[ISP32_HDRMGE_E_CURVE_NUM];
761*4882a593Smuzhiyun 	__u16 l_raw0[ISP32_HDRMGE_E_CURVE_NUM];
762*4882a593Smuzhiyun 	__u16 l_raw1[ISP32_HDRMGE_E_CURVE_NUM];
763*4882a593Smuzhiyun 	__u16 each_raw_gain0;
764*4882a593Smuzhiyun 	__u16 each_raw_gain1;
765*4882a593Smuzhiyun } __attribute__ ((packed));
766*4882a593Smuzhiyun 
767*4882a593Smuzhiyun struct isp32_rawawb_meas_cfg {
768*4882a593Smuzhiyun 	__u8 bls2_en;
769*4882a593Smuzhiyun 
770*4882a593Smuzhiyun 	__u8 rawawb_sel;
771*4882a593Smuzhiyun 	__u8 bnr2awb_sel;
772*4882a593Smuzhiyun 	__u8 drc2awb_sel;
773*4882a593Smuzhiyun 	/* RAWAWB_CTRL */
774*4882a593Smuzhiyun 	__u8 uv_en0;
775*4882a593Smuzhiyun 	__u8 xy_en0;
776*4882a593Smuzhiyun 	__u8 yuv3d_en0;
777*4882a593Smuzhiyun 	__u8 yuv3d_ls_idx0;
778*4882a593Smuzhiyun 	__u8 yuv3d_ls_idx1;
779*4882a593Smuzhiyun 	__u8 yuv3d_ls_idx2;
780*4882a593Smuzhiyun 	__u8 yuv3d_ls_idx3;
781*4882a593Smuzhiyun 	__u8 in_rshift_to_12bit_en;
782*4882a593Smuzhiyun 	__u8 in_overexposure_check_en;
783*4882a593Smuzhiyun 	__u8 wind_size;
784*4882a593Smuzhiyun 	__u8 rawlsc_bypass_en;
785*4882a593Smuzhiyun 	__u8 light_num;
786*4882a593Smuzhiyun 	__u8 uv_en1;
787*4882a593Smuzhiyun 	__u8 xy_en1;
788*4882a593Smuzhiyun 	__u8 yuv3d_en1;
789*4882a593Smuzhiyun 	__u8 low12bit_val;
790*4882a593Smuzhiyun 	/* RAWAWB_WEIGHT_CURVE_CTRL */
791*4882a593Smuzhiyun 	__u8 wp_luma_wei_en0;
792*4882a593Smuzhiyun 	__u8 wp_luma_wei_en1;
793*4882a593Smuzhiyun 	__u8 wp_blk_wei_en0;
794*4882a593Smuzhiyun 	__u8 wp_blk_wei_en1;
795*4882a593Smuzhiyun 	__u8 wp_hist_xytype;
796*4882a593Smuzhiyun 	/* RAWAWB_MULTIWINDOW_EXC_CTRL */
797*4882a593Smuzhiyun 	__u8 exc_wp_region0_excen;
798*4882a593Smuzhiyun 	__u8 exc_wp_region0_measen;
799*4882a593Smuzhiyun 	__u8 exc_wp_region0_domain;
800*4882a593Smuzhiyun 	__u8 exc_wp_region1_excen;
801*4882a593Smuzhiyun 	__u8 exc_wp_region1_measen;
802*4882a593Smuzhiyun 	__u8 exc_wp_region1_domain;
803*4882a593Smuzhiyun 	__u8 exc_wp_region2_excen;
804*4882a593Smuzhiyun 	__u8 exc_wp_region2_measen;
805*4882a593Smuzhiyun 	__u8 exc_wp_region2_domain;
806*4882a593Smuzhiyun 	__u8 exc_wp_region3_excen;
807*4882a593Smuzhiyun 	__u8 exc_wp_region3_measen;
808*4882a593Smuzhiyun 	__u8 exc_wp_region3_domain;
809*4882a593Smuzhiyun 	__u8 exc_wp_region4_excen;
810*4882a593Smuzhiyun 	__u8 exc_wp_region4_domain;
811*4882a593Smuzhiyun 	__u8 exc_wp_region5_excen;
812*4882a593Smuzhiyun 	__u8 exc_wp_region5_domain;
813*4882a593Smuzhiyun 	__u8 exc_wp_region6_excen;
814*4882a593Smuzhiyun 	__u8 exc_wp_region6_domain;
815*4882a593Smuzhiyun 	__u8 multiwindow_en;
816*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_XCOOR03 */
817*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y0;
818*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y1;
819*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y2;
820*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y3;
821*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_XCOOR47 */
822*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y4;
823*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y5;
824*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y6;
825*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y7;
826*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_XCOOR8 */
827*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_y8;
828*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_YCOOR03 */
829*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w0;
830*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w1;
831*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w2;
832*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w3;
833*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_YCOOR47 */
834*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w4;
835*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w5;
836*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w6;
837*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w7;
838*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_YCOOR8 */
839*4882a593Smuzhiyun 	__u8 wp_luma_weicurve_w8;
840*4882a593Smuzhiyun 	/* RAWAWB_YUV_X1X2_DIS_0 */
841*4882a593Smuzhiyun 	__u8 dis_x1x2_ls0;
842*4882a593Smuzhiyun 	__u8 rotu0_ls0;
843*4882a593Smuzhiyun 	__u8 rotu1_ls0;
844*4882a593Smuzhiyun 	/* RAWAWB_YUV_INTERP_CURVE_UCOOR_0 */
845*4882a593Smuzhiyun 	__u8 rotu2_ls0;
846*4882a593Smuzhiyun 	__u8 rotu3_ls0;
847*4882a593Smuzhiyun 	__u8 rotu4_ls0;
848*4882a593Smuzhiyun 	__u8 rotu5_ls0;
849*4882a593Smuzhiyun 	/* RAWAWB_YUV_X1X2_DIS_1 */
850*4882a593Smuzhiyun 	__u8 dis_x1x2_ls1;
851*4882a593Smuzhiyun 	__u8 rotu0_ls1;
852*4882a593Smuzhiyun 	__u8 rotu1_ls1;
853*4882a593Smuzhiyun 	/* YUV_INTERP_CURVE_UCOOR_1 */
854*4882a593Smuzhiyun 	__u8 rotu2_ls1;
855*4882a593Smuzhiyun 	__u8 rotu3_ls1;
856*4882a593Smuzhiyun 	__u8 rotu4_ls1;
857*4882a593Smuzhiyun 	__u8 rotu5_ls1;
858*4882a593Smuzhiyun 	/* RAWAWB_YUV_X1X2_DIS_2 */
859*4882a593Smuzhiyun 	__u8 dis_x1x2_ls2;
860*4882a593Smuzhiyun 	__u8 rotu0_ls2;
861*4882a593Smuzhiyun 	__u8 rotu1_ls2;
862*4882a593Smuzhiyun 	/* YUV_INTERP_CURVE_UCOOR_2 */
863*4882a593Smuzhiyun 	__u8 rotu2_ls2;
864*4882a593Smuzhiyun 	__u8 rotu3_ls2;
865*4882a593Smuzhiyun 	__u8 rotu4_ls2;
866*4882a593Smuzhiyun 	__u8 rotu5_ls2;
867*4882a593Smuzhiyun 	/* RAWAWB_YUV_X1X2_DIS_3 */
868*4882a593Smuzhiyun 	__u8 dis_x1x2_ls3;
869*4882a593Smuzhiyun 	__u8 rotu0_ls3;
870*4882a593Smuzhiyun 	__u8 rotu1_ls3;
871*4882a593Smuzhiyun 	__u8 rotu2_ls3;
872*4882a593Smuzhiyun 	__u8 rotu3_ls3;
873*4882a593Smuzhiyun 	__u8 rotu4_ls3;
874*4882a593Smuzhiyun 	__u8 rotu5_ls3;
875*4882a593Smuzhiyun 	/* RAWAWB_EXC_WP_WEIGHT */
876*4882a593Smuzhiyun 	__u8 exc_wp_region0_weight;
877*4882a593Smuzhiyun 	__u8 exc_wp_region1_weight;
878*4882a593Smuzhiyun 	__u8 exc_wp_region2_weight;
879*4882a593Smuzhiyun 	__u8 exc_wp_region3_weight;
880*4882a593Smuzhiyun 	__u8 exc_wp_region4_weight;
881*4882a593Smuzhiyun 	__u8 exc_wp_region5_weight;
882*4882a593Smuzhiyun 	__u8 exc_wp_region6_weight;
883*4882a593Smuzhiyun 	/* RAWAWB_WRAM_DATA */
884*4882a593Smuzhiyun 	__u8 wp_blk_wei_w[ISP32_RAWAWB_WEIGHT_NUM];
885*4882a593Smuzhiyun 	/* RAWAWB_BLK_CTRL */
886*4882a593Smuzhiyun 	__u8 blk_measure_enable;
887*4882a593Smuzhiyun 	__u8 blk_measure_mode;
888*4882a593Smuzhiyun 	__u8 blk_measure_xytype;
889*4882a593Smuzhiyun 	__u8 blk_rtdw_measure_en;
890*4882a593Smuzhiyun 	__u8 blk_measure_illu_idx;
891*4882a593Smuzhiyun 
892*4882a593Smuzhiyun 	/* for isp32_lite */
893*4882a593Smuzhiyun 	__u8 ds16x8_mode_en;
894*4882a593Smuzhiyun 
895*4882a593Smuzhiyun 	__u8 blk_with_luma_wei_en;
896*4882a593Smuzhiyun 	__u16 in_overexposure_threshold;
897*4882a593Smuzhiyun 	/* RAWAWB_LIMIT_RG_MAX*/
898*4882a593Smuzhiyun 	__u16 r_max;
899*4882a593Smuzhiyun 	__u16 g_max;
900*4882a593Smuzhiyun 	/* RAWAWB_LIMIT_BY_MAX */
901*4882a593Smuzhiyun 	__u16 b_max;
902*4882a593Smuzhiyun 	__u16 y_max;
903*4882a593Smuzhiyun 	/* RAWAWB_LIMIT_RG_MIN */
904*4882a593Smuzhiyun 	__u16 r_min;
905*4882a593Smuzhiyun 	__u16 g_min;
906*4882a593Smuzhiyun 	/* RAWAWB_LIMIT_BY_MIN */
907*4882a593Smuzhiyun 	__u16 b_min;
908*4882a593Smuzhiyun 	__u16 y_min;
909*4882a593Smuzhiyun 	/* RAWAWB_WIN_OFFS */
910*4882a593Smuzhiyun 	__u16 h_offs;
911*4882a593Smuzhiyun 	__u16 v_offs;
912*4882a593Smuzhiyun 	/* RAWAWB_WIN_SIZE */
913*4882a593Smuzhiyun 	__u16 h_size;
914*4882a593Smuzhiyun 	__u16 v_size;
915*4882a593Smuzhiyun 	/* RAWAWB_YWEIGHT_CURVE_YCOOR8 */
916*4882a593Smuzhiyun 	__u16 pre_wbgain_inv_r;
917*4882a593Smuzhiyun 	/* RAWAWB_PRE_WBGAIN_INV */
918*4882a593Smuzhiyun 	__u16 pre_wbgain_inv_g;
919*4882a593Smuzhiyun 	__u16 pre_wbgain_inv_b;
920*4882a593Smuzhiyun 	/* RAWAWB_UV_DETC_VERTEX */
921*4882a593Smuzhiyun 	__u16 vertex0_u_0;
922*4882a593Smuzhiyun 	__u16 vertex0_v_0;
923*4882a593Smuzhiyun 
924*4882a593Smuzhiyun 	__u16 vertex1_u_0;
925*4882a593Smuzhiyun 	__u16 vertex1_v_0;
926*4882a593Smuzhiyun 
927*4882a593Smuzhiyun 	__u16 vertex2_u_0;
928*4882a593Smuzhiyun 	__u16 vertex2_v_0;
929*4882a593Smuzhiyun 
930*4882a593Smuzhiyun 	__u16 vertex3_u_0;
931*4882a593Smuzhiyun 	__u16 vertex3_v_0;
932*4882a593Smuzhiyun 
933*4882a593Smuzhiyun 	__u16 vertex0_u_1;
934*4882a593Smuzhiyun 	__u16 vertex0_v_1;
935*4882a593Smuzhiyun 
936*4882a593Smuzhiyun 	__u16 vertex1_u_1;
937*4882a593Smuzhiyun 	__u16 vertex1_v_1;
938*4882a593Smuzhiyun 
939*4882a593Smuzhiyun 	__u16 vertex2_u_1;
940*4882a593Smuzhiyun 	__u16 vertex2_v_1;
941*4882a593Smuzhiyun 
942*4882a593Smuzhiyun 	__u16 vertex3_u_1;
943*4882a593Smuzhiyun 	__u16 vertex3_v_1;
944*4882a593Smuzhiyun 
945*4882a593Smuzhiyun 	__u16 vertex0_u_2;
946*4882a593Smuzhiyun 	__u16 vertex0_v_2;
947*4882a593Smuzhiyun 
948*4882a593Smuzhiyun 	__u16 vertex1_u_2;
949*4882a593Smuzhiyun 	__u16 vertex1_v_2;
950*4882a593Smuzhiyun 
951*4882a593Smuzhiyun 	__u16 vertex2_u_2;
952*4882a593Smuzhiyun 	__u16 vertex2_v_2;
953*4882a593Smuzhiyun 
954*4882a593Smuzhiyun 	__u16 vertex3_u_2;
955*4882a593Smuzhiyun 	__u16 vertex3_v_2;
956*4882a593Smuzhiyun 
957*4882a593Smuzhiyun 	__u16 vertex0_u_3;
958*4882a593Smuzhiyun 	__u16 vertex0_v_3;
959*4882a593Smuzhiyun 
960*4882a593Smuzhiyun 	__u16 vertex1_u_3;
961*4882a593Smuzhiyun 	__u16 vertex1_v_3;
962*4882a593Smuzhiyun 
963*4882a593Smuzhiyun 	__u16 vertex2_u_3;
964*4882a593Smuzhiyun 	__u16 vertex2_v_3;
965*4882a593Smuzhiyun 
966*4882a593Smuzhiyun 	__u16 vertex3_u_3;
967*4882a593Smuzhiyun 	__u16 vertex3_v_3;
968*4882a593Smuzhiyun 	/* RAWAWB_RGB2XY_WT */
969*4882a593Smuzhiyun 	__u16 wt0;
970*4882a593Smuzhiyun 	__u16 wt1;
971*4882a593Smuzhiyun 	__u16 wt2;
972*4882a593Smuzhiyun 	/* RAWAWB_RGB2XY_MAT */
973*4882a593Smuzhiyun 	__u16 mat0_x;
974*4882a593Smuzhiyun 	__u16 mat0_y;
975*4882a593Smuzhiyun 
976*4882a593Smuzhiyun 	__u16 mat1_x;
977*4882a593Smuzhiyun 	__u16 mat1_y;
978*4882a593Smuzhiyun 
979*4882a593Smuzhiyun 	__u16 mat2_x;
980*4882a593Smuzhiyun 	__u16 mat2_y;
981*4882a593Smuzhiyun 	/* RAWAWB_XY_DETC_NOR */
982*4882a593Smuzhiyun 	__u16 nor_x0_0;
983*4882a593Smuzhiyun 	__u16 nor_x1_0;
984*4882a593Smuzhiyun 	__u16 nor_y0_0;
985*4882a593Smuzhiyun 	__u16 nor_y1_0;
986*4882a593Smuzhiyun 
987*4882a593Smuzhiyun 	__u16 nor_x0_1;
988*4882a593Smuzhiyun 	__u16 nor_x1_1;
989*4882a593Smuzhiyun 	__u16 nor_y0_1;
990*4882a593Smuzhiyun 	__u16 nor_y1_1;
991*4882a593Smuzhiyun 
992*4882a593Smuzhiyun 	__u16 nor_x0_2;
993*4882a593Smuzhiyun 	__u16 nor_x1_2;
994*4882a593Smuzhiyun 	__u16 nor_y0_2;
995*4882a593Smuzhiyun 	__u16 nor_y1_2;
996*4882a593Smuzhiyun 
997*4882a593Smuzhiyun 	__u16 nor_x0_3;
998*4882a593Smuzhiyun 	__u16 nor_x1_3;
999*4882a593Smuzhiyun 	__u16 nor_y0_3;
1000*4882a593Smuzhiyun 	__u16 nor_y1_3;
1001*4882a593Smuzhiyun 	/* RAWAWB_XY_DETC_BIG */
1002*4882a593Smuzhiyun 	__u16 big_x0_0;
1003*4882a593Smuzhiyun 	__u16 big_x1_0;
1004*4882a593Smuzhiyun 	__u16 big_y0_0;
1005*4882a593Smuzhiyun 	__u16 big_y1_0;
1006*4882a593Smuzhiyun 
1007*4882a593Smuzhiyun 	__u16 big_x0_1;
1008*4882a593Smuzhiyun 	__u16 big_x1_1;
1009*4882a593Smuzhiyun 	__u16 big_y0_1;
1010*4882a593Smuzhiyun 	__u16 big_y1_1;
1011*4882a593Smuzhiyun 
1012*4882a593Smuzhiyun 	__u16 big_x0_2;
1013*4882a593Smuzhiyun 	__u16 big_x1_2;
1014*4882a593Smuzhiyun 	__u16 big_y0_2;
1015*4882a593Smuzhiyun 	__u16 big_y1_2;
1016*4882a593Smuzhiyun 
1017*4882a593Smuzhiyun 	__u16 big_x0_3;
1018*4882a593Smuzhiyun 	__u16 big_x1_3;
1019*4882a593Smuzhiyun 	__u16 big_y0_3;
1020*4882a593Smuzhiyun 	__u16 big_y1_3;
1021*4882a593Smuzhiyun 	/* RAWAWB_MULTIWINDOW */
1022*4882a593Smuzhiyun 	__u16 multiwindow0_v_offs;
1023*4882a593Smuzhiyun 	__u16 multiwindow0_h_offs;
1024*4882a593Smuzhiyun 	__u16 multiwindow0_v_size;
1025*4882a593Smuzhiyun 	__u16 multiwindow0_h_size;
1026*4882a593Smuzhiyun 
1027*4882a593Smuzhiyun 	__u16 multiwindow1_v_offs;
1028*4882a593Smuzhiyun 	__u16 multiwindow1_h_offs;
1029*4882a593Smuzhiyun 	__u16 multiwindow1_v_size;
1030*4882a593Smuzhiyun 	__u16 multiwindow1_h_size;
1031*4882a593Smuzhiyun 
1032*4882a593Smuzhiyun 	__u16 multiwindow2_v_offs;
1033*4882a593Smuzhiyun 	__u16 multiwindow2_h_offs;
1034*4882a593Smuzhiyun 	__u16 multiwindow2_v_size;
1035*4882a593Smuzhiyun 	__u16 multiwindow2_h_size;
1036*4882a593Smuzhiyun 
1037*4882a593Smuzhiyun 	__u16 multiwindow3_v_offs;
1038*4882a593Smuzhiyun 	__u16 multiwindow3_h_offs;
1039*4882a593Smuzhiyun 	__u16 multiwindow3_v_size;
1040*4882a593Smuzhiyun 	__u16 multiwindow3_h_size;
1041*4882a593Smuzhiyun 	/* RAWAWB_EXC_WP_REGION */
1042*4882a593Smuzhiyun 	__u16 exc_wp_region0_xu0;
1043*4882a593Smuzhiyun 	__u16 exc_wp_region0_xu1;
1044*4882a593Smuzhiyun 
1045*4882a593Smuzhiyun 	__u16 exc_wp_region0_yv0;
1046*4882a593Smuzhiyun 	__u16 exc_wp_region0_yv1;
1047*4882a593Smuzhiyun 
1048*4882a593Smuzhiyun 	__u16 exc_wp_region1_xu0;
1049*4882a593Smuzhiyun 	__u16 exc_wp_region1_xu1;
1050*4882a593Smuzhiyun 
1051*4882a593Smuzhiyun 	__u16 exc_wp_region1_yv0;
1052*4882a593Smuzhiyun 	__u16 exc_wp_region1_yv1;
1053*4882a593Smuzhiyun 
1054*4882a593Smuzhiyun 	__u16 exc_wp_region2_xu0;
1055*4882a593Smuzhiyun 	__u16 exc_wp_region2_xu1;
1056*4882a593Smuzhiyun 
1057*4882a593Smuzhiyun 	__u16 exc_wp_region2_yv0;
1058*4882a593Smuzhiyun 	__u16 exc_wp_region2_yv1;
1059*4882a593Smuzhiyun 
1060*4882a593Smuzhiyun 	__u16 exc_wp_region3_xu0;
1061*4882a593Smuzhiyun 	__u16 exc_wp_region3_xu1;
1062*4882a593Smuzhiyun 
1063*4882a593Smuzhiyun 	__u16 exc_wp_region3_yv0;
1064*4882a593Smuzhiyun 	__u16 exc_wp_region3_yv1;
1065*4882a593Smuzhiyun 
1066*4882a593Smuzhiyun 	__u16 exc_wp_region4_xu0;
1067*4882a593Smuzhiyun 	__u16 exc_wp_region4_xu1;
1068*4882a593Smuzhiyun 
1069*4882a593Smuzhiyun 	__u16 exc_wp_region4_yv0;
1070*4882a593Smuzhiyun 	__u16 exc_wp_region4_yv1;
1071*4882a593Smuzhiyun 
1072*4882a593Smuzhiyun 	__u16 exc_wp_region5_xu0;
1073*4882a593Smuzhiyun 	__u16 exc_wp_region5_xu1;
1074*4882a593Smuzhiyun 
1075*4882a593Smuzhiyun 	__u16 exc_wp_region5_yv0;
1076*4882a593Smuzhiyun 	__u16 exc_wp_region5_yv1;
1077*4882a593Smuzhiyun 
1078*4882a593Smuzhiyun 	__u16 exc_wp_region6_xu0;
1079*4882a593Smuzhiyun 	__u16 exc_wp_region6_xu1;
1080*4882a593Smuzhiyun 
1081*4882a593Smuzhiyun 	__u16 exc_wp_region6_yv0;
1082*4882a593Smuzhiyun 	__u16 exc_wp_region6_yv1;
1083*4882a593Smuzhiyun 	/* RAWAWB_YUV_RGB2ROTY */
1084*4882a593Smuzhiyun 	__u16 rgb2ryuvmat0_y;
1085*4882a593Smuzhiyun 	__u16 rgb2ryuvmat1_y;
1086*4882a593Smuzhiyun 	__u16 rgb2ryuvmat2_y;
1087*4882a593Smuzhiyun 	__u16 rgb2ryuvofs_y;
1088*4882a593Smuzhiyun 	/* RAWAWB_YUV_RGB2ROTU */
1089*4882a593Smuzhiyun 	__u16 rgb2ryuvmat0_u;
1090*4882a593Smuzhiyun 	__u16 rgb2ryuvmat1_u;
1091*4882a593Smuzhiyun 	__u16 rgb2ryuvmat2_u;
1092*4882a593Smuzhiyun 	__u16 rgb2ryuvofs_u;
1093*4882a593Smuzhiyun 	/* RAWAWB_YUV_RGB2ROTV */
1094*4882a593Smuzhiyun 	__u16 rgb2ryuvmat0_v;
1095*4882a593Smuzhiyun 	__u16 rgb2ryuvmat1_v;
1096*4882a593Smuzhiyun 	__u16 rgb2ryuvmat2_v;
1097*4882a593Smuzhiyun 	__u16 rgb2ryuvofs_v;
1098*4882a593Smuzhiyun 	/* RAWAWB_YUV_X_COOR */
1099*4882a593Smuzhiyun 	__u16 coor_x1_ls0_y;
1100*4882a593Smuzhiyun 	__u16 vec_x21_ls0_y;
1101*4882a593Smuzhiyun 	__u16 coor_x1_ls0_u;
1102*4882a593Smuzhiyun 	__u16 vec_x21_ls0_u;
1103*4882a593Smuzhiyun 	__u16 coor_x1_ls0_v;
1104*4882a593Smuzhiyun 	__u16 vec_x21_ls0_v;
1105*4882a593Smuzhiyun 
1106*4882a593Smuzhiyun 	__u16 coor_x1_ls1_y;
1107*4882a593Smuzhiyun 	__u16 vec_x21_ls1_y;
1108*4882a593Smuzhiyun 	__u16 coor_x1_ls1_u;
1109*4882a593Smuzhiyun 	__u16 vec_x21_ls1_u;
1110*4882a593Smuzhiyun 	__u16 coor_x1_ls1_v;
1111*4882a593Smuzhiyun 	__u16 vec_x21_ls1_v;
1112*4882a593Smuzhiyun 
1113*4882a593Smuzhiyun 	__u16 coor_x1_ls2_y;
1114*4882a593Smuzhiyun 	__u16 vec_x21_ls2_y;
1115*4882a593Smuzhiyun 	__u16 coor_x1_ls2_u;
1116*4882a593Smuzhiyun 	__u16 vec_x21_ls2_v;
1117*4882a593Smuzhiyun 	__u16 coor_x1_ls2_v;
1118*4882a593Smuzhiyun 	__u16 vec_x21_ls2_u;
1119*4882a593Smuzhiyun 
1120*4882a593Smuzhiyun 	__u16 coor_x1_ls3_y;
1121*4882a593Smuzhiyun 	__u16 vec_x21_ls3_y;
1122*4882a593Smuzhiyun 	__u16 coor_x1_ls3_u;
1123*4882a593Smuzhiyun 	__u16 vec_x21_ls3_u;
1124*4882a593Smuzhiyun 	__u16 coor_x1_ls3_v;
1125*4882a593Smuzhiyun 	__u16 vec_x21_ls3_v;
1126*4882a593Smuzhiyun 	/* RAWAWB_YUV_INTERP_CURVE_TH */
1127*4882a593Smuzhiyun 	__u16 th0_ls0;
1128*4882a593Smuzhiyun 	__u16 th1_ls0;
1129*4882a593Smuzhiyun 	__u16 th2_ls0;
1130*4882a593Smuzhiyun 	__u16 th3_ls0;
1131*4882a593Smuzhiyun 	__u16 th4_ls0;
1132*4882a593Smuzhiyun 	__u16 th5_ls0;
1133*4882a593Smuzhiyun 
1134*4882a593Smuzhiyun 	__u16 th0_ls1;
1135*4882a593Smuzhiyun 	__u16 th1_ls1;
1136*4882a593Smuzhiyun 	__u16 th2_ls1;
1137*4882a593Smuzhiyun 	__u16 th3_ls1;
1138*4882a593Smuzhiyun 	__u16 th4_ls1;
1139*4882a593Smuzhiyun 	__u16 th5_ls1;
1140*4882a593Smuzhiyun 
1141*4882a593Smuzhiyun 	__u16 th0_ls2;
1142*4882a593Smuzhiyun 	__u16 th1_ls2;
1143*4882a593Smuzhiyun 	__u16 th2_ls2;
1144*4882a593Smuzhiyun 	__u16 th3_ls2;
1145*4882a593Smuzhiyun 	__u16 th4_ls2;
1146*4882a593Smuzhiyun 	__u16 th5_ls2;
1147*4882a593Smuzhiyun 
1148*4882a593Smuzhiyun 	__u16 th0_ls3;
1149*4882a593Smuzhiyun 	__u16 th1_ls3;
1150*4882a593Smuzhiyun 	__u16 th2_ls3;
1151*4882a593Smuzhiyun 	__u16 th3_ls3;
1152*4882a593Smuzhiyun 	__u16 th4_ls3;
1153*4882a593Smuzhiyun 	__u16 th5_ls3;
1154*4882a593Smuzhiyun 	/* RAWAWB_UV_DETC_ISLOPE */
1155*4882a593Smuzhiyun 	__u32 islope01_0;
1156*4882a593Smuzhiyun 	__u32 islope12_0;
1157*4882a593Smuzhiyun 	__u32 islope23_0;
1158*4882a593Smuzhiyun 	__u32 islope30_0;
1159*4882a593Smuzhiyun 	__u32 islope01_1;
1160*4882a593Smuzhiyun 	__u32 islope12_1;
1161*4882a593Smuzhiyun 	__u32 islope23_1;
1162*4882a593Smuzhiyun 	__u32 islope30_1;
1163*4882a593Smuzhiyun 	__u32 islope01_2;
1164*4882a593Smuzhiyun 	__u32 islope12_2;
1165*4882a593Smuzhiyun 	__u32 islope23_2;
1166*4882a593Smuzhiyun 	__u32 islope30_2;
1167*4882a593Smuzhiyun 	__u32 islope01_3;
1168*4882a593Smuzhiyun 	__u32 islope12_3;
1169*4882a593Smuzhiyun 	__u32 islope23_3;
1170*4882a593Smuzhiyun 	__u32 islope30_3;
1171*4882a593Smuzhiyun 
1172*4882a593Smuzhiyun 	/* WIN_WEIGHT for isp32_lite */
1173*4882a593Smuzhiyun 	__u32 win_weight[ISP32L_RAWAWB_WEIGHT_NUM];
1174*4882a593Smuzhiyun 	struct isp2x_bls_fixed_val bls2_val;
1175*4882a593Smuzhiyun } __attribute__ ((packed));
1176*4882a593Smuzhiyun 
1177*4882a593Smuzhiyun struct isp32_rawaf_meas_cfg {
1178*4882a593Smuzhiyun 	__u8 rawaf_sel;
1179*4882a593Smuzhiyun 	__u8 num_afm_win;
1180*4882a593Smuzhiyun 	/* for isp32_lite */
1181*4882a593Smuzhiyun 	__u8 bnr2af_sel;
1182*4882a593Smuzhiyun 
1183*4882a593Smuzhiyun 	/* CTRL */
1184*4882a593Smuzhiyun 	__u8 gamma_en;
1185*4882a593Smuzhiyun 	__u8 gaus_en;
1186*4882a593Smuzhiyun 	__u8 v1_fir_sel;
1187*4882a593Smuzhiyun 	__u8 hiir_en;
1188*4882a593Smuzhiyun 	__u8 viir_en;
1189*4882a593Smuzhiyun 	__u8 accu_8bit_mode;
1190*4882a593Smuzhiyun 	__u8 ldg_en;
1191*4882a593Smuzhiyun 	__u8 h1_fv_mode;
1192*4882a593Smuzhiyun 	__u8 h2_fv_mode;
1193*4882a593Smuzhiyun 	__u8 v1_fv_mode;
1194*4882a593Smuzhiyun 	__u8 v2_fv_mode;
1195*4882a593Smuzhiyun 	__u8 ae_mode;
1196*4882a593Smuzhiyun 	__u8 y_mode;
1197*4882a593Smuzhiyun 	__u8 vldg_sel;
1198*4882a593Smuzhiyun 	__u8 sobel_sel;
1199*4882a593Smuzhiyun 	__u8 v_dnscl_mode;
1200*4882a593Smuzhiyun 	__u8 from_awb;
1201*4882a593Smuzhiyun 	__u8 from_ynr;
1202*4882a593Smuzhiyun 	__u8 ae_config_use;
1203*4882a593Smuzhiyun 	/* for isp32_lite */
1204*4882a593Smuzhiyun 	__u8 ae_sel;
1205*4882a593Smuzhiyun 
1206*4882a593Smuzhiyun 	/* for isp32_lite */
1207*4882a593Smuzhiyun 	__u8 hiir_left_border_mode;
1208*4882a593Smuzhiyun 	__u8 avg_ds_en;
1209*4882a593Smuzhiyun 	__u8 avg_ds_mode;
1210*4882a593Smuzhiyun 	__u8 h1_acc_mode;
1211*4882a593Smuzhiyun 	__u8 h2_acc_mode;
1212*4882a593Smuzhiyun 	__u8 v1_acc_mode;
1213*4882a593Smuzhiyun 	__u8 v2_acc_mode;
1214*4882a593Smuzhiyun 
1215*4882a593Smuzhiyun 	/* CTRL1 for isp32_lite */
1216*4882a593Smuzhiyun 	__s16 bls_offset;
1217*4882a593Smuzhiyun 	__u8 bls_en;
1218*4882a593Smuzhiyun 	__u8 hldg_dilate_num;
1219*4882a593Smuzhiyun 
1220*4882a593Smuzhiyun 	/* WINA_B */
1221*4882a593Smuzhiyun 	struct isp2x_window win[ISP32_RAWAF_WIN_NUM];
1222*4882a593Smuzhiyun 	/* INT_LINE */
1223*4882a593Smuzhiyun 	__u8 line_num[ISP32_RAWAF_LINE_NUM];
1224*4882a593Smuzhiyun 	__u8 line_en[ISP32_RAWAF_LINE_NUM];
1225*4882a593Smuzhiyun 	/* THRES */
1226*4882a593Smuzhiyun 	__u16 afm_thres;
1227*4882a593Smuzhiyun 	/* VAR_SHIFT */
1228*4882a593Smuzhiyun 	__u8 afm_var_shift[ISP32_RAWAF_WIN_NUM];
1229*4882a593Smuzhiyun 	__u8 lum_var_shift[ISP32_RAWAF_WIN_NUM];
1230*4882a593Smuzhiyun 	/* for isp32_lite */
1231*4882a593Smuzhiyun 	__u8 tnrin_shift;
1232*4882a593Smuzhiyun 
1233*4882a593Smuzhiyun 	/* HVIIR_VAR_SHIFT */
1234*4882a593Smuzhiyun 	__u8 h1iir_var_shift;
1235*4882a593Smuzhiyun 	__u8 h2iir_var_shift;
1236*4882a593Smuzhiyun 	__u8 v1iir_var_shift;
1237*4882a593Smuzhiyun 	__u8 v2iir_var_shift;
1238*4882a593Smuzhiyun 	/* GAUS_COE */
1239*4882a593Smuzhiyun 	__s8 gaus_coe[ISP32_RAWAF_GAUS_COE_NUM];
1240*4882a593Smuzhiyun 
1241*4882a593Smuzhiyun 	/* GAMMA_Y */
1242*4882a593Smuzhiyun 	__u16 gamma_y[ISP32_RAWAF_GAMMA_NUM];
1243*4882a593Smuzhiyun 	/* HIIR_THRESH */
1244*4882a593Smuzhiyun 	__u16 h_fv_thresh;
1245*4882a593Smuzhiyun 	__u16 v_fv_thresh;
1246*4882a593Smuzhiyun 	struct isp3x_rawaf_curve curve_h[ISP32_RAWAF_CURVE_NUM];
1247*4882a593Smuzhiyun 	struct isp3x_rawaf_curve curve_v[ISP32_RAWAF_CURVE_NUM];
1248*4882a593Smuzhiyun 	__s16 h1iir1_coe[ISP32_RAWAF_HIIR_COE_NUM];
1249*4882a593Smuzhiyun 	__s16 h1iir2_coe[ISP32_RAWAF_HIIR_COE_NUM];
1250*4882a593Smuzhiyun 	__s16 h2iir1_coe[ISP32_RAWAF_HIIR_COE_NUM];
1251*4882a593Smuzhiyun 	__s16 h2iir2_coe[ISP32_RAWAF_HIIR_COE_NUM];
1252*4882a593Smuzhiyun 	__s16 v1iir_coe[ISP32_RAWAF_VIIR_COE_NUM];
1253*4882a593Smuzhiyun 	__s16 v2iir_coe[ISP32_RAWAF_VIIR_COE_NUM];
1254*4882a593Smuzhiyun 	__s16 v1fir_coe[ISP32_RAWAF_VFIR_COE_NUM];
1255*4882a593Smuzhiyun 	__s16 v2fir_coe[ISP32_RAWAF_VFIR_COE_NUM];
1256*4882a593Smuzhiyun 	__u16 highlit_thresh;
1257*4882a593Smuzhiyun 
1258*4882a593Smuzhiyun 	/* CORING_H for isp32_lite */
1259*4882a593Smuzhiyun 	__u16 h_fv_limit;
1260*4882a593Smuzhiyun 	__u16 h_fv_slope;
1261*4882a593Smuzhiyun 	/* CORING_V for isp32_lite */
1262*4882a593Smuzhiyun 	__u16 v_fv_limit;
1263*4882a593Smuzhiyun 	__u16 v_fv_slope;
1264*4882a593Smuzhiyun } __attribute__ ((packed));
1265*4882a593Smuzhiyun 
1266*4882a593Smuzhiyun struct isp32_cac_cfg {
1267*4882a593Smuzhiyun 	__u8 bypass_en;
1268*4882a593Smuzhiyun 	__u8 center_en;
1269*4882a593Smuzhiyun 	__u8 clip_g_mode;
1270*4882a593Smuzhiyun 	__u8 edge_detect_en;
1271*4882a593Smuzhiyun 	__u8 neg_clip0_en;
1272*4882a593Smuzhiyun 
1273*4882a593Smuzhiyun 	__u8 flat_thed_b;
1274*4882a593Smuzhiyun 	__u8 flat_thed_r;
1275*4882a593Smuzhiyun 
1276*4882a593Smuzhiyun 	__u8 psf_sft_bit;
1277*4882a593Smuzhiyun 	__u16 cfg_num;
1278*4882a593Smuzhiyun 
1279*4882a593Smuzhiyun 	__u16 center_width;
1280*4882a593Smuzhiyun 	__u16 center_height;
1281*4882a593Smuzhiyun 
1282*4882a593Smuzhiyun 	__u16 strength[ISP32_CAC_STRENGTH_NUM];
1283*4882a593Smuzhiyun 
1284*4882a593Smuzhiyun 	__u16 offset_b;
1285*4882a593Smuzhiyun 	__u16 offset_r;
1286*4882a593Smuzhiyun 
1287*4882a593Smuzhiyun 	__u32 expo_thed_b;
1288*4882a593Smuzhiyun 	__u32 expo_thed_r;
1289*4882a593Smuzhiyun 	__u32 expo_adj_b;
1290*4882a593Smuzhiyun 	__u32 expo_adj_r;
1291*4882a593Smuzhiyun 
1292*4882a593Smuzhiyun 	__u32 hsize;
1293*4882a593Smuzhiyun 	__u32 vsize;
1294*4882a593Smuzhiyun 	__s32 buf_fd;
1295*4882a593Smuzhiyun } __attribute__ ((packed));
1296*4882a593Smuzhiyun 
1297*4882a593Smuzhiyun struct isp32_vsm_cfg {
1298*4882a593Smuzhiyun 	__u8 h_segments;
1299*4882a593Smuzhiyun 	__u8 v_segments;
1300*4882a593Smuzhiyun 	__u16 h_offs;
1301*4882a593Smuzhiyun 	__u16 v_offs;
1302*4882a593Smuzhiyun 	__u16 h_size;
1303*4882a593Smuzhiyun 	__u16 v_size;
1304*4882a593Smuzhiyun } __attribute__ ((packed));
1305*4882a593Smuzhiyun 
1306*4882a593Smuzhiyun struct isp32_isp_other_cfg {
1307*4882a593Smuzhiyun 	struct isp32_bls_cfg bls_cfg;
1308*4882a593Smuzhiyun 	struct isp2x_dpcc_cfg dpcc_cfg;
1309*4882a593Smuzhiyun 	struct isp3x_lsc_cfg lsc_cfg;
1310*4882a593Smuzhiyun 	struct isp32_awb_gain_cfg awb_gain_cfg;
1311*4882a593Smuzhiyun 	struct isp21_gic_cfg gic_cfg;
1312*4882a593Smuzhiyun 	struct isp32_debayer_cfg debayer_cfg;
1313*4882a593Smuzhiyun 	struct isp32_ccm_cfg ccm_cfg;
1314*4882a593Smuzhiyun 	struct isp3x_gammaout_cfg gammaout_cfg;
1315*4882a593Smuzhiyun 	struct isp2x_cproc_cfg cproc_cfg;
1316*4882a593Smuzhiyun 	struct isp2x_ie_cfg ie_cfg;
1317*4882a593Smuzhiyun 	struct isp2x_sdg_cfg sdg_cfg;
1318*4882a593Smuzhiyun 	struct isp32_drc_cfg drc_cfg;
1319*4882a593Smuzhiyun 	struct isp32_hdrmge_cfg hdrmge_cfg;
1320*4882a593Smuzhiyun 	struct isp32_dhaz_cfg dhaz_cfg;
1321*4882a593Smuzhiyun 	struct isp2x_3dlut_cfg isp3dlut_cfg;
1322*4882a593Smuzhiyun 	struct isp32_ldch_cfg ldch_cfg;
1323*4882a593Smuzhiyun 	struct isp32_baynr_cfg baynr_cfg;
1324*4882a593Smuzhiyun 	struct isp32_bay3d_cfg bay3d_cfg;
1325*4882a593Smuzhiyun 	struct isp32_ynr_cfg ynr_cfg;
1326*4882a593Smuzhiyun 	struct isp32_cnr_cfg cnr_cfg;
1327*4882a593Smuzhiyun 	struct isp32_sharp_cfg sharp_cfg;
1328*4882a593Smuzhiyun 	struct isp32_cac_cfg cac_cfg;
1329*4882a593Smuzhiyun 	struct isp3x_gain_cfg gain_cfg;
1330*4882a593Smuzhiyun 	struct isp21_csm_cfg csm_cfg;
1331*4882a593Smuzhiyun 	struct isp21_cgc_cfg cgc_cfg;
1332*4882a593Smuzhiyun 	struct isp32_vsm_cfg vsm_cfg;
1333*4882a593Smuzhiyun } __attribute__ ((packed));
1334*4882a593Smuzhiyun 
1335*4882a593Smuzhiyun struct isp32_isp_meas_cfg {
1336*4882a593Smuzhiyun 	struct isp32_rawaf_meas_cfg rawaf;
1337*4882a593Smuzhiyun 	struct isp32_rawawb_meas_cfg rawawb;
1338*4882a593Smuzhiyun 	struct isp2x_rawaelite_meas_cfg rawae0;
1339*4882a593Smuzhiyun 	struct isp2x_rawaebig_meas_cfg rawae1;
1340*4882a593Smuzhiyun 	struct isp2x_rawaebig_meas_cfg rawae2;
1341*4882a593Smuzhiyun 	struct isp2x_rawaebig_meas_cfg rawae3;
1342*4882a593Smuzhiyun 	struct isp2x_rawhistlite_cfg rawhist0;
1343*4882a593Smuzhiyun 	struct isp2x_rawhistbig_cfg rawhist1;
1344*4882a593Smuzhiyun 	struct isp2x_rawhistbig_cfg rawhist2;
1345*4882a593Smuzhiyun 	struct isp2x_rawhistbig_cfg rawhist3;
1346*4882a593Smuzhiyun } __attribute__ ((packed));
1347*4882a593Smuzhiyun 
1348*4882a593Smuzhiyun struct isp32_rawae_meas_data {
1349*4882a593Smuzhiyun 	__u32 channelg_xy:12;
1350*4882a593Smuzhiyun 	__u32 channelb_xy:10;
1351*4882a593Smuzhiyun 	__u32 channelr_xy:10;
1352*4882a593Smuzhiyun } __attribute__ ((packed));
1353*4882a593Smuzhiyun 
1354*4882a593Smuzhiyun struct isp32_rawaebig_stat0 {
1355*4882a593Smuzhiyun 	struct isp32_rawae_meas_data data[ISP32_RAWAEBIG_MEAN_NUM];
1356*4882a593Smuzhiyun 	__u32 reserved[3];
1357*4882a593Smuzhiyun } __attribute__ ((packed));
1358*4882a593Smuzhiyun 
1359*4882a593Smuzhiyun struct isp32_rawaebig_stat1 {
1360*4882a593Smuzhiyun 	__u32 sumr[ISP32_RAWAEBIG_SUBWIN_NUM];
1361*4882a593Smuzhiyun 	__u32 sumg[ISP32_RAWAEBIG_SUBWIN_NUM];
1362*4882a593Smuzhiyun 	__u32 sumb[ISP32_RAWAEBIG_SUBWIN_NUM];
1363*4882a593Smuzhiyun } __attribute__ ((packed));
1364*4882a593Smuzhiyun 
1365*4882a593Smuzhiyun struct isp32_rawaelite_stat {
1366*4882a593Smuzhiyun 	struct isp32_rawae_meas_data data[ISP32_RAWAELITE_MEAN_NUM];
1367*4882a593Smuzhiyun 	__u32 reserved[21];
1368*4882a593Smuzhiyun } __attribute__ ((packed));
1369*4882a593Smuzhiyun 
1370*4882a593Smuzhiyun struct isp32_rawaf_stat {
1371*4882a593Smuzhiyun 	struct isp3x_rawaf_ramdata ramdata[ISP32_RAWAF_SUMDATA_NUM];
1372*4882a593Smuzhiyun 	__u32 int_state;
1373*4882a593Smuzhiyun 	__u32 afm_sum_b;
1374*4882a593Smuzhiyun 	__u32 afm_lum_b;
1375*4882a593Smuzhiyun 	__u32 highlit_cnt_winb;
1376*4882a593Smuzhiyun 	__u32 reserved[18];
1377*4882a593Smuzhiyun } __attribute__ ((packed));
1378*4882a593Smuzhiyun 
1379*4882a593Smuzhiyun struct isp32_rawawb_ramdata {
1380*4882a593Smuzhiyun 	__u64 b:18;
1381*4882a593Smuzhiyun 	__u64 g:18;
1382*4882a593Smuzhiyun 	__u64 r:18;
1383*4882a593Smuzhiyun 	__u64 wp:10;
1384*4882a593Smuzhiyun } __attribute__ ((packed));
1385*4882a593Smuzhiyun 
1386*4882a593Smuzhiyun struct isp32_rawawb_sum {
1387*4882a593Smuzhiyun 	__u32 rgain_nor;
1388*4882a593Smuzhiyun 	__u32 bgain_nor;
1389*4882a593Smuzhiyun 	__u32 wp_num_nor;
1390*4882a593Smuzhiyun 	__u32 wp_num2;
1391*4882a593Smuzhiyun 
1392*4882a593Smuzhiyun 	__u32 rgain_big;
1393*4882a593Smuzhiyun 	__u32 bgain_big;
1394*4882a593Smuzhiyun 	__u32 wp_num_big;
1395*4882a593Smuzhiyun 	__u32 reserved;
1396*4882a593Smuzhiyun } __attribute__ ((packed));
1397*4882a593Smuzhiyun 
1398*4882a593Smuzhiyun struct isp32_rawawb_sum_exc {
1399*4882a593Smuzhiyun 	__u32 rgain_exc;
1400*4882a593Smuzhiyun 	__u32 bgain_exc;
1401*4882a593Smuzhiyun 	__u32 wp_num_exc;
1402*4882a593Smuzhiyun 	__u32 reserved;
1403*4882a593Smuzhiyun } __attribute__ ((packed));
1404*4882a593Smuzhiyun 
1405*4882a593Smuzhiyun struct isp32_rawawb_meas_stat {
1406*4882a593Smuzhiyun 	struct isp32_rawawb_ramdata ramdata[ISP32_RAWAWB_RAMDATA_NUM];
1407*4882a593Smuzhiyun 	__u64 reserved;
1408*4882a593Smuzhiyun 	struct isp32_rawawb_sum sum[ISP32_RAWAWB_SUM_NUM];
1409*4882a593Smuzhiyun 	__u16 yhist_bin[ISP32_RAWAWB_HSTBIN_NUM];
1410*4882a593Smuzhiyun 	struct isp32_rawawb_sum_exc sum_exc[ISP32_RAWAWB_EXCL_STAT_NUM];
1411*4882a593Smuzhiyun } __attribute__ ((packed));
1412*4882a593Smuzhiyun 
1413*4882a593Smuzhiyun struct isp32_vsm_stat {
1414*4882a593Smuzhiyun 	__u16 delta_h;
1415*4882a593Smuzhiyun 	__u16 delta_v;
1416*4882a593Smuzhiyun } __attribute__ ((packed));
1417*4882a593Smuzhiyun 
1418*4882a593Smuzhiyun struct isp32_info2ddr_stat {
1419*4882a593Smuzhiyun 	__u32 owner;
1420*4882a593Smuzhiyun 	__s32 buf_fd;
1421*4882a593Smuzhiyun } __attribute__ ((packed));
1422*4882a593Smuzhiyun 
1423*4882a593Smuzhiyun struct isp32_isp_params_cfg {
1424*4882a593Smuzhiyun 	__u64 module_en_update;
1425*4882a593Smuzhiyun 	__u64 module_ens;
1426*4882a593Smuzhiyun 	__u64 module_cfg_update;
1427*4882a593Smuzhiyun 
1428*4882a593Smuzhiyun 	__u32 frame_id;
1429*4882a593Smuzhiyun 	struct isp32_isp_meas_cfg meas;
1430*4882a593Smuzhiyun 	struct isp32_isp_other_cfg others;
1431*4882a593Smuzhiyun } __attribute__ ((packed));
1432*4882a593Smuzhiyun 
1433*4882a593Smuzhiyun struct isp32_stat {
1434*4882a593Smuzhiyun 	struct isp32_rawaebig_stat0 rawae3_0;	/* offset 0 */
1435*4882a593Smuzhiyun 	struct isp32_rawaebig_stat0 rawae1_0;	/* offset 0x390 */
1436*4882a593Smuzhiyun 	struct isp32_rawaebig_stat0 rawae2_0;	/* offset 0x720 */
1437*4882a593Smuzhiyun 	struct isp32_rawaelite_stat rawae0;	/* offset 0xab0 */
1438*4882a593Smuzhiyun 	struct isp32_rawaebig_stat1 rawae3_1;
1439*4882a593Smuzhiyun 	struct isp32_rawaebig_stat1 rawae1_1;
1440*4882a593Smuzhiyun 	struct isp32_rawaebig_stat1 rawae2_1;
1441*4882a593Smuzhiyun 	struct isp2x_bls_stat bls;
1442*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist3;	/* offset 0xc00 */
1443*4882a593Smuzhiyun 	struct isp2x_rawhistlite_stat rawhist0;	/* offset 0x1000 */
1444*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist1;	/* offset 0x1400 */
1445*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist2;	/* offset 0x1800 */
1446*4882a593Smuzhiyun 	struct isp32_rawaf_stat rawaf;		/* offset 0x1c00 */
1447*4882a593Smuzhiyun 	struct isp3x_dhaz_stat dhaz;
1448*4882a593Smuzhiyun 	struct isp32_vsm_stat vsm;
1449*4882a593Smuzhiyun 	struct isp32_info2ddr_stat info2ddr;
1450*4882a593Smuzhiyun 	struct isp32_rawawb_meas_stat rawawb;	/* offset 0x2b00 */
1451*4882a593Smuzhiyun } __attribute__ ((packed));
1452*4882a593Smuzhiyun 
1453*4882a593Smuzhiyun /**
1454*4882a593Smuzhiyun  * struct rkisp32_isp_stat_buffer - Rockchip ISP32 Statistics Meta Data
1455*4882a593Smuzhiyun  *
1456*4882a593Smuzhiyun  * @meas_type: measurement types (ISP3X_STAT_ definitions)
1457*4882a593Smuzhiyun  * @frame_id: frame ID for sync
1458*4882a593Smuzhiyun  * @params: statistics data
1459*4882a593Smuzhiyun  */
1460*4882a593Smuzhiyun struct rkisp32_isp_stat_buffer {
1461*4882a593Smuzhiyun 	struct isp32_stat params;
1462*4882a593Smuzhiyun 	__u32 meas_type;
1463*4882a593Smuzhiyun 	__u32 frame_id;
1464*4882a593Smuzhiyun 	__u32 params_id;
1465*4882a593Smuzhiyun } __attribute__ ((packed));
1466*4882a593Smuzhiyun 
1467*4882a593Smuzhiyun struct rkisp32_thunderboot_resmem_head {
1468*4882a593Smuzhiyun 	struct rkisp_thunderboot_resmem_head head;
1469*4882a593Smuzhiyun 	struct isp32_isp_params_cfg cfg;
1470*4882a593Smuzhiyun } __attribute__ ((packed));
1471*4882a593Smuzhiyun 
1472*4882a593Smuzhiyun /****************isp32 lite********************/
1473*4882a593Smuzhiyun 
1474*4882a593Smuzhiyun struct isp32_lite_rawaebig_stat {
1475*4882a593Smuzhiyun 	__u32 sumr;
1476*4882a593Smuzhiyun 	__u32 sumg;
1477*4882a593Smuzhiyun 	__u32 sumb;
1478*4882a593Smuzhiyun 	struct isp2x_rawae_meas_data data[ISP32_RAWAEBIG_MEAN_NUM];
1479*4882a593Smuzhiyun } __attribute__ ((packed));
1480*4882a593Smuzhiyun 
1481*4882a593Smuzhiyun struct isp32_lite_rawawb_meas_stat {
1482*4882a593Smuzhiyun 	__u32 ramdata_r[ISP32L_RAWAWB_RAMDATA_RGB_NUM];
1483*4882a593Smuzhiyun 	__u32 ramdata_g[ISP32L_RAWAWB_RAMDATA_RGB_NUM];
1484*4882a593Smuzhiyun 	__u32 ramdata_b[ISP32L_RAWAWB_RAMDATA_RGB_NUM];
1485*4882a593Smuzhiyun 	__u32 ramdata_wpnum0[ISP32L_RAWAWB_RAMDATA_WP_NUM];
1486*4882a593Smuzhiyun 	__u32 ramdata_wpnum1[ISP32L_RAWAWB_RAMDATA_WP_NUM];
1487*4882a593Smuzhiyun 	struct isp32_rawawb_sum sum[ISP32_RAWAWB_SUM_NUM];
1488*4882a593Smuzhiyun 	__u16 yhist_bin[ISP32_RAWAWB_HSTBIN_NUM];
1489*4882a593Smuzhiyun 	struct isp32_rawawb_sum_exc sum_exc[ISP32_RAWAWB_EXCL_STAT_NUM];
1490*4882a593Smuzhiyun } __attribute__ ((packed));
1491*4882a593Smuzhiyun 
1492*4882a593Smuzhiyun struct isp32_lite_rawaf_ramdata {
1493*4882a593Smuzhiyun 	__u32 hiir_wnd_data[ISP32L_RAWAF_WND_DATA];
1494*4882a593Smuzhiyun 	__u32 viir_wnd_data[ISP32L_RAWAF_WND_DATA];
1495*4882a593Smuzhiyun } __attribute__ ((packed));
1496*4882a593Smuzhiyun 
1497*4882a593Smuzhiyun struct isp32_lite_rawaf_stat {
1498*4882a593Smuzhiyun 	struct isp32_lite_rawaf_ramdata ramdata;
1499*4882a593Smuzhiyun 	__u32 int_state;
1500*4882a593Smuzhiyun 	__u32 afm_sum_b;
1501*4882a593Smuzhiyun 	__u32 afm_lum_b;
1502*4882a593Smuzhiyun 	__u32 highlit_cnt_winb;
1503*4882a593Smuzhiyun } __attribute__ ((packed));
1504*4882a593Smuzhiyun 
1505*4882a593Smuzhiyun struct isp32_lite_rawhistlite_stat {
1506*4882a593Smuzhiyun 	__u32 hist_bin[ISP32L_HIST_LITE_BIN_N_MAX];
1507*4882a593Smuzhiyun } __attribute__ ((packed));
1508*4882a593Smuzhiyun 
1509*4882a593Smuzhiyun struct isp32_lite_stat {
1510*4882a593Smuzhiyun 	struct isp2x_bls_stat bls;
1511*4882a593Smuzhiyun 	struct isp3x_dhaz_stat dhaz;
1512*4882a593Smuzhiyun 	struct isp32_info2ddr_stat info2ddr;
1513*4882a593Smuzhiyun 	struct isp2x_rawaelite_stat rawae0;
1514*4882a593Smuzhiyun 	struct isp32_lite_rawaebig_stat rawae3;
1515*4882a593Smuzhiyun 	struct isp32_lite_rawhistlite_stat rawhist0;
1516*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist3;
1517*4882a593Smuzhiyun 	struct isp32_lite_rawaf_stat rawaf;
1518*4882a593Smuzhiyun 	struct isp32_lite_rawawb_meas_stat rawawb;
1519*4882a593Smuzhiyun } __attribute__ ((packed));
1520*4882a593Smuzhiyun 
1521*4882a593Smuzhiyun struct rkisp32_lite_stat_buffer {
1522*4882a593Smuzhiyun 	struct isp32_lite_stat params;
1523*4882a593Smuzhiyun 	__u32 meas_type;
1524*4882a593Smuzhiyun 	__u32 frame_id;
1525*4882a593Smuzhiyun 	__u32 params_id;
1526*4882a593Smuzhiyun } __attribute__ ((packed));
1527*4882a593Smuzhiyun #endif /* _UAPI_RK_ISP32_CONFIG_H */
1528