xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/common/rkisp2-config.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT)
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Rockchip isp2 driver
4*4882a593Smuzhiyun  * Copyright (C) 2017 Rockchip Electronics Co., Ltd.
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _UAPI_RKISP2_CONFIG_H
8*4882a593Smuzhiyun #define _UAPI_RKISP2_CONFIG_H
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <linux/types.h>
11*4882a593Smuzhiyun #include <linux/v4l2-controls.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include "rk_isp20_hw.h"
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define RKISP_API_VERSION		KERNEL_VERSION(2, 1, 0)
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #ifndef BIT
18*4882a593Smuzhiyun #define BIT(x) (~0ULL & (1ULL << x))
19*4882a593Smuzhiyun #endif
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun /****************ISP SUBDEV IOCTL*****************************/
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define RKISP_CMD_TRIGGER_READ_BACK \
24*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 0, struct isp2x_csi_trigger)
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #define RKISP_CMD_GET_ISP_INFO \
27*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 1, struct rkisp_isp_info)
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define RKISP_CMD_GET_SHARED_BUF \
30*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 2, struct rkisp_thunderboot_resmem)
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define RKISP_CMD_FREE_SHARED_BUF \
33*4882a593Smuzhiyun 	_IO('V', BASE_VIDIOC_PRIVATE + 3)
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #define RKISP_CMD_GET_LDCHBUF_INFO \
36*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 4, struct rkisp_ldchbuf_info)
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define RKISP_CMD_SET_LDCHBUF_SIZE \
39*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 5, struct rkisp_ldchbuf_size)
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #define RKISP_CMD_GET_SHM_BUFFD \
42*4882a593Smuzhiyun 	_IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct rkisp_thunderboot_shmem)
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define RKISP_CMD_GET_FBCBUF_FD \
45*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 7, struct isp2x_buf_idxfd)
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun #define RKISP_CMD_GET_MESHBUF_INFO \
48*4882a593Smuzhiyun 	_IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct rkisp_meshbuf_info)
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define RKISP_CMD_SET_MESHBUF_SIZE \
51*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 9, struct rkisp_meshbuf_size)
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define RKISP_CMD_INFO2DDR \
54*4882a593Smuzhiyun 	_IOWR('V', BASE_VIDIOC_PRIVATE + 10, struct rkisp_info2ddr)
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #define RKISP_CMD_MESHBUF_FREE \
57*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 11, long long)
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /* BASE_VIDIOC_PRIVATE + 12 for RKISP_CMD_GET_TB_HEAD_V32 */
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun /* for all isp device stop and no power off but resolution change */
62*4882a593Smuzhiyun #define RKISP_CMD_MULTI_DEV_FORCE_ENUM \
63*4882a593Smuzhiyun 	_IO('V', BASE_VIDIOC_PRIVATE + 13)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun /****************ISP VIDEO IOCTL******************************/
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun #define RKISP_CMD_GET_CSI_MEMORY_MODE \
68*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 100, int)
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define RKISP_CMD_SET_CSI_MEMORY_MODE \
71*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 101, int)
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #define RKISP_CMD_GET_CMSK \
74*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 102, struct rkisp_cmsk_cfg)
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun #define RKISP_CMD_SET_CMSK \
77*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 103, struct rkisp_cmsk_cfg)
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun #define RKISP_CMD_GET_STREAM_INFO \
80*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 104, struct rkisp_stream_info)
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define RKISP_CMD_GET_MIRROR_FLIP \
83*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 105, struct rkisp_mirror_flip)
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define RKISP_CMD_SET_MIRROR_FLIP \
86*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 106, struct rkisp_mirror_flip)
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define RKISP_CMD_GET_WRAP_LINE \
89*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 107, struct rkisp_wrap_info)
90*4882a593Smuzhiyun /* set wrap line before VIDIOC_S_FMT */
91*4882a593Smuzhiyun #define RKISP_CMD_SET_WRAP_LINE \
92*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 108, struct rkisp_wrap_info)
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #define RKISP_CMD_SET_FPS \
95*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 109, int)
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define RKISP_CMD_GET_FPS \
98*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 110, int)
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define RKISP_CMD_GET_TB_STREAM_INFO \
101*4882a593Smuzhiyun 	_IOR('V', BASE_VIDIOC_PRIVATE + 111, struct rkisp_tb_stream_info)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define RKISP_CMD_FREE_TB_STREAM_BUF \
104*4882a593Smuzhiyun 	_IO('V', BASE_VIDIOC_PRIVATE + 112)
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /* Private v4l2 event */
107*4882a593Smuzhiyun #define CIFISP_V4L2_EVENT_STREAM_START \
108*4882a593Smuzhiyun     (V4L2_EVENT_PRIVATE_START + 1)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define CIFISP_V4L2_EVENT_STREAM_STOP  \
111*4882a593Smuzhiyun     (V4L2_EVENT_PRIVATE_START + 2)
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #define RKISP_CMD_SET_IQTOOL_CONN_ID \
114*4882a593Smuzhiyun 	_IOW('V', BASE_VIDIOC_PRIVATE + 113, int)
115*4882a593Smuzhiyun /*************************************************************/
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define ISP2X_ID_DPCC			(0)
118*4882a593Smuzhiyun #define ISP2X_ID_BLS			(1)
119*4882a593Smuzhiyun #define ISP2X_ID_SDG			(2)
120*4882a593Smuzhiyun #define ISP2X_ID_SIHST			(3)
121*4882a593Smuzhiyun #define ISP2X_ID_LSC			(4)
122*4882a593Smuzhiyun #define ISP2X_ID_AWB_GAIN		(5)
123*4882a593Smuzhiyun #define ISP2X_ID_BDM			(7)
124*4882a593Smuzhiyun #define ISP2X_ID_CCM			(8)
125*4882a593Smuzhiyun #define ISP2X_ID_GOC			(9)
126*4882a593Smuzhiyun #define ISP2X_ID_CPROC			(10)
127*4882a593Smuzhiyun #define ISP2X_ID_SIAF			(11)
128*4882a593Smuzhiyun #define ISP2X_ID_SIAWB			(12)
129*4882a593Smuzhiyun #define ISP2X_ID_IE			(13)
130*4882a593Smuzhiyun #define ISP2X_ID_YUVAE			(14)
131*4882a593Smuzhiyun #define ISP2X_ID_WDR			(15)
132*4882a593Smuzhiyun #define ISP2X_ID_RK_IESHARP		(16)
133*4882a593Smuzhiyun #define ISP2X_ID_RAWAF			(17)
134*4882a593Smuzhiyun #define ISP2X_ID_RAWAE0			(18)
135*4882a593Smuzhiyun #define ISP2X_ID_RAWAE1			(19)
136*4882a593Smuzhiyun #define ISP2X_ID_RAWAE2			(20)
137*4882a593Smuzhiyun #define ISP2X_ID_RAWAE3			(21)
138*4882a593Smuzhiyun #define ISP2X_ID_RAWAWB			(22)
139*4882a593Smuzhiyun #define ISP2X_ID_RAWHIST0		(23)
140*4882a593Smuzhiyun #define ISP2X_ID_RAWHIST1		(24)
141*4882a593Smuzhiyun #define ISP2X_ID_RAWHIST2		(25)
142*4882a593Smuzhiyun #define ISP2X_ID_RAWHIST3		(26)
143*4882a593Smuzhiyun #define ISP2X_ID_HDRMGE			(27)
144*4882a593Smuzhiyun #define ISP2X_ID_RAWNR			(28)
145*4882a593Smuzhiyun #define ISP2X_ID_HDRTMO			(29)
146*4882a593Smuzhiyun #define ISP2X_ID_GIC			(30)
147*4882a593Smuzhiyun #define ISP2X_ID_DHAZ			(31)
148*4882a593Smuzhiyun #define ISP2X_ID_3DLUT			(32)
149*4882a593Smuzhiyun #define ISP2X_ID_LDCH			(33)
150*4882a593Smuzhiyun #define ISP2X_ID_GAIN			(34)
151*4882a593Smuzhiyun #define ISP2X_ID_DEBAYER		(35)
152*4882a593Smuzhiyun #define ISP2X_ID_MAX			(63)
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun #define ISP2X_MODULE_DPCC		BIT_ULL(ISP2X_ID_DPCC)
155*4882a593Smuzhiyun #define ISP2X_MODULE_BLS		BIT_ULL(ISP2X_ID_BLS)
156*4882a593Smuzhiyun #define ISP2X_MODULE_SDG		BIT_ULL(ISP2X_ID_SDG)
157*4882a593Smuzhiyun #define ISP2X_MODULE_SIHST		BIT_ULL(ISP2X_ID_SIHST)
158*4882a593Smuzhiyun #define ISP2X_MODULE_LSC		BIT_ULL(ISP2X_ID_LSC)
159*4882a593Smuzhiyun #define ISP2X_MODULE_AWB_GAIN		BIT_ULL(ISP2X_ID_AWB_GAIN)
160*4882a593Smuzhiyun #define ISP2X_MODULE_BDM		BIT_ULL(ISP2X_ID_BDM)
161*4882a593Smuzhiyun #define ISP2X_MODULE_CCM		BIT_ULL(ISP2X_ID_CCM)
162*4882a593Smuzhiyun #define ISP2X_MODULE_GOC		BIT_ULL(ISP2X_ID_GOC)
163*4882a593Smuzhiyun #define ISP2X_MODULE_CPROC		BIT_ULL(ISP2X_ID_CPROC)
164*4882a593Smuzhiyun #define ISP2X_MODULE_SIAF		BIT_ULL(ISP2X_ID_SIAF)
165*4882a593Smuzhiyun #define ISP2X_MODULE_SIAWB		BIT_ULL(ISP2X_ID_SIAWB)
166*4882a593Smuzhiyun #define ISP2X_MODULE_IE			BIT_ULL(ISP2X_ID_IE)
167*4882a593Smuzhiyun #define ISP2X_MODULE_YUVAE		BIT_ULL(ISP2X_ID_YUVAE)
168*4882a593Smuzhiyun #define ISP2X_MODULE_WDR		BIT_ULL(ISP2X_ID_WDR)
169*4882a593Smuzhiyun #define ISP2X_MODULE_RK_IESHARP		BIT_ULL(ISP2X_ID_RK_IESHARP)
170*4882a593Smuzhiyun #define ISP2X_MODULE_RAWAF		BIT_ULL(ISP2X_ID_RAWAF)
171*4882a593Smuzhiyun #define ISP2X_MODULE_RAWAE0		BIT_ULL(ISP2X_ID_RAWAE0)
172*4882a593Smuzhiyun #define ISP2X_MODULE_RAWAE1		BIT_ULL(ISP2X_ID_RAWAE1)
173*4882a593Smuzhiyun #define ISP2X_MODULE_RAWAE2		BIT_ULL(ISP2X_ID_RAWAE2)
174*4882a593Smuzhiyun #define ISP2X_MODULE_RAWAE3		BIT_ULL(ISP2X_ID_RAWAE3)
175*4882a593Smuzhiyun #define ISP2X_MODULE_RAWAWB		BIT_ULL(ISP2X_ID_RAWAWB)
176*4882a593Smuzhiyun #define ISP2X_MODULE_RAWHIST0		BIT_ULL(ISP2X_ID_RAWHIST0)
177*4882a593Smuzhiyun #define ISP2X_MODULE_RAWHIST1		BIT_ULL(ISP2X_ID_RAWHIST1)
178*4882a593Smuzhiyun #define ISP2X_MODULE_RAWHIST2		BIT_ULL(ISP2X_ID_RAWHIST2)
179*4882a593Smuzhiyun #define ISP2X_MODULE_RAWHIST3		BIT_ULL(ISP2X_ID_RAWHIST3)
180*4882a593Smuzhiyun #define ISP2X_MODULE_HDRMGE		BIT_ULL(ISP2X_ID_HDRMGE)
181*4882a593Smuzhiyun #define ISP2X_MODULE_RAWNR		BIT_ULL(ISP2X_ID_RAWNR)
182*4882a593Smuzhiyun #define ISP2X_MODULE_HDRTMO		BIT_ULL(ISP2X_ID_HDRTMO)
183*4882a593Smuzhiyun #define ISP2X_MODULE_GIC		BIT_ULL(ISP2X_ID_GIC)
184*4882a593Smuzhiyun #define ISP2X_MODULE_DHAZ		BIT_ULL(ISP2X_ID_DHAZ)
185*4882a593Smuzhiyun #define ISP2X_MODULE_3DLUT		BIT_ULL(ISP2X_ID_3DLUT)
186*4882a593Smuzhiyun #define ISP2X_MODULE_LDCH		BIT_ULL(ISP2X_ID_LDCH)
187*4882a593Smuzhiyun #define ISP2X_MODULE_GAIN		BIT_ULL(ISP2X_ID_GAIN)
188*4882a593Smuzhiyun #define ISP2X_MODULE_DEBAYER		BIT_ULL(ISP2X_ID_DEBAYER)
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun #define ISP2X_MODULE_FORCE		BIT_ULL(ISP2X_ID_MAX)
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun /*
193*4882a593Smuzhiyun  * Measurement types
194*4882a593Smuzhiyun  */
195*4882a593Smuzhiyun #define ISP2X_STAT_SIAWB		BIT(0)
196*4882a593Smuzhiyun #define ISP2X_STAT_YUVAE		BIT(1)
197*4882a593Smuzhiyun #define ISP2X_STAT_SIAF			BIT(2)
198*4882a593Smuzhiyun #define ISP2X_STAT_SIHST		BIT(3)
199*4882a593Smuzhiyun #define ISP2X_STAT_EMB_DATA		BIT(4)
200*4882a593Smuzhiyun #define ISP2X_STAT_RAWAWB		BIT(5)
201*4882a593Smuzhiyun #define ISP2X_STAT_RAWAF		BIT(6)
202*4882a593Smuzhiyun #define ISP2X_STAT_RAWAE0		BIT(7)
203*4882a593Smuzhiyun #define ISP2X_STAT_RAWAE1		BIT(8)
204*4882a593Smuzhiyun #define ISP2X_STAT_RAWAE2		BIT(9)
205*4882a593Smuzhiyun #define ISP2X_STAT_RAWAE3		BIT(10)
206*4882a593Smuzhiyun #define ISP2X_STAT_RAWHST0		BIT(11)
207*4882a593Smuzhiyun #define ISP2X_STAT_RAWHST1		BIT(12)
208*4882a593Smuzhiyun #define ISP2X_STAT_RAWHST2		BIT(13)
209*4882a593Smuzhiyun #define ISP2X_STAT_RAWHST3		BIT(14)
210*4882a593Smuzhiyun #define ISP2X_STAT_BLS			BIT(15)
211*4882a593Smuzhiyun #define ISP2X_STAT_HDRTMO		BIT(16)
212*4882a593Smuzhiyun #define ISP2X_STAT_DHAZ			BIT(17)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #define ISP2X_LSC_GRAD_TBL_SIZE		8
215*4882a593Smuzhiyun #define ISP2X_LSC_SIZE_TBL_SIZE		8
216*4882a593Smuzhiyun #define ISP2X_LSC_DATA_TBL_SIZE		290
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define ISP2X_DEGAMMA_CURVE_SIZE	17
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun #define ISP2X_GAIN_HDRMGE_GAIN_NUM	3
221*4882a593Smuzhiyun #define ISP2X_GAIN_IDX_NUM		15
222*4882a593Smuzhiyun #define ISP2X_GAIN_LUT_NUM		17
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun #define ISP2X_AWB_MAX_GRID		1
225*4882a593Smuzhiyun #define ISP2X_RAWAWB_SUM_NUM		7
226*4882a593Smuzhiyun #define ISP2X_RAWAWB_MULWD_NUM		8
227*4882a593Smuzhiyun #define ISP2X_RAWAWB_RAMDATA_NUM	225
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun #define ISP2X_RAWAEBIG_SUBWIN_NUM	4
230*4882a593Smuzhiyun #define ISP2X_RAWAEBIG_MEAN_NUM		225
231*4882a593Smuzhiyun #define ISP2X_RAWAELITE_MEAN_NUM	25
232*4882a593Smuzhiyun #define ISP2X_YUVAE_SUBWIN_NUM		4
233*4882a593Smuzhiyun #define ISP2X_YUVAE_MEAN_NUM		225
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun #define ISP2X_RAWHISTBIG_SUBWIN_NUM	225
236*4882a593Smuzhiyun #define ISP2X_RAWHISTLITE_SUBWIN_NUM	25
237*4882a593Smuzhiyun #define ISP2X_SIHIST_WIN_NUM		1
238*4882a593Smuzhiyun #define ISP2X_HIST_WEIGHT_NUM		225
239*4882a593Smuzhiyun #define ISP2X_HIST_BIN_N_MAX		256
240*4882a593Smuzhiyun #define ISP2X_SIHIST_BIN_N_MAX		32
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun #define ISP2X_RAWAF_WIN_NUM		2
243*4882a593Smuzhiyun #define ISP2X_RAWAF_LINE_NUM		5
244*4882a593Smuzhiyun #define ISP2X_RAWAF_GAMMA_NUM		17
245*4882a593Smuzhiyun #define ISP2X_RAWAF_SUMDATA_ROW		15
246*4882a593Smuzhiyun #define ISP2X_RAWAF_SUMDATA_COLUMN	15
247*4882a593Smuzhiyun #define ISP2X_RAWAF_SUMDATA_NUM		225
248*4882a593Smuzhiyun #define ISP2X_AFM_MAX_WINDOWS		3
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun #define ISP2X_DPCC_PDAF_POINT_NUM	16
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun #define ISP2X_HDRMGE_L_CURVE_NUM	17
253*4882a593Smuzhiyun #define ISP2X_HDRMGE_E_CURVE_NUM	17
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun #define ISP2X_RAWNR_LUMA_RATION_NUM	8
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun #define ISP2X_HDRTMO_MINMAX_NUM		32
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun #define ISP2X_GIC_SIGMA_Y_NUM		15
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun #define ISP2X_CCM_CURVE_NUM		17
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun /* WDR */
264*4882a593Smuzhiyun #define ISP2X_WDR_SIZE			48
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun #define ISP2X_DHAZ_CONV_COEFF_NUM	6
267*4882a593Smuzhiyun #define ISP2X_DHAZ_HIST_IIR_NUM		64
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun #define ISP2X_GAMMA_OUT_MAX_SAMPLES	45
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun #define ISP2X_MIPI_LUMA_MEAN_MAX	16
272*4882a593Smuzhiyun #define ISP2X_MIPI_RAW_MAX		3
273*4882a593Smuzhiyun #define ISP2X_RAW0_Y_STATE		(1 << 0)
274*4882a593Smuzhiyun #define ISP2X_RAW1_Y_STATE		(1 << 1)
275*4882a593Smuzhiyun #define ISP2X_RAW2_Y_STATE		(1 << 2)
276*4882a593Smuzhiyun 
277*4882a593Smuzhiyun #define ISP2X_3DLUT_DATA_NUM		729
278*4882a593Smuzhiyun 
279*4882a593Smuzhiyun #define ISP2X_LDCH_MESH_XY_NUM		0x80000
280*4882a593Smuzhiyun #define ISP2X_LDCH_BUF_NUM		2
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun #define ISP2X_THUNDERBOOT_VIDEO_BUF_NUM	30
283*4882a593Smuzhiyun 
284*4882a593Smuzhiyun #define ISP2X_FBCBUF_FD_NUM		64
285*4882a593Smuzhiyun 
286*4882a593Smuzhiyun #define ISP2X_MESH_BUF_NUM		2
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun enum rkisp_isp_mode {
289*4882a593Smuzhiyun 	/* frame input related */
290*4882a593Smuzhiyun 	RKISP_ISP_NORMAL = BIT(0),
291*4882a593Smuzhiyun 	RKISP_ISP_HDR2 = BIT(1),
292*4882a593Smuzhiyun 	RKISP_ISP_HDR3 = BIT(2),
293*4882a593Smuzhiyun 	RKISP_ISP_COMPR = BIT(3),
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun 	/* isp function related */
296*4882a593Smuzhiyun 	RKISP_ISP_BIGMODE = BIT(28),
297*4882a593Smuzhiyun };
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun struct rkisp_isp_info {
300*4882a593Smuzhiyun 	enum rkisp_isp_mode mode;
301*4882a593Smuzhiyun 	u32 act_width;
302*4882a593Smuzhiyun 	u32 act_height;
303*4882a593Smuzhiyun 	u8 compr_bit;
304*4882a593Smuzhiyun } __attribute__ ((packed));
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun enum isp2x_mesh_buf_stat {
307*4882a593Smuzhiyun 	MESH_BUF_INIT = 0,
308*4882a593Smuzhiyun 	MESH_BUF_WAIT2CHIP,
309*4882a593Smuzhiyun 	MESH_BUF_CHIPINUSE,
310*4882a593Smuzhiyun };
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun struct rkisp_meshbuf_info {
313*4882a593Smuzhiyun 	u64 module_id;
314*4882a593Smuzhiyun 	u32 unite_isp_id;
315*4882a593Smuzhiyun 	s32 buf_fd[ISP2X_MESH_BUF_NUM];
316*4882a593Smuzhiyun 	u32 buf_size[ISP2X_MESH_BUF_NUM];
317*4882a593Smuzhiyun } __attribute__ ((packed));
318*4882a593Smuzhiyun 
319*4882a593Smuzhiyun struct rkisp_meshbuf_size {
320*4882a593Smuzhiyun 	u64 module_id;
321*4882a593Smuzhiyun 	u32 unite_isp_id;
322*4882a593Smuzhiyun 	u32 meas_width;
323*4882a593Smuzhiyun 	u32 meas_height;
324*4882a593Smuzhiyun 	int buf_cnt;
325*4882a593Smuzhiyun } __attribute__ ((packed));
326*4882a593Smuzhiyun 
327*4882a593Smuzhiyun struct isp2x_mesh_head {
328*4882a593Smuzhiyun 	enum isp2x_mesh_buf_stat stat;
329*4882a593Smuzhiyun 	u32 data_oft;
330*4882a593Smuzhiyun } __attribute__ ((packed));
331*4882a593Smuzhiyun 
332*4882a593Smuzhiyun #define RKISP_CMSK_WIN_MAX 12
333*4882a593Smuzhiyun #define RKISP_CMSK_WIN_MAX_V30 8
334*4882a593Smuzhiyun #define RKISP_CMSK_MOSAIC_MODE 0
335*4882a593Smuzhiyun #define RKISP_CMSK_COVER_MODE 1
336*4882a593Smuzhiyun 
337*4882a593Smuzhiyun /* struct rkisp_cmsk_win
338*4882a593Smuzhiyun  * Priacy Mask Window configture, support windows
339*4882a593Smuzhiyun  * RKISP_CMSK_WIN_MAX_V30 for rk3588 support 8 windows, and
340*4882a593Smuzhiyun  * support for mainpath and selfpath output stream channel.
341*4882a593Smuzhiyun  *
342*4882a593Smuzhiyun  * RKISP_CMSK_WIN_MAX for rv1106 support 12 windows, and
343*4882a593Smuzhiyun  * support for mainpath selfpath and bypasspath output stream channel.
344*4882a593Smuzhiyun  *
345*4882a593Smuzhiyun  * mode: 0:mosaic mode, 1:cover mode
346*4882a593Smuzhiyun  * win_index: window index 0~11. windows overlap, priority win11 > win0.
347*4882a593Smuzhiyun  * cover_color_y: cover mode effective, share for stream channel when same win_index.
348*4882a593Smuzhiyun  * cover_color_u: cover mode effective, share for stream channel when same win_index.
349*4882a593Smuzhiyun  * cover_color_v: cover mode effective, share for stream channel when same win_index.
350*4882a593Smuzhiyun  *
351*4882a593Smuzhiyun  * h_offs: window horizontal offset, share for stream channel when same win_index. 2 align.
352*4882a593Smuzhiyun  * v_offs: window vertical offset, share for stream channel when same win_index. 2 align.
353*4882a593Smuzhiyun  * h_size: window horizontal size, share for stream channel when same win_index. 8 align for rk3588, 2 align for rv1106.
354*4882a593Smuzhiyun  * v_size: window vertical size, share for stream channel when same win_index. 8 align for rk3588, 2 align for rv1106.
355*4882a593Smuzhiyun  */
356*4882a593Smuzhiyun struct rkisp_cmsk_win {
357*4882a593Smuzhiyun 	unsigned short mode;
358*4882a593Smuzhiyun 	unsigned short win_en;
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun 	unsigned char cover_color_y;
361*4882a593Smuzhiyun 	unsigned char cover_color_u;
362*4882a593Smuzhiyun 	unsigned char cover_color_v;
363*4882a593Smuzhiyun 
364*4882a593Smuzhiyun 	unsigned short h_offs;
365*4882a593Smuzhiyun 	unsigned short v_offs;
366*4882a593Smuzhiyun 	unsigned short h_size;
367*4882a593Smuzhiyun 	unsigned short v_size;
368*4882a593Smuzhiyun } __attribute__ ((packed));
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun /* struct rkisp_cmsk_cfg
371*4882a593Smuzhiyun  * win: priacy mask window
372*4882a593Smuzhiyun  * mosaic_block: Mosaic block size, 0:8x8 1:16x16 2:32x32 3:64x64, share for all windows
373*4882a593Smuzhiyun  * width_ro: isp full resolution, h_offs + h_size <= width_ro.
374*4882a593Smuzhiyun  * height_ro: isp full resolution, v_offs + v_size <= height_ro.
375*4882a593Smuzhiyun  */
376*4882a593Smuzhiyun struct rkisp_cmsk_cfg {
377*4882a593Smuzhiyun 	struct rkisp_cmsk_win win[RKISP_CMSK_WIN_MAX];
378*4882a593Smuzhiyun 	unsigned int mosaic_block;
379*4882a593Smuzhiyun 	unsigned int width_ro;
380*4882a593Smuzhiyun 	unsigned int height_ro;
381*4882a593Smuzhiyun } __attribute__ ((packed));
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun /* struct rkisp_stream_info
384*4882a593Smuzhiyun  * cur_frame_id: stream current frame id
385*4882a593Smuzhiyun  * input_frame_loss: isp input frame loss num
386*4882a593Smuzhiyun  * output_frame_loss: stream output frame loss num
387*4882a593Smuzhiyun  * stream_on: stream on/off
388*4882a593Smuzhiyun  */
389*4882a593Smuzhiyun struct rkisp_stream_info {
390*4882a593Smuzhiyun 	unsigned int cur_frame_id;
391*4882a593Smuzhiyun 	unsigned int input_frame_loss;
392*4882a593Smuzhiyun 	unsigned int output_frame_loss;
393*4882a593Smuzhiyun 	unsigned char stream_on;
394*4882a593Smuzhiyun 	unsigned char stream_id;
395*4882a593Smuzhiyun } __attribute__ ((packed));
396*4882a593Smuzhiyun 
397*4882a593Smuzhiyun /* struct rkisp_mirror_flip
398*4882a593Smuzhiyun  * mirror: global for all output stream
399*4882a593Smuzhiyun  * flip: independent for all output stream
400*4882a593Smuzhiyun  */
401*4882a593Smuzhiyun struct rkisp_mirror_flip {
402*4882a593Smuzhiyun 	unsigned char mirror;
403*4882a593Smuzhiyun 	unsigned char flip;
404*4882a593Smuzhiyun } __attribute__ ((packed));
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun struct rkisp_wrap_info {
407*4882a593Smuzhiyun 	int width;
408*4882a593Smuzhiyun 	int height;
409*4882a593Smuzhiyun };
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun #define RKISP_TB_STREAM_BUF_MAX 5
412*4882a593Smuzhiyun struct rkisp_tb_stream_buf {
413*4882a593Smuzhiyun 	unsigned int dma_addr;
414*4882a593Smuzhiyun 	unsigned int sequence;
415*4882a593Smuzhiyun 	long long timestamp;
416*4882a593Smuzhiyun } __attribute__ ((packed));
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun /* struct rkisp_tb_stream_info
419*4882a593Smuzhiyun  * frame_size: nv12 frame buf size, bytesperline * height_16align * 1.5
420*4882a593Smuzhiyun  * buf_max: memory size / frame_size
421*4882a593Smuzhiyun  * buf_cnt: the num of frame write to buf.
422*4882a593Smuzhiyun  */
423*4882a593Smuzhiyun struct rkisp_tb_stream_info {
424*4882a593Smuzhiyun 	unsigned int width;
425*4882a593Smuzhiyun 	unsigned int height;
426*4882a593Smuzhiyun 	unsigned int bytesperline;
427*4882a593Smuzhiyun 	unsigned int frame_size;
428*4882a593Smuzhiyun 	unsigned int buf_max;
429*4882a593Smuzhiyun 	unsigned int buf_cnt;
430*4882a593Smuzhiyun 	struct rkisp_tb_stream_buf buf[RKISP_TB_STREAM_BUF_MAX];
431*4882a593Smuzhiyun } __attribute__ ((packed));
432*4882a593Smuzhiyun 
433*4882a593Smuzhiyun /* trigger event mode
434*4882a593Smuzhiyun  * T_TRY: trigger maybe with retry
435*4882a593Smuzhiyun  * T_TRY_YES: trigger to retry
436*4882a593Smuzhiyun  * T_TRY_NO: trigger no to retry
437*4882a593Smuzhiyun  *
438*4882a593Smuzhiyun  * T_START_X1: isp read one frame
439*4882a593Smuzhiyun  * T_START_X2: isp read hdr two frame
440*4882a593Smuzhiyun  * T_START_X3: isp read hdr three frame
441*4882a593Smuzhiyun  * T_START_C: isp read hdr linearised and compressed data
442*4882a593Smuzhiyun  */
443*4882a593Smuzhiyun enum isp2x_trigger_mode {
444*4882a593Smuzhiyun 	T_TRY = BIT(0),
445*4882a593Smuzhiyun 	T_TRY_YES = BIT(1),
446*4882a593Smuzhiyun 	T_TRY_NO = BIT(2),
447*4882a593Smuzhiyun 
448*4882a593Smuzhiyun 	T_START_X1 = BIT(4),
449*4882a593Smuzhiyun 	T_START_X2 = BIT(5),
450*4882a593Smuzhiyun 	T_START_X3 = BIT(6),
451*4882a593Smuzhiyun 	T_START_C = BIT(7),
452*4882a593Smuzhiyun };
453*4882a593Smuzhiyun 
454*4882a593Smuzhiyun struct isp2x_csi_trigger {
455*4882a593Smuzhiyun 	/* timestamp in ns */
456*4882a593Smuzhiyun 	u64 sof_timestamp;
457*4882a593Smuzhiyun 	u64 frame_timestamp;
458*4882a593Smuzhiyun 	u32 frame_id;
459*4882a593Smuzhiyun 	int times;
460*4882a593Smuzhiyun 	enum isp2x_trigger_mode mode;
461*4882a593Smuzhiyun } __attribute__ ((packed));
462*4882a593Smuzhiyun 
463*4882a593Smuzhiyun /* isp csi dmatx/dmarx memory mode
464*4882a593Smuzhiyun  * 0: raw12/raw10/raw8 8bit memory compact
465*4882a593Smuzhiyun  * 1: raw12/raw10 16bit memory one pixel
466*4882a593Smuzhiyun  *    big endian for rv1126/rv1109
467*4882a593Smuzhiyun  *    |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
468*4882a593Smuzhiyun  *    | 3| 2| 1| 0| -| -| -| -|11|10| 9| 8| 7| 6| 5| 4|
469*4882a593Smuzhiyun  *    little align for rk356x
470*4882a593Smuzhiyun  *    |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
471*4882a593Smuzhiyun  *    | -| -| -| -|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
472*4882a593Smuzhiyun  * 2: raw12/raw10 16bit memory one pixel
473*4882a593Smuzhiyun  *    big align for rv1126/rv1109/rk356x
474*4882a593Smuzhiyun  *    |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
475*4882a593Smuzhiyun  *    |11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| -| -| -| -|
476*4882a593Smuzhiyun  */
477*4882a593Smuzhiyun enum isp_csi_memory {
478*4882a593Smuzhiyun 	CSI_MEM_COMPACT = 0,
479*4882a593Smuzhiyun 	CSI_MEM_WORD_BIG_END = 1,
480*4882a593Smuzhiyun 	CSI_MEM_WORD_LITTLE_ALIGN = 1,
481*4882a593Smuzhiyun 	CSI_MEM_WORD_BIG_ALIGN = 2,
482*4882a593Smuzhiyun };
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun #define RKISP_INFO2DDR_BUF_MAX	4
485*4882a593Smuzhiyun /* 32bit flag for user set to memory after buf used */
486*4882a593Smuzhiyun #define RKISP_INFO2DDR_BUF_INIT 0x5AA5
487*4882a593Smuzhiyun 
488*4882a593Smuzhiyun enum rkisp_info2ddr_owner {
489*4882a593Smuzhiyun 	RKISP_INFO2DRR_OWNER_NULL,
490*4882a593Smuzhiyun 	RKISP_INFO2DRR_OWNER_GAIN,
491*4882a593Smuzhiyun 	RKISP_INFO2DRR_OWNER_AWB,
492*4882a593Smuzhiyun };
493*4882a593Smuzhiyun 
494*4882a593Smuzhiyun /* struct rkisp_info2ddr
495*4882a593Smuzhiyun  * awb and gain debug info write to ddr
496*4882a593Smuzhiyun  *
497*4882a593Smuzhiyun  * owner: 0: off, 1: gain, 2: awb.
498*4882a593Smuzhiyun  * u: gain or awb mode parameters.
499*4882a593Smuzhiyun  * buf_cnt: buf num to request. return actual result.
500*4882a593Smuzhiyun  * buf_fd: fd of memory alloc result.
501*4882a593Smuzhiyun  * wsize: data width to request. if useless to 0. return actual result.
502*4882a593Smuzhiyun  * vsize: data height to request. if useless to 0. return actual result.
503*4882a593Smuzhiyun  */
504*4882a593Smuzhiyun struct rkisp_info2ddr {
505*4882a593Smuzhiyun 	enum rkisp_info2ddr_owner owner;
506*4882a593Smuzhiyun 
507*4882a593Smuzhiyun 	union {
508*4882a593Smuzhiyun 		struct {
509*4882a593Smuzhiyun 			u8 gain2ddr_mode;
510*4882a593Smuzhiyun 		} gain;
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun 		struct {
513*4882a593Smuzhiyun 			u8 awb2ddr_sel;
514*4882a593Smuzhiyun 		} awb;
515*4882a593Smuzhiyun 	} u;
516*4882a593Smuzhiyun 
517*4882a593Smuzhiyun 	u8 buf_cnt;
518*4882a593Smuzhiyun 	s32 buf_fd[RKISP_INFO2DDR_BUF_MAX];
519*4882a593Smuzhiyun 
520*4882a593Smuzhiyun 	u32 wsize;
521*4882a593Smuzhiyun 	u32 vsize;
522*4882a593Smuzhiyun } __attribute__ ((packed));
523*4882a593Smuzhiyun 
524*4882a593Smuzhiyun struct isp2x_ispgain_buf {
525*4882a593Smuzhiyun 	u32 gain_dmaidx;
526*4882a593Smuzhiyun 	u32 mfbc_dmaidx;
527*4882a593Smuzhiyun 	u32 gain_size;
528*4882a593Smuzhiyun 	u32 mfbc_size;
529*4882a593Smuzhiyun 	u32 frame_id;
530*4882a593Smuzhiyun } __attribute__ ((packed));
531*4882a593Smuzhiyun 
532*4882a593Smuzhiyun struct isp2x_buf_idxfd {
533*4882a593Smuzhiyun 	u32 buf_num;
534*4882a593Smuzhiyun 	u32 index[ISP2X_FBCBUF_FD_NUM];
535*4882a593Smuzhiyun 	s32 dmafd[ISP2X_FBCBUF_FD_NUM];
536*4882a593Smuzhiyun } __attribute__ ((packed));
537*4882a593Smuzhiyun 
538*4882a593Smuzhiyun struct isp2x_window {
539*4882a593Smuzhiyun 	u16 h_offs;
540*4882a593Smuzhiyun 	u16 v_offs;
541*4882a593Smuzhiyun 	u16 h_size;
542*4882a593Smuzhiyun 	u16 v_size;
543*4882a593Smuzhiyun } __attribute__ ((packed));
544*4882a593Smuzhiyun 
545*4882a593Smuzhiyun struct isp2x_bls_fixed_val {
546*4882a593Smuzhiyun 	s16 r;
547*4882a593Smuzhiyun 	s16 gr;
548*4882a593Smuzhiyun 	s16 gb;
549*4882a593Smuzhiyun 	s16 b;
550*4882a593Smuzhiyun } __attribute__ ((packed));
551*4882a593Smuzhiyun 
552*4882a593Smuzhiyun struct isp2x_bls_cfg {
553*4882a593Smuzhiyun 	u8 enable_auto;
554*4882a593Smuzhiyun 	u8 en_windows;
555*4882a593Smuzhiyun 	struct isp2x_window bls_window1;
556*4882a593Smuzhiyun 	struct isp2x_window bls_window2;
557*4882a593Smuzhiyun 	u8 bls_samples;
558*4882a593Smuzhiyun 	struct isp2x_bls_fixed_val fixed_val;
559*4882a593Smuzhiyun } __attribute__ ((packed));
560*4882a593Smuzhiyun 
561*4882a593Smuzhiyun struct isp2x_bls_stat {
562*4882a593Smuzhiyun 	u16 meas_r;
563*4882a593Smuzhiyun 	u16 meas_gr;
564*4882a593Smuzhiyun 	u16 meas_gb;
565*4882a593Smuzhiyun 	u16 meas_b;
566*4882a593Smuzhiyun } __attribute__ ((packed));
567*4882a593Smuzhiyun 
568*4882a593Smuzhiyun struct isp2x_dpcc_pdaf_point {
569*4882a593Smuzhiyun 	u8 y;
570*4882a593Smuzhiyun 	u8 x;
571*4882a593Smuzhiyun } __attribute__ ((packed));
572*4882a593Smuzhiyun 
573*4882a593Smuzhiyun struct isp2x_dpcc_cfg {
574*4882a593Smuzhiyun 	//mode 0x0000
575*4882a593Smuzhiyun 	u8 stage1_enable;
576*4882a593Smuzhiyun 	u8 grayscale_mode;
577*4882a593Smuzhiyun 
578*4882a593Smuzhiyun 	//output_mode 0x0004
579*4882a593Smuzhiyun 	u8 sw_rk_out_sel;
580*4882a593Smuzhiyun 	u8 sw_dpcc_output_sel;
581*4882a593Smuzhiyun 	u8 stage1_rb_3x3;
582*4882a593Smuzhiyun 	u8 stage1_g_3x3;
583*4882a593Smuzhiyun 	u8 stage1_incl_rb_center;
584*4882a593Smuzhiyun 	u8 stage1_incl_green_center;
585*4882a593Smuzhiyun 
586*4882a593Smuzhiyun 	//set_use 0x0008
587*4882a593Smuzhiyun 	u8 stage1_use_fix_set;
588*4882a593Smuzhiyun 	u8 stage1_use_set_3;
589*4882a593Smuzhiyun 	u8 stage1_use_set_2;
590*4882a593Smuzhiyun 	u8 stage1_use_set_1;
591*4882a593Smuzhiyun 
592*4882a593Smuzhiyun 	//methods_set_1 0x000c
593*4882a593Smuzhiyun 	u8 sw_rk_red_blue1_en;
594*4882a593Smuzhiyun 	u8 rg_red_blue1_enable;
595*4882a593Smuzhiyun 	u8 rnd_red_blue1_enable;
596*4882a593Smuzhiyun 	u8 ro_red_blue1_enable;
597*4882a593Smuzhiyun 	u8 lc_red_blue1_enable;
598*4882a593Smuzhiyun 	u8 pg_red_blue1_enable;
599*4882a593Smuzhiyun 	u8 sw_rk_green1_en;
600*4882a593Smuzhiyun 	u8 rg_green1_enable;
601*4882a593Smuzhiyun 	u8 rnd_green1_enable;
602*4882a593Smuzhiyun 	u8 ro_green1_enable;
603*4882a593Smuzhiyun 	u8 lc_green1_enable;
604*4882a593Smuzhiyun 	u8 pg_green1_enable;
605*4882a593Smuzhiyun 
606*4882a593Smuzhiyun 	//methods_set_2 0x0010
607*4882a593Smuzhiyun 	u8 sw_rk_red_blue2_en;
608*4882a593Smuzhiyun 	u8 rg_red_blue2_enable;
609*4882a593Smuzhiyun 	u8 rnd_red_blue2_enable;
610*4882a593Smuzhiyun 	u8 ro_red_blue2_enable;
611*4882a593Smuzhiyun 	u8 lc_red_blue2_enable;
612*4882a593Smuzhiyun 	u8 pg_red_blue2_enable;
613*4882a593Smuzhiyun 	u8 sw_rk_green2_en;
614*4882a593Smuzhiyun 	u8 rg_green2_enable;
615*4882a593Smuzhiyun 	u8 rnd_green2_enable;
616*4882a593Smuzhiyun 	u8 ro_green2_enable;
617*4882a593Smuzhiyun 	u8 lc_green2_enable;
618*4882a593Smuzhiyun 	u8 pg_green2_enable;
619*4882a593Smuzhiyun 
620*4882a593Smuzhiyun 	//methods_set_3 0x0014
621*4882a593Smuzhiyun 	u8 sw_rk_red_blue3_en;
622*4882a593Smuzhiyun 	u8 rg_red_blue3_enable;
623*4882a593Smuzhiyun 	u8 rnd_red_blue3_enable;
624*4882a593Smuzhiyun 	u8 ro_red_blue3_enable;
625*4882a593Smuzhiyun 	u8 lc_red_blue3_enable;
626*4882a593Smuzhiyun 	u8 pg_red_blue3_enable;
627*4882a593Smuzhiyun 	u8 sw_rk_green3_en;
628*4882a593Smuzhiyun 	u8 rg_green3_enable;
629*4882a593Smuzhiyun 	u8 rnd_green3_enable;
630*4882a593Smuzhiyun 	u8 ro_green3_enable;
631*4882a593Smuzhiyun 	u8 lc_green3_enable;
632*4882a593Smuzhiyun 	u8 pg_green3_enable;
633*4882a593Smuzhiyun 
634*4882a593Smuzhiyun 	//line_thresh_1 0x0018
635*4882a593Smuzhiyun 	u8 sw_mindis1_rb;
636*4882a593Smuzhiyun 	u8 sw_mindis1_g;
637*4882a593Smuzhiyun 	u8 line_thr_1_rb;
638*4882a593Smuzhiyun 	u8 line_thr_1_g;
639*4882a593Smuzhiyun 
640*4882a593Smuzhiyun 	//line_mad_fac_1 0x001c
641*4882a593Smuzhiyun 	u8 sw_dis_scale_min1;
642*4882a593Smuzhiyun 	u8 sw_dis_scale_max1;
643*4882a593Smuzhiyun 	u8 line_mad_fac_1_rb;
644*4882a593Smuzhiyun 	u8 line_mad_fac_1_g;
645*4882a593Smuzhiyun 
646*4882a593Smuzhiyun 	//pg_fac_1 0x0020
647*4882a593Smuzhiyun 	u8 pg_fac_1_rb;
648*4882a593Smuzhiyun 	u8 pg_fac_1_g;
649*4882a593Smuzhiyun 
650*4882a593Smuzhiyun 	//rnd_thresh_1 0x0024
651*4882a593Smuzhiyun 	u8 rnd_thr_1_rb;
652*4882a593Smuzhiyun 	u8 rnd_thr_1_g;
653*4882a593Smuzhiyun 
654*4882a593Smuzhiyun 	//rg_fac_1 0x0028
655*4882a593Smuzhiyun 	u8 rg_fac_1_rb;
656*4882a593Smuzhiyun 	u8 rg_fac_1_g;
657*4882a593Smuzhiyun 
658*4882a593Smuzhiyun 	//line_thresh_2 0x002c
659*4882a593Smuzhiyun 	u8 sw_mindis2_rb;
660*4882a593Smuzhiyun 	u8 sw_mindis2_g;
661*4882a593Smuzhiyun 	u8 line_thr_2_rb;
662*4882a593Smuzhiyun 	u8 line_thr_2_g;
663*4882a593Smuzhiyun 
664*4882a593Smuzhiyun 	//line_mad_fac_2 0x0030
665*4882a593Smuzhiyun 	u8 sw_dis_scale_min2;
666*4882a593Smuzhiyun 	u8 sw_dis_scale_max2;
667*4882a593Smuzhiyun 	u8 line_mad_fac_2_rb;
668*4882a593Smuzhiyun 	u8 line_mad_fac_2_g;
669*4882a593Smuzhiyun 
670*4882a593Smuzhiyun 	//pg_fac_2 0x0034
671*4882a593Smuzhiyun 	u8 pg_fac_2_rb;
672*4882a593Smuzhiyun 	u8 pg_fac_2_g;
673*4882a593Smuzhiyun 
674*4882a593Smuzhiyun 	//rnd_thresh_2 0x0038
675*4882a593Smuzhiyun 	u8 rnd_thr_2_rb;
676*4882a593Smuzhiyun 	u8 rnd_thr_2_g;
677*4882a593Smuzhiyun 
678*4882a593Smuzhiyun 	//rg_fac_2 0x003c
679*4882a593Smuzhiyun 	u8 rg_fac_2_rb;
680*4882a593Smuzhiyun 	u8 rg_fac_2_g;
681*4882a593Smuzhiyun 
682*4882a593Smuzhiyun 	//line_thresh_3 0x0040
683*4882a593Smuzhiyun 	u8 sw_mindis3_rb;
684*4882a593Smuzhiyun 	u8 sw_mindis3_g;
685*4882a593Smuzhiyun 	u8 line_thr_3_rb;
686*4882a593Smuzhiyun 	u8 line_thr_3_g;
687*4882a593Smuzhiyun 
688*4882a593Smuzhiyun 	//line_mad_fac_3 0x0044
689*4882a593Smuzhiyun 	u8 sw_dis_scale_min3;
690*4882a593Smuzhiyun 	u8 sw_dis_scale_max3;
691*4882a593Smuzhiyun 	u8 line_mad_fac_3_rb;
692*4882a593Smuzhiyun 	u8 line_mad_fac_3_g;
693*4882a593Smuzhiyun 
694*4882a593Smuzhiyun 	//pg_fac_3 0x0048
695*4882a593Smuzhiyun 	u8 pg_fac_3_rb;
696*4882a593Smuzhiyun 	u8 pg_fac_3_g;
697*4882a593Smuzhiyun 
698*4882a593Smuzhiyun 	//rnd_thresh_3 0x004c
699*4882a593Smuzhiyun 	u8 rnd_thr_3_rb;
700*4882a593Smuzhiyun 	u8 rnd_thr_3_g;
701*4882a593Smuzhiyun 
702*4882a593Smuzhiyun 	//rg_fac_3 0x0050
703*4882a593Smuzhiyun 	u8 rg_fac_3_rb;
704*4882a593Smuzhiyun 	u8 rg_fac_3_g;
705*4882a593Smuzhiyun 
706*4882a593Smuzhiyun 	//ro_limits 0x0054
707*4882a593Smuzhiyun 	u8 ro_lim_3_rb;
708*4882a593Smuzhiyun 	u8 ro_lim_3_g;
709*4882a593Smuzhiyun 	u8 ro_lim_2_rb;
710*4882a593Smuzhiyun 	u8 ro_lim_2_g;
711*4882a593Smuzhiyun 	u8 ro_lim_1_rb;
712*4882a593Smuzhiyun 	u8 ro_lim_1_g;
713*4882a593Smuzhiyun 
714*4882a593Smuzhiyun 	//rnd_offs 0x0058
715*4882a593Smuzhiyun 	u8 rnd_offs_3_rb;
716*4882a593Smuzhiyun 	u8 rnd_offs_3_g;
717*4882a593Smuzhiyun 	u8 rnd_offs_2_rb;
718*4882a593Smuzhiyun 	u8 rnd_offs_2_g;
719*4882a593Smuzhiyun 	u8 rnd_offs_1_rb;
720*4882a593Smuzhiyun 	u8 rnd_offs_1_g;
721*4882a593Smuzhiyun 
722*4882a593Smuzhiyun 	//bpt_ctrl 0x005c
723*4882a593Smuzhiyun 	u8 bpt_rb_3x3;
724*4882a593Smuzhiyun 	u8 bpt_g_3x3;
725*4882a593Smuzhiyun 	u8 bpt_incl_rb_center;
726*4882a593Smuzhiyun 	u8 bpt_incl_green_center;
727*4882a593Smuzhiyun 	u8 bpt_use_fix_set;
728*4882a593Smuzhiyun 	u8 bpt_use_set_3;
729*4882a593Smuzhiyun 	u8 bpt_use_set_2;
730*4882a593Smuzhiyun 	u8 bpt_use_set_1;
731*4882a593Smuzhiyun 	u8 bpt_cor_en;
732*4882a593Smuzhiyun 	u8 bpt_det_en;
733*4882a593Smuzhiyun 
734*4882a593Smuzhiyun 	//bpt_number 0x0060
735*4882a593Smuzhiyun 	u16 bp_number;
736*4882a593Smuzhiyun 
737*4882a593Smuzhiyun 	//bpt_addr 0x0064
738*4882a593Smuzhiyun 	u16 bp_table_addr;
739*4882a593Smuzhiyun 
740*4882a593Smuzhiyun 	//bpt_data 0x0068
741*4882a593Smuzhiyun 	u16 bpt_v_addr;
742*4882a593Smuzhiyun 	u16 bpt_h_addr;
743*4882a593Smuzhiyun 
744*4882a593Smuzhiyun 	//bp_cnt 0x006c
745*4882a593Smuzhiyun 	u32 bp_cnt;
746*4882a593Smuzhiyun 
747*4882a593Smuzhiyun 	//pdaf_en 0x0070
748*4882a593Smuzhiyun 	u8 sw_pdaf_en;
749*4882a593Smuzhiyun 
750*4882a593Smuzhiyun 	//pdaf_point_en 0x0074
751*4882a593Smuzhiyun 	u8 pdaf_point_en[ISP2X_DPCC_PDAF_POINT_NUM];
752*4882a593Smuzhiyun 
753*4882a593Smuzhiyun 	//pdaf_offset 0x0078
754*4882a593Smuzhiyun 	u16 pdaf_offsety;
755*4882a593Smuzhiyun 	u16 pdaf_offsetx;
756*4882a593Smuzhiyun 
757*4882a593Smuzhiyun 	//pdaf_wrap 0x007c
758*4882a593Smuzhiyun 	u16 pdaf_wrapy;
759*4882a593Smuzhiyun 	u16 pdaf_wrapx;
760*4882a593Smuzhiyun 
761*4882a593Smuzhiyun 	//pdaf_scope 0x0080
762*4882a593Smuzhiyun 	u16 pdaf_wrapy_num;
763*4882a593Smuzhiyun 	u16 pdaf_wrapx_num;
764*4882a593Smuzhiyun 
765*4882a593Smuzhiyun 	//pdaf_point_0 0x0084
766*4882a593Smuzhiyun 	struct isp2x_dpcc_pdaf_point point[ISP2X_DPCC_PDAF_POINT_NUM];
767*4882a593Smuzhiyun 
768*4882a593Smuzhiyun 	//pdaf_forward_med 0x00a4
769*4882a593Smuzhiyun 	u8 pdaf_forward_med;
770*4882a593Smuzhiyun } __attribute__ ((packed));
771*4882a593Smuzhiyun 
772*4882a593Smuzhiyun struct isp2x_hdrmge_curve {
773*4882a593Smuzhiyun 	u16 curve_1[ISP2X_HDRMGE_L_CURVE_NUM];
774*4882a593Smuzhiyun 	u16 curve_0[ISP2X_HDRMGE_L_CURVE_NUM];
775*4882a593Smuzhiyun } __attribute__ ((packed));
776*4882a593Smuzhiyun 
777*4882a593Smuzhiyun struct isp2x_hdrmge_cfg {
778*4882a593Smuzhiyun 	u8 mode;
779*4882a593Smuzhiyun 
780*4882a593Smuzhiyun 	u16 gain0_inv;
781*4882a593Smuzhiyun 	u16 gain0;
782*4882a593Smuzhiyun 
783*4882a593Smuzhiyun 	u16 gain1_inv;
784*4882a593Smuzhiyun 	u16 gain1;
785*4882a593Smuzhiyun 
786*4882a593Smuzhiyun 	u8 gain2;
787*4882a593Smuzhiyun 
788*4882a593Smuzhiyun 	u8 lm_dif_0p15;
789*4882a593Smuzhiyun 	u8 lm_dif_0p9;
790*4882a593Smuzhiyun 	u8 ms_diff_0p15;
791*4882a593Smuzhiyun 	u8 ms_dif_0p8;
792*4882a593Smuzhiyun 
793*4882a593Smuzhiyun 	struct isp2x_hdrmge_curve curve;
794*4882a593Smuzhiyun 	u16 e_y[ISP2X_HDRMGE_E_CURVE_NUM];
795*4882a593Smuzhiyun } __attribute__ ((packed));
796*4882a593Smuzhiyun 
797*4882a593Smuzhiyun struct isp2x_rawnr_cfg {
798*4882a593Smuzhiyun 	u8 gauss_en;
799*4882a593Smuzhiyun 	u8 log_bypass;
800*4882a593Smuzhiyun 
801*4882a593Smuzhiyun 	u16 filtpar0;
802*4882a593Smuzhiyun 	u16 filtpar1;
803*4882a593Smuzhiyun 	u16 filtpar2;
804*4882a593Smuzhiyun 
805*4882a593Smuzhiyun 	u32 dgain0;
806*4882a593Smuzhiyun 	u32 dgain1;
807*4882a593Smuzhiyun 	u32 dgain2;
808*4882a593Smuzhiyun 
809*4882a593Smuzhiyun 	u16 luration[ISP2X_RAWNR_LUMA_RATION_NUM];
810*4882a593Smuzhiyun 	u16 lulevel[ISP2X_RAWNR_LUMA_RATION_NUM];
811*4882a593Smuzhiyun 
812*4882a593Smuzhiyun 	u32 gauss;
813*4882a593Smuzhiyun 	u16 sigma;
814*4882a593Smuzhiyun 	u16 pix_diff;
815*4882a593Smuzhiyun 
816*4882a593Smuzhiyun 	u32 thld_diff;
817*4882a593Smuzhiyun 
818*4882a593Smuzhiyun 	u8 gas_weig_scl2;
819*4882a593Smuzhiyun 	u8 gas_weig_scl1;
820*4882a593Smuzhiyun 	u16 thld_chanelw;
821*4882a593Smuzhiyun 
822*4882a593Smuzhiyun 	u16 lamda;
823*4882a593Smuzhiyun 
824*4882a593Smuzhiyun 	u16 fixw0;
825*4882a593Smuzhiyun 	u16 fixw1;
826*4882a593Smuzhiyun 	u16 fixw2;
827*4882a593Smuzhiyun 	u16 fixw3;
828*4882a593Smuzhiyun 
829*4882a593Smuzhiyun 	u32 wlamda0;
830*4882a593Smuzhiyun 	u32 wlamda1;
831*4882a593Smuzhiyun 	u32 wlamda2;
832*4882a593Smuzhiyun 
833*4882a593Smuzhiyun 	u16 rgain_filp;
834*4882a593Smuzhiyun 	u16 bgain_filp;
835*4882a593Smuzhiyun } __attribute__ ((packed));
836*4882a593Smuzhiyun 
837*4882a593Smuzhiyun struct isp2x_lsc_cfg {
838*4882a593Smuzhiyun 	u16 r_data_tbl[ISP2X_LSC_DATA_TBL_SIZE];
839*4882a593Smuzhiyun 	u16 gr_data_tbl[ISP2X_LSC_DATA_TBL_SIZE];
840*4882a593Smuzhiyun 	u16 gb_data_tbl[ISP2X_LSC_DATA_TBL_SIZE];
841*4882a593Smuzhiyun 	u16 b_data_tbl[ISP2X_LSC_DATA_TBL_SIZE];
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun 	u16 x_grad_tbl[ISP2X_LSC_GRAD_TBL_SIZE];
844*4882a593Smuzhiyun 	u16 y_grad_tbl[ISP2X_LSC_GRAD_TBL_SIZE];
845*4882a593Smuzhiyun 
846*4882a593Smuzhiyun 	u16 x_size_tbl[ISP2X_LSC_SIZE_TBL_SIZE];
847*4882a593Smuzhiyun 	u16 y_size_tbl[ISP2X_LSC_SIZE_TBL_SIZE];
848*4882a593Smuzhiyun } __attribute__ ((packed));
849*4882a593Smuzhiyun 
850*4882a593Smuzhiyun enum isp2x_goc_mode {
851*4882a593Smuzhiyun 	ISP2X_GOC_MODE_LOGARITHMIC,
852*4882a593Smuzhiyun 	ISP2X_GOC_MODE_EQUIDISTANT
853*4882a593Smuzhiyun };
854*4882a593Smuzhiyun 
855*4882a593Smuzhiyun struct isp2x_goc_cfg {
856*4882a593Smuzhiyun 	enum isp2x_goc_mode mode;
857*4882a593Smuzhiyun 	u8 gamma_y[17];
858*4882a593Smuzhiyun } __attribute__ ((packed));
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun struct isp2x_hdrtmo_predict {
861*4882a593Smuzhiyun 	u8 global_tmo;
862*4882a593Smuzhiyun 	s32 iir_max;
863*4882a593Smuzhiyun 	s32 global_tmo_strength;
864*4882a593Smuzhiyun 
865*4882a593Smuzhiyun 	u8 scene_stable;
866*4882a593Smuzhiyun 	s32 k_rolgmean;
867*4882a593Smuzhiyun 	s32 iir;
868*4882a593Smuzhiyun } __attribute__ ((packed));
869*4882a593Smuzhiyun 
870*4882a593Smuzhiyun struct isp2x_hdrtmo_cfg {
871*4882a593Smuzhiyun 	u16 cnt_vsize;
872*4882a593Smuzhiyun 	u8 gain_ld_off2;
873*4882a593Smuzhiyun 	u8 gain_ld_off1;
874*4882a593Smuzhiyun 	u8 big_en;
875*4882a593Smuzhiyun 	u8 nobig_en;
876*4882a593Smuzhiyun 	u8 newhst_en;
877*4882a593Smuzhiyun 	u8 cnt_mode;
878*4882a593Smuzhiyun 
879*4882a593Smuzhiyun 	u16 expl_lgratio;
880*4882a593Smuzhiyun 	u8 lgscl_ratio;
881*4882a593Smuzhiyun 	u8 cfg_alpha;
882*4882a593Smuzhiyun 
883*4882a593Smuzhiyun 	u16 set_gainoff;
884*4882a593Smuzhiyun 	u16 set_palpha;
885*4882a593Smuzhiyun 
886*4882a593Smuzhiyun 	u16 set_lgmax;
887*4882a593Smuzhiyun 	u16 set_lgmin;
888*4882a593Smuzhiyun 
889*4882a593Smuzhiyun 	u8 set_weightkey;
890*4882a593Smuzhiyun 	u16 set_lgmean;
891*4882a593Smuzhiyun 
892*4882a593Smuzhiyun 	u16 set_lgrange1;
893*4882a593Smuzhiyun 	u16 set_lgrange0;
894*4882a593Smuzhiyun 
895*4882a593Smuzhiyun 	u16 set_lgavgmax;
896*4882a593Smuzhiyun 
897*4882a593Smuzhiyun 	u8 clipgap1_i;
898*4882a593Smuzhiyun 	u8 clipgap0_i;
899*4882a593Smuzhiyun 	u8 clipratio1;
900*4882a593Smuzhiyun 	u8 clipratio0;
901*4882a593Smuzhiyun 	u8 ratiol;
902*4882a593Smuzhiyun 
903*4882a593Smuzhiyun 	u16 lgscl_inv;
904*4882a593Smuzhiyun 	u16 lgscl;
905*4882a593Smuzhiyun 
906*4882a593Smuzhiyun 	u16 lgmax;
907*4882a593Smuzhiyun 
908*4882a593Smuzhiyun 	u16 hist_low;
909*4882a593Smuzhiyun 	u16 hist_min;
910*4882a593Smuzhiyun 
911*4882a593Smuzhiyun 	u8 hist_shift;
912*4882a593Smuzhiyun 	u16 hist_0p3;
913*4882a593Smuzhiyun 	u16 hist_high;
914*4882a593Smuzhiyun 
915*4882a593Smuzhiyun 	u16 palpha_lwscl;
916*4882a593Smuzhiyun 	u16 palpha_lw0p5;
917*4882a593Smuzhiyun 	u16 palpha_0p18;
918*4882a593Smuzhiyun 
919*4882a593Smuzhiyun 	u16 maxgain;
920*4882a593Smuzhiyun 	u16 maxpalpha;
921*4882a593Smuzhiyun 
922*4882a593Smuzhiyun 	struct isp2x_hdrtmo_predict predict;
923*4882a593Smuzhiyun } __attribute__ ((packed));
924*4882a593Smuzhiyun 
925*4882a593Smuzhiyun struct isp2x_hdrtmo_stat {
926*4882a593Smuzhiyun 	u16 lglow;
927*4882a593Smuzhiyun 	u16 lgmin;
928*4882a593Smuzhiyun 	u16 lghigh;
929*4882a593Smuzhiyun 	u16 lgmax;
930*4882a593Smuzhiyun 	u16 weightkey;
931*4882a593Smuzhiyun 	u16 lgmean;
932*4882a593Smuzhiyun 	u16 lgrange1;
933*4882a593Smuzhiyun 	u16 lgrange0;
934*4882a593Smuzhiyun 	u16 palpha;
935*4882a593Smuzhiyun 	u16 lgavgmax;
936*4882a593Smuzhiyun 	u16 linecnt;
937*4882a593Smuzhiyun 	u32 min_max[ISP2X_HDRTMO_MINMAX_NUM];
938*4882a593Smuzhiyun } __attribute__ ((packed));
939*4882a593Smuzhiyun 
940*4882a593Smuzhiyun struct isp2x_gic_cfg {
941*4882a593Smuzhiyun 	u8 edge_open;
942*4882a593Smuzhiyun 
943*4882a593Smuzhiyun 	u16 regmingradthrdark2;
944*4882a593Smuzhiyun 	u16 regmingradthrdark1;
945*4882a593Smuzhiyun 	u16 regminbusythre;
946*4882a593Smuzhiyun 
947*4882a593Smuzhiyun 	u16 regdarkthre;
948*4882a593Smuzhiyun 	u16 regmaxcorvboth;
949*4882a593Smuzhiyun 	u16 regdarktthrehi;
950*4882a593Smuzhiyun 
951*4882a593Smuzhiyun 	u8 regkgrad2dark;
952*4882a593Smuzhiyun 	u8 regkgrad1dark;
953*4882a593Smuzhiyun 	u8 regstrengthglobal_fix;
954*4882a593Smuzhiyun 	u8 regdarkthrestep;
955*4882a593Smuzhiyun 	u8 regkgrad2;
956*4882a593Smuzhiyun 	u8 regkgrad1;
957*4882a593Smuzhiyun 	u8 reggbthre;
958*4882a593Smuzhiyun 
959*4882a593Smuzhiyun 	u16 regmaxcorv;
960*4882a593Smuzhiyun 	u16 regmingradthr2;
961*4882a593Smuzhiyun 	u16 regmingradthr1;
962*4882a593Smuzhiyun 
963*4882a593Smuzhiyun 	u8 gr_ratio;
964*4882a593Smuzhiyun 	u16 dnloscale;
965*4882a593Smuzhiyun 	u16 dnhiscale;
966*4882a593Smuzhiyun 	u8 reglumapointsstep;
967*4882a593Smuzhiyun 
968*4882a593Smuzhiyun 	u16 gvaluelimitlo;
969*4882a593Smuzhiyun 	u16 gvaluelimithi;
970*4882a593Smuzhiyun 	u8 fusionratiohilimt1;
971*4882a593Smuzhiyun 
972*4882a593Smuzhiyun 	u8 regstrength_fix;
973*4882a593Smuzhiyun 
974*4882a593Smuzhiyun 	u16 sigma_y[ISP2X_GIC_SIGMA_Y_NUM];
975*4882a593Smuzhiyun 
976*4882a593Smuzhiyun 	u8 noise_cut_en;
977*4882a593Smuzhiyun 	u16 noise_coe_a;
978*4882a593Smuzhiyun 
979*4882a593Smuzhiyun 	u16 noise_coe_b;
980*4882a593Smuzhiyun 	u16 diff_clip;
981*4882a593Smuzhiyun } __attribute__ ((packed));
982*4882a593Smuzhiyun 
983*4882a593Smuzhiyun struct isp2x_debayer_cfg {
984*4882a593Smuzhiyun 	u8 filter_c_en;
985*4882a593Smuzhiyun 	u8 filter_g_en;
986*4882a593Smuzhiyun 
987*4882a593Smuzhiyun 	u8 thed1;
988*4882a593Smuzhiyun 	u8 thed0;
989*4882a593Smuzhiyun 	u8 dist_scale;
990*4882a593Smuzhiyun 	u8 max_ratio;
991*4882a593Smuzhiyun 	u8 clip_en;
992*4882a593Smuzhiyun 
993*4882a593Smuzhiyun 	s8 filter1_coe5;
994*4882a593Smuzhiyun 	s8 filter1_coe4;
995*4882a593Smuzhiyun 	s8 filter1_coe3;
996*4882a593Smuzhiyun 	s8 filter1_coe2;
997*4882a593Smuzhiyun 	s8 filter1_coe1;
998*4882a593Smuzhiyun 
999*4882a593Smuzhiyun 	s8 filter2_coe5;
1000*4882a593Smuzhiyun 	s8 filter2_coe4;
1001*4882a593Smuzhiyun 	s8 filter2_coe3;
1002*4882a593Smuzhiyun 	s8 filter2_coe2;
1003*4882a593Smuzhiyun 	s8 filter2_coe1;
1004*4882a593Smuzhiyun 
1005*4882a593Smuzhiyun 	u16 hf_offset;
1006*4882a593Smuzhiyun 	u8 gain_offset;
1007*4882a593Smuzhiyun 	u8 offset;
1008*4882a593Smuzhiyun 
1009*4882a593Smuzhiyun 	u8 shift_num;
1010*4882a593Smuzhiyun 	u8 order_max;
1011*4882a593Smuzhiyun 	u8 order_min;
1012*4882a593Smuzhiyun } __attribute__ ((packed));
1013*4882a593Smuzhiyun 
1014*4882a593Smuzhiyun struct isp2x_ccm_cfg {
1015*4882a593Smuzhiyun 	s16 coeff0_r;
1016*4882a593Smuzhiyun 	s16 coeff1_r;
1017*4882a593Smuzhiyun 	s16 coeff2_r;
1018*4882a593Smuzhiyun 	s16 offset_r;
1019*4882a593Smuzhiyun 
1020*4882a593Smuzhiyun 	s16 coeff0_g;
1021*4882a593Smuzhiyun 	s16 coeff1_g;
1022*4882a593Smuzhiyun 	s16 coeff2_g;
1023*4882a593Smuzhiyun 	s16 offset_g;
1024*4882a593Smuzhiyun 
1025*4882a593Smuzhiyun 	s16 coeff0_b;
1026*4882a593Smuzhiyun 	s16 coeff1_b;
1027*4882a593Smuzhiyun 	s16 coeff2_b;
1028*4882a593Smuzhiyun 	s16 offset_b;
1029*4882a593Smuzhiyun 
1030*4882a593Smuzhiyun 	u16 coeff0_y;
1031*4882a593Smuzhiyun 	u16 coeff1_y;
1032*4882a593Smuzhiyun 	u16 coeff2_y;
1033*4882a593Smuzhiyun 
1034*4882a593Smuzhiyun 	u16 alp_y[ISP2X_CCM_CURVE_NUM];
1035*4882a593Smuzhiyun 
1036*4882a593Smuzhiyun 	u8 bound_bit;
1037*4882a593Smuzhiyun } __attribute__ ((packed));
1038*4882a593Smuzhiyun 
1039*4882a593Smuzhiyun struct isp2x_gammaout_cfg {
1040*4882a593Smuzhiyun 	u8 equ_segm;
1041*4882a593Smuzhiyun 	u16 offset;
1042*4882a593Smuzhiyun 	u16 gamma_y[ISP2X_GAMMA_OUT_MAX_SAMPLES];
1043*4882a593Smuzhiyun } __attribute__ ((packed));
1044*4882a593Smuzhiyun 
1045*4882a593Smuzhiyun enum isp2x_wdr_mode {
1046*4882a593Smuzhiyun 	ISP2X_WDR_MODE_BLOCK,
1047*4882a593Smuzhiyun 	ISP2X_WDR_MODE_GLOBAL
1048*4882a593Smuzhiyun };
1049*4882a593Smuzhiyun 
1050*4882a593Smuzhiyun struct isp2x_wdr_cfg {
1051*4882a593Smuzhiyun 	enum isp2x_wdr_mode mode;
1052*4882a593Smuzhiyun 	unsigned int c_wdr[ISP2X_WDR_SIZE];
1053*4882a593Smuzhiyun } __attribute__ ((packed));
1054*4882a593Smuzhiyun 
1055*4882a593Smuzhiyun struct isp2x_dhaz_cfg {
1056*4882a593Smuzhiyun 	u8 enhance_en;
1057*4882a593Smuzhiyun 	u8 hist_chn;
1058*4882a593Smuzhiyun 	u8 hpara_en;
1059*4882a593Smuzhiyun 	u8 hist_en;
1060*4882a593Smuzhiyun 	u8 dc_en;
1061*4882a593Smuzhiyun 	u8 big_en;
1062*4882a593Smuzhiyun 	u8 nobig_en;
1063*4882a593Smuzhiyun 
1064*4882a593Smuzhiyun 	u8 yblk_th;
1065*4882a593Smuzhiyun 	u8 yhist_th;
1066*4882a593Smuzhiyun 	u8 dc_max_th;
1067*4882a593Smuzhiyun 	u8 dc_min_th;
1068*4882a593Smuzhiyun 
1069*4882a593Smuzhiyun 	u16 wt_max;
1070*4882a593Smuzhiyun 	u8 bright_max;
1071*4882a593Smuzhiyun 	u8 bright_min;
1072*4882a593Smuzhiyun 
1073*4882a593Smuzhiyun 	u8 tmax_base;
1074*4882a593Smuzhiyun 	u8 dark_th;
1075*4882a593Smuzhiyun 	u8 air_max;
1076*4882a593Smuzhiyun 	u8 air_min;
1077*4882a593Smuzhiyun 
1078*4882a593Smuzhiyun 	u16 tmax_max;
1079*4882a593Smuzhiyun 	u16 tmax_off;
1080*4882a593Smuzhiyun 
1081*4882a593Smuzhiyun 	u8 hist_th_off;
1082*4882a593Smuzhiyun 	u8 hist_gratio;
1083*4882a593Smuzhiyun 
1084*4882a593Smuzhiyun 	u16 hist_min;
1085*4882a593Smuzhiyun 	u16 hist_k;
1086*4882a593Smuzhiyun 
1087*4882a593Smuzhiyun 	u16 enhance_value;
1088*4882a593Smuzhiyun 	u16 hist_scale;
1089*4882a593Smuzhiyun 
1090*4882a593Smuzhiyun 	u16 iir_wt_sigma;
1091*4882a593Smuzhiyun 	u16 iir_sigma;
1092*4882a593Smuzhiyun 	u16 stab_fnum;
1093*4882a593Smuzhiyun 
1094*4882a593Smuzhiyun 	u16 iir_tmax_sigma;
1095*4882a593Smuzhiyun 	u16 iir_air_sigma;
1096*4882a593Smuzhiyun 
1097*4882a593Smuzhiyun 	u16 cfg_wt;
1098*4882a593Smuzhiyun 	u16 cfg_air;
1099*4882a593Smuzhiyun 	u16 cfg_alpha;
1100*4882a593Smuzhiyun 
1101*4882a593Smuzhiyun 	u16 cfg_gratio;
1102*4882a593Smuzhiyun 	u16 cfg_tmax;
1103*4882a593Smuzhiyun 
1104*4882a593Smuzhiyun 	u16 dc_weitcur;
1105*4882a593Smuzhiyun 	u16 dc_thed;
1106*4882a593Smuzhiyun 
1107*4882a593Smuzhiyun 	u8 sw_dhaz_dc_bf_h3;
1108*4882a593Smuzhiyun 	u8 sw_dhaz_dc_bf_h2;
1109*4882a593Smuzhiyun 	u8 sw_dhaz_dc_bf_h1;
1110*4882a593Smuzhiyun 	u8 sw_dhaz_dc_bf_h0;
1111*4882a593Smuzhiyun 
1112*4882a593Smuzhiyun 	u8 sw_dhaz_dc_bf_h5;
1113*4882a593Smuzhiyun 	u8 sw_dhaz_dc_bf_h4;
1114*4882a593Smuzhiyun 
1115*4882a593Smuzhiyun 	u16 air_weitcur;
1116*4882a593Smuzhiyun 	u16 air_thed;
1117*4882a593Smuzhiyun 
1118*4882a593Smuzhiyun 	u8 air_bf_h2;
1119*4882a593Smuzhiyun 	u8 air_bf_h1;
1120*4882a593Smuzhiyun 	u8 air_bf_h0;
1121*4882a593Smuzhiyun 
1122*4882a593Smuzhiyun 	u8 gaus_h2;
1123*4882a593Smuzhiyun 	u8 gaus_h1;
1124*4882a593Smuzhiyun 	u8 gaus_h0;
1125*4882a593Smuzhiyun 
1126*4882a593Smuzhiyun 	u8 conv_t0[ISP2X_DHAZ_CONV_COEFF_NUM];
1127*4882a593Smuzhiyun 	u8 conv_t1[ISP2X_DHAZ_CONV_COEFF_NUM];
1128*4882a593Smuzhiyun 	u8 conv_t2[ISP2X_DHAZ_CONV_COEFF_NUM];
1129*4882a593Smuzhiyun } __attribute__ ((packed));
1130*4882a593Smuzhiyun 
1131*4882a593Smuzhiyun struct isp2x_dhaz_stat {
1132*4882a593Smuzhiyun 	u16 dhaz_adp_air_base;
1133*4882a593Smuzhiyun 	u16 dhaz_adp_wt;
1134*4882a593Smuzhiyun 
1135*4882a593Smuzhiyun 	u16 dhaz_adp_gratio;
1136*4882a593Smuzhiyun 	u16 dhaz_adp_tmax;
1137*4882a593Smuzhiyun 
1138*4882a593Smuzhiyun 	u16 h_r_iir[ISP2X_DHAZ_HIST_IIR_NUM];
1139*4882a593Smuzhiyun 	u16 h_g_iir[ISP2X_DHAZ_HIST_IIR_NUM];
1140*4882a593Smuzhiyun 	u16 h_b_iir[ISP2X_DHAZ_HIST_IIR_NUM];
1141*4882a593Smuzhiyun } __attribute__ ((packed));
1142*4882a593Smuzhiyun 
1143*4882a593Smuzhiyun struct isp2x_cproc_cfg {
1144*4882a593Smuzhiyun 	u8 c_out_range;
1145*4882a593Smuzhiyun 	u8 y_in_range;
1146*4882a593Smuzhiyun 	u8 y_out_range;
1147*4882a593Smuzhiyun 	u8 contrast;
1148*4882a593Smuzhiyun 	u8 brightness;
1149*4882a593Smuzhiyun 	u8 sat;
1150*4882a593Smuzhiyun 	u8 hue;
1151*4882a593Smuzhiyun } __attribute__ ((packed));
1152*4882a593Smuzhiyun 
1153*4882a593Smuzhiyun struct isp2x_ie_cfg {
1154*4882a593Smuzhiyun 	u16 effect;
1155*4882a593Smuzhiyun 	u16 color_sel;
1156*4882a593Smuzhiyun 	u16 eff_mat_1;
1157*4882a593Smuzhiyun 	u16 eff_mat_2;
1158*4882a593Smuzhiyun 	u16 eff_mat_3;
1159*4882a593Smuzhiyun 	u16 eff_mat_4;
1160*4882a593Smuzhiyun 	u16 eff_mat_5;
1161*4882a593Smuzhiyun 	u16 eff_tint;
1162*4882a593Smuzhiyun } __attribute__ ((packed));
1163*4882a593Smuzhiyun 
1164*4882a593Smuzhiyun struct isp2x_rkiesharp_cfg {
1165*4882a593Smuzhiyun 	u8 coring_thr;
1166*4882a593Smuzhiyun 	u8 full_range;
1167*4882a593Smuzhiyun 	u8 switch_avg;
1168*4882a593Smuzhiyun 	u8 yavg_thr[4];
1169*4882a593Smuzhiyun 	u8 delta1[5];
1170*4882a593Smuzhiyun 	u8 delta2[5];
1171*4882a593Smuzhiyun 	u8 maxnumber[5];
1172*4882a593Smuzhiyun 	u8 minnumber[5];
1173*4882a593Smuzhiyun 	u8 gauss_flat_coe[9];
1174*4882a593Smuzhiyun 	u8 gauss_noise_coe[9];
1175*4882a593Smuzhiyun 	u8 gauss_other_coe[9];
1176*4882a593Smuzhiyun 	u8 line1_filter_coe[6];
1177*4882a593Smuzhiyun 	u8 line2_filter_coe[9];
1178*4882a593Smuzhiyun 	u8 line3_filter_coe[6];
1179*4882a593Smuzhiyun 	u16 grad_seq[4];
1180*4882a593Smuzhiyun 	u8 sharp_factor[5];
1181*4882a593Smuzhiyun 	u8 uv_gauss_flat_coe[15];
1182*4882a593Smuzhiyun 	u8 uv_gauss_noise_coe[15];
1183*4882a593Smuzhiyun 	u8 uv_gauss_other_coe[15];
1184*4882a593Smuzhiyun 	u8 lap_mat_coe[9];
1185*4882a593Smuzhiyun } __attribute__ ((packed));
1186*4882a593Smuzhiyun 
1187*4882a593Smuzhiyun struct isp2x_superimp_cfg {
1188*4882a593Smuzhiyun 	u8 transparency_mode;
1189*4882a593Smuzhiyun 	u8 ref_image;
1190*4882a593Smuzhiyun 
1191*4882a593Smuzhiyun 	u16 offset_x;
1192*4882a593Smuzhiyun 	u16 offset_y;
1193*4882a593Smuzhiyun 
1194*4882a593Smuzhiyun 	u8 y_comp;
1195*4882a593Smuzhiyun 	u8 cb_comp;
1196*4882a593Smuzhiyun 	u8 cr_comp;
1197*4882a593Smuzhiyun } __attribute__ ((packed));
1198*4882a593Smuzhiyun 
1199*4882a593Smuzhiyun struct isp2x_gamma_corr_curve {
1200*4882a593Smuzhiyun 	u16 gamma_y[ISP2X_DEGAMMA_CURVE_SIZE];
1201*4882a593Smuzhiyun } __attribute__ ((packed));
1202*4882a593Smuzhiyun 
1203*4882a593Smuzhiyun struct isp2x_gamma_curve_x_axis_pnts {
1204*4882a593Smuzhiyun 	u32 gamma_dx0;
1205*4882a593Smuzhiyun 	u32 gamma_dx1;
1206*4882a593Smuzhiyun } __attribute__ ((packed));
1207*4882a593Smuzhiyun 
1208*4882a593Smuzhiyun struct isp2x_sdg_cfg {
1209*4882a593Smuzhiyun 	struct isp2x_gamma_corr_curve curve_r;
1210*4882a593Smuzhiyun 	struct isp2x_gamma_corr_curve curve_g;
1211*4882a593Smuzhiyun 	struct isp2x_gamma_corr_curve curve_b;
1212*4882a593Smuzhiyun 	struct isp2x_gamma_curve_x_axis_pnts xa_pnts;
1213*4882a593Smuzhiyun } __attribute__ ((packed));
1214*4882a593Smuzhiyun 
1215*4882a593Smuzhiyun struct isp2x_bdm_config {
1216*4882a593Smuzhiyun 	unsigned char demosaic_th;
1217*4882a593Smuzhiyun } __attribute__ ((packed));
1218*4882a593Smuzhiyun 
1219*4882a593Smuzhiyun struct isp2x_gain_cfg {
1220*4882a593Smuzhiyun 	u8 dhaz_en;
1221*4882a593Smuzhiyun 	u8 wdr_en;
1222*4882a593Smuzhiyun 	u8 tmo_en;
1223*4882a593Smuzhiyun 	u8 lsc_en;
1224*4882a593Smuzhiyun 	u8 mge_en;
1225*4882a593Smuzhiyun 
1226*4882a593Smuzhiyun 	u32 mge_gain[ISP2X_GAIN_HDRMGE_GAIN_NUM];
1227*4882a593Smuzhiyun 	u16 idx[ISP2X_GAIN_IDX_NUM];
1228*4882a593Smuzhiyun 	u16 lut[ISP2X_GAIN_LUT_NUM];
1229*4882a593Smuzhiyun } __attribute__ ((packed));
1230*4882a593Smuzhiyun 
1231*4882a593Smuzhiyun struct isp2x_3dlut_cfg {
1232*4882a593Smuzhiyun 	u8 bypass_en;
1233*4882a593Smuzhiyun 	u32 actual_size;	// word unit
1234*4882a593Smuzhiyun 	u16 lut_r[ISP2X_3DLUT_DATA_NUM];
1235*4882a593Smuzhiyun 	u16 lut_g[ISP2X_3DLUT_DATA_NUM];
1236*4882a593Smuzhiyun 	u16 lut_b[ISP2X_3DLUT_DATA_NUM];
1237*4882a593Smuzhiyun } __attribute__ ((packed));
1238*4882a593Smuzhiyun 
1239*4882a593Smuzhiyun enum isp2x_ldch_buf_stat {
1240*4882a593Smuzhiyun 	LDCH_BUF_INIT = 0,
1241*4882a593Smuzhiyun 	LDCH_BUF_WAIT2CHIP,
1242*4882a593Smuzhiyun 	LDCH_BUF_CHIPINUSE,
1243*4882a593Smuzhiyun };
1244*4882a593Smuzhiyun 
1245*4882a593Smuzhiyun struct rkisp_ldchbuf_info {
1246*4882a593Smuzhiyun 	s32 buf_fd[ISP2X_LDCH_BUF_NUM];
1247*4882a593Smuzhiyun 	u32 buf_size[ISP2X_LDCH_BUF_NUM];
1248*4882a593Smuzhiyun } __attribute__ ((packed));
1249*4882a593Smuzhiyun 
1250*4882a593Smuzhiyun struct rkisp_ldchbuf_size {
1251*4882a593Smuzhiyun 	u32 meas_width;
1252*4882a593Smuzhiyun 	u32 meas_height;
1253*4882a593Smuzhiyun } __attribute__ ((packed));
1254*4882a593Smuzhiyun 
1255*4882a593Smuzhiyun struct isp2x_ldch_head {
1256*4882a593Smuzhiyun 	enum isp2x_ldch_buf_stat stat;
1257*4882a593Smuzhiyun 	u32 data_oft;
1258*4882a593Smuzhiyun } __attribute__ ((packed));
1259*4882a593Smuzhiyun 
1260*4882a593Smuzhiyun struct isp2x_ldch_cfg {
1261*4882a593Smuzhiyun 	u32 hsize;
1262*4882a593Smuzhiyun 	u32 vsize;
1263*4882a593Smuzhiyun 	s32 buf_fd;
1264*4882a593Smuzhiyun } __attribute__ ((packed));
1265*4882a593Smuzhiyun 
1266*4882a593Smuzhiyun struct isp2x_awb_gain_cfg {
1267*4882a593Smuzhiyun 	u16 gain_red;
1268*4882a593Smuzhiyun 	u16 gain_green_r;
1269*4882a593Smuzhiyun 	u16 gain_blue;
1270*4882a593Smuzhiyun 	u16 gain_green_b;
1271*4882a593Smuzhiyun } __attribute__ ((packed));
1272*4882a593Smuzhiyun 
1273*4882a593Smuzhiyun struct isp2x_siawb_meas_cfg {
1274*4882a593Smuzhiyun 	struct isp2x_window awb_wnd;
1275*4882a593Smuzhiyun 	u8 awb_mode;
1276*4882a593Smuzhiyun 	u8 max_y;
1277*4882a593Smuzhiyun 	u8 min_y;
1278*4882a593Smuzhiyun 	u8 max_csum;
1279*4882a593Smuzhiyun 	u8 min_c;
1280*4882a593Smuzhiyun 	u8 frames;
1281*4882a593Smuzhiyun 	u8 awb_ref_cr;
1282*4882a593Smuzhiyun 	u8 awb_ref_cb;
1283*4882a593Smuzhiyun 	u8 enable_ymax_cmp;
1284*4882a593Smuzhiyun } __attribute__ ((packed));
1285*4882a593Smuzhiyun 
1286*4882a593Smuzhiyun struct isp2x_rawawb_meas_cfg {
1287*4882a593Smuzhiyun 	u8 rawawb_sel;
1288*4882a593Smuzhiyun 	u8 sw_rawawb_light_num;			//CTRL
1289*4882a593Smuzhiyun 	u8 sw_rawawb_wind_size;			//CTRL
1290*4882a593Smuzhiyun 	u8 sw_rawawb_c_range;			//CTRL
1291*4882a593Smuzhiyun 	u8 sw_rawawb_y_range;			//CTRL
1292*4882a593Smuzhiyun 	u8 sw_rawawb_3dyuv_ls_idx3;		//CTRL
1293*4882a593Smuzhiyun 	u8 sw_rawawb_3dyuv_ls_idx2;		//CTRL
1294*4882a593Smuzhiyun 	u8 sw_rawawb_3dyuv_ls_idx1;		//CTRL
1295*4882a593Smuzhiyun 	u8 sw_rawawb_3dyuv_ls_idx0;		//CTRL
1296*4882a593Smuzhiyun 	u8 sw_rawawb_xy_en;			//CTRL
1297*4882a593Smuzhiyun 	u8 sw_rawawb_uv_en;			//CTRL
1298*4882a593Smuzhiyun 	u8 sw_rawlsc_bypass_en;			//CTRL
1299*4882a593Smuzhiyun 	u8 sw_rawawb_blk_measure_mode;		//BLK_CTRL
1300*4882a593Smuzhiyun 	u8 sw_rawawb_store_wp_flag_ls_idx2;	//BLK_CTRL
1301*4882a593Smuzhiyun 	u8 sw_rawawb_store_wp_flag_ls_idx1;	//BLK_CTRL
1302*4882a593Smuzhiyun 	u8 sw_rawawb_store_wp_flag_ls_idx0;	//BLK_CTRL
1303*4882a593Smuzhiyun 	u16 sw_rawawb_store_wp_th0;		//BLK_CTRL
1304*4882a593Smuzhiyun 	u16 sw_rawawb_store_wp_th1;		//BLK_CTRL
1305*4882a593Smuzhiyun 	u16 sw_rawawb_store_wp_th2;		//RAW_CTRL
1306*4882a593Smuzhiyun 	u16 sw_rawawb_v_offs;			//WIN_OFFS
1307*4882a593Smuzhiyun 	u16 sw_rawawb_h_offs;			//WIN_OFFS
1308*4882a593Smuzhiyun 	u16 sw_rawawb_v_size;			//WIN_SIZE
1309*4882a593Smuzhiyun 	u16 sw_rawawb_h_size;			//WIN_SIZE
1310*4882a593Smuzhiyun 	u16 sw_rawawb_g_max;			//LIMIT_RG_MAX
1311*4882a593Smuzhiyun 	u16 sw_rawawb_r_max;			//LIMIT_RG_MAX
1312*4882a593Smuzhiyun 	u16 sw_rawawb_y_max;			//LIMIT_BY_MAX
1313*4882a593Smuzhiyun 	u16 sw_rawawb_b_max;			//LIMIT_BY_MAX
1314*4882a593Smuzhiyun 	u16 sw_rawawb_g_min;			//LIMIT_RG_MIN
1315*4882a593Smuzhiyun 	u16 sw_rawawb_r_min;			//LIMIT_RG_MIN
1316*4882a593Smuzhiyun 	u16 sw_rawawb_y_min;			//LIMIT_BY_MIN
1317*4882a593Smuzhiyun 	u16 sw_rawawb_b_min;			//LIMIT_BY_MIN
1318*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_y_g;		//RGB2Y_0
1319*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_y_r;		//RGB2Y_0
1320*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_y_b;		//RGB2Y_1
1321*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_u_g;		//RGB2U_0
1322*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_u_r;		//RGB2U_0
1323*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_u_b;		//RGB2U_1
1324*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_v_g;		//RGB2V_0
1325*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_v_r;		//RGB2V_0
1326*4882a593Smuzhiyun 	u16 sw_rawawb_coeff_v_b;		//RGB2V_1
1327*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_0;		//UV_DETC_VERTEX0_0
1328*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_0;		//UV_DETC_VERTEX0_0
1329*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_0;		//UV_DETC_VERTEX1_0
1330*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_0;		//UV_DETC_VERTEX1_0
1331*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_0;		//UV_DETC_VERTEX2_0
1332*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_0;		//UV_DETC_VERTEX2_0
1333*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_0;		//UV_DETC_VERTEX3_0
1334*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_0;		//UV_DETC_VERTEX3_0
1335*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_0;		//UV_DETC_ISLOPE01_0
1336*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_0;		//UV_DETC_ISLOPE12_0
1337*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_0;		//UV_DETC_ISLOPE23_0
1338*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_0;		//UV_DETC_ISLOPE30_0
1339*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_1;		//UV_DETC_VERTEX0_1
1340*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_1;		//UV_DETC_VERTEX0_1
1341*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_1;		//UV_DETC_VERTEX1_1
1342*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_1;		//UV_DETC_VERTEX1_1
1343*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_1;		//UV_DETC_VERTEX2_1
1344*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_1;		//UV_DETC_VERTEX2_1
1345*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_1;		//UV_DETC_VERTEX3_1
1346*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_1;		//UV_DETC_VERTEX3_1
1347*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_1;		//UV_DETC_ISLOPE01_1
1348*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_1;		//UV_DETC_ISLOPE12_1
1349*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_1;		//UV_DETC_ISLOPE23_1
1350*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_1;		//UV_DETC_ISLOPE30_1
1351*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_2;		//UV_DETC_VERTEX0_2
1352*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_2;		//UV_DETC_VERTEX0_2
1353*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_2;		//UV_DETC_VERTEX1_2
1354*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_2;		//UV_DETC_VERTEX1_2
1355*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_2;		//UV_DETC_VERTEX2_2
1356*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_2;		//UV_DETC_VERTEX2_2
1357*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_2;		//UV_DETC_VERTEX3_2
1358*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_2;		//UV_DETC_VERTEX3_2
1359*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_2;		//UV_DETC_ISLOPE01_2
1360*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_2;		//UV_DETC_ISLOPE12_2
1361*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_2;		//UV_DETC_ISLOPE23_2
1362*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_2;		//UV_DETC_ISLOPE30_2
1363*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_3;		//UV_DETC_VERTEX0_3
1364*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_3;		//UV_DETC_VERTEX0_3
1365*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_3;		//UV_DETC_VERTEX1_3
1366*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_3;		//UV_DETC_VERTEX1_3
1367*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_3;		//UV_DETC_VERTEX2_3
1368*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_3;		//UV_DETC_VERTEX2_3
1369*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_3;		//UV_DETC_VERTEX3_3
1370*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_3;		//UV_DETC_VERTEX3_3
1371*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_3;		//UV_DETC_ISLOPE01_3
1372*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_3;		//UV_DETC_ISLOPE12_3
1373*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_3;		//UV_DETC_ISLOPE23_3
1374*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_3;		//UV_DETC_ISLOPE30_3
1375*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_4;		//UV_DETC_VERTEX0_4
1376*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_4;		//UV_DETC_VERTEX0_4
1377*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_4;		//UV_DETC_VERTEX1_4
1378*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_4;		//UV_DETC_VERTEX1_4
1379*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_4;		//UV_DETC_VERTEX2_4
1380*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_4;		//UV_DETC_VERTEX2_4
1381*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_4;		//UV_DETC_VERTEX3_4
1382*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_4;		//UV_DETC_VERTEX3_4
1383*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_4;		//UV_DETC_ISLOPE01_4
1384*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_4;		//UV_DETC_ISLOPE12_4
1385*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_4;		//UV_DETC_ISLOPE23_4
1386*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_4;		//UV_DETC_ISLOPE30_4
1387*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_5;		//UV_DETC_VERTEX0_5
1388*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_5;		//UV_DETC_VERTEX0_5
1389*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_5;		//UV_DETC_VERTEX1_5
1390*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_5;		//UV_DETC_VERTEX1_5
1391*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_5;		//UV_DETC_VERTEX2_5
1392*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_5;		//UV_DETC_VERTEX2_5
1393*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_5;		//UV_DETC_VERTEX3_5
1394*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_5;		//UV_DETC_VERTEX3_5
1395*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_5;		//UV_DETC_ISLOPE01_5
1396*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_5;		//UV_DETC_ISLOPE10_5
1397*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_5;		//UV_DETC_ISLOPE23_5
1398*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_5;		//UV_DETC_ISLOPE30_5
1399*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_v_6;		//UV_DETC_VERTEX0_6
1400*4882a593Smuzhiyun 	u16 sw_rawawb_vertex0_u_6;		//UV_DETC_VERTEX0_6
1401*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_v_6;		//UV_DETC_VERTEX1_6
1402*4882a593Smuzhiyun 	u16 sw_rawawb_vertex1_u_6;		//UV_DETC_VERTEX1_6
1403*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_v_6;		//UV_DETC_VERTEX2_6
1404*4882a593Smuzhiyun 	u16 sw_rawawb_vertex2_u_6;		//UV_DETC_VERTEX2_6
1405*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_v_6;		//UV_DETC_VERTEX3_6
1406*4882a593Smuzhiyun 	u16 sw_rawawb_vertex3_u_6;		//UV_DETC_VERTEX3_6
1407*4882a593Smuzhiyun 	u32 sw_rawawb_islope01_6;		//UV_DETC_ISLOPE01_6
1408*4882a593Smuzhiyun 	u32 sw_rawawb_islope12_6;		//UV_DETC_ISLOPE10_6
1409*4882a593Smuzhiyun 	u32 sw_rawawb_islope23_6;		//UV_DETC_ISLOPE23_6
1410*4882a593Smuzhiyun 	u32 sw_rawawb_islope30_6;		//UV_DETC_ISLOPE30_6
1411*4882a593Smuzhiyun 	u32 sw_rawawb_b_uv_0;			//YUV_DETC_B_UV_0
1412*4882a593Smuzhiyun 	u32 sw_rawawb_slope_vtcuv_0;		//YUV_DETC_SLOPE_VTCUV_0
1413*4882a593Smuzhiyun 	u32 sw_rawawb_inv_dslope_0;		//YUV_DETC_INV_DSLOPE_0
1414*4882a593Smuzhiyun 	u32 sw_rawawb_slope_ydis_0;		//YUV_DETC_SLOPE_YDIS_0
1415*4882a593Smuzhiyun 	u32 sw_rawawb_b_ydis_0;			//YUV_DETC_B_YDIS_0
1416*4882a593Smuzhiyun 	u32 sw_rawawb_b_uv_1;			//YUV_DETC_B_UV_1
1417*4882a593Smuzhiyun 	u32 sw_rawawb_slope_vtcuv_1;		//YUV_DETC_SLOPE_VTCUV_1
1418*4882a593Smuzhiyun 	u32 sw_rawawb_inv_dslope_1;		//YUV_DETC_INV_DSLOPE_1
1419*4882a593Smuzhiyun 	u32 sw_rawawb_slope_ydis_1;		//YUV_DETC_SLOPE_YDIS_1
1420*4882a593Smuzhiyun 	u32 sw_rawawb_b_ydis_1;			//YUV_DETC_B_YDIS_1
1421*4882a593Smuzhiyun 	u32 sw_rawawb_b_uv_2;			//YUV_DETC_B_UV_2
1422*4882a593Smuzhiyun 	u32 sw_rawawb_slope_vtcuv_2;		//YUV_DETC_SLOPE_VTCUV_2
1423*4882a593Smuzhiyun 	u32 sw_rawawb_inv_dslope_2;		//YUV_DETC_INV_DSLOPE_2
1424*4882a593Smuzhiyun 	u32 sw_rawawb_slope_ydis_2;		//YUV_DETC_SLOPE_YDIS_2
1425*4882a593Smuzhiyun 	u32 sw_rawawb_b_ydis_2;			//YUV_DETC_B_YDIS_2
1426*4882a593Smuzhiyun 	u32 sw_rawawb_b_uv_3;			//YUV_DETC_B_UV_3
1427*4882a593Smuzhiyun 	u32 sw_rawawb_slope_vtcuv_3;		//YUV_DETC_SLOPE_VTCUV_3
1428*4882a593Smuzhiyun 	u32 sw_rawawb_inv_dslope_3;		//YUV_DETC_INV_DSLOPE_3
1429*4882a593Smuzhiyun 	u32 sw_rawawb_slope_ydis_3;		//YUV_DETC_SLOPE_YDIS_3
1430*4882a593Smuzhiyun 	u32 sw_rawawb_b_ydis_3;			//YUV_DETC_B_YDIS_3
1431*4882a593Smuzhiyun 	u32 sw_rawawb_ref_u;			//YUV_DETC_REF_U
1432*4882a593Smuzhiyun 	u8 sw_rawawb_ref_v_3;			//YUV_DETC_REF_V_1
1433*4882a593Smuzhiyun 	u8 sw_rawawb_ref_v_2;			//YUV_DETC_REF_V_1
1434*4882a593Smuzhiyun 	u8 sw_rawawb_ref_v_1;			//YUV_DETC_REF_V_1
1435*4882a593Smuzhiyun 	u8 sw_rawawb_ref_v_0;			//YUV_DETC_REF_V_1
1436*4882a593Smuzhiyun 	u16 sw_rawawb_dis1_0;			//YUV_DETC_DIS01_0
1437*4882a593Smuzhiyun 	u16 sw_rawawb_dis0_0;			//YUV_DETC_DIS01_0
1438*4882a593Smuzhiyun 	u16 sw_rawawb_dis3_0;			//YUV_DETC_DIS23_0
1439*4882a593Smuzhiyun 	u16 sw_rawawb_dis2_0;			//YUV_DETC_DIS23_0
1440*4882a593Smuzhiyun 	u16 sw_rawawb_dis5_0;			//YUV_DETC_DIS45_0
1441*4882a593Smuzhiyun 	u16 sw_rawawb_dis4_0;			//YUV_DETC_DIS45_0
1442*4882a593Smuzhiyun 	u8 sw_rawawb_th3_0;			//YUV_DETC_TH03_0
1443*4882a593Smuzhiyun 	u8 sw_rawawb_th2_0;			//YUV_DETC_TH03_0
1444*4882a593Smuzhiyun 	u8 sw_rawawb_th1_0;			//YUV_DETC_TH03_0
1445*4882a593Smuzhiyun 	u8 sw_rawawb_th0_0;			//YUV_DETC_TH03_0
1446*4882a593Smuzhiyun 	u8 sw_rawawb_th5_0;			//YUV_DETC_TH45_0
1447*4882a593Smuzhiyun 	u8 sw_rawawb_th4_0;			//YUV_DETC_TH45_0
1448*4882a593Smuzhiyun 	u16 sw_rawawb_dis1_1;			//YUV_DETC_DIS01_1
1449*4882a593Smuzhiyun 	u16 sw_rawawb_dis0_1;			//YUV_DETC_DIS01_1
1450*4882a593Smuzhiyun 	u16 sw_rawawb_dis3_1;			//YUV_DETC_DIS23_1
1451*4882a593Smuzhiyun 	u16 sw_rawawb_dis2_1;			//YUV_DETC_DIS23_1
1452*4882a593Smuzhiyun 	u16 sw_rawawb_dis5_1;			//YUV_DETC_DIS45_1
1453*4882a593Smuzhiyun 	u16 sw_rawawb_dis4_1;			//YUV_DETC_DIS45_1
1454*4882a593Smuzhiyun 	u8 sw_rawawb_th3_1;			//YUV_DETC_TH03_1
1455*4882a593Smuzhiyun 	u8 sw_rawawb_th2_1;			//YUV_DETC_TH03_1
1456*4882a593Smuzhiyun 	u8 sw_rawawb_th1_1;			//YUV_DETC_TH03_1
1457*4882a593Smuzhiyun 	u8 sw_rawawb_th0_1;			//YUV_DETC_TH03_1
1458*4882a593Smuzhiyun 	u8 sw_rawawb_th5_1;			//YUV_DETC_TH45_1
1459*4882a593Smuzhiyun 	u8 sw_rawawb_th4_1;			//YUV_DETC_TH45_1
1460*4882a593Smuzhiyun 	u16 sw_rawawb_dis1_2;			//YUV_DETC_DIS01_2
1461*4882a593Smuzhiyun 	u16 sw_rawawb_dis0_2;			//YUV_DETC_DIS01_2
1462*4882a593Smuzhiyun 	u16 sw_rawawb_dis3_2;			//YUV_DETC_DIS23_2
1463*4882a593Smuzhiyun 	u16 sw_rawawb_dis2_2;			//YUV_DETC_DIS23_2
1464*4882a593Smuzhiyun 	u16 sw_rawawb_dis5_2;			//YUV_DETC_DIS45_2
1465*4882a593Smuzhiyun 	u16 sw_rawawb_dis4_2;			//YUV_DETC_DIS45_2
1466*4882a593Smuzhiyun 	u8 sw_rawawb_th3_2;			//YUV_DETC_TH03_2
1467*4882a593Smuzhiyun 	u8 sw_rawawb_th2_2;			//YUV_DETC_TH03_2
1468*4882a593Smuzhiyun 	u8 sw_rawawb_th1_2;			//YUV_DETC_TH03_2
1469*4882a593Smuzhiyun 	u8 sw_rawawb_th0_2;			//YUV_DETC_TH03_2
1470*4882a593Smuzhiyun 	u8 sw_rawawb_th5_2;			//YUV_DETC_TH45_2
1471*4882a593Smuzhiyun 	u8 sw_rawawb_th4_2;			//YUV_DETC_TH45_2
1472*4882a593Smuzhiyun 	u16 sw_rawawb_dis1_3;			//YUV_DETC_DIS01_3
1473*4882a593Smuzhiyun 	u16 sw_rawawb_dis0_3;			//YUV_DETC_DIS01_3
1474*4882a593Smuzhiyun 	u16 sw_rawawb_dis3_3;			//YUV_DETC_DIS23_3
1475*4882a593Smuzhiyun 	u16 sw_rawawb_dis2_3;			//YUV_DETC_DIS23_3
1476*4882a593Smuzhiyun 	u16 sw_rawawb_dis5_3;			//YUV_DETC_DIS45_3
1477*4882a593Smuzhiyun 	u16 sw_rawawb_dis4_3;			//YUV_DETC_DIS45_3
1478*4882a593Smuzhiyun 	u8 sw_rawawb_th3_3;			//YUV_DETC_TH03_3
1479*4882a593Smuzhiyun 	u8 sw_rawawb_th2_3;			//YUV_DETC_TH03_3
1480*4882a593Smuzhiyun 	u8 sw_rawawb_th1_3;			//YUV_DETC_TH03_3
1481*4882a593Smuzhiyun 	u8 sw_rawawb_th0_3;			//YUV_DETC_TH03_3
1482*4882a593Smuzhiyun 	u8 sw_rawawb_th5_3;			//YUV_DETC_TH45_3
1483*4882a593Smuzhiyun 	u8 sw_rawawb_th4_3;			//YUV_DETC_TH45_3
1484*4882a593Smuzhiyun 	u16 sw_rawawb_wt1;			//RGB2XY_WT01
1485*4882a593Smuzhiyun 	u16 sw_rawawb_wt0;			//RGB2XY_WT01
1486*4882a593Smuzhiyun 	u16 sw_rawawb_wt2;			//RGB2XY_WT2
1487*4882a593Smuzhiyun 	u16 sw_rawawb_mat0_y;			//RGB2XY_MAT0_XY
1488*4882a593Smuzhiyun 	u16 sw_rawawb_mat0_x;			//RGB2XY_MAT0_XY
1489*4882a593Smuzhiyun 	u16 sw_rawawb_mat1_y;			//RGB2XY_MAT1_XY
1490*4882a593Smuzhiyun 	u16 sw_rawawb_mat1_x;			//RGB2XY_MAT1_XY
1491*4882a593Smuzhiyun 	u16 sw_rawawb_mat2_y;			//RGB2XY_MAT2_XY
1492*4882a593Smuzhiyun 	u16 sw_rawawb_mat2_x;			//RGB2XY_MAT2_XY
1493*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_0;			//XY_DETC_NOR_X_0
1494*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_0;			//XY_DETC_NOR_X_0
1495*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_0;			//XY_DETC_NOR_Y_0
1496*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_0;			//XY_DETC_NOR_Y_0
1497*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_0;			//XY_DETC_BIG_X_0
1498*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_0;			//XY_DETC_BIG_X_0
1499*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_0;			//XY_DETC_BIG_Y_0
1500*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_0;			//XY_DETC_BIG_Y_0
1501*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_0;			//XY_DETC_SMA_X_0
1502*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_0;			//XY_DETC_SMA_X_0
1503*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_0;			//XY_DETC_SMA_Y_0
1504*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_0;			//XY_DETC_SMA_Y_0
1505*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_1;			//XY_DETC_NOR_X_1
1506*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_1;			//XY_DETC_NOR_X_1
1507*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_1;			//XY_DETC_NOR_Y_1
1508*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_1;			//XY_DETC_NOR_Y_1
1509*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_1;			//XY_DETC_BIG_X_1
1510*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_1;			//XY_DETC_BIG_X_1
1511*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_1;			//XY_DETC_BIG_Y_1
1512*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_1;			//XY_DETC_BIG_Y_1
1513*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_1;			//XY_DETC_SMA_X_1
1514*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_1;			//XY_DETC_SMA_X_1
1515*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_1;			//XY_DETC_SMA_Y_1
1516*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_1;			//XY_DETC_SMA_Y_1
1517*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_2;			//XY_DETC_NOR_X_2
1518*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_2;			//XY_DETC_NOR_X_2
1519*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_2;			//XY_DETC_NOR_Y_2
1520*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_2;			//XY_DETC_NOR_Y_2
1521*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_2;			//XY_DETC_BIG_X_2
1522*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_2;			//XY_DETC_BIG_X_2
1523*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_2;			//XY_DETC_BIG_Y_2
1524*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_2;			//XY_DETC_BIG_Y_2
1525*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_2;			//XY_DETC_SMA_X_2
1526*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_2;			//XY_DETC_SMA_X_2
1527*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_2;			//XY_DETC_SMA_Y_2
1528*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_2;			//XY_DETC_SMA_Y_2
1529*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_3;			//XY_DETC_NOR_X_3
1530*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_3;			//XY_DETC_NOR_X_3
1531*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_3;			//XY_DETC_NOR_Y_3
1532*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_3;			//XY_DETC_NOR_Y_3
1533*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_3;			//XY_DETC_BIG_X_3
1534*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_3;			//XY_DETC_BIG_X_3
1535*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_3;			//XY_DETC_BIG_Y_3
1536*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_3;			//XY_DETC_BIG_Y_3
1537*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_3;			//XY_DETC_SMA_X_3
1538*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_3;			//XY_DETC_SMA_X_3
1539*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_3;			//XY_DETC_SMA_Y_3
1540*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_3;			//XY_DETC_SMA_Y_3
1541*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_4;			//XY_DETC_NOR_X_4
1542*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_4;			//XY_DETC_NOR_X_4
1543*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_4;			//XY_DETC_NOR_Y_4
1544*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_4;			//XY_DETC_NOR_Y_4
1545*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_4;			//XY_DETC_BIG_X_4
1546*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_4;			//XY_DETC_BIG_X_4
1547*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_4;			//XY_DETC_BIG_Y_4
1548*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_4;			//XY_DETC_BIG_Y_4
1549*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_4;			//XY_DETC_SMA_X_4
1550*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_4;			//XY_DETC_SMA_X_4
1551*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_4;			//XY_DETC_SMA_Y_4
1552*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_4;			//XY_DETC_SMA_Y_4
1553*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_5;			//XY_DETC_NOR_X_5
1554*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_5;			//XY_DETC_NOR_X_5
1555*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_5;			//XY_DETC_NOR_Y_5
1556*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_5;			//XY_DETC_NOR_Y_5
1557*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_5;			//XY_DETC_BIG_X_5
1558*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_5;			//XY_DETC_BIG_X_5
1559*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_5;			//XY_DETC_BIG_Y_5
1560*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_5;			//XY_DETC_BIG_Y_5
1561*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_5;			//XY_DETC_SMA_X_5
1562*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_5;			//XY_DETC_SMA_X_5
1563*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_5;			//XY_DETC_SMA_Y_5
1564*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_5;			//XY_DETC_SMA_Y_5
1565*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x1_6;			//XY_DETC_NOR_X_6
1566*4882a593Smuzhiyun 	u16 sw_rawawb_nor_x0_6;			//XY_DETC_NOR_X_6
1567*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y1_6;			//XY_DETC_NOR_Y_6
1568*4882a593Smuzhiyun 	u16 sw_rawawb_nor_y0_6;			//XY_DETC_NOR_Y_6
1569*4882a593Smuzhiyun 	u16 sw_rawawb_big_x1_6;			//XY_DETC_BIG_X_6
1570*4882a593Smuzhiyun 	u16 sw_rawawb_big_x0_6;			//XY_DETC_BIG_X_6
1571*4882a593Smuzhiyun 	u16 sw_rawawb_big_y1_6;			//XY_DETC_BIG_Y_6
1572*4882a593Smuzhiyun 	u16 sw_rawawb_big_y0_6;			//XY_DETC_BIG_Y_6
1573*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x1_6;			//XY_DETC_SMA_X_6
1574*4882a593Smuzhiyun 	u16 sw_rawawb_sma_x0_6;			//XY_DETC_SMA_X_6
1575*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y1_6;			//XY_DETC_SMA_Y_6
1576*4882a593Smuzhiyun 	u16 sw_rawawb_sma_y0_6;			//XY_DETC_SMA_Y_6
1577*4882a593Smuzhiyun 	u8 sw_rawawb_multiwindow_en;		//MULTIWINDOW_EXC_CTRL
1578*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region6_domain;	//MULTIWINDOW_EXC_CTRL
1579*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region6_measen;	//MULTIWINDOW_EXC_CTRL
1580*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region6_excen;	//MULTIWINDOW_EXC_CTRL
1581*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region5_domain;	//MULTIWINDOW_EXC_CTRL
1582*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region5_measen;	//MULTIWINDOW_EXC_CTRL
1583*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region5_excen;	//MULTIWINDOW_EXC_CTRL
1584*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region4_domain;	//MULTIWINDOW_EXC_CTRL
1585*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region4_measen;	//MULTIWINDOW_EXC_CTRL
1586*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region4_excen;	//MULTIWINDOW_EXC_CTRL
1587*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region3_domain;	//MULTIWINDOW_EXC_CTRL
1588*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region3_measen;	//MULTIWINDOW_EXC_CTRL
1589*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region3_excen;	//MULTIWINDOW_EXC_CTRL
1590*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region2_domain;	//MULTIWINDOW_EXC_CTRL
1591*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region2_measen;	//MULTIWINDOW_EXC_CTRL
1592*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region2_excen;	//MULTIWINDOW_EXC_CTRL
1593*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region1_domain;	//MULTIWINDOW_EXC_CTRL
1594*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region1_measen;	//MULTIWINDOW_EXC_CTRL
1595*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region1_excen;	//MULTIWINDOW_EXC_CTRL
1596*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region0_domain;	//MULTIWINDOW_EXC_CTRL
1597*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region0_measen;	//MULTIWINDOW_EXC_CTRL
1598*4882a593Smuzhiyun 	u8 sw_rawawb_exc_wp_region0_excen;	//MULTIWINDOW_EXC_CTRL
1599*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow0_v_offs;	//MULTIWINDOW0_OFFS
1600*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow0_h_offs;	//MULTIWINDOW0_OFFS
1601*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow0_v_size;	//MULTIWINDOW0_SIZE
1602*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow0_h_size;	//MULTIWINDOW0_SIZE
1603*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow1_v_offs;	//MULTIWINDOW1_OFFS
1604*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow1_h_offs;	//MULTIWINDOW1_OFFS
1605*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow1_v_size;	//MULTIWINDOW1_SIZE
1606*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow1_h_size;	//MULTIWINDOW1_SIZE
1607*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow2_v_offs;	//MULTIWINDOW2_OFFS
1608*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow2_h_offs;	//MULTIWINDOW2_OFFS
1609*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow2_v_size;	//MULTIWINDOW2_SIZE
1610*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow2_h_size;	//MULTIWINDOW2_SIZE
1611*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow3_v_offs;	//MULTIWINDOW3_OFFS
1612*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow3_h_offs;	//MULTIWINDOW3_OFFS
1613*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow3_v_size;	//MULTIWINDOW3_SIZE
1614*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow3_h_size;	//MULTIWINDOW3_SIZE
1615*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow4_v_offs;	//MULTIWINDOW4_OFFS
1616*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow4_h_offs;	//MULTIWINDOW4_OFFS
1617*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow4_v_size;	//MULTIWINDOW4_SIZE
1618*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow4_h_size;	//MULTIWINDOW4_SIZE
1619*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow5_v_offs;	//MULTIWINDOW5_OFFS
1620*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow5_h_offs;	//MULTIWINDOW5_OFFS
1621*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow5_v_size;	//MULTIWINDOW5_SIZE
1622*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow5_h_size;	//MULTIWINDOW5_SIZE
1623*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow6_v_offs;	//MULTIWINDOW6_OFFS
1624*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow6_h_offs;	//MULTIWINDOW6_OFFS
1625*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow6_v_size;	//MULTIWINDOW6_SIZE
1626*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow6_h_size;	//MULTIWINDOW6_SIZE
1627*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow7_v_offs;	//MULTIWINDOW7_OFFS
1628*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow7_h_offs;	//MULTIWINDOW7_OFFS
1629*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow7_v_size;	//MULTIWINDOW7_SIZE
1630*4882a593Smuzhiyun 	u16 sw_rawawb_multiwindow7_h_size;	//MULTIWINDOW7_SIZE
1631*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region0_xu1;	//EXC_WP_REGION0_XU
1632*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region0_xu0;	//EXC_WP_REGION0_XU
1633*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region0_yv1;	//EXC_WP_REGION0_YV
1634*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region0_yv0;	//EXC_WP_REGION0_YV
1635*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region1_xu1;	//EXC_WP_REGION1_XU
1636*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region1_xu0;	//EXC_WP_REGION1_XU
1637*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region1_yv1;	//EXC_WP_REGION1_YV
1638*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region1_yv0;	//EXC_WP_REGION1_YV
1639*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region2_xu1;	//EXC_WP_REGION2_XU
1640*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region2_xu0;	//EXC_WP_REGION2_XU
1641*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region2_yv1;	//EXC_WP_REGION2_YV
1642*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region2_yv0;	//EXC_WP_REGION2_YV
1643*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region3_xu1;	//EXC_WP_REGION3_XU
1644*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region3_xu0;	//EXC_WP_REGION3_XU
1645*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region3_yv1;	//EXC_WP_REGION3_YV
1646*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region3_yv0;	//EXC_WP_REGION3_YV
1647*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region4_xu1;	//EXC_WP_REGION4_XU
1648*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region4_xu0;	//EXC_WP_REGION4_XU
1649*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region4_yv1;	//EXC_WP_REGION4_YV
1650*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region4_yv0;	//EXC_WP_REGION4_YV
1651*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region5_xu1;	//EXC_WP_REGION5_XU
1652*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region5_xu0;	//EXC_WP_REGION5_XU
1653*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region5_yv1;	//EXC_WP_REGION5_YV
1654*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region5_yv0;	//EXC_WP_REGION5_YV
1655*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region6_xu1;	//EXC_WP_REGION6_XU
1656*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region6_xu0;	//EXC_WP_REGION6_XU
1657*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region6_yv1;	//EXC_WP_REGION6_YV
1658*4882a593Smuzhiyun 	u16 sw_rawawb_exc_wp_region6_yv0;	//EXC_WP_REGION6_YV
1659*4882a593Smuzhiyun } __attribute__ ((packed));
1660*4882a593Smuzhiyun 
1661*4882a593Smuzhiyun struct isp2x_rawaebig_meas_cfg {
1662*4882a593Smuzhiyun 	u8 rawae_sel;
1663*4882a593Smuzhiyun 	u8 wnd_num;
1664*4882a593Smuzhiyun 	u8 subwin_en[ISP2X_RAWAEBIG_SUBWIN_NUM];
1665*4882a593Smuzhiyun 	struct isp2x_window win;
1666*4882a593Smuzhiyun 	struct isp2x_window subwin[ISP2X_RAWAEBIG_SUBWIN_NUM];
1667*4882a593Smuzhiyun } __attribute__ ((packed));
1668*4882a593Smuzhiyun 
1669*4882a593Smuzhiyun struct isp2x_rawaelite_meas_cfg {
1670*4882a593Smuzhiyun 	u8 rawae_sel;
1671*4882a593Smuzhiyun 	u8 wnd_num;
1672*4882a593Smuzhiyun 	struct isp2x_window win;
1673*4882a593Smuzhiyun } __attribute__ ((packed));
1674*4882a593Smuzhiyun 
1675*4882a593Smuzhiyun struct isp2x_yuvae_meas_cfg {
1676*4882a593Smuzhiyun 	u8 ysel;
1677*4882a593Smuzhiyun 	u8 wnd_num;
1678*4882a593Smuzhiyun 	u8 subwin_en[ISP2X_YUVAE_SUBWIN_NUM];
1679*4882a593Smuzhiyun 	struct isp2x_window win;
1680*4882a593Smuzhiyun 	struct isp2x_window subwin[ISP2X_YUVAE_SUBWIN_NUM];
1681*4882a593Smuzhiyun } __attribute__ ((packed));
1682*4882a593Smuzhiyun 
1683*4882a593Smuzhiyun struct isp2x_rawaf_meas_cfg {
1684*4882a593Smuzhiyun 	u8 rawaf_sel;
1685*4882a593Smuzhiyun 	u8 num_afm_win;
1686*4882a593Smuzhiyun 	u8 gaus_en;
1687*4882a593Smuzhiyun 	u8 gamma_en;
1688*4882a593Smuzhiyun 	struct isp2x_window win[ISP2X_RAWAF_WIN_NUM];
1689*4882a593Smuzhiyun 	u8 line_en[ISP2X_RAWAF_LINE_NUM];
1690*4882a593Smuzhiyun 	u8 line_num[ISP2X_RAWAF_LINE_NUM];
1691*4882a593Smuzhiyun 	u8 gaus_coe_h2;
1692*4882a593Smuzhiyun 	u8 gaus_coe_h1;
1693*4882a593Smuzhiyun 	u8 gaus_coe_h0;
1694*4882a593Smuzhiyun 	u16 afm_thres;
1695*4882a593Smuzhiyun 	u8 lum_var_shift[ISP2X_RAWAF_WIN_NUM];
1696*4882a593Smuzhiyun 	u8 afm_var_shift[ISP2X_RAWAF_WIN_NUM];
1697*4882a593Smuzhiyun 	u16 gamma_y[ISP2X_RAWAF_GAMMA_NUM];
1698*4882a593Smuzhiyun } __attribute__ ((packed));
1699*4882a593Smuzhiyun 
1700*4882a593Smuzhiyun struct isp2x_siaf_win_cfg {
1701*4882a593Smuzhiyun 	u8 sum_shift;
1702*4882a593Smuzhiyun 	u8 lum_shift;
1703*4882a593Smuzhiyun 	struct isp2x_window win;
1704*4882a593Smuzhiyun } __attribute__ ((packed));
1705*4882a593Smuzhiyun 
1706*4882a593Smuzhiyun struct isp2x_siaf_cfg {
1707*4882a593Smuzhiyun 	u8 num_afm_win;
1708*4882a593Smuzhiyun 	u32 thres;
1709*4882a593Smuzhiyun 	struct isp2x_siaf_win_cfg afm_win[ISP2X_AFM_MAX_WINDOWS];
1710*4882a593Smuzhiyun } __attribute__ ((packed));
1711*4882a593Smuzhiyun 
1712*4882a593Smuzhiyun struct isp2x_rawhistbig_cfg {
1713*4882a593Smuzhiyun 	u8 wnd_num;
1714*4882a593Smuzhiyun 	u8 data_sel;
1715*4882a593Smuzhiyun 	u8 waterline;
1716*4882a593Smuzhiyun 	u8 mode;
1717*4882a593Smuzhiyun 	u8 stepsize;
1718*4882a593Smuzhiyun 	u8 off;
1719*4882a593Smuzhiyun 	u8 bcc;
1720*4882a593Smuzhiyun 	u8 gcc;
1721*4882a593Smuzhiyun 	u8 rcc;
1722*4882a593Smuzhiyun 	struct isp2x_window win;
1723*4882a593Smuzhiyun 	u8 weight[ISP2X_RAWHISTBIG_SUBWIN_NUM];
1724*4882a593Smuzhiyun } __attribute__ ((packed));
1725*4882a593Smuzhiyun 
1726*4882a593Smuzhiyun struct isp2x_rawhistlite_cfg {
1727*4882a593Smuzhiyun 	u8 data_sel;
1728*4882a593Smuzhiyun 	u8 waterline;
1729*4882a593Smuzhiyun 	u8 mode;
1730*4882a593Smuzhiyun 	u8 stepsize;
1731*4882a593Smuzhiyun 	u8 off;
1732*4882a593Smuzhiyun 	u8 bcc;
1733*4882a593Smuzhiyun 	u8 gcc;
1734*4882a593Smuzhiyun 	u8 rcc;
1735*4882a593Smuzhiyun 	struct isp2x_window win;
1736*4882a593Smuzhiyun 	u8 weight[ISP2X_RAWHISTLITE_SUBWIN_NUM];
1737*4882a593Smuzhiyun } __attribute__ ((packed));
1738*4882a593Smuzhiyun 
1739*4882a593Smuzhiyun struct isp2x_sihst_win_cfg {
1740*4882a593Smuzhiyun 	u8 data_sel;
1741*4882a593Smuzhiyun 	u8 waterline;
1742*4882a593Smuzhiyun 	u8 auto_stop;
1743*4882a593Smuzhiyun 	u8 mode;
1744*4882a593Smuzhiyun 	u8 stepsize;
1745*4882a593Smuzhiyun 	struct isp2x_window win;
1746*4882a593Smuzhiyun } __attribute__ ((packed));
1747*4882a593Smuzhiyun 
1748*4882a593Smuzhiyun struct isp2x_sihst_cfg {
1749*4882a593Smuzhiyun 	u8 wnd_num;
1750*4882a593Smuzhiyun 	struct isp2x_sihst_win_cfg win_cfg[ISP2X_SIHIST_WIN_NUM];
1751*4882a593Smuzhiyun 	u8 hist_weight[ISP2X_HIST_WEIGHT_NUM];
1752*4882a593Smuzhiyun } __attribute__ ((packed));
1753*4882a593Smuzhiyun 
1754*4882a593Smuzhiyun struct isp2x_isp_other_cfg {
1755*4882a593Smuzhiyun 	struct isp2x_bls_cfg bls_cfg;
1756*4882a593Smuzhiyun 	struct isp2x_dpcc_cfg dpcc_cfg;
1757*4882a593Smuzhiyun 	struct isp2x_hdrmge_cfg hdrmge_cfg;
1758*4882a593Smuzhiyun 	struct isp2x_rawnr_cfg rawnr_cfg;
1759*4882a593Smuzhiyun 	struct isp2x_lsc_cfg lsc_cfg;
1760*4882a593Smuzhiyun 	struct isp2x_awb_gain_cfg awb_gain_cfg;
1761*4882a593Smuzhiyun 	//struct isp2x_goc_cfg goc_cfg;
1762*4882a593Smuzhiyun 	struct isp2x_gic_cfg gic_cfg;
1763*4882a593Smuzhiyun 	struct isp2x_debayer_cfg debayer_cfg;
1764*4882a593Smuzhiyun 	struct isp2x_ccm_cfg ccm_cfg;
1765*4882a593Smuzhiyun 	struct isp2x_gammaout_cfg gammaout_cfg;
1766*4882a593Smuzhiyun 	struct isp2x_wdr_cfg wdr_cfg;
1767*4882a593Smuzhiyun 	struct isp2x_cproc_cfg cproc_cfg;
1768*4882a593Smuzhiyun 	struct isp2x_ie_cfg ie_cfg;
1769*4882a593Smuzhiyun 	struct isp2x_rkiesharp_cfg rkiesharp_cfg;
1770*4882a593Smuzhiyun 	struct isp2x_superimp_cfg superimp_cfg;
1771*4882a593Smuzhiyun 	struct isp2x_sdg_cfg sdg_cfg;
1772*4882a593Smuzhiyun 	struct isp2x_bdm_config bdm_cfg;
1773*4882a593Smuzhiyun 	struct isp2x_hdrtmo_cfg hdrtmo_cfg;
1774*4882a593Smuzhiyun 	struct isp2x_dhaz_cfg dhaz_cfg;
1775*4882a593Smuzhiyun 	struct isp2x_gain_cfg gain_cfg;
1776*4882a593Smuzhiyun 	struct isp2x_3dlut_cfg isp3dlut_cfg;
1777*4882a593Smuzhiyun 	struct isp2x_ldch_cfg ldch_cfg;
1778*4882a593Smuzhiyun } __attribute__ ((packed));
1779*4882a593Smuzhiyun 
1780*4882a593Smuzhiyun struct isp2x_isp_meas_cfg {
1781*4882a593Smuzhiyun 	struct isp2x_siawb_meas_cfg siawb;
1782*4882a593Smuzhiyun 	struct isp2x_rawawb_meas_cfg rawawb;
1783*4882a593Smuzhiyun 	struct isp2x_rawaelite_meas_cfg rawae0;
1784*4882a593Smuzhiyun 	struct isp2x_rawaebig_meas_cfg rawae1;
1785*4882a593Smuzhiyun 	struct isp2x_rawaebig_meas_cfg rawae2;
1786*4882a593Smuzhiyun 	struct isp2x_rawaebig_meas_cfg rawae3;
1787*4882a593Smuzhiyun 	struct isp2x_yuvae_meas_cfg yuvae;
1788*4882a593Smuzhiyun 	struct isp2x_rawaf_meas_cfg rawaf;
1789*4882a593Smuzhiyun 	struct isp2x_siaf_cfg siaf;
1790*4882a593Smuzhiyun 	struct isp2x_rawhistlite_cfg rawhist0;
1791*4882a593Smuzhiyun 	struct isp2x_rawhistbig_cfg rawhist1;
1792*4882a593Smuzhiyun 	struct isp2x_rawhistbig_cfg rawhist2;
1793*4882a593Smuzhiyun 	struct isp2x_rawhistbig_cfg rawhist3;
1794*4882a593Smuzhiyun 	struct isp2x_sihst_cfg sihst;
1795*4882a593Smuzhiyun } __attribute__ ((packed));
1796*4882a593Smuzhiyun 
1797*4882a593Smuzhiyun struct sensor_exposure_s {
1798*4882a593Smuzhiyun 	u32 fine_integration_time;
1799*4882a593Smuzhiyun 	u32 coarse_integration_time;
1800*4882a593Smuzhiyun 	u32 analog_gain_code_global;
1801*4882a593Smuzhiyun 	u32 digital_gain_global;
1802*4882a593Smuzhiyun 	u32 isp_digital_gain;
1803*4882a593Smuzhiyun } __attribute__ ((packed));
1804*4882a593Smuzhiyun 
1805*4882a593Smuzhiyun struct sensor_exposure_cfg {
1806*4882a593Smuzhiyun 	struct sensor_exposure_s linear_exp;
1807*4882a593Smuzhiyun 	struct sensor_exposure_s hdr_exp[3];
1808*4882a593Smuzhiyun } __attribute__ ((packed));
1809*4882a593Smuzhiyun 
1810*4882a593Smuzhiyun struct isp2x_isp_params_cfg {
1811*4882a593Smuzhiyun 	u64 module_en_update;
1812*4882a593Smuzhiyun 	u64 module_ens;
1813*4882a593Smuzhiyun 	u64 module_cfg_update;
1814*4882a593Smuzhiyun 
1815*4882a593Smuzhiyun 	u32 frame_id;
1816*4882a593Smuzhiyun 	struct isp2x_isp_meas_cfg meas;
1817*4882a593Smuzhiyun 	struct isp2x_isp_other_cfg others;
1818*4882a593Smuzhiyun 	struct sensor_exposure_cfg exposure;
1819*4882a593Smuzhiyun } __attribute__ ((packed));
1820*4882a593Smuzhiyun 
1821*4882a593Smuzhiyun struct isp2x_siawb_meas {
1822*4882a593Smuzhiyun 	u32 cnt;
1823*4882a593Smuzhiyun 	u8 mean_y_or_g;
1824*4882a593Smuzhiyun 	u8 mean_cb_or_b;
1825*4882a593Smuzhiyun 	u8 mean_cr_or_r;
1826*4882a593Smuzhiyun } __attribute__ ((packed));
1827*4882a593Smuzhiyun 
1828*4882a593Smuzhiyun struct isp2x_siawb_stat {
1829*4882a593Smuzhiyun 	struct isp2x_siawb_meas awb_mean[ISP2X_AWB_MAX_GRID];
1830*4882a593Smuzhiyun } __attribute__ ((packed));
1831*4882a593Smuzhiyun 
1832*4882a593Smuzhiyun struct isp2x_rawawb_ramdata {
1833*4882a593Smuzhiyun 	u32 wp;
1834*4882a593Smuzhiyun 	u32 r;
1835*4882a593Smuzhiyun 	u32 g;
1836*4882a593Smuzhiyun 	u32 b;
1837*4882a593Smuzhiyun };
1838*4882a593Smuzhiyun 
1839*4882a593Smuzhiyun struct isp2x_rawawb_meas_stat {
1840*4882a593Smuzhiyun 	u32 ro_rawawb_sum_r_nor[ISP2X_RAWAWB_SUM_NUM];		//SUM_R_NOR_0
1841*4882a593Smuzhiyun 	u32 ro_rawawb_sum_g_nor[ISP2X_RAWAWB_SUM_NUM];		//SUM_G_NOR_0
1842*4882a593Smuzhiyun 	u32 ro_rawawb_sum_b_nor[ISP2X_RAWAWB_SUM_NUM];		//SUM_B_NOR_0
1843*4882a593Smuzhiyun 	u32 ro_rawawb_wp_num_nor[ISP2X_RAWAWB_SUM_NUM];		//WP_NUM_NOR_0
1844*4882a593Smuzhiyun 	u32 ro_rawawb_sum_r_big[ISP2X_RAWAWB_SUM_NUM];		//SUM_R_BIG_0
1845*4882a593Smuzhiyun 	u32 ro_rawawb_sum_g_big[ISP2X_RAWAWB_SUM_NUM];		//SUM_G_BIG_0
1846*4882a593Smuzhiyun 	u32 ro_rawawb_sum_b_big[ISP2X_RAWAWB_SUM_NUM];		//SUM_B_BIG_0
1847*4882a593Smuzhiyun 	u32 ro_rawawb_wp_num_big[ISP2X_RAWAWB_SUM_NUM];		//WP_NUM_BIG_0
1848*4882a593Smuzhiyun 	u32 ro_rawawb_sum_r_sma[ISP2X_RAWAWB_SUM_NUM];		//SUM_R_SMA_0
1849*4882a593Smuzhiyun 	u32 ro_rawawb_sum_g_sma[ISP2X_RAWAWB_SUM_NUM];		//SUM_G_SMA_0
1850*4882a593Smuzhiyun 	u32 ro_rawawb_sum_b_sma[ISP2X_RAWAWB_SUM_NUM];		//SUM_B_SMA_0
1851*4882a593Smuzhiyun 	u32 ro_rawawb_wp_num_sma[ISP2X_RAWAWB_SUM_NUM];
1852*4882a593Smuzhiyun 	u32 ro_sum_r_nor_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_R_NOR_MULTIWINDOW_0
1853*4882a593Smuzhiyun 	u32 ro_sum_g_nor_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_G_NOR_MULTIWINDOW_0
1854*4882a593Smuzhiyun 	u32 ro_sum_b_nor_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_B_NOR_MULTIWINDOW_0
1855*4882a593Smuzhiyun 	u32 ro_wp_nm_nor_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//WP_NM_NOR_MULTIWINDOW_0
1856*4882a593Smuzhiyun 	u32 ro_sum_r_big_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_R_BIG_MULTIWINDOW_0
1857*4882a593Smuzhiyun 	u32 ro_sum_g_big_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_G_BIG_MULTIWINDOW_0
1858*4882a593Smuzhiyun 	u32 ro_sum_b_big_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_B_BIG_MULTIWINDOW_0
1859*4882a593Smuzhiyun 	u32 ro_wp_nm_big_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//WP_NM_BIG_MULTIWINDOW_0
1860*4882a593Smuzhiyun 	u32 ro_sum_r_sma_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_R_SMA_MULTIWINDOW_0
1861*4882a593Smuzhiyun 	u32 ro_sum_g_sma_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_G_SMA_MULTIWINDOW_0
1862*4882a593Smuzhiyun 	u32 ro_sum_b_sma_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//SUM_B_SMA_MULTIWINDOW_0
1863*4882a593Smuzhiyun 	u32 ro_wp_nm_sma_multiwindow[ISP2X_RAWAWB_MULWD_NUM];	//WP_NM_SMA_MULTIWINDOW_0
1864*4882a593Smuzhiyun 	u32 ro_sum_r_exc[ISP2X_RAWAWB_SUM_NUM];
1865*4882a593Smuzhiyun 	u32 ro_sum_g_exc[ISP2X_RAWAWB_SUM_NUM];
1866*4882a593Smuzhiyun 	u32 ro_sum_b_exc[ISP2X_RAWAWB_SUM_NUM];
1867*4882a593Smuzhiyun 	u32 ro_wp_nm_exc[ISP2X_RAWAWB_SUM_NUM];
1868*4882a593Smuzhiyun 	struct isp2x_rawawb_ramdata ramdata[ISP2X_RAWAWB_RAMDATA_NUM];
1869*4882a593Smuzhiyun } __attribute__ ((packed));
1870*4882a593Smuzhiyun 
1871*4882a593Smuzhiyun struct isp2x_rawae_meas_data {
1872*4882a593Smuzhiyun 	u16 channelr_xy;
1873*4882a593Smuzhiyun 	u16 channelb_xy;
1874*4882a593Smuzhiyun 	u16 channelg_xy;
1875*4882a593Smuzhiyun };
1876*4882a593Smuzhiyun 
1877*4882a593Smuzhiyun struct isp2x_rawaebig_stat {
1878*4882a593Smuzhiyun 	u32 sumr[ISP2X_RAWAEBIG_SUBWIN_NUM];
1879*4882a593Smuzhiyun 	u32 sumg[ISP2X_RAWAEBIG_SUBWIN_NUM];
1880*4882a593Smuzhiyun 	u32 sumb[ISP2X_RAWAEBIG_SUBWIN_NUM];
1881*4882a593Smuzhiyun 	struct isp2x_rawae_meas_data data[ISP2X_RAWAEBIG_MEAN_NUM];
1882*4882a593Smuzhiyun } __attribute__ ((packed));
1883*4882a593Smuzhiyun 
1884*4882a593Smuzhiyun struct isp2x_rawaelite_stat {
1885*4882a593Smuzhiyun 	struct isp2x_rawae_meas_data data[ISP2X_RAWAELITE_MEAN_NUM];
1886*4882a593Smuzhiyun } __attribute__ ((packed));
1887*4882a593Smuzhiyun 
1888*4882a593Smuzhiyun struct isp2x_yuvae_stat {
1889*4882a593Smuzhiyun 	u32 ro_yuvae_sumy[ISP2X_YUVAE_SUBWIN_NUM];
1890*4882a593Smuzhiyun 	u8 mean[ISP2X_YUVAE_MEAN_NUM];
1891*4882a593Smuzhiyun } __attribute__ ((packed));
1892*4882a593Smuzhiyun 
1893*4882a593Smuzhiyun struct isp2x_rawaf_stat {
1894*4882a593Smuzhiyun 	u32 int_state;
1895*4882a593Smuzhiyun 	u32 afm_sum[ISP2X_RAWAF_WIN_NUM];
1896*4882a593Smuzhiyun 	u32 afm_lum[ISP2X_RAWAF_WIN_NUM];
1897*4882a593Smuzhiyun 	u32 ramdata[ISP2X_RAWAF_SUMDATA_NUM];
1898*4882a593Smuzhiyun } __attribute__ ((packed));
1899*4882a593Smuzhiyun 
1900*4882a593Smuzhiyun struct isp2x_siaf_meas_val {
1901*4882a593Smuzhiyun 	u32 sum;
1902*4882a593Smuzhiyun 	u32 lum;
1903*4882a593Smuzhiyun } __attribute__ ((packed));
1904*4882a593Smuzhiyun 
1905*4882a593Smuzhiyun struct isp2x_siaf_stat {
1906*4882a593Smuzhiyun 	struct isp2x_siaf_meas_val win[ISP2X_AFM_MAX_WINDOWS];
1907*4882a593Smuzhiyun } __attribute__ ((packed));
1908*4882a593Smuzhiyun 
1909*4882a593Smuzhiyun struct isp2x_rawhistbig_stat {
1910*4882a593Smuzhiyun 	u32 hist_bin[ISP2X_HIST_BIN_N_MAX];
1911*4882a593Smuzhiyun } __attribute__ ((packed));
1912*4882a593Smuzhiyun 
1913*4882a593Smuzhiyun struct isp2x_rawhistlite_stat {
1914*4882a593Smuzhiyun 	u32 hist_bin[ISP2X_HIST_BIN_N_MAX];
1915*4882a593Smuzhiyun } __attribute__ ((packed));
1916*4882a593Smuzhiyun 
1917*4882a593Smuzhiyun struct isp2x_sihst_win_stat {
1918*4882a593Smuzhiyun 	u32 hist_bins[ISP2X_SIHIST_BIN_N_MAX];
1919*4882a593Smuzhiyun } __attribute__ ((packed));
1920*4882a593Smuzhiyun 
1921*4882a593Smuzhiyun struct isp2x_sihst_stat {
1922*4882a593Smuzhiyun 	struct isp2x_sihst_win_stat win_stat[ISP2X_SIHIST_WIN_NUM];
1923*4882a593Smuzhiyun } __attribute__ ((packed));
1924*4882a593Smuzhiyun 
1925*4882a593Smuzhiyun struct isp2x_stat {
1926*4882a593Smuzhiyun 	struct isp2x_siawb_stat siawb;
1927*4882a593Smuzhiyun 	struct isp2x_rawawb_meas_stat rawawb;
1928*4882a593Smuzhiyun 	struct isp2x_rawaelite_stat rawae0;
1929*4882a593Smuzhiyun 	struct isp2x_rawaebig_stat rawae1;
1930*4882a593Smuzhiyun 	struct isp2x_rawaebig_stat rawae2;
1931*4882a593Smuzhiyun 	struct isp2x_rawaebig_stat rawae3;
1932*4882a593Smuzhiyun 	struct isp2x_yuvae_stat yuvae;
1933*4882a593Smuzhiyun 	struct isp2x_rawaf_stat rawaf;
1934*4882a593Smuzhiyun 	struct isp2x_siaf_stat siaf;
1935*4882a593Smuzhiyun 	struct isp2x_rawhistlite_stat rawhist0;
1936*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist1;
1937*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist2;
1938*4882a593Smuzhiyun 	struct isp2x_rawhistbig_stat rawhist3;
1939*4882a593Smuzhiyun 	struct isp2x_sihst_stat sihst;
1940*4882a593Smuzhiyun 
1941*4882a593Smuzhiyun 	struct isp2x_bls_stat bls;
1942*4882a593Smuzhiyun 	struct isp2x_hdrtmo_stat hdrtmo;
1943*4882a593Smuzhiyun 	struct isp2x_dhaz_stat dhaz;
1944*4882a593Smuzhiyun } __attribute__ ((packed));
1945*4882a593Smuzhiyun 
1946*4882a593Smuzhiyun /**
1947*4882a593Smuzhiyun  * struct rkisp_isp2x_stat_buffer - Rockchip ISP2 Statistics Meta Data
1948*4882a593Smuzhiyun  *
1949*4882a593Smuzhiyun  * @meas_type: measurement types (CIFISP_STAT_ definitions)
1950*4882a593Smuzhiyun  * @frame_id: frame ID for sync
1951*4882a593Smuzhiyun  * @params: statistics data
1952*4882a593Smuzhiyun  */
1953*4882a593Smuzhiyun struct rkisp_isp2x_stat_buffer {
1954*4882a593Smuzhiyun 	unsigned int meas_type;
1955*4882a593Smuzhiyun 	unsigned int frame_id;
1956*4882a593Smuzhiyun 	struct isp2x_stat params;
1957*4882a593Smuzhiyun } __attribute__ ((packed));
1958*4882a593Smuzhiyun 
1959*4882a593Smuzhiyun /**
1960*4882a593Smuzhiyun  * struct rkisp_mipi_luma - statistics mipi y statistic
1961*4882a593Smuzhiyun  *
1962*4882a593Smuzhiyun  * @exp_mean: Mean luminance value of block xx
1963*4882a593Smuzhiyun  *
1964*4882a593Smuzhiyun  * Image is divided into 5x5 blocks.
1965*4882a593Smuzhiyun  */
1966*4882a593Smuzhiyun struct rkisp_mipi_luma {
1967*4882a593Smuzhiyun 	unsigned int exp_mean[ISP2X_MIPI_LUMA_MEAN_MAX];
1968*4882a593Smuzhiyun } __attribute__ ((packed));
1969*4882a593Smuzhiyun 
1970*4882a593Smuzhiyun /**
1971*4882a593Smuzhiyun  * struct rkisp_isp2x_luma_buffer - Rockchip ISP1 Statistics Mipi Luma
1972*4882a593Smuzhiyun  *
1973*4882a593Smuzhiyun  * @meas_type: measurement types (CIFISP_STAT_ definitions)
1974*4882a593Smuzhiyun  * @frame_id: frame ID for sync
1975*4882a593Smuzhiyun  * @params: statistics data
1976*4882a593Smuzhiyun  */
1977*4882a593Smuzhiyun struct rkisp_isp2x_luma_buffer {
1978*4882a593Smuzhiyun 	unsigned int meas_type;
1979*4882a593Smuzhiyun 	unsigned int frame_id;
1980*4882a593Smuzhiyun 	struct rkisp_mipi_luma luma[ISP2X_MIPI_RAW_MAX];
1981*4882a593Smuzhiyun } __attribute__ ((packed));
1982*4882a593Smuzhiyun 
1983*4882a593Smuzhiyun /**
1984*4882a593Smuzhiyun  * struct rkisp_thunderboot_resmem_head
1985*4882a593Smuzhiyun  */
1986*4882a593Smuzhiyun struct rkisp_thunderboot_resmem_head {
1987*4882a593Smuzhiyun 	u16 enable;
1988*4882a593Smuzhiyun 	u16 complete;
1989*4882a593Smuzhiyun 	u16 frm_total;
1990*4882a593Smuzhiyun 	u16 hdr_mode;
1991*4882a593Smuzhiyun 	u16 width;
1992*4882a593Smuzhiyun 	u16 height;
1993*4882a593Smuzhiyun 	u32 bus_fmt;
1994*4882a593Smuzhiyun 
1995*4882a593Smuzhiyun 	u32 exp_time[3];
1996*4882a593Smuzhiyun 	u32 exp_gain[3];
1997*4882a593Smuzhiyun 	u32 exp_time_reg[3];
1998*4882a593Smuzhiyun 	u32 exp_gain_reg[3];
1999*4882a593Smuzhiyun } __attribute__ ((packed));
2000*4882a593Smuzhiyun 
2001*4882a593Smuzhiyun /**
2002*4882a593Smuzhiyun  * struct rkisp_thunderboot_resmem - shared buffer for thunderboot with risc-v side
2003*4882a593Smuzhiyun  */
2004*4882a593Smuzhiyun struct rkisp_thunderboot_resmem {
2005*4882a593Smuzhiyun 	u32 resmem_padr;
2006*4882a593Smuzhiyun 	u32 resmem_size;
2007*4882a593Smuzhiyun } __attribute__ ((packed));
2008*4882a593Smuzhiyun 
2009*4882a593Smuzhiyun /**
2010*4882a593Smuzhiyun  * struct rkisp_thunderboot_shmem
2011*4882a593Smuzhiyun  */
2012*4882a593Smuzhiyun struct rkisp_thunderboot_shmem {
2013*4882a593Smuzhiyun 	u32 shm_start;
2014*4882a593Smuzhiyun 	u32 shm_size;
2015*4882a593Smuzhiyun 	s32 shm_fd;
2016*4882a593Smuzhiyun } __attribute__ ((packed));
2017*4882a593Smuzhiyun 
2018*4882a593Smuzhiyun #endif /* _UAPI_RKISP2_CONFIG_H */
2019