xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI2/rk_aiq_user_api2_custom_awb_v3x.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *  Copyright (c) 2021 Rockchip Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 //#include "RkAiqCalibDbV2Helper.h"
19 
20 
21 #include "rk_aiq_user_api2_custom_awb_type_v3x.h"
22 
23 RKAIQ_BEGIN_DECLARE
24 
25 
26 /* awb config of AIQ framework */
27 typedef struct rk_aiq_rkAwb_config_s {
28     int Working_mode;//values look up in rk_aiq_working_mode_t definiton
29     int RawWidth;
30     int RawHeight;
31     rk_aiq_isp_awb_meas_cfg_v3x_t  awbHwConfig;
32 } rk_aiq_rkAwb_config_t;
33 
initCustomAwbHwConfigGw(rk_aiq_customAwb_hw_cfg_t * awbHwConfig)34 static XCamReturn initCustomAwbHwConfigGw(rk_aiq_customAwb_hw_cfg_t  *awbHwConfig)
35 {
36     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
37     XCamReturn ret = XCAM_RETURN_NO_ERROR;
38     memset(awbHwConfig,0,sizeof(rk_aiq_customAwb_hw_cfg_t));
39     awbHwConfig->awbEnable             =    1;
40     awbHwConfig->xyDetectionEnable          =    0;
41     awbHwConfig->uvDetectionEnable          =    0;
42     awbHwConfig->threeDyuvEnable          =    0;
43     awbHwConfig->blkWeightEnable    =    0;
44     awbHwConfig->lscBypEnable    =    0;
45     awbHwConfig->blkMeasureMode     =    RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201;
46     awbHwConfig->xyRangeTypeForBlkStatistics     =    (rk_aiq_awb_xy_type_v201_t)0;
47     awbHwConfig->illIdxForBlkStatistics     =    (rk_aiq_awb_blk_stat_realwp_ill_e)7;
48     awbHwConfig->wpDiffWeiEnable   =    0;
49     awbHwConfig->xyRangeTypeForWpHist    =    (rk_aiq_awb_xy_type_v201_t)0;
50     awbHwConfig->lightNum      =    7;
51     awbHwConfig->windowSet[0]         =    0;
52     awbHwConfig->windowSet[1]          =    0;
53     awbHwConfig->windowSet[2]         =    3840;
54     awbHwConfig->windowSet[3]         =    2160;
55     awbHwConfig->maxR          =    230;
56     awbHwConfig->maxG          =    230;
57     awbHwConfig->maxB          =    230;
58     awbHwConfig->maxY          =    230;
59     awbHwConfig->minR          =    3;
60     awbHwConfig->minG          =    3;
61     awbHwConfig->minB          =    3;
62     awbHwConfig->minY          =    3;
63     awbHwConfig->multiwindow_en  =    0;
64     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
65     return ret;
66 }
67 
initCustomAwbHwConfigWp(rk_aiq_customAwb_hw_cfg_t * awbHwConfig)68 static XCamReturn initCustomAwbHwConfigWp(rk_aiq_customAwb_hw_cfg_t  *awbHwConfig)
69 {
70     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
71     XCamReturn ret = XCAM_RETURN_NO_ERROR;
72     memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
73     awbHwConfig->awbEnable             =    1;//rawawb enable
74     awbHwConfig->xyDetectionEnable          =    1;//xy detect  enable for all light
75     awbHwConfig->uvDetectionEnable          =    1;//uv detect  enable for all  light
76     awbHwConfig->threeDyuvEnable          =    1;//uv detect  enable for all  light
77     awbHwConfig->blkWeightEnable    =    0;
78     awbHwConfig->lscBypEnable    =    0;
79     awbHwConfig->blkMeasureMode     =    RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201;
80     awbHwConfig->xyRangeTypeForBlkStatistics     =    (rk_aiq_awb_xy_type_v201_t)0;
81     awbHwConfig->illIdxForBlkStatistics     =    (rk_aiq_awb_blk_stat_realwp_ill_e)7;
82     awbHwConfig->wpDiffWeiEnable   =    0;
83     awbHwConfig->xyRangeTypeForWpHist    =    (rk_aiq_awb_xy_type_v201_t)0;
84     awbHwConfig->threeDyuvIllu[0]       =    7;
85     awbHwConfig->threeDyuvIllu[1]       =    7;
86     awbHwConfig->threeDyuvIllu[2]       =    7;
87     awbHwConfig->threeDyuvIllu[3]       =    7;
88     awbHwConfig->lightNum      =    7; //measurment light num ,0~7
89     awbHwConfig->windowSet[0]         =    0;//crop h_offs mod 2 == 0
90     awbHwConfig->windowSet[1]          =    0;//crop v_offs mod 2 == 0
91     awbHwConfig->windowSet[2]         =    3840;//crop h_size,8x8:mod 8==0,4x4:mod 4==0
92     awbHwConfig->windowSet[3]         =    2160;//crop v_size,8x8:mod 8==0,4x4:mod 4==0
93     awbHwConfig->maxR          =    230;
94     awbHwConfig->maxG          =    230;
95     awbHwConfig->maxB          =    230;
96     awbHwConfig->maxY          =    230;
97     awbHwConfig->minR          =    3;
98     awbHwConfig->minG          =    3;
99     awbHwConfig->minB          =    3;
100     awbHwConfig->minY          =    3;
101     awbHwConfig->uvRange_param[0].pu_region[0]    =    247;
102     awbHwConfig->uvRange_param[0].pv_region[0]    =    252;
103     awbHwConfig->uvRange_param[0].pu_region[1]    =    114;
104     awbHwConfig->uvRange_param[0].pv_region[1]    =    206;
105     awbHwConfig->uvRange_param[0].pu_region[2]    =    105;
106     awbHwConfig->uvRange_param[0].pv_region[2]    =    243;
107     awbHwConfig->uvRange_param[0].pu_region[3]    =    246;
108     awbHwConfig->uvRange_param[0].pv_region[3]    =    254;
109     awbHwConfig->uvRange_param[0].slope_inv[0]      =    2961;
110     awbHwConfig->uvRange_param[0].slope_inv[1]      =    -249;
111     awbHwConfig->uvRange_param[0].slope_inv[2]      =    13126;
112     awbHwConfig->uvRange_param[0].slope_inv[3]      =    -512;
113     awbHwConfig->uvRange_param[1].pu_region[0]    =    251;
114     awbHwConfig->uvRange_param[1].pv_region[0]    =    249;
115     awbHwConfig->uvRange_param[1].pu_region[1]    =    159;
116     awbHwConfig->uvRange_param[1].pv_region[1]    =    160;
117     awbHwConfig->uvRange_param[1].pu_region[2]    =    141;
118     awbHwConfig->uvRange_param[1].pv_region[2]    =    173;
119     awbHwConfig->uvRange_param[1].pu_region[3]    =    249;
120     awbHwConfig->uvRange_param[1].pv_region[3]    =    250;
121     awbHwConfig->uvRange_param[1].slope_inv[0]      =    1059;
122     awbHwConfig->uvRange_param[1].slope_inv[1]      =    -1418;
123     awbHwConfig->uvRange_param[1].slope_inv[2]      =    1436;
124     awbHwConfig->uvRange_param[1].slope_inv[3]      =    -2048;
125     awbHwConfig->uvRange_param[2].pu_region[0]    =    252;
126     awbHwConfig->uvRange_param[2].pv_region[0]    =    249;
127     awbHwConfig->uvRange_param[2].pu_region[1]    =    180;
128     awbHwConfig->uvRange_param[2].pv_region[1]    =    148;
129     awbHwConfig->uvRange_param[2].pu_region[2]    =    158;
130     awbHwConfig->uvRange_param[2].pv_region[2]    =    160;
131     awbHwConfig->uvRange_param[2].pu_region[3]    =    250;
132     awbHwConfig->uvRange_param[2].pv_region[3]    =    249;
133     awbHwConfig->uvRange_param[2].slope_inv[0]      =    730;
134     awbHwConfig->uvRange_param[2].slope_inv[1]      =    -1877;
135     awbHwConfig->uvRange_param[2].slope_inv[2]      =    1059;
136     awbHwConfig->uvRange_param[2].slope_inv[3]      =    262143;
137     awbHwConfig->uvRange_param[3].pu_region[0]    =    254;
138     awbHwConfig->uvRange_param[3].pv_region[0]    =    247;
139     awbHwConfig->uvRange_param[3].pu_region[1]    =    204;
140     awbHwConfig->uvRange_param[3].pv_region[1]    =    134;
141     awbHwConfig->uvRange_param[3].pu_region[2]    =    180;
142     awbHwConfig->uvRange_param[3].pv_region[2]    =    148;
143     awbHwConfig->uvRange_param[3].pu_region[3]    =    252;
144     awbHwConfig->uvRange_param[3].pv_region[3]    =    249;
145     awbHwConfig->uvRange_param[3].slope_inv[0]      =    453;
146     awbHwConfig->uvRange_param[3].slope_inv[1]      =    -1755;
147     awbHwConfig->uvRange_param[3].slope_inv[2]      =    730;
148     awbHwConfig->uvRange_param[3].slope_inv[3]      =    -1024;
149     awbHwConfig->uvRange_param[4].pu_region[0]    =    255;
150     awbHwConfig->uvRange_param[4].pv_region[0]    =    247;
151     awbHwConfig->uvRange_param[4].pu_region[1]    =    225;
152     awbHwConfig->uvRange_param[4].pv_region[1]    =    129;
153     awbHwConfig->uvRange_param[4].pu_region[2]    =    201;
154     awbHwConfig->uvRange_param[4].pv_region[2]    =    134;
155     awbHwConfig->uvRange_param[4].pu_region[3]    =    254;
156     awbHwConfig->uvRange_param[4].pv_region[3]    =    247;
157     awbHwConfig->uvRange_param[4].slope_inv[0]      =    260;
158     awbHwConfig->uvRange_param[4].slope_inv[1]      =    -4915;
159     awbHwConfig->uvRange_param[4].slope_inv[2]      =    480;
160     awbHwConfig->uvRange_param[4].slope_inv[3]      =    262143;
161     awbHwConfig->uvRange_param[5].pu_region[0]    =    246;
162     awbHwConfig->uvRange_param[5].pv_region[0]    =    257;
163     awbHwConfig->uvRange_param[5].pu_region[1]    =    101;
164     awbHwConfig->uvRange_param[5].pv_region[1]    =    278;
165     awbHwConfig->uvRange_param[5].pu_region[2]    =    104;
166     awbHwConfig->uvRange_param[5].pv_region[2]    =    243;
167     awbHwConfig->uvRange_param[5].pu_region[3]    =    246;
168     awbHwConfig->uvRange_param[5].pv_region[3]    =    254;
169     awbHwConfig->uvRange_param[5].slope_inv[0]      =    -7070;
170     awbHwConfig->uvRange_param[5].slope_inv[1]      =    -88;
171     awbHwConfig->uvRange_param[5].slope_inv[2]      =    13219;
172     awbHwConfig->uvRange_param[5].slope_inv[3]      =    0;
173     awbHwConfig->uvRange_param[6].pu_region[0]    =    250;
174     awbHwConfig->uvRange_param[6].pv_region[0]    =    250;
175     awbHwConfig->uvRange_param[6].pu_region[1]    =    144;
176     awbHwConfig->uvRange_param[6].pv_region[1]    =    171;
177     awbHwConfig->uvRange_param[6].pu_region[2]    =    114;
178     awbHwConfig->uvRange_param[6].pv_region[2]    =    207;
179     awbHwConfig->uvRange_param[6].pu_region[3]    =    247;
180     awbHwConfig->uvRange_param[6].pv_region[3]    =    252;
181     awbHwConfig->uvRange_param[6].slope_inv[0]      =    1374;
182     awbHwConfig->uvRange_param[6].slope_inv[1]      =    -853;
183     awbHwConfig->uvRange_param[6].slope_inv[2]      =    3026;
184     awbHwConfig->uvRange_param[6].slope_inv[3]      =    -1536;
185     awbHwConfig->icrgb2RYuv_matrix[0]  =        12;
186     awbHwConfig->icrgb2RYuv_matrix[1]  =        69;
187     awbHwConfig->icrgb2RYuv_matrix[2]  =        7;
188     awbHwConfig->icrgb2RYuv_matrix[3]  =        665;
189     awbHwConfig->icrgb2RYuv_matrix[4]  =        -44;
190     awbHwConfig->icrgb2RYuv_matrix[5]  =        -2;
191     awbHwConfig->icrgb2RYuv_matrix[6]  =        32;
192     awbHwConfig->icrgb2RYuv_matrix[7]  =        2268;
193     awbHwConfig->icrgb2RYuv_matrix[8]  =        23;
194     awbHwConfig->icrgb2RYuv_matrix[9]  =        -24;
195     awbHwConfig->icrgb2RYuv_matrix[10]  =        27;
196     awbHwConfig->icrgb2RYuv_matrix[11]  =        1690;
197     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0]  =        0;
198     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1]  =        0;
199     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2]  =        0;
200     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3]  =        0;
201     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4]  =        0;
202     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5]  =        0;
203     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0]  =        0;
204     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1]  =        0;
205     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2]  =        0;
206     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3]  =        0;
207     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4]  =        0;
208     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5]  =        0;
209     awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0]  =    0;
210     awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1]  =    0;
211     awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2]  =    0;
212     awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0]  =    0;
213     awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1]  =    0;
214     awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2]  =    0;
215     awbHwConfig->ic3Dyuv2Range_param[0].disP1P2  =    0;
216     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0]  =        0;
217     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1]  =        0;
218     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2]  =        0;
219     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3]  =        0;
220     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4]  =        0;
221     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5]  =        0;
222     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0]  =        0;
223     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1]  =        0;
224     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2]  =        0;
225     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3]  =        0;
226     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4]  =        0;
227     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5]  =        0;
228     awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0]  =    0;
229     awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1]  =    0;
230     awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2]  =    0;
231     awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0]  =    0;
232     awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1]  =    0;
233     awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2]  =    0;
234     awbHwConfig->ic3Dyuv2Range_param[1].disP1P2  =    0;
235     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0]  =        0;
236     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1]  =        0;
237     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2]  =        0;
238     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3]  =        0;
239     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4]  =        0;
240     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5]  =        0;
241     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0]  =        0;
242     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1]  =        0;
243     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2]  =        0;
244     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3]  =        0;
245     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4]  =        0;
246     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5]  =        0;
247     awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0]  =    0;
248     awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1]  =    0;
249     awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2]  =    0;
250     awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0]  =    0;
251     awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1]  =    0;
252     awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2]  =    0;
253     awbHwConfig->ic3Dyuv2Range_param[2].disP1P2  =    0;
254     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0]  =       0;
255     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1]  =       0;
256     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2]  =       0;
257     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3]  =       0;
258     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4]  =       0;
259     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5]  =       0;
260     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0]  =       0;
261     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1]  =       0;
262     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2]  =       0;
263     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3]  =       0;
264     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4]  =       0;
265     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5]  =       0;
266     awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0]  =   0;
267     awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1]  =   0;
268     awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2]  =   0;
269     awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0]  =   0;
270     awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1]  =   0;
271     awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2]  =   0;
272     awbHwConfig->ic3Dyuv2Range_param[3].disP1P2  =   0;
273     awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0]  =    1534;
274     awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1]  =    1535;
275     awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2]  =    1027;
276     awbHwConfig->rgb2xy_param.rotationMat[0]  =    -2202;
277     awbHwConfig->rgb2xy_param.rotationMat[1]  =    3454;
278     awbHwConfig->rgb2xy_param.rotationMat[2]  =    -535;
279     awbHwConfig->rgb2xy_param.rotationMat[3]  =    3454;
280     awbHwConfig->rgb2xy_param.rotationMat[4]  =    2202;
281     awbHwConfig->rgb2xy_param.rotationMat[5]  =    2826;
282     awbHwConfig->xyRange_param[0].NorrangeX[0]  =    -1432;
283     awbHwConfig->xyRange_param[0].NorrangeX[1]  =    -962;
284     awbHwConfig->xyRange_param[0].NorrangeY[0]  =    134;
285     awbHwConfig->xyRange_param[0].NorrangeY[1]  =    -30;
286     awbHwConfig->xyRange_param[0].SperangeX[0]  =    -1432;
287     awbHwConfig->xyRange_param[0].SperangeX[1]  =    -962;
288     awbHwConfig->xyRange_param[0].SperangeY[0]  =    165;
289     awbHwConfig->xyRange_param[0].SperangeY[1]  =    -60;
290     awbHwConfig->xyRange_param[1].NorrangeX[0]  =    -959;
291     awbHwConfig->xyRange_param[1].NorrangeX[1]  =    -507;
292     awbHwConfig->xyRange_param[1].NorrangeY[0]  =    -46;
293     awbHwConfig->xyRange_param[1].NorrangeY[1]  =    -159;
294     awbHwConfig->xyRange_param[1].SperangeX[0]  =    -961;
295     awbHwConfig->xyRange_param[1].SperangeX[1]  =    -507;
296     awbHwConfig->xyRange_param[1].SperangeY[0]  =    -46;
297     awbHwConfig->xyRange_param[1].SperangeY[1]  =    -179;
298     awbHwConfig->xyRange_param[2].NorrangeX[0]  =    -507;
299     awbHwConfig->xyRange_param[2].NorrangeX[1]  =    -160;
300     awbHwConfig->xyRange_param[2].NorrangeY[0]  =    181;
301     awbHwConfig->xyRange_param[2].NorrangeY[1]  =    10;
302     awbHwConfig->xyRange_param[2].SperangeX[0]  =    -507;
303     awbHwConfig->xyRange_param[2].SperangeX[1]  =    -160;
304     awbHwConfig->xyRange_param[2].SperangeY[0]  =    205;
305     awbHwConfig->xyRange_param[2].SperangeY[1]  =    -20;
306     awbHwConfig->xyRange_param[3].NorrangeX[0]  =    -160;
307     awbHwConfig->xyRange_param[3].NorrangeX[1]  =    74;
308     awbHwConfig->xyRange_param[3].NorrangeY[0]  =    79;
309     awbHwConfig->xyRange_param[3].NorrangeY[1]  =    -85;
310     awbHwConfig->xyRange_param[3].SperangeX[0]  =    -160;
311     awbHwConfig->xyRange_param[3].SperangeX[1]  =    74;
312     awbHwConfig->xyRange_param[3].SperangeY[0]  =    109;
313     awbHwConfig->xyRange_param[3].SperangeY[1]  =    -103;
314     awbHwConfig->xyRange_param[4].NorrangeX[0]  =    74;
315     awbHwConfig->xyRange_param[4].NorrangeX[1]  =    227;
316     awbHwConfig->xyRange_param[4].NorrangeY[0]  =    102;
317     awbHwConfig->xyRange_param[4].NorrangeY[1]  =    -66;
318     awbHwConfig->xyRange_param[4].SperangeX[0]  =    74;
319     awbHwConfig->xyRange_param[4].SperangeX[1]  =    227;
320     awbHwConfig->xyRange_param[4].SperangeY[0]  =    133;
321     awbHwConfig->xyRange_param[4].SperangeY[1]  =    -86;
322     awbHwConfig->xyRange_param[5].NorrangeX[0]  =    -1742;
323     awbHwConfig->xyRange_param[5].NorrangeX[1]  =    -1432;
324     awbHwConfig->xyRange_param[5].NorrangeY[0]  =    90;
325     awbHwConfig->xyRange_param[5].NorrangeY[1]  =    -80;
326     awbHwConfig->xyRange_param[5].SperangeX[0]  =    -1742;
327     awbHwConfig->xyRange_param[5].SperangeX[1]  =    -1432;
328     awbHwConfig->xyRange_param[5].SperangeY[0]  =    121;
329     awbHwConfig->xyRange_param[5].SperangeY[1]  =    -111;
330     awbHwConfig->xyRange_param[6].NorrangeX[0]  =    -962;
331     awbHwConfig->xyRange_param[6].NorrangeX[1]  =    -509;
332     awbHwConfig->xyRange_param[6].NorrangeY[0]  =    114;
333     awbHwConfig->xyRange_param[6].NorrangeY[1]  =    -43;
334     awbHwConfig->xyRange_param[6].SperangeX[0]  =    -962;
335     awbHwConfig->xyRange_param[6].SperangeX[1]  =    -509;
336     awbHwConfig->xyRange_param[6].SperangeY[0]  =    134;
337     awbHwConfig->xyRange_param[6].SperangeY[1]  =    -45;
338     awbHwConfig->multiwindow_en  =    0;
339     awbHwConfig->multiwindow[0][0]  =    0;
340     awbHwConfig->multiwindow[0][1]  =    0;
341     awbHwConfig->multiwindow[0][2]  =    0;
342     awbHwConfig->multiwindow[0][3]  =    0;
343     awbHwConfig->multiwindow[1][0]  =    0;
344     awbHwConfig->multiwindow[1][1]  =    0;
345     awbHwConfig->multiwindow[1][2]  =    0;
346     awbHwConfig->multiwindow[1][3]  =    0;
347     awbHwConfig->multiwindow[2][0]  =    0;
348     awbHwConfig->multiwindow[2][1]  =    0;
349     awbHwConfig->multiwindow[2][2]  =    0;
350     awbHwConfig->multiwindow[2][3]  =    0;
351     awbHwConfig->multiwindow[3][0]  =    0;
352     awbHwConfig->multiwindow[3][1]  =    0;
353     awbHwConfig->multiwindow[3][2]  =    0;
354     awbHwConfig->multiwindow[3][3]  =    0;
355     awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
356     awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
357     awbHwConfig->excludeWpRange[0].measureEnable   =     0;
358     awbHwConfig->excludeWpRange[0].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
359     awbHwConfig->excludeWpRange[0].xu[0]           =     0;
360     awbHwConfig->excludeWpRange[0].xu[1]           =     0;
361     awbHwConfig->excludeWpRange[0].yv[0]           =     0;
362     awbHwConfig->excludeWpRange[0].yv[1]           =     0;
363     awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
364     awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
365     awbHwConfig->excludeWpRange[1].measureEnable   =     0;
366     awbHwConfig->excludeWpRange[1].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
367     awbHwConfig->excludeWpRange[1].xu[0]           =     0;
368     awbHwConfig->excludeWpRange[1].xu[1]           =     0;
369     awbHwConfig->excludeWpRange[1].yv[0]           =     0;
370     awbHwConfig->excludeWpRange[1].yv[1]           =     0;
371     awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
372     awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
373     awbHwConfig->excludeWpRange[2].measureEnable   =     0;
374     awbHwConfig->excludeWpRange[2].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
375     awbHwConfig->excludeWpRange[2].xu[0]           =     0;
376     awbHwConfig->excludeWpRange[2].xu[1]           =     0;
377     awbHwConfig->excludeWpRange[2].yv[0]           =     0;
378     awbHwConfig->excludeWpRange[2].yv[1]           =     0;
379     awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
380     awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
381     awbHwConfig->excludeWpRange[3].measureEnable   =     0;
382     awbHwConfig->excludeWpRange[3].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
383     awbHwConfig->excludeWpRange[3].xu[0]           =     0;
384     awbHwConfig->excludeWpRange[3].xu[1]           =     0;
385     awbHwConfig->excludeWpRange[3].yv[0]           =     0;
386     awbHwConfig->excludeWpRange[3].yv[1]           =     0;
387     awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
388     awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
389     awbHwConfig->excludeWpRange[4].measureEnable   =     0;
390     awbHwConfig->excludeWpRange[4].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
391     awbHwConfig->excludeWpRange[4].xu[0]           =     0;
392     awbHwConfig->excludeWpRange[4].xu[1]           =     0;
393     awbHwConfig->excludeWpRange[4].yv[0]           =     0;
394     awbHwConfig->excludeWpRange[4].yv[1]           =     0;
395     awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
396     awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
397     awbHwConfig->excludeWpRange[5].measureEnable   =     0;
398     awbHwConfig->excludeWpRange[5].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
399     awbHwConfig->excludeWpRange[5].xu[0]           =     0;
400     awbHwConfig->excludeWpRange[5].xu[1]           =     0;
401     awbHwConfig->excludeWpRange[5].yv[0]           =     0;
402     awbHwConfig->excludeWpRange[5].yv[1]           =     0;
403     awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
404     awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
405     awbHwConfig->excludeWpRange[6].measureEnable   =     0;
406     awbHwConfig->excludeWpRange[6].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
407     awbHwConfig->excludeWpRange[6].xu[0]           =     0;
408     awbHwConfig->excludeWpRange[6].xu[1]           =     0;
409     awbHwConfig->excludeWpRange[6].yv[0]           =     0;
410     awbHwConfig->excludeWpRange[6].yv[1]           =     0;
411     awbHwConfig->wpDiffwei_y[0]  =0;
412     awbHwConfig->wpDiffwei_y[1]  =16;
413     awbHwConfig->wpDiffwei_y[2]  =32;
414     awbHwConfig->wpDiffwei_y[3]  =64;
415     awbHwConfig->wpDiffwei_y[4]  =96;
416     awbHwConfig->wpDiffwei_y[5]  =128;
417     awbHwConfig->wpDiffwei_y[6]  =192;
418     awbHwConfig->wpDiffwei_y[7]  =224;
419     awbHwConfig->wpDiffwei_y[8]  =240;
420     awbHwConfig->wpDiffwei_w[0]  =31;
421     awbHwConfig->wpDiffwei_w[1]  =31;
422     awbHwConfig->wpDiffwei_w[2]  =31;
423     awbHwConfig->wpDiffwei_w[3]  =31;
424     awbHwConfig->wpDiffwei_w[4]  =31;
425     awbHwConfig->wpDiffwei_w[5]  =31;
426     awbHwConfig->wpDiffwei_w[6]  =31;
427     awbHwConfig->wpDiffwei_w[7]  =31;
428     awbHwConfig->wpDiffwei_w[8]  =31;
429     awbHwConfig->blkWeight[0]  =6;
430     awbHwConfig->blkWeight[1]  =6;
431     awbHwConfig->blkWeight[2]  =6;
432     awbHwConfig->blkWeight[3]  =8;
433     awbHwConfig->blkWeight[4]  =8;
434     awbHwConfig->blkWeight[5]  =8;
435     awbHwConfig->blkWeight[6]  =8;
436     awbHwConfig->blkWeight[7]  =10;
437     awbHwConfig->blkWeight[8]  =8;
438     awbHwConfig->blkWeight[9]  =8;
439     awbHwConfig->blkWeight[10]  =8;
440     awbHwConfig->blkWeight[11]  =8;
441     awbHwConfig->blkWeight[12]  =6;
442     awbHwConfig->blkWeight[13]  =6;
443     awbHwConfig->blkWeight[14]  =6;
444     awbHwConfig->blkWeight[15]  =6;
445     awbHwConfig->blkWeight[16]  =6;
446     awbHwConfig->blkWeight[17]  =8;
447     awbHwConfig->blkWeight[18]  =8;
448     awbHwConfig->blkWeight[19]  =10;
449     awbHwConfig->blkWeight[20]  =10;
450     awbHwConfig->blkWeight[21]  =12;
451     awbHwConfig->blkWeight[22]  =12;
452     awbHwConfig->blkWeight[23]  =12;
453     awbHwConfig->blkWeight[24]  =10;
454     awbHwConfig->blkWeight[25]  =10;
455     awbHwConfig->blkWeight[26]  =8;
456     awbHwConfig->blkWeight[27]  =8;
457     awbHwConfig->blkWeight[28]  =6;
458     awbHwConfig->blkWeight[29]  =6;
459     awbHwConfig->blkWeight[30]  =6;
460     awbHwConfig->blkWeight[31]  =8;
461     awbHwConfig->blkWeight[32]  =10;
462     awbHwConfig->blkWeight[33]  =12;
463     awbHwConfig->blkWeight[34]  =14;
464     awbHwConfig->blkWeight[35]  =16;
465     awbHwConfig->blkWeight[36]  =18;
466     awbHwConfig->blkWeight[37]  =20;
467     awbHwConfig->blkWeight[38]  =18;
468     awbHwConfig->blkWeight[39]  =16;
469     awbHwConfig->blkWeight[40]  =14;
470     awbHwConfig->blkWeight[41]  =12;
471     awbHwConfig->blkWeight[42]  =10;
472     awbHwConfig->blkWeight[43]  =8;
473     awbHwConfig->blkWeight[44]  =6;
474     awbHwConfig->blkWeight[45]  =8;
475     awbHwConfig->blkWeight[46]  =8;
476     awbHwConfig->blkWeight[47]  =12;
477     awbHwConfig->blkWeight[48]  =16;
478     awbHwConfig->blkWeight[49]  =22;
479     awbHwConfig->blkWeight[50]  =26;
480     awbHwConfig->blkWeight[51]  =30;
481     awbHwConfig->blkWeight[52]  =32;
482     awbHwConfig->blkWeight[53]  =30;
483     awbHwConfig->blkWeight[54]  =26;
484     awbHwConfig->blkWeight[55]  =22;
485     awbHwConfig->blkWeight[56]  =16;
486     awbHwConfig->blkWeight[57]  =12;
487     awbHwConfig->blkWeight[58]  =8;
488     awbHwConfig->blkWeight[59]  =8;
489     awbHwConfig->blkWeight[60]  =8;
490     awbHwConfig->blkWeight[61]  =10;
491     awbHwConfig->blkWeight[62]  =14;
492     awbHwConfig->blkWeight[63]  =22;
493     awbHwConfig->blkWeight[64]  =28;
494     awbHwConfig->blkWeight[65]  =36;
495     awbHwConfig->blkWeight[66]  =42;
496     awbHwConfig->blkWeight[67]  =46;
497     awbHwConfig->blkWeight[68]  =42;
498     awbHwConfig->blkWeight[69]  =36;
499     awbHwConfig->blkWeight[70]  =28;
500     awbHwConfig->blkWeight[71]  =22;
501     awbHwConfig->blkWeight[72]  =14;
502     awbHwConfig->blkWeight[73]  =10;
503     awbHwConfig->blkWeight[74]  =8;
504     awbHwConfig->blkWeight[75]  =8;
505     awbHwConfig->blkWeight[76]  =10;
506     awbHwConfig->blkWeight[77]  =16;
507     awbHwConfig->blkWeight[78]  =26;
508     awbHwConfig->blkWeight[79]  =36;
509     awbHwConfig->blkWeight[80]  =46;
510     awbHwConfig->blkWeight[81]  =54;
511     awbHwConfig->blkWeight[82]  =58;
512     awbHwConfig->blkWeight[83]  =54;
513     awbHwConfig->blkWeight[84]  =46;
514     awbHwConfig->blkWeight[85]  =36;
515     awbHwConfig->blkWeight[86]  =26;
516     awbHwConfig->blkWeight[87]  =16;
517     awbHwConfig->blkWeight[88]  =10;
518     awbHwConfig->blkWeight[89]  =8;
519     awbHwConfig->blkWeight[90]  =8;
520     awbHwConfig->blkWeight[91]  =12;
521     awbHwConfig->blkWeight[92]  =18;
522     awbHwConfig->blkWeight[93]  =30;
523     awbHwConfig->blkWeight[94]  =42;
524     awbHwConfig->blkWeight[95]  =54;
525     awbHwConfig->blkWeight[96]  =63;
526     awbHwConfig->blkWeight[97]  =63;
527     awbHwConfig->blkWeight[98]  =63;
528     awbHwConfig->blkWeight[99]  =54;
529     awbHwConfig->blkWeight[100]  =42;
530     awbHwConfig->blkWeight[101]  =30;
531     awbHwConfig->blkWeight[102]  =18;
532     awbHwConfig->blkWeight[103]  =12;
533     awbHwConfig->blkWeight[104]  =8;
534     awbHwConfig->blkWeight[105]  =10;
535     awbHwConfig->blkWeight[106]  =12;
536     awbHwConfig->blkWeight[107]  =20;
537     awbHwConfig->blkWeight[108]  =32;
538     awbHwConfig->blkWeight[109]  =46;
539     awbHwConfig->blkWeight[110]  =58;
540     awbHwConfig->blkWeight[111]  =63;
541     awbHwConfig->blkWeight[112]  =63;
542     awbHwConfig->blkWeight[113]  =63;
543     awbHwConfig->blkWeight[114]  =58;
544     awbHwConfig->blkWeight[115]  =46;
545     awbHwConfig->blkWeight[116]  =32;
546     awbHwConfig->blkWeight[117]  =20;
547     awbHwConfig->blkWeight[118]  =12;
548     awbHwConfig->blkWeight[119]  =10;
549     awbHwConfig->blkWeight[120]  =8;
550     awbHwConfig->blkWeight[121]  =12;
551     awbHwConfig->blkWeight[122]  =18;
552     awbHwConfig->blkWeight[123]  =30;
553     awbHwConfig->blkWeight[124]  =42;
554     awbHwConfig->blkWeight[125]  =54;
555     awbHwConfig->blkWeight[126]  =63;
556     awbHwConfig->blkWeight[127]  =63;
557     awbHwConfig->blkWeight[128]  =63;
558     awbHwConfig->blkWeight[129]  =54;
559     awbHwConfig->blkWeight[130]  =42;
560     awbHwConfig->blkWeight[131]  =30;
561     awbHwConfig->blkWeight[132]  =18;
562     awbHwConfig->blkWeight[133]  =12;
563     awbHwConfig->blkWeight[134]  =8;
564     awbHwConfig->blkWeight[135]  =8;
565     awbHwConfig->blkWeight[136]  =10;
566     awbHwConfig->blkWeight[137]  =16;
567     awbHwConfig->blkWeight[138]  =26;
568     awbHwConfig->blkWeight[139]  =36;
569     awbHwConfig->blkWeight[140]  =46;
570     awbHwConfig->blkWeight[141]  =54;
571     awbHwConfig->blkWeight[142]  =58;
572     awbHwConfig->blkWeight[143]  =54;
573     awbHwConfig->blkWeight[144]  =46;
574     awbHwConfig->blkWeight[145]  =36;
575     awbHwConfig->blkWeight[146]  =26;
576     awbHwConfig->blkWeight[147]  =16;
577     awbHwConfig->blkWeight[148]  =10;
578     awbHwConfig->blkWeight[149]  =8;
579     awbHwConfig->blkWeight[150]  =8;
580     awbHwConfig->blkWeight[151]  =10;
581     awbHwConfig->blkWeight[152]  =14;
582     awbHwConfig->blkWeight[153]  =22;
583     awbHwConfig->blkWeight[154]  =28;
584     awbHwConfig->blkWeight[155]  =36;
585     awbHwConfig->blkWeight[156]  =42;
586     awbHwConfig->blkWeight[157]  =46;
587     awbHwConfig->blkWeight[158]  =42;
588     awbHwConfig->blkWeight[159]  =36;
589     awbHwConfig->blkWeight[160]  =28;
590     awbHwConfig->blkWeight[161]  =22;
591     awbHwConfig->blkWeight[162]  =14;
592     awbHwConfig->blkWeight[163]  =10;
593     awbHwConfig->blkWeight[164]  =8;
594     awbHwConfig->blkWeight[165]  =8;
595     awbHwConfig->blkWeight[166]  =8;
596     awbHwConfig->blkWeight[167]  =12;
597     awbHwConfig->blkWeight[168]  =16;
598     awbHwConfig->blkWeight[169]  =22;
599     awbHwConfig->blkWeight[170]  =26;
600     awbHwConfig->blkWeight[171]  =30;
601     awbHwConfig->blkWeight[172]  =32;
602     awbHwConfig->blkWeight[173]  =30;
603     awbHwConfig->blkWeight[174]  =26;
604     awbHwConfig->blkWeight[175]  =22;
605     awbHwConfig->blkWeight[176]  =16;
606     awbHwConfig->blkWeight[177]  =12;
607     awbHwConfig->blkWeight[178]  =8;
608     awbHwConfig->blkWeight[179]  =8;
609     awbHwConfig->blkWeight[180]  =6;
610     awbHwConfig->blkWeight[181]  =8;
611     awbHwConfig->blkWeight[182]  =10;
612     awbHwConfig->blkWeight[183]  =12;
613     awbHwConfig->blkWeight[184]  =14;
614     awbHwConfig->blkWeight[185]  =16;
615     awbHwConfig->blkWeight[186]  =18;
616     awbHwConfig->blkWeight[187]  =20;
617     awbHwConfig->blkWeight[188]  =18;
618     awbHwConfig->blkWeight[189]  =16;
619     awbHwConfig->blkWeight[190]  =14;
620     awbHwConfig->blkWeight[191]  =12;
621     awbHwConfig->blkWeight[192]  =10;
622     awbHwConfig->blkWeight[193]  =8;
623     awbHwConfig->blkWeight[194]  =6;
624     awbHwConfig->blkWeight[195]  =6;
625     awbHwConfig->blkWeight[196]  =6;
626     awbHwConfig->blkWeight[197]  =8;
627     awbHwConfig->blkWeight[198]  =8;
628     awbHwConfig->blkWeight[199]  =10;
629     awbHwConfig->blkWeight[200]  =10;
630     awbHwConfig->blkWeight[201]  =12;
631     awbHwConfig->blkWeight[202]  =12;
632     awbHwConfig->blkWeight[203]  =12;
633     awbHwConfig->blkWeight[204]  =10;
634     awbHwConfig->blkWeight[205]  =10;
635     awbHwConfig->blkWeight[206]  =8;
636     awbHwConfig->blkWeight[207]  =8;
637     awbHwConfig->blkWeight[208]  =6;
638     awbHwConfig->blkWeight[209]  =6;
639     awbHwConfig->blkWeight[210]  =6;
640     awbHwConfig->blkWeight[211]  =6;
641     awbHwConfig->blkWeight[212]  =6;
642     awbHwConfig->blkWeight[213]  =8;
643     awbHwConfig->blkWeight[214]  =8;
644     awbHwConfig->blkWeight[215]  =8;
645     awbHwConfig->blkWeight[216]  =8;
646     awbHwConfig->blkWeight[217]  =10;
647     awbHwConfig->blkWeight[218]  =8;
648     awbHwConfig->blkWeight[219]  =8;
649     awbHwConfig->blkWeight[220]  =8;
650     awbHwConfig->blkWeight[221]  =8;
651     awbHwConfig->blkWeight[222]  =6;
652     awbHwConfig->blkWeight[223]  =6;
653     awbHwConfig->blkWeight[224]  =6;
654 
655     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
656     return ret;
657 }
658 
initAwbHwFullConfigGw(rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfig)659 static XCamReturn initAwbHwFullConfigGw(rk_aiq_isp_awb_meas_cfg_v3x_t  *awbHwConfig)
660 {
661     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
662     XCamReturn ret = XCAM_RETURN_NO_ERROR;
663     memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
664     awbHwConfig->awbEnable             =    1;
665     awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    0;
666     awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    0;
667     awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    0;
668     awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    0;
669     awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    0;
670     awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    0;
671     awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]    =    0;
672     awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]    =    0;
673     awbHwConfig->lscBypEnable    =    0;
674     awbHwConfig->blkStatisticsEnable    =    1;
675     awbHwConfig->blkMeasureMode     =    (rk_aiq_awb_blk_stat_mode_v201_t)0;
676     awbHwConfig->xyRangeTypeForBlkStatistics     =    (rk_aiq_awb_xy_type_v201_t)0;
677     awbHwConfig->illIdxForBlkStatistics     =    (rk_aiq_awb_blk_stat_realwp_ill_e)7;
678     awbHwConfig->blkStatisticsWithLumaWeightEn  =    0;
679     awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =    0;
680     awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =    0;
681     awbHwConfig->xyRangeTypeForWpHist    =    (rk_aiq_awb_xy_type_v201_t)0;
682     awbHwConfig->lightNum      =    7;
683     awbHwConfig->windowSet[0]         =    0;
684     awbHwConfig->windowSet[1]          =    0;
685     awbHwConfig->windowSet[2]         =    3840;
686     awbHwConfig->windowSet[3]         =    2160;
687     awbHwConfig->dsMode      =    (rk_aiq_down_scale_mode_t)1;
688     awbHwConfig->maxR          =    230;
689     awbHwConfig->maxG          =    230;
690     awbHwConfig->maxB          =    230;
691     awbHwConfig->maxY          =    230;
692     awbHwConfig->minR          =    3;
693     awbHwConfig->minG          =    3;
694     awbHwConfig->minB          =    3;
695     awbHwConfig->minY          =    3;
696     awbHwConfig->pre_wbgain_inv_r  =    256;
697     awbHwConfig->pre_wbgain_inv_g  =    256;
698     awbHwConfig->pre_wbgain_inv_b  =    256;
699 #ifdef ISP_HW_V30
700     awbHwConfig->multiwindow_en  =    0;
701 #endif
702     awbHwConfig->blk_rtdw_measure_en  =    0;
703     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
704     return ret;
705 }
706 
initAwbHwFullConfigWp(rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfig)707 static XCamReturn initAwbHwFullConfigWp(rk_aiq_isp_awb_meas_cfg_v3x_t  *awbHwConfig)
708 {
709     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
710     XCamReturn ret = XCAM_RETURN_NO_ERROR;
711     memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
712     awbHwConfig->awbEnable             =    1;//rawawb enable
713     awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    1;//xy detect  enable for all light
714     awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    1;//uv detect  enable for all  light
715     awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    1;//uv detect  enable for all  light
716     awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    1;//xy detect  enable for all light
717     awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    1;//uv detect  enable for all  light
718     awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    1;//uv detect  enable for all  light
719     awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]    =    0;
720     awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]    =    0;
721     awbHwConfig->lscBypEnable    =    0;
722     awbHwConfig->blkStatisticsEnable    =    1;
723     awbHwConfig->blkMeasureMode     =    (rk_aiq_awb_blk_stat_mode_v201_t)0;
724     awbHwConfig->xyRangeTypeForBlkStatistics     =    (rk_aiq_awb_xy_type_v201_t)0;
725     awbHwConfig->illIdxForBlkStatistics     =    (rk_aiq_awb_blk_stat_realwp_ill_e)7;
726     awbHwConfig->blkStatisticsWithLumaWeightEn  =    0;
727     awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =    0;
728     awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =    0;
729     awbHwConfig->xyRangeTypeForWpHist    =    (rk_aiq_awb_xy_type_v201_t)0;
730     awbHwConfig->threeDyuvIllu[0]       =    7;
731     awbHwConfig->threeDyuvIllu[1]       =    7;
732     awbHwConfig->threeDyuvIllu[2]       =    7;
733     awbHwConfig->threeDyuvIllu[3]       =    7;
734     awbHwConfig->lightNum      =    7; //measurment light num ,0~7
735     awbHwConfig->windowSet[0]         =    0;//crop h_offs mod 2 == 0
736     awbHwConfig->windowSet[1]          =    0;//crop v_offs mod 2 == 0
737     awbHwConfig->windowSet[2]         =    3840;//crop h_size,8x8:mod 8==0,4x4:mod 4==0
738     awbHwConfig->windowSet[3]         =    2160;//crop v_size,8x8:mod 8==0,4x4:mod 4==0
739     awbHwConfig->dsMode      =    (rk_aiq_down_scale_mode_t)1;//downscale,1:8x8,0:4x4
740     awbHwConfig->maxR          =    230;
741     awbHwConfig->maxG          =    230;
742     awbHwConfig->maxB          =    230;
743     awbHwConfig->maxY          =    230;
744     awbHwConfig->minR          =    3;
745     awbHwConfig->minG          =    3;
746     awbHwConfig->minB          =    3;
747     awbHwConfig->minY          =    3;
748     awbHwConfig->uvRange_param[0].pu_region[0]    =    247;
749     awbHwConfig->uvRange_param[0].pv_region[0]    =    252;
750     awbHwConfig->uvRange_param[0].pu_region[1]    =    114;
751     awbHwConfig->uvRange_param[0].pv_region[1]    =    206;
752     awbHwConfig->uvRange_param[0].pu_region[2]    =    105;
753     awbHwConfig->uvRange_param[0].pv_region[2]    =    243;
754     awbHwConfig->uvRange_param[0].pu_region[3]    =    246;
755     awbHwConfig->uvRange_param[0].pv_region[3]    =    254;
756     awbHwConfig->uvRange_param[0].slope_inv[0]      =    2961;
757     awbHwConfig->uvRange_param[0].slope_inv[1]      =    -249;
758     awbHwConfig->uvRange_param[0].slope_inv[2]      =    13126;
759     awbHwConfig->uvRange_param[0].slope_inv[3]      =    -512;
760     awbHwConfig->uvRange_param[1].pu_region[0]    =    251;
761     awbHwConfig->uvRange_param[1].pv_region[0]    =    249;
762     awbHwConfig->uvRange_param[1].pu_region[1]    =    159;
763     awbHwConfig->uvRange_param[1].pv_region[1]    =    160;
764     awbHwConfig->uvRange_param[1].pu_region[2]    =    141;
765     awbHwConfig->uvRange_param[1].pv_region[2]    =    173;
766     awbHwConfig->uvRange_param[1].pu_region[3]    =    249;
767     awbHwConfig->uvRange_param[1].pv_region[3]    =    250;
768     awbHwConfig->uvRange_param[1].slope_inv[0]      =    1059;
769     awbHwConfig->uvRange_param[1].slope_inv[1]      =    -1418;
770     awbHwConfig->uvRange_param[1].slope_inv[2]      =    1436;
771     awbHwConfig->uvRange_param[1].slope_inv[3]      =    -2048;
772     awbHwConfig->uvRange_param[2].pu_region[0]    =    252;
773     awbHwConfig->uvRange_param[2].pv_region[0]    =    249;
774     awbHwConfig->uvRange_param[2].pu_region[1]    =    180;
775     awbHwConfig->uvRange_param[2].pv_region[1]    =    148;
776     awbHwConfig->uvRange_param[2].pu_region[2]    =    158;
777     awbHwConfig->uvRange_param[2].pv_region[2]    =    160;
778     awbHwConfig->uvRange_param[2].pu_region[3]    =    250;
779     awbHwConfig->uvRange_param[2].pv_region[3]    =    249;
780     awbHwConfig->uvRange_param[2].slope_inv[0]      =    730;
781     awbHwConfig->uvRange_param[2].slope_inv[1]      =    -1877;
782     awbHwConfig->uvRange_param[2].slope_inv[2]      =    1059;
783     awbHwConfig->uvRange_param[2].slope_inv[3]      =    262143;
784     awbHwConfig->uvRange_param[3].pu_region[0]    =    254;
785     awbHwConfig->uvRange_param[3].pv_region[0]    =    247;
786     awbHwConfig->uvRange_param[3].pu_region[1]    =    204;
787     awbHwConfig->uvRange_param[3].pv_region[1]    =    134;
788     awbHwConfig->uvRange_param[3].pu_region[2]    =    180;
789     awbHwConfig->uvRange_param[3].pv_region[2]    =    148;
790     awbHwConfig->uvRange_param[3].pu_region[3]    =    252;
791     awbHwConfig->uvRange_param[3].pv_region[3]    =    249;
792     awbHwConfig->uvRange_param[3].slope_inv[0]      =    453;
793     awbHwConfig->uvRange_param[3].slope_inv[1]      =    -1755;
794     awbHwConfig->uvRange_param[3].slope_inv[2]      =    730;
795     awbHwConfig->uvRange_param[3].slope_inv[3]      =    -1024;
796     awbHwConfig->uvRange_param[4].pu_region[0]    =    255;
797     awbHwConfig->uvRange_param[4].pv_region[0]    =    247;
798     awbHwConfig->uvRange_param[4].pu_region[1]    =    225;
799     awbHwConfig->uvRange_param[4].pv_region[1]    =    129;
800     awbHwConfig->uvRange_param[4].pu_region[2]    =    201;
801     awbHwConfig->uvRange_param[4].pv_region[2]    =    134;
802     awbHwConfig->uvRange_param[4].pu_region[3]    =    254;
803     awbHwConfig->uvRange_param[4].pv_region[3]    =    247;
804     awbHwConfig->uvRange_param[4].slope_inv[0]      =    260;
805     awbHwConfig->uvRange_param[4].slope_inv[1]      =    -4915;
806     awbHwConfig->uvRange_param[4].slope_inv[2]      =    480;
807     awbHwConfig->uvRange_param[4].slope_inv[3]      =    262143;
808     awbHwConfig->uvRange_param[5].pu_region[0]    =    246;
809     awbHwConfig->uvRange_param[5].pv_region[0]    =    257;
810     awbHwConfig->uvRange_param[5].pu_region[1]    =    101;
811     awbHwConfig->uvRange_param[5].pv_region[1]    =    278;
812     awbHwConfig->uvRange_param[5].pu_region[2]    =    104;
813     awbHwConfig->uvRange_param[5].pv_region[2]    =    243;
814     awbHwConfig->uvRange_param[5].pu_region[3]    =    246;
815     awbHwConfig->uvRange_param[5].pv_region[3]    =    254;
816     awbHwConfig->uvRange_param[5].slope_inv[0]      =    -7070;
817     awbHwConfig->uvRange_param[5].slope_inv[1]      =    -88;
818     awbHwConfig->uvRange_param[5].slope_inv[2]      =    13219;
819     awbHwConfig->uvRange_param[5].slope_inv[3]      =    0;
820     awbHwConfig->uvRange_param[6].pu_region[0]    =    250;
821     awbHwConfig->uvRange_param[6].pv_region[0]    =    250;
822     awbHwConfig->uvRange_param[6].pu_region[1]    =    144;
823     awbHwConfig->uvRange_param[6].pv_region[1]    =    171;
824     awbHwConfig->uvRange_param[6].pu_region[2]    =    114;
825     awbHwConfig->uvRange_param[6].pv_region[2]    =    207;
826     awbHwConfig->uvRange_param[6].pu_region[3]    =    247;
827     awbHwConfig->uvRange_param[6].pv_region[3]    =    252;
828     awbHwConfig->uvRange_param[6].slope_inv[0]      =    1374;
829     awbHwConfig->uvRange_param[6].slope_inv[1]      =    -853;
830     awbHwConfig->uvRange_param[6].slope_inv[2]      =    3026;
831     awbHwConfig->uvRange_param[6].slope_inv[3]      =    -1536;
832     awbHwConfig->icrgb2RYuv_matrix[0]  =        12;
833     awbHwConfig->icrgb2RYuv_matrix[1]  =        69;
834     awbHwConfig->icrgb2RYuv_matrix[2]  =        7;
835     awbHwConfig->icrgb2RYuv_matrix[3]  =        665;
836     awbHwConfig->icrgb2RYuv_matrix[4]  =        -44;
837     awbHwConfig->icrgb2RYuv_matrix[5]  =        -2;
838     awbHwConfig->icrgb2RYuv_matrix[6]  =        32;
839     awbHwConfig->icrgb2RYuv_matrix[7]  =        2268;
840     awbHwConfig->icrgb2RYuv_matrix[8]  =        23;
841     awbHwConfig->icrgb2RYuv_matrix[9]  =        -24;
842     awbHwConfig->icrgb2RYuv_matrix[10]  =        27;
843     awbHwConfig->icrgb2RYuv_matrix[11]  =        1690;
844     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0]  =        0;
845     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1]  =        0;
846     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2]  =        0;
847     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3]  =        0;
848     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4]  =        0;
849     awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5]  =        0;
850     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0]  =        0;
851     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1]  =        0;
852     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2]  =        0;
853     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3]  =        0;
854     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4]  =        0;
855     awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5]  =        0;
856     awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0]  =    0;
857     awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1]  =    0;
858     awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2]  =    0;
859     awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0]  =    0;
860     awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1]  =    0;
861     awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2]  =    0;
862     awbHwConfig->ic3Dyuv2Range_param[0].disP1P2  =    0;
863     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0]  =        0;
864     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1]  =        0;
865     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2]  =        0;
866     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3]  =        0;
867     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4]  =        0;
868     awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5]  =        0;
869     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0]  =        0;
870     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1]  =        0;
871     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2]  =        0;
872     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3]  =        0;
873     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4]  =        0;
874     awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5]  =        0;
875     awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0]  =    0;
876     awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1]  =    0;
877     awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2]  =    0;
878     awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0]  =    0;
879     awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1]  =    0;
880     awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2]  =    0;
881     awbHwConfig->ic3Dyuv2Range_param[1].disP1P2  =    0;
882     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0]  =        0;
883     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1]  =        0;
884     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2]  =        0;
885     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3]  =        0;
886     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4]  =        0;
887     awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5]  =        0;
888     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0]  =        0;
889     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1]  =        0;
890     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2]  =        0;
891     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3]  =        0;
892     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4]  =        0;
893     awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5]  =        0;
894     awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0]  =    0;
895     awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1]  =    0;
896     awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2]  =    0;
897     awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0]  =    0;
898     awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1]  =    0;
899     awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2]  =    0;
900     awbHwConfig->ic3Dyuv2Range_param[2].disP1P2  =    0;
901     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0]  =       0;
902     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1]  =       0;
903     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2]  =       0;
904     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3]  =       0;
905     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4]  =       0;
906     awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5]  =       0;
907     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0]  =       0;
908     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1]  =       0;
909     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2]  =       0;
910     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3]  =       0;
911     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4]  =       0;
912     awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5]  =       0;
913     awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0]  =   0;
914     awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1]  =   0;
915     awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2]  =   0;
916     awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0]  =   0;
917     awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1]  =   0;
918     awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2]  =   0;
919     awbHwConfig->ic3Dyuv2Range_param[3].disP1P2  =   0;
920     awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0]  =    1534;
921     awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1]  =    1535;
922     awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2]  =    1027;
923     awbHwConfig->rgb2xy_param.rotationMat[0]  =    -2202;
924     awbHwConfig->rgb2xy_param.rotationMat[1]  =    3454;
925     awbHwConfig->rgb2xy_param.rotationMat[2]  =    -535;
926     awbHwConfig->rgb2xy_param.rotationMat[3]  =    3454;
927     awbHwConfig->rgb2xy_param.rotationMat[4]  =    2202;
928     awbHwConfig->rgb2xy_param.rotationMat[5]  =    2826;
929     awbHwConfig->xyRange_param[0].NorrangeX[0]  =    -1432;
930     awbHwConfig->xyRange_param[0].NorrangeX[1]  =    -962;
931     awbHwConfig->xyRange_param[0].NorrangeY[0]  =    134;
932     awbHwConfig->xyRange_param[0].NorrangeY[1]  =    -30;
933     awbHwConfig->xyRange_param[0].SperangeX[0]  =    -1432;
934     awbHwConfig->xyRange_param[0].SperangeX[1]  =    -962;
935     awbHwConfig->xyRange_param[0].SperangeY[0]  =    165;
936     awbHwConfig->xyRange_param[0].SperangeY[1]  =    -60;
937     awbHwConfig->xyRange_param[1].NorrangeX[0]  =    -959;
938     awbHwConfig->xyRange_param[1].NorrangeX[1]  =    -507;
939     awbHwConfig->xyRange_param[1].NorrangeY[0]  =    -46;
940     awbHwConfig->xyRange_param[1].NorrangeY[1]  =    -159;
941     awbHwConfig->xyRange_param[1].SperangeX[0]  =    -961;
942     awbHwConfig->xyRange_param[1].SperangeX[1]  =    -507;
943     awbHwConfig->xyRange_param[1].SperangeY[0]  =    -46;
944     awbHwConfig->xyRange_param[1].SperangeY[1]  =    -179;
945     awbHwConfig->xyRange_param[2].NorrangeX[0]  =    -507;
946     awbHwConfig->xyRange_param[2].NorrangeX[1]  =    -160;
947     awbHwConfig->xyRange_param[2].NorrangeY[0]  =    181;
948     awbHwConfig->xyRange_param[2].NorrangeY[1]  =    10;
949     awbHwConfig->xyRange_param[2].SperangeX[0]  =    -507;
950     awbHwConfig->xyRange_param[2].SperangeX[1]  =    -160;
951     awbHwConfig->xyRange_param[2].SperangeY[0]  =    205;
952     awbHwConfig->xyRange_param[2].SperangeY[1]  =    -20;
953     awbHwConfig->xyRange_param[3].NorrangeX[0]  =    -160;
954     awbHwConfig->xyRange_param[3].NorrangeX[1]  =    74;
955     awbHwConfig->xyRange_param[3].NorrangeY[0]  =    79;
956     awbHwConfig->xyRange_param[3].NorrangeY[1]  =    -85;
957     awbHwConfig->xyRange_param[3].SperangeX[0]  =    -160;
958     awbHwConfig->xyRange_param[3].SperangeX[1]  =    74;
959     awbHwConfig->xyRange_param[3].SperangeY[0]  =    109;
960     awbHwConfig->xyRange_param[3].SperangeY[1]  =    -103;
961     awbHwConfig->xyRange_param[4].NorrangeX[0]  =    74;
962     awbHwConfig->xyRange_param[4].NorrangeX[1]  =    227;
963     awbHwConfig->xyRange_param[4].NorrangeY[0]  =    102;
964     awbHwConfig->xyRange_param[4].NorrangeY[1]  =    -66;
965     awbHwConfig->xyRange_param[4].SperangeX[0]  =    74;
966     awbHwConfig->xyRange_param[4].SperangeX[1]  =    227;
967     awbHwConfig->xyRange_param[4].SperangeY[0]  =    133;
968     awbHwConfig->xyRange_param[4].SperangeY[1]  =    -86;
969     awbHwConfig->xyRange_param[5].NorrangeX[0]  =    -1742;
970     awbHwConfig->xyRange_param[5].NorrangeX[1]  =    -1432;
971     awbHwConfig->xyRange_param[5].NorrangeY[0]  =    90;
972     awbHwConfig->xyRange_param[5].NorrangeY[1]  =    -80;
973     awbHwConfig->xyRange_param[5].SperangeX[0]  =    -1742;
974     awbHwConfig->xyRange_param[5].SperangeX[1]  =    -1432;
975     awbHwConfig->xyRange_param[5].SperangeY[0]  =    121;
976     awbHwConfig->xyRange_param[5].SperangeY[1]  =    -111;
977     awbHwConfig->xyRange_param[6].NorrangeX[0]  =    -962;
978     awbHwConfig->xyRange_param[6].NorrangeX[1]  =    -509;
979     awbHwConfig->xyRange_param[6].NorrangeY[0]  =    114;
980     awbHwConfig->xyRange_param[6].NorrangeY[1]  =    -43;
981     awbHwConfig->xyRange_param[6].SperangeX[0]  =    -962;
982     awbHwConfig->xyRange_param[6].SperangeX[1]  =    -509;
983     awbHwConfig->xyRange_param[6].SperangeY[0]  =    134;
984     awbHwConfig->xyRange_param[6].SperangeY[1]  =    -45;
985     awbHwConfig->pre_wbgain_inv_r  =    256;
986     awbHwConfig->pre_wbgain_inv_g  =    256;
987     awbHwConfig->pre_wbgain_inv_b  =    256;
988 #ifdef ISP_HW_V30
989     awbHwConfig->multiwindow_en  =    0;
990     awbHwConfig->multiwindow[0][0]  =    0;
991     awbHwConfig->multiwindow[0][1]  =    0;
992     awbHwConfig->multiwindow[0][2]  =    0;
993     awbHwConfig->multiwindow[0][3]  =    0;
994     awbHwConfig->multiwindow[1][0]  =    0;
995     awbHwConfig->multiwindow[1][1]  =    0;
996     awbHwConfig->multiwindow[1][2]  =    0;
997     awbHwConfig->multiwindow[1][3]  =    0;
998     awbHwConfig->multiwindow[2][0]  =    0;
999     awbHwConfig->multiwindow[2][1]  =    0;
1000     awbHwConfig->multiwindow[2][2]  =    0;
1001     awbHwConfig->multiwindow[2][3]  =    0;
1002     awbHwConfig->multiwindow[3][0]  =    0;
1003     awbHwConfig->multiwindow[3][1]  =    0;
1004     awbHwConfig->multiwindow[3][2]  =    0;
1005     awbHwConfig->multiwindow[3][3]  =    0;
1006 #endif
1007     awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1008     awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1009     awbHwConfig->excludeWpRange[0].measureEnable   =     0;
1010     awbHwConfig->excludeWpRange[0].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1011     awbHwConfig->excludeWpRange[0].xu[0]           =     0;
1012     awbHwConfig->excludeWpRange[0].xu[1]           =     0;
1013     awbHwConfig->excludeWpRange[0].yv[0]           =     0;
1014     awbHwConfig->excludeWpRange[0].yv[1]           =     0;
1015     awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1016     awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1017     awbHwConfig->excludeWpRange[1].measureEnable   =     0;
1018     awbHwConfig->excludeWpRange[1].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1019     awbHwConfig->excludeWpRange[1].xu[0]           =     0;
1020     awbHwConfig->excludeWpRange[1].xu[1]           =     0;
1021     awbHwConfig->excludeWpRange[1].yv[0]           =     0;
1022     awbHwConfig->excludeWpRange[1].yv[1]           =     0;
1023     awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1024     awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1025     awbHwConfig->excludeWpRange[2].measureEnable   =     0;
1026     awbHwConfig->excludeWpRange[2].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1027     awbHwConfig->excludeWpRange[2].xu[0]           =     0;
1028     awbHwConfig->excludeWpRange[2].xu[1]           =     0;
1029     awbHwConfig->excludeWpRange[2].yv[0]           =     0;
1030     awbHwConfig->excludeWpRange[2].yv[1]           =     0;
1031     awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1032     awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1033     awbHwConfig->excludeWpRange[3].measureEnable   =     0;
1034     awbHwConfig->excludeWpRange[3].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1035     awbHwConfig->excludeWpRange[3].xu[0]           =     0;
1036     awbHwConfig->excludeWpRange[3].xu[1]           =     0;
1037     awbHwConfig->excludeWpRange[3].yv[0]           =     0;
1038     awbHwConfig->excludeWpRange[3].yv[1]           =     0;
1039     awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1040     awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1041     awbHwConfig->excludeWpRange[4].measureEnable   =     0;
1042     awbHwConfig->excludeWpRange[4].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1043     awbHwConfig->excludeWpRange[4].xu[0]           =     0;
1044     awbHwConfig->excludeWpRange[4].xu[1]           =     0;
1045     awbHwConfig->excludeWpRange[4].yv[0]           =     0;
1046     awbHwConfig->excludeWpRange[4].yv[1]           =     0;
1047     awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1048     awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1049     awbHwConfig->excludeWpRange[5].measureEnable   =     0;
1050     awbHwConfig->excludeWpRange[5].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1051     awbHwConfig->excludeWpRange[5].xu[0]           =     0;
1052     awbHwConfig->excludeWpRange[5].xu[1]           =     0;
1053     awbHwConfig->excludeWpRange[5].yv[0]           =     0;
1054     awbHwConfig->excludeWpRange[5].yv[1]           =     0;
1055     awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     1;
1056     awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     1;
1057     awbHwConfig->excludeWpRange[6].measureEnable   =     0;
1058     awbHwConfig->excludeWpRange[6].domain          =     (rk_aiq_awb_exc_range_domain_t)0;
1059     awbHwConfig->excludeWpRange[6].xu[0]           =     0;
1060     awbHwConfig->excludeWpRange[6].xu[1]           =     0;
1061     awbHwConfig->excludeWpRange[6].yv[0]           =     0;
1062     awbHwConfig->excludeWpRange[6].yv[1]           =     0;
1063     awbHwConfig->wpDiffwei_y[0]  =0;
1064     awbHwConfig->wpDiffwei_y[1]  =16;
1065     awbHwConfig->wpDiffwei_y[2]  =32;
1066     awbHwConfig->wpDiffwei_y[3]  =64;
1067     awbHwConfig->wpDiffwei_y[4]  =96;
1068     awbHwConfig->wpDiffwei_y[5]  =128;
1069     awbHwConfig->wpDiffwei_y[6]  =192;
1070     awbHwConfig->wpDiffwei_y[7]  =224;
1071     awbHwConfig->wpDiffwei_y[8]  =240;
1072     awbHwConfig->wpDiffwei_w[0]  =31;
1073     awbHwConfig->wpDiffwei_w[1]  =31;
1074     awbHwConfig->wpDiffwei_w[2]  =31;
1075     awbHwConfig->wpDiffwei_w[3]  =31;
1076     awbHwConfig->wpDiffwei_w[4]  =31;
1077     awbHwConfig->wpDiffwei_w[5]  =31;
1078     awbHwConfig->wpDiffwei_w[6]  =31;
1079     awbHwConfig->wpDiffwei_w[7]  =31;
1080     awbHwConfig->wpDiffwei_w[8]  =31;
1081     awbHwConfig->blkWeight[0]  =6;
1082     awbHwConfig->blkWeight[1]  =6;
1083     awbHwConfig->blkWeight[2]  =6;
1084     awbHwConfig->blkWeight[3]  =8;
1085     awbHwConfig->blkWeight[4]  =8;
1086     awbHwConfig->blkWeight[5]  =8;
1087     awbHwConfig->blkWeight[6]  =8;
1088     awbHwConfig->blkWeight[7]  =10;
1089     awbHwConfig->blkWeight[8]  =8;
1090     awbHwConfig->blkWeight[9]  =8;
1091     awbHwConfig->blkWeight[10]  =8;
1092     awbHwConfig->blkWeight[11]  =8;
1093     awbHwConfig->blkWeight[12]  =6;
1094     awbHwConfig->blkWeight[13]  =6;
1095     awbHwConfig->blkWeight[14]  =6;
1096     awbHwConfig->blkWeight[15]  =6;
1097     awbHwConfig->blkWeight[16]  =6;
1098     awbHwConfig->blkWeight[17]  =8;
1099     awbHwConfig->blkWeight[18]  =8;
1100     awbHwConfig->blkWeight[19]  =10;
1101     awbHwConfig->blkWeight[20]  =10;
1102     awbHwConfig->blkWeight[21]  =12;
1103     awbHwConfig->blkWeight[22]  =12;
1104     awbHwConfig->blkWeight[23]  =12;
1105     awbHwConfig->blkWeight[24]  =10;
1106     awbHwConfig->blkWeight[25]  =10;
1107     awbHwConfig->blkWeight[26]  =8;
1108     awbHwConfig->blkWeight[27]  =8;
1109     awbHwConfig->blkWeight[28]  =6;
1110     awbHwConfig->blkWeight[29]  =6;
1111     awbHwConfig->blkWeight[30]  =6;
1112     awbHwConfig->blkWeight[31]  =8;
1113     awbHwConfig->blkWeight[32]  =10;
1114     awbHwConfig->blkWeight[33]  =12;
1115     awbHwConfig->blkWeight[34]  =14;
1116     awbHwConfig->blkWeight[35]  =16;
1117     awbHwConfig->blkWeight[36]  =18;
1118     awbHwConfig->blkWeight[37]  =20;
1119     awbHwConfig->blkWeight[38]  =18;
1120     awbHwConfig->blkWeight[39]  =16;
1121     awbHwConfig->blkWeight[40]  =14;
1122     awbHwConfig->blkWeight[41]  =12;
1123     awbHwConfig->blkWeight[42]  =10;
1124     awbHwConfig->blkWeight[43]  =8;
1125     awbHwConfig->blkWeight[44]  =6;
1126     awbHwConfig->blkWeight[45]  =8;
1127     awbHwConfig->blkWeight[46]  =8;
1128     awbHwConfig->blkWeight[47]  =12;
1129     awbHwConfig->blkWeight[48]  =16;
1130     awbHwConfig->blkWeight[49]  =22;
1131     awbHwConfig->blkWeight[50]  =26;
1132     awbHwConfig->blkWeight[51]  =30;
1133     awbHwConfig->blkWeight[52]  =32;
1134     awbHwConfig->blkWeight[53]  =30;
1135     awbHwConfig->blkWeight[54]  =26;
1136     awbHwConfig->blkWeight[55]  =22;
1137     awbHwConfig->blkWeight[56]  =16;
1138     awbHwConfig->blkWeight[57]  =12;
1139     awbHwConfig->blkWeight[58]  =8;
1140     awbHwConfig->blkWeight[59]  =8;
1141     awbHwConfig->blkWeight[60]  =8;
1142     awbHwConfig->blkWeight[61]  =10;
1143     awbHwConfig->blkWeight[62]  =14;
1144     awbHwConfig->blkWeight[63]  =22;
1145     awbHwConfig->blkWeight[64]  =28;
1146     awbHwConfig->blkWeight[65]  =36;
1147     awbHwConfig->blkWeight[66]  =42;
1148     awbHwConfig->blkWeight[67]  =46;
1149     awbHwConfig->blkWeight[68]  =42;
1150     awbHwConfig->blkWeight[69]  =36;
1151     awbHwConfig->blkWeight[70]  =28;
1152     awbHwConfig->blkWeight[71]  =22;
1153     awbHwConfig->blkWeight[72]  =14;
1154     awbHwConfig->blkWeight[73]  =10;
1155     awbHwConfig->blkWeight[74]  =8;
1156     awbHwConfig->blkWeight[75]  =8;
1157     awbHwConfig->blkWeight[76]  =10;
1158     awbHwConfig->blkWeight[77]  =16;
1159     awbHwConfig->blkWeight[78]  =26;
1160     awbHwConfig->blkWeight[79]  =36;
1161     awbHwConfig->blkWeight[80]  =46;
1162     awbHwConfig->blkWeight[81]  =54;
1163     awbHwConfig->blkWeight[82]  =58;
1164     awbHwConfig->blkWeight[83]  =54;
1165     awbHwConfig->blkWeight[84]  =46;
1166     awbHwConfig->blkWeight[85]  =36;
1167     awbHwConfig->blkWeight[86]  =26;
1168     awbHwConfig->blkWeight[87]  =16;
1169     awbHwConfig->blkWeight[88]  =10;
1170     awbHwConfig->blkWeight[89]  =8;
1171     awbHwConfig->blkWeight[90]  =8;
1172     awbHwConfig->blkWeight[91]  =12;
1173     awbHwConfig->blkWeight[92]  =18;
1174     awbHwConfig->blkWeight[93]  =30;
1175     awbHwConfig->blkWeight[94]  =42;
1176     awbHwConfig->blkWeight[95]  =54;
1177     awbHwConfig->blkWeight[96]  =63;
1178     awbHwConfig->blkWeight[97]  =63;
1179     awbHwConfig->blkWeight[98]  =63;
1180     awbHwConfig->blkWeight[99]  =54;
1181     awbHwConfig->blkWeight[100]  =42;
1182     awbHwConfig->blkWeight[101]  =30;
1183     awbHwConfig->blkWeight[102]  =18;
1184     awbHwConfig->blkWeight[103]  =12;
1185     awbHwConfig->blkWeight[104]  =8;
1186     awbHwConfig->blkWeight[105]  =10;
1187     awbHwConfig->blkWeight[106]  =12;
1188     awbHwConfig->blkWeight[107]  =20;
1189     awbHwConfig->blkWeight[108]  =32;
1190     awbHwConfig->blkWeight[109]  =46;
1191     awbHwConfig->blkWeight[110]  =58;
1192     awbHwConfig->blkWeight[111]  =63;
1193     awbHwConfig->blkWeight[112]  =63;
1194     awbHwConfig->blkWeight[113]  =63;
1195     awbHwConfig->blkWeight[114]  =58;
1196     awbHwConfig->blkWeight[115]  =46;
1197     awbHwConfig->blkWeight[116]  =32;
1198     awbHwConfig->blkWeight[117]  =20;
1199     awbHwConfig->blkWeight[118]  =12;
1200     awbHwConfig->blkWeight[119]  =10;
1201     awbHwConfig->blkWeight[120]  =8;
1202     awbHwConfig->blkWeight[121]  =12;
1203     awbHwConfig->blkWeight[122]  =18;
1204     awbHwConfig->blkWeight[123]  =30;
1205     awbHwConfig->blkWeight[124]  =42;
1206     awbHwConfig->blkWeight[125]  =54;
1207     awbHwConfig->blkWeight[126]  =63;
1208     awbHwConfig->blkWeight[127]  =63;
1209     awbHwConfig->blkWeight[128]  =63;
1210     awbHwConfig->blkWeight[129]  =54;
1211     awbHwConfig->blkWeight[130]  =42;
1212     awbHwConfig->blkWeight[131]  =30;
1213     awbHwConfig->blkWeight[132]  =18;
1214     awbHwConfig->blkWeight[133]  =12;
1215     awbHwConfig->blkWeight[134]  =8;
1216     awbHwConfig->blkWeight[135]  =8;
1217     awbHwConfig->blkWeight[136]  =10;
1218     awbHwConfig->blkWeight[137]  =16;
1219     awbHwConfig->blkWeight[138]  =26;
1220     awbHwConfig->blkWeight[139]  =36;
1221     awbHwConfig->blkWeight[140]  =46;
1222     awbHwConfig->blkWeight[141]  =54;
1223     awbHwConfig->blkWeight[142]  =58;
1224     awbHwConfig->blkWeight[143]  =54;
1225     awbHwConfig->blkWeight[144]  =46;
1226     awbHwConfig->blkWeight[145]  =36;
1227     awbHwConfig->blkWeight[146]  =26;
1228     awbHwConfig->blkWeight[147]  =16;
1229     awbHwConfig->blkWeight[148]  =10;
1230     awbHwConfig->blkWeight[149]  =8;
1231     awbHwConfig->blkWeight[150]  =8;
1232     awbHwConfig->blkWeight[151]  =10;
1233     awbHwConfig->blkWeight[152]  =14;
1234     awbHwConfig->blkWeight[153]  =22;
1235     awbHwConfig->blkWeight[154]  =28;
1236     awbHwConfig->blkWeight[155]  =36;
1237     awbHwConfig->blkWeight[156]  =42;
1238     awbHwConfig->blkWeight[157]  =46;
1239     awbHwConfig->blkWeight[158]  =42;
1240     awbHwConfig->blkWeight[159]  =36;
1241     awbHwConfig->blkWeight[160]  =28;
1242     awbHwConfig->blkWeight[161]  =22;
1243     awbHwConfig->blkWeight[162]  =14;
1244     awbHwConfig->blkWeight[163]  =10;
1245     awbHwConfig->blkWeight[164]  =8;
1246     awbHwConfig->blkWeight[165]  =8;
1247     awbHwConfig->blkWeight[166]  =8;
1248     awbHwConfig->blkWeight[167]  =12;
1249     awbHwConfig->blkWeight[168]  =16;
1250     awbHwConfig->blkWeight[169]  =22;
1251     awbHwConfig->blkWeight[170]  =26;
1252     awbHwConfig->blkWeight[171]  =30;
1253     awbHwConfig->blkWeight[172]  =32;
1254     awbHwConfig->blkWeight[173]  =30;
1255     awbHwConfig->blkWeight[174]  =26;
1256     awbHwConfig->blkWeight[175]  =22;
1257     awbHwConfig->blkWeight[176]  =16;
1258     awbHwConfig->blkWeight[177]  =12;
1259     awbHwConfig->blkWeight[178]  =8;
1260     awbHwConfig->blkWeight[179]  =8;
1261     awbHwConfig->blkWeight[180]  =6;
1262     awbHwConfig->blkWeight[181]  =8;
1263     awbHwConfig->blkWeight[182]  =10;
1264     awbHwConfig->blkWeight[183]  =12;
1265     awbHwConfig->blkWeight[184]  =14;
1266     awbHwConfig->blkWeight[185]  =16;
1267     awbHwConfig->blkWeight[186]  =18;
1268     awbHwConfig->blkWeight[187]  =20;
1269     awbHwConfig->blkWeight[188]  =18;
1270     awbHwConfig->blkWeight[189]  =16;
1271     awbHwConfig->blkWeight[190]  =14;
1272     awbHwConfig->blkWeight[191]  =12;
1273     awbHwConfig->blkWeight[192]  =10;
1274     awbHwConfig->blkWeight[193]  =8;
1275     awbHwConfig->blkWeight[194]  =6;
1276     awbHwConfig->blkWeight[195]  =6;
1277     awbHwConfig->blkWeight[196]  =6;
1278     awbHwConfig->blkWeight[197]  =8;
1279     awbHwConfig->blkWeight[198]  =8;
1280     awbHwConfig->blkWeight[199]  =10;
1281     awbHwConfig->blkWeight[200]  =10;
1282     awbHwConfig->blkWeight[201]  =12;
1283     awbHwConfig->blkWeight[202]  =12;
1284     awbHwConfig->blkWeight[203]  =12;
1285     awbHwConfig->blkWeight[204]  =10;
1286     awbHwConfig->blkWeight[205]  =10;
1287     awbHwConfig->blkWeight[206]  =8;
1288     awbHwConfig->blkWeight[207]  =8;
1289     awbHwConfig->blkWeight[208]  =6;
1290     awbHwConfig->blkWeight[209]  =6;
1291     awbHwConfig->blkWeight[210]  =6;
1292     awbHwConfig->blkWeight[211]  =6;
1293     awbHwConfig->blkWeight[212]  =6;
1294     awbHwConfig->blkWeight[213]  =8;
1295     awbHwConfig->blkWeight[214]  =8;
1296     awbHwConfig->blkWeight[215]  =8;
1297     awbHwConfig->blkWeight[216]  =8;
1298     awbHwConfig->blkWeight[217]  =10;
1299     awbHwConfig->blkWeight[218]  =8;
1300     awbHwConfig->blkWeight[219]  =8;
1301     awbHwConfig->blkWeight[220]  =8;
1302     awbHwConfig->blkWeight[221]  =8;
1303     awbHwConfig->blkWeight[222]  =6;
1304     awbHwConfig->blkWeight[223]  =6;
1305     awbHwConfig->blkWeight[224]  =6;
1306     awbHwConfig->blk_rtdw_measure_en  =    0;
1307 
1308     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1309     return ret;
1310 }
1311 
1312 
initCustomAwbRes(rk_aiq_customeAwb_results_t * customAwb,rk_aiq_rkAwb_config_t * pConfig)1313 static void initCustomAwbRes(rk_aiq_customeAwb_results_t* customAwb, rk_aiq_rkAwb_config_t* pConfig)
1314 {
1315     customAwb->IsConverged = false;
1316     customAwb->awb_gain_algo.rgain =1.0;
1317     customAwb->awb_gain_algo.bgain =1.0;
1318     customAwb->awb_gain_algo.grgain =1.0;
1319     customAwb->awb_gain_algo.gbgain =1.0;
1320     customAwb->awb_smooth_factor = 0.5;
1321     rk_aiq_customAwb_hw_cfg_t  *awbHwConfig = &customAwb->awbHwConfig;
1322     const rk_aiq_isp_awb_meas_cfg_v3x_t  *awbHwConfigFull = &pConfig->awbHwConfig;
1323     awbHwConfig->awbEnable   = awbHwConfigFull->awbEnable;
1324     awbHwConfig->lscBypEnable   = awbHwConfigFull->lscBypEnable;
1325     awbHwConfig->uvDetectionEnable   = awbHwConfigFull->uvDetectionEnable[0];
1326     awbHwConfig->xyDetectionEnable   = awbHwConfigFull->xyDetectionEnable[0];
1327     awbHwConfig->threeDyuvEnable   = awbHwConfigFull->threeDyuvEnable[0];
1328     memcpy(awbHwConfig->threeDyuvIllu,awbHwConfigFull->threeDyuvIllu, sizeof(awbHwConfigFull->threeDyuvIllu));
1329     awbHwConfig->wpDiffWeiEnable   = awbHwConfigFull->wpDiffWeiEnable[0];
1330     awbHwConfig->blkWeightEnable   = awbHwConfigFull->blkWeightEnable[0];
1331     awbHwConfig->blkMeasureMode   = awbHwConfigFull->blkMeasureMode;
1332 #ifdef ISP_HW_V30
1333     awbHwConfig->multiwindow_en   = awbHwConfigFull->multiwindow_en;
1334     memcpy(awbHwConfig->multiwindow, awbHwConfigFull->multiwindow,sizeof(awbHwConfigFull->multiwindow));
1335 #endif
1336     awbHwConfig->frameChoose   = awbHwConfigFull->frameChoose;
1337     memcpy(awbHwConfig->windowSet,awbHwConfigFull->windowSet,sizeof(awbHwConfigFull->windowSet));
1338     awbHwConfig->lightNum   = awbHwConfigFull->lightNum;
1339     awbHwConfig->maxR   = awbHwConfigFull->maxR;
1340     awbHwConfig->minR   = awbHwConfigFull->minR;
1341     awbHwConfig->maxG   = awbHwConfigFull->maxG;
1342     awbHwConfig->minG   = awbHwConfigFull->minG;
1343     awbHwConfig->maxB   = awbHwConfigFull->maxB;
1344     awbHwConfig->minB   = awbHwConfigFull->minB;
1345     awbHwConfig->maxY   = awbHwConfigFull->maxY;
1346     awbHwConfig->minY   = awbHwConfigFull->minY;
1347     memcpy(awbHwConfig->icrgb2RYuv_matrix,awbHwConfigFull->icrgb2RYuv_matrix,sizeof(awbHwConfigFull->icrgb2RYuv_matrix));
1348     memcpy(awbHwConfig->ic3Dyuv2Range_param,awbHwConfigFull->ic3Dyuv2Range_param,sizeof(RK_AIQ_AWB_YUV_LS_PARA_NUM));
1349     memcpy(awbHwConfig->uvRange_param,awbHwConfigFull->uvRange_param,sizeof(awbHwConfigFull->uvRange_param));
1350     awbHwConfig->rgb2xy_param   = awbHwConfigFull->rgb2xy_param;
1351     memcpy(awbHwConfig->xyRange_param,awbHwConfigFull->xyRange_param,sizeof(awbHwConfigFull->xyRange_param));
1352     memcpy(awbHwConfig->excludeWpRange,awbHwConfigFull->excludeWpRange,sizeof(awbHwConfig->excludeWpRange));
1353     memcpy(awbHwConfig->wpDiffwei_y, awbHwConfigFull->wpDiffwei_y,sizeof(awbHwConfigFull->wpDiffwei_y));
1354     memcpy(awbHwConfig->wpDiffwei_w, awbHwConfigFull->wpDiffwei_w,sizeof(awbHwConfigFull->wpDiffwei_w));
1355     awbHwConfig->xyRangeTypeForWpHist   = awbHwConfigFull->xyRangeTypeForWpHist;
1356     memcpy(awbHwConfig->blkWeight, awbHwConfigFull->blkWeight,sizeof(awbHwConfigFull->blkWeight));
1357     awbHwConfig->xyRangeTypeForBlkStatistics   = awbHwConfigFull->xyRangeTypeForBlkStatistics;
1358     awbHwConfig->illIdxForBlkStatistics   = awbHwConfigFull->illIdxForBlkStatistics;
1359 
1360 }
1361 
awb_window_init(void * ctx,rk_aiq_rkAwb_config_t * rkCfg)1362 int32_t  awb_window_init(void* ctx,  rk_aiq_rkAwb_config_t *rkCfg)
1363 {
1364     rkCfg->awbHwConfig.windowSet[0]=0;
1365     rkCfg->awbHwConfig.windowSet[1]=0;
1366     rkCfg->awbHwConfig.windowSet[2]=rkCfg->RawWidth;
1367     rkCfg->awbHwConfig.windowSet[3]=rkCfg->RawHeight;
1368     return 0;
1369 }
frame_choose_init(void * ctx,rk_aiq_rkAwb_config_t * rkCfg)1370 int32_t  frame_choose_init(void* ctx, rk_aiq_rkAwb_config_t *rkCfg)
1371 {
1372 
1373     if((rk_aiq_working_mode_t)rkCfg->Working_mode == RK_AIQ_WORKING_MODE_NORMAL) {
1374         rkCfg->awbHwConfig.frameChoose = 0;
1375     } else{
1376         rkCfg->awbHwConfig.frameChoose = 1;//Middle frame
1377     }
1378 
1379     return 0;
1380 }
1381 
awb_window_check(const rk_aiq_rkAwb_config_t * rkCfg,unsigned short * windowSet)1382 int32_t  awb_window_check(const rk_aiq_rkAwb_config_t *rkCfg, unsigned short *windowSet)
1383 {
1384 
1385     if(windowSet[0] > rkCfg->RawWidth ||
1386             windowSet[0] + windowSet[2] > rkCfg->RawWidth ||
1387             windowSet[1] > rkCfg->RawHeight ||
1388             windowSet[1] + windowSet[3] > rkCfg->RawHeight ) {
1389         LOGW_AWB("windowSet[%d,%d,%d,%d]is invaild!!! Reset to full window\n", windowSet[0],
1390                  windowSet[1], windowSet[2], windowSet[3]);
1391         windowSet[0]=0;
1392         windowSet[1]=0;
1393         windowSet[2]=rkCfg->RawWidth;
1394         windowSet[3]=rkCfg->RawHeight;
1395     }
1396 
1397     return 0;
1398 }
1399 
1400 
1401 
1402 static
_rkAwbStats2CustomAwbStats(rk_aiq_customAwb_stats_t * customAwb,rk_aiq_awb_stat_res_v201_t * rkAwb)1403 void _rkAwbStats2CustomAwbStats(rk_aiq_customAwb_stats_t* customAwb,
1404                               rk_aiq_awb_stat_res_v201_t* rkAwb)
1405 {
1406     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1407     memcpy(customAwb->light,rkAwb->light,sizeof(customAwb->light));
1408 #ifdef ISP_HW_V30
1409     memcpy(customAwb->WpNo2,rkAwb->WpNo2,sizeof(customAwb->WpNo2));
1410 #endif
1411     memcpy(customAwb->blockResult,rkAwb->blockResult,sizeof(customAwb->blockResult));
1412 #ifdef ISP_HW_V30
1413     memcpy(customAwb->multiwindowLightResult,rkAwb->multiwindowLightResult,sizeof(customAwb->multiwindowLightResult));
1414     memcpy(customAwb->excWpRangeResult,rkAwb->excWpRangeResult,sizeof(customAwb->excWpRangeResult));
1415 #endif
1416     memcpy(customAwb->WpNoHist,rkAwb->WpNoHist,sizeof(customAwb->WpNoHist));
1417     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1418 }
1419 
_customAwbHw2rkAwbHwCfg(const rk_aiq_customeAwb_results_t * customAwbProcRes,rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfigFull)1420 static void _customAwbHw2rkAwbHwCfg( const rk_aiq_customeAwb_results_t* customAwbProcRes, rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull)
1421 {
1422     const rk_aiq_customAwb_hw_cfg_t  *awbHwConfig = &customAwbProcRes->awbHwConfig;
1423     awbHwConfigFull->awbEnable   = awbHwConfig->awbEnable;
1424     awbHwConfigFull->lscBypEnable   = awbHwConfig->lscBypEnable;
1425     for(int i=0;i<RK_AIQ_AWB_XY_TYPE_MAX_V201;i++){
1426         awbHwConfigFull->uvDetectionEnable[i]   = awbHwConfig->uvDetectionEnable;
1427         awbHwConfigFull->xyDetectionEnable[i]   = awbHwConfig->xyDetectionEnable;
1428         awbHwConfigFull->threeDyuvEnable[i]   = awbHwConfig->threeDyuvEnable;
1429         awbHwConfigFull->wpDiffWeiEnable[i]   = awbHwConfig->wpDiffWeiEnable;
1430         awbHwConfigFull->blkWeightEnable[i]   = awbHwConfig->blkWeightEnable;
1431     }
1432     memcpy(awbHwConfigFull->threeDyuvIllu,awbHwConfig->threeDyuvIllu, sizeof(awbHwConfig->threeDyuvIllu));
1433     awbHwConfigFull->blkMeasureMode   = awbHwConfig->blkMeasureMode;
1434 #ifdef ISP_HW_V30
1435     awbHwConfigFull->multiwindow_en   = awbHwConfig->multiwindow_en;
1436     memcpy(awbHwConfigFull->multiwindow, awbHwConfig->multiwindow,sizeof(awbHwConfig->multiwindow));
1437 #endif
1438     awbHwConfigFull->frameChoose   = awbHwConfig->frameChoose;
1439     memcpy(awbHwConfigFull->windowSet,awbHwConfig->windowSet,sizeof(awbHwConfig->windowSet));
1440     awbHwConfigFull->lightNum   = awbHwConfig->lightNum;
1441     awbHwConfigFull->maxR   = awbHwConfig->maxR;
1442     awbHwConfigFull->minR   = awbHwConfig->minR;
1443     awbHwConfigFull->maxG   = awbHwConfig->maxG;
1444     awbHwConfigFull->minG   = awbHwConfig->minG;
1445     awbHwConfigFull->maxB   = awbHwConfig->maxB;
1446     awbHwConfigFull->minB   = awbHwConfig->minB;
1447     awbHwConfigFull->maxY   = awbHwConfig->maxY;
1448     awbHwConfigFull->minY   = awbHwConfig->minY;
1449     memcpy(awbHwConfigFull->icrgb2RYuv_matrix,awbHwConfig->icrgb2RYuv_matrix,sizeof(awbHwConfig->icrgb2RYuv_matrix));
1450     memcpy(awbHwConfigFull->ic3Dyuv2Range_param,awbHwConfig->ic3Dyuv2Range_param,sizeof(RK_AIQ_AWB_YUV_LS_PARA_NUM));
1451     memcpy(awbHwConfigFull->uvRange_param,awbHwConfig->uvRange_param,sizeof(awbHwConfig->uvRange_param));
1452     awbHwConfigFull->rgb2xy_param   = awbHwConfig->rgb2xy_param;
1453     memcpy(awbHwConfigFull->xyRange_param,awbHwConfig->xyRange_param,sizeof(awbHwConfig->xyRange_param));
1454     memcpy(awbHwConfigFull->excludeWpRange,awbHwConfig->excludeWpRange,sizeof(awbHwConfigFull->excludeWpRange));
1455     memcpy(awbHwConfigFull->wpDiffwei_y, awbHwConfig->wpDiffwei_y,sizeof(awbHwConfig->wpDiffwei_y));
1456     memcpy(awbHwConfigFull->wpDiffwei_w, awbHwConfig->wpDiffwei_w,sizeof(awbHwConfig->wpDiffwei_w));
1457     awbHwConfigFull->xyRangeTypeForWpHist   = awbHwConfig->xyRangeTypeForWpHist;
1458     memcpy(awbHwConfigFull->blkWeight, awbHwConfig->blkWeight,sizeof(awbHwConfig->blkWeight));
1459     awbHwConfigFull->xyRangeTypeForBlkStatistics   = awbHwConfig->xyRangeTypeForBlkStatistics;
1460     awbHwConfigFull->illIdxForBlkStatistics   = awbHwConfig->illIdxForBlkStatistics;
1461 
1462 }
1463 
1464 
1465 static
_customAwbRes2rkAwbRes(RkAiqAlgoProcResAwb * rkAwbProcRes,rk_aiq_customeAwb_results_t * customAwbProcRes,const rk_aiq_isp_awb_meas_cfg_v3x_t & awbHwConfig)1466 void _customAwbRes2rkAwbRes( RkAiqAlgoProcResAwb* rkAwbProcRes,
1467                           rk_aiq_customeAwb_results_t* customAwbProcRes, const rk_aiq_isp_awb_meas_cfg_v3x_t &awbHwConfig)
1468 {
1469 
1470     rkAwbProcRes->awbConverged = customAwbProcRes->IsConverged;
1471     *rkAwbProcRes->awb_gain_algo= customAwbProcRes->awb_gain_algo;
1472     rkAwbProcRes->awb_smooth_factor = customAwbProcRes->awb_smooth_factor;
1473     *rkAwbProcRes->awb_hw1_para=  awbHwConfig;
1474 }
1475 
_rkAwbStats2CustomGroupAwbStats(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result,int camera_num,rk_aiq_customAwb_stats_t * customStats)1476 static XCamReturn _rkAwbStats2CustomGroupAwbStats( rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result , int camera_num,rk_aiq_customAwb_stats_t *customStats)
1477 {
1478     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1479     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1480     XCamVideoBuffer* awbStatsBuf = nullptr;
1481     RkAiqAwbStats* xAwbStats = nullptr;
1482     rk_aiq_customAwb_stats_t *awbStat = customStats;
1483     rk_aiq_customAwb_stats_t *awbStat2 = customStats;
1484     for(int i=0;i<camera_num;i++){
1485         awbStatsBuf = rk_aiq_singlecam_3a_result[i]->awb._awbStats;
1486         if (awbStatsBuf) {
1487            xAwbStats = (RkAiqAwbStats*)awbStatsBuf->map(awbStatsBuf);
1488            if (!xAwbStats) {
1489                LOGE_AWBGROUP("awb stats is null for %dth camera",i);
1490                return(XCAM_RETURN_ERROR_FAILED);
1491            }
1492         } else {
1493            LOGE_AWBGROUP("awb stats is null for %dth camera",i);
1494            return(XCAM_RETURN_ERROR_FAILED);
1495         }
1496         if(i>0){
1497             if(awbStat->next ==nullptr){
1498                 awbStat2 = (rk_aiq_customAwb_stats_t*)malloc(sizeof(rk_aiq_customAwb_stats_t));
1499                 memset(awbStat2,0,sizeof(rk_aiq_customAwb_stats_t));
1500                 awbStat->next = awbStat2;
1501                // LOGE_AWB_SUBM(0xff, "%s  %dth camera:,malloc awbStat:%p", __func__,i,awbStat2);
1502             }else{
1503                 awbStat2 = awbStat->next;
1504             }
1505             awbStat = awbStat->next;
1506 
1507         }
1508         _rkAwbStats2CustomAwbStats(awbStat2, &xAwbStats->awb_stats_v3x);
1509         //WriteMeasureResult(xAwbStats->awb_stats_v3x,XCORE_LOG_LEVEL_LOW1+1,i);
1510     }
1511     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1512     return(ret);
1513 
1514 }
1515 
customAwbStatsRelease(rk_aiq_customAwb_stats_t * customStats)1516 static XCamReturn customAwbStatsRelease( rk_aiq_customAwb_stats_t *customStats)
1517 {
1518     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1519     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1520     rk_aiq_customAwb_stats_t *awbStat = customStats->next;
1521     rk_aiq_customAwb_stats_t *awbStat2;
1522     while(awbStat!=nullptr){
1523         awbStat2 = awbStat->next;
1524         //LOGE_AWB_SUBM(0xff, "%s free awbStat %p ", __func__,awbStat);
1525         free(awbStat);
1526         awbStat = awbStat2;
1527     }
1528     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1529     return(ret);
1530 
1531 }
1532 
_customGruopAwbHw2rkAwbHwCfg(const rk_aiq_customeAwb_single_results_t * customAwbSingelRes,rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfigFull,const rk_aiq_wb_gain_t ** awb_gain_algo)1533 static void _customGruopAwbHw2rkAwbHwCfg( const rk_aiq_customeAwb_single_results_t* customAwbSingelRes,
1534     rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull,  const rk_aiq_wb_gain_t** awb_gain_algo)
1535 {
1536     const rk_aiq_customAwb_single_hw_cfg_t  *awbHwConfig = &customAwbSingelRes->awbHwConfig;
1537     for(int i=0;i<RK_AIQ_AWB_XY_TYPE_MAX_V201;i++){
1538         awbHwConfigFull->blkWeightEnable[i]   = awbHwConfig->blkWeightEnable;
1539     }
1540 #ifdef ISP_HW_V30
1541     awbHwConfigFull->multiwindow_en   = awbHwConfig->multiwindow_en;
1542     memcpy(awbHwConfigFull->multiwindow, awbHwConfig->multiwindow,sizeof(awbHwConfig->multiwindow));
1543 #endif
1544     memcpy(awbHwConfigFull->windowSet,awbHwConfig->windowSet,sizeof(awbHwConfig->windowSet));
1545     memcpy(awbHwConfigFull->blkWeight, awbHwConfig->blkWeight,sizeof(awbHwConfig->blkWeight));
1546     *awb_gain_algo = &customAwbSingelRes->awb_gain_algo;
1547 }
_customGruopAwbRes2rkAwbRes(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result,int camera_num,rk_aiq_rkAwb_config_t * rkCfg,rk_aiq_customeAwb_results_t * customAwbProcRes)1548 static XCamReturn _customGruopAwbRes2rkAwbRes(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result , int camera_num,
1549                           rk_aiq_rkAwb_config_t *rkCfg, rk_aiq_customeAwb_results_t* customAwbProcRes)
1550 {
1551     LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1552     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1553     rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull = &rkCfg->awbHwConfig;
1554     const rk_aiq_wb_gain_t* _awbGainParams = &customAwbProcRes->awb_gain_algo;//update by first camera
1555     //awb_window_check(rkCfg,customAwbProcRes->awbHwConfig.windowSet);
1556     _customAwbHw2rkAwbHwCfg(customAwbProcRes,awbHwConfigFull);//update by first camera
1557     awb_window_check(rkCfg,awbHwConfigFull->windowSet);
1558     XCamVideoBuffer* xCamAwbProcRes;
1559     RkAiqAlgoProcResAwb* procResPara;
1560     rk_aiq_customeAwb_single_results_t* customAwbProcRes2 = customAwbProcRes->next;
1561     for(int i=0; i<camera_num; i++){
1562         xCamAwbProcRes =rk_aiq_singlecam_3a_result[i]->awb._awbProcRes;
1563         procResPara = nullptr;
1564         if (xCamAwbProcRes) {
1565             procResPara = (RkAiqAlgoProcResAwb*)xCamAwbProcRes->map(xCamAwbProcRes);
1566             if(procResPara==nullptr){
1567                 LOGE_AWBGROUP("_awbProcRes is null for %dth camera",i);
1568                 return(XCAM_RETURN_ERROR_FAILED);
1569             }
1570         }else {
1571            LOGE_AWBGROUP("_awbProcRes is null for %dth camera",i);
1572            return(XCAM_RETURN_ERROR_FAILED);
1573         }
1574         if(i>0 && customAwbProcRes2 != nullptr){
1575             _customGruopAwbHw2rkAwbHwCfg(customAwbProcRes2,awbHwConfigFull,&_awbGainParams);//update by each camera
1576             customAwbProcRes2 = customAwbProcRes2->next;
1577             awb_window_check(rkCfg,awbHwConfigFull->windowSet);
1578         }
1579         memcpy(rk_aiq_singlecam_3a_result[i]->awb._awbCfgV3x,awbHwConfigFull,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
1580         memcpy(&procResPara->awb_hw1_para,awbHwConfigFull,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
1581         memcpy(rk_aiq_singlecam_3a_result[i]->awb._awbGainParams,_awbGainParams,sizeof(rk_aiq_wb_gain_t));
1582         memcpy(&procResPara->awb_gain_algo, _awbGainParams, sizeof(rk_aiq_wb_gain_t));
1583         procResPara->awb_smooth_factor = customAwbProcRes->awb_smooth_factor;
1584         procResPara->awbConverged = customAwbProcRes->IsConverged;
1585         procResPara->awb_cfg_update = true;
1586         procResPara->awb_gain_update= true;
1587         //WriteDataForThirdParty(*rk_aiq_singlecam_3a_result[i]->awb._awbCfgV3x,XCORE_LOG_LEVEL_LOW1+1,i);
1588     }
1589     LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1590     return(ret);
1591 
1592 }
1593 
WriteMeasureResult(rk_aiq_awb_stat_res_v201_t & awb_measure_result,int log_level,int camera_id=0)1594 static void WriteMeasureResult(rk_aiq_awb_stat_res_v201_t &awb_measure_result, int log_level ,int camera_id = 0)
1595 {
1596 
1597     if(log_level <XCORE_LOG_LEVEL_LOW1) {
1598         return;
1599     }
1600     FILE * fid;
1601     char fName[100];
1602     sprintf(fName, "./tmp/MeasureResultByCustom_camera%d.txt",camera_id);
1603     fid = fopen(fName, "w");
1604     if (fid == NULL) {
1605         return;
1606     }
1607     fprintf(fid, "WpNoHist:       ");
1608     for (int i = 0; i < RK_AIQ_AWB_WP_HIST_BIN_NUM; i++) {
1609         fprintf(fid, "%6d,", awb_measure_result.WpNoHist[i]);
1610     }
1611     fprintf(fid, "\n");
1612     {
1613         for (int i = 0; i < RK_AIQ_AWB_MAX_WHITEREGIONS_NUM; i++)
1614         {
1615             fprintf(fid, " illuminant %dth:\n", i);
1616 #ifdef AWB_WPNUM2_EN
1617             fprintf(fid, "WPNUM2[%d]=    %7d\n", i, awb_measure_result.WpNo2[i]);
1618 #endif
1619             fprintf(fid, "SUM_RGain_NOR[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[0].RgainValue);
1620             fprintf(fid, "SUM_BGain_NOR[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[0].BgainValue);
1621             fprintf(fid, "WPNUM_NOR[%d]=     %7lld\n", i, awb_measure_result.light[i].xYType[0].WpNo);
1622             fprintf(fid, "SUM_RGain_BIG[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[1].RgainValue);
1623             fprintf(fid, "SUM_BGain_BIG[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[1].BgainValue);
1624             fprintf(fid, "WPNUM_BIG[%d]=     %7lld\n", i, awb_measure_result.light[i].xYType[1].WpNo);
1625 
1626 
1627         }
1628         fprintf(fid, "blockresult[15][15]:\n");
1629         for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_VERHOR * RK_AIQ_AWB_GRID_NUM_VERHOR; i++)
1630         {
1631 
1632             fprintf(fid, "blk[%2d,%2d]:     blk_sum_r=%7lld,        blk_sum_g=%7lld,        blk_sum_b=%7lld,   blk_sum_num=%7lld\n"
1633                     , i / 15, i % 15, awb_measure_result.blockResult[i].Rvalue,
1634                     awb_measure_result.blockResult[i].Gvalue, awb_measure_result.blockResult[i].Bvalue,
1635                     awb_measure_result.blockResult[i].WpNo);
1636 
1637         }
1638         fprintf(fid, "\n");
1639     }
1640     //new measurement
1641     {
1642 #ifdef AWB_MULTI_WINDOW_EN
1643         fprintf(fid, " multiwindowLightResult:\n");
1644         for (int i = 0; i < 4; i++)
1645         {
1646             fprintf(fid, " illuminant %dth:\n", i);
1647             fprintf(fid, "SUM_RGain_NOR[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[0].RgainValue);
1648             fprintf(fid, "SUM_BGain_NOR[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[0].BgainValue);
1649             fprintf(fid, "WPNUM_NOR[%d]=    %7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[0].WpNo);
1650             fprintf(fid, "SUM_RGain_BIG[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[1].RgainValue);
1651             fprintf(fid, "SUM_BGain_BIG[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[1].BgainValue);
1652             fprintf(fid, "WPNUM_BIG[%d]=    %7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[1].WpNo);
1653 
1654         }
1655 #endif
1656 #ifdef AWB_EXCWP_RANGE_STAT_EN
1657         fprintf(fid, " excWpRangeResult:\n");
1658         for (int i = 0; i < RK_AIQ_AWB_STAT_WP_RANGE_NUM_V201; i++)
1659         {
1660             fprintf(fid, " %d:\n", i);
1661             fprintf(fid, "    SUM_RGain[%d]=%7lld\n", i, awb_measure_result.excWpRangeResult[i].RgainValue);
1662             fprintf(fid, "    SUM_RGain[%d]=%7lld\n", i, awb_measure_result.excWpRangeResult[i].BgainValue);
1663             fprintf(fid, "   WPNUM_NOR[%d]=%7lld\n", i, awb_measure_result.excWpRangeResult[i].WpNo);
1664         }
1665 #endif
1666     }
1667     fclose(fid);
1668 }
1669 
1670 
WriteDataForThirdParty(const rk_aiq_isp_awb_meas_cfg_v3x_t & wpDetectPara,int log_level,int camera_id=0)1671 static void WriteDataForThirdParty(const rk_aiq_isp_awb_meas_cfg_v3x_t &wpDetectPara,int log_level ,int camera_id=0)
1672 {
1673     if(log_level < XCORE_LOG_LEVEL_LOW1){
1674         return;
1675     }
1676     char fName[100];
1677     sprintf(fName, "./tmp/awbHwConfigByCustom_%d.txt",camera_id);
1678     FILE* fp = fopen(fName, "wb");
1679     if(fp != NULL)
1680     {
1681 
1682         fprintf(fp, "awbHwConfig->awbEnable             =    %d;//rawawb enable\n", wpDetectPara.awbEnable);
1683         fprintf(fp, "awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    %d;//xy detect  enable for all light\n", wpDetectPara.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1684         fprintf(fp, "awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    %d;//uv detect  enable for all  light\n", wpDetectPara.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1685         fprintf(fp, "awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]          =    %d;//uv detect  enable for all  light\n", wpDetectPara.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1686         fprintf(fp, "awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    %d;//xy detect  enable for all light\n", wpDetectPara.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1687         fprintf(fp, "awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    %d;//uv detect  enable for all  light\n", wpDetectPara.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1688         fprintf(fp, "awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]          =    %d;//uv detect  enable for all  light\n", wpDetectPara.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1689         fprintf(fp, "awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]    =    %d;\n", wpDetectPara.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1690         fprintf(fp, "awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]    =    %d;\n", wpDetectPara.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1691         fprintf(fp, "awbHwConfig->lscBypEnable    =    %d;\n", wpDetectPara.lscBypEnable);
1692 
1693         fprintf(fp, "awbHwConfig->blkStatisticsEnable    =    %d;\n", wpDetectPara.blkStatisticsEnable);
1694         fprintf(fp, "awbHwConfig->blkMeasureMode     =    (rk_aiq_awb_blk_stat_mode_v201_t)%d;\n", wpDetectPara.blkMeasureMode);
1695         fprintf(fp, "awbHwConfig->xyRangeTypeForBlkStatistics     =    (rk_aiq_awb_xy_type_v201_t)%d;\n", wpDetectPara.xyRangeTypeForBlkStatistics);
1696         fprintf(fp, "awbHwConfig->illIdxForBlkStatistics     =    (rk_aiq_awb_blk_stat_realwp_ill_e)%d;\n", wpDetectPara.illIdxForBlkStatistics);
1697         fprintf(fp, "awbHwConfig->blkStatisticsWithLumaWeightEn  =    %d;\n", wpDetectPara.blkStatisticsWithLumaWeightEn);
1698 
1699         fprintf(fp, "awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =    %d;\n", wpDetectPara.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1700         fprintf(fp, "awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =    %d;\n", wpDetectPara.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1701         fprintf(fp, "awbHwConfig->xyRangeTypeForWpHist    =    (rk_aiq_awb_xy_type_v201_t)%d;\n", wpDetectPara.xyRangeTypeForWpHist);
1702 
1703         fprintf(fp, "awbHwConfig->threeDyuvIllu[0]       =    %d;\n", wpDetectPara.threeDyuvIllu[0]);
1704         fprintf(fp, "awbHwConfig->threeDyuvIllu[1]       =    %d;\n", wpDetectPara.threeDyuvIllu[1]);
1705         fprintf(fp, "awbHwConfig->threeDyuvIllu[2]       =    %d;\n", wpDetectPara.threeDyuvIllu[2]);
1706         fprintf(fp, "awbHwConfig->threeDyuvIllu[3]       =    %d;\n", wpDetectPara.threeDyuvIllu[3]);
1707 
1708 
1709 
1710         fprintf(fp, "awbHwConfig->lightNum      =    %d; //measurment light num ,0~7\n", wpDetectPara.lightNum                                );
1711         fprintf(fp, "awbHwConfig->windowSet[0]         =    %d;//crop h_offs mod 2 == 0\n", wpDetectPara.windowSet[0]                                );
1712         fprintf(fp, "awbHwConfig->windowSet[1]          =    %d;//crop v_offs mod 2 == 0\n", wpDetectPara.windowSet[1]                                );
1713         fprintf(fp, "awbHwConfig->windowSet[2]         =    %d;//crop h_size,8x8:mod 8==0,4x4:mod 4==0\n", wpDetectPara.windowSet[2]    );
1714         fprintf(fp, "awbHwConfig->windowSet[3]         =    %d;//crop v_size,8x8:mod 8==0,4x4:mod 4==0\n", wpDetectPara.windowSet[3]    );
1715 
1716         /*if (wpDetectPara.windowSet[2]>2560||wpDetectPara.windowSet[3]>2560)
1717         Ds_rate = 8;*/
1718         int tmp;
1719         switch (wpDetectPara.dsMode)
1720         {
1721         case RK_AIQ_AWB_DS_4X4:
1722             tmp = 0;
1723             break;
1724         default:
1725             tmp = 1;
1726         }
1727         fprintf(fp, "awbHwConfig->dsMode      =    (rk_aiq_down_scale_mode_t)%d;//downscale,1:8x8,0:4x4\n",    tmp                            );
1728         fprintf(fp, "awbHwConfig->maxR          =    %d;\n",    wpDetectPara.maxR        );
1729         fprintf(fp, "awbHwConfig->maxG          =    %d;\n",    wpDetectPara.maxG        );
1730         fprintf(fp, "awbHwConfig->maxB          =    %d;\n",    wpDetectPara.maxB        );
1731         fprintf(fp, "awbHwConfig->maxY          =    %d;\n",    wpDetectPara.maxY        );
1732         fprintf(fp, "awbHwConfig->minR          =    %d;\n",    wpDetectPara.minR        );
1733         fprintf(fp, "awbHwConfig->minG          =    %d;\n",    wpDetectPara.minG        );
1734         fprintf(fp, "awbHwConfig->minB          =    %d;\n",    wpDetectPara.minB        );
1735         fprintf(fp, "awbHwConfig->minY          =    %d;\n",    wpDetectPara.minY        );
1736         fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[0]    =    %d;//uv detect white point region vertex and inverse slope\n", wpDetectPara.uvRange_param[0].pu_region[0]);
1737         fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[0].pv_region[0]);
1738         fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[0].pu_region[1]);
1739         fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[0].pv_region[1]);
1740         fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[0].pu_region[2]);
1741         fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[0].pv_region[2]);
1742         fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[0].pu_region[3]);
1743         fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[0].pv_region[3]);
1744         fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[0].slope_inv[0]);
1745         fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[0].slope_inv[1]);
1746         fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[0].slope_inv[2]);
1747         fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[0].slope_inv[3]);
1748         fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[0]    =    %d;\n", wpDetectPara.uvRange_param[1].pu_region[0]);
1749         fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[1].pv_region[0]);
1750         fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[1].pu_region[1]);
1751         fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[1].pv_region[1]);
1752         fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[1].pu_region[2]);
1753         fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[1].pv_region[2]);
1754         fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[1].pu_region[3]);
1755         fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[1].pv_region[3]);
1756         fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[1].slope_inv[0]);
1757         fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[1].slope_inv[1]);
1758         fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[1].slope_inv[2]);
1759         fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[1].slope_inv[3]);
1760         fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[0]    =    %d;\n", wpDetectPara.uvRange_param[2].pu_region[0]);
1761         fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[2].pv_region[0]);
1762         fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[2].pu_region[1]);
1763         fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[2].pv_region[1]);
1764         fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[2].pu_region[2]);
1765         fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[2].pv_region[2]);
1766         fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[2].pu_region[3]);
1767         fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[2].pv_region[3]);
1768         fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[2].slope_inv[0]);
1769         fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[2].slope_inv[1]);
1770         fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[2].slope_inv[2]);
1771         fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[2].slope_inv[3]);
1772         fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[0]    =    %d;\n", wpDetectPara.uvRange_param[3].pu_region[0]);
1773         fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[3].pv_region[0]);
1774         fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[3].pu_region[1]);
1775         fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[3].pv_region[1]);
1776         fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[3].pu_region[2]);
1777         fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[3].pv_region[2]);
1778         fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[3].pu_region[3]);
1779         fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[3].pv_region[3]);
1780         fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[3].slope_inv[0]);
1781         fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[3].slope_inv[1]);
1782         fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[3].slope_inv[2]);
1783         fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[3].slope_inv[3]);
1784         fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[0]    =    %d;\n", wpDetectPara.uvRange_param[4].pu_region[0]);
1785         fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[4].pv_region[0]);
1786         fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[4].pu_region[1]);
1787         fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[4].pv_region[1]);
1788         fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[4].pu_region[2]);
1789         fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[4].pv_region[2]);
1790         fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[4].pu_region[3]);
1791         fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[4].pv_region[3]);
1792         fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[4].slope_inv[0]);
1793         fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[4].slope_inv[1]);
1794         fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[4].slope_inv[2]);
1795         fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[4].slope_inv[3]);
1796         fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[0]    =    %d;\n", wpDetectPara.uvRange_param[5].pu_region[0]);
1797         fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[5].pv_region[0]);
1798         fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[5].pu_region[1]);
1799         fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[5].pv_region[1]);
1800         fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[5].pu_region[2]);
1801         fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[5].pv_region[2]);
1802         fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[5].pu_region[3]);
1803         fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[5].pv_region[3]);
1804         fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[5].slope_inv[0]);
1805         fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[5].slope_inv[1]);
1806         fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[5].slope_inv[2]);
1807         fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[5].slope_inv[3]);
1808         fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[0]    =    %d;\n", wpDetectPara.uvRange_param[6].pu_region[0]);
1809         fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[0]    =    %d;\n", wpDetectPara.uvRange_param[6].pv_region[0]);
1810         fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[1]    =    %d;\n", wpDetectPara.uvRange_param[6].pu_region[1]);
1811         fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[1]    =    %d;\n", wpDetectPara.uvRange_param[6].pv_region[1]);
1812         fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[2]    =    %d;\n", wpDetectPara.uvRange_param[6].pu_region[2]);
1813         fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[2]    =    %d;\n", wpDetectPara.uvRange_param[6].pv_region[2]);
1814         fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[3]    =    %d;\n", wpDetectPara.uvRange_param[6].pu_region[3]);
1815         fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[3]    =    %d;\n", wpDetectPara.uvRange_param[6].pv_region[3]);
1816         fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[0]      =    %d;\n", wpDetectPara.uvRange_param[6].slope_inv[0]);
1817         fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[1]      =    %d;\n", wpDetectPara.uvRange_param[6].slope_inv[1]);
1818         fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[2]      =    %d;\n", wpDetectPara.uvRange_param[6].slope_inv[2]);
1819         fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[3]      =    %d;\n", wpDetectPara.uvRange_param[6].slope_inv[3]);
1820 
1821         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[0]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[0]);
1822         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[1]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[1]);
1823         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[2]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[2]);
1824         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[3]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[3]);
1825         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[4]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[4]);
1826         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[5]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[5]);
1827         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[6]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[6]);
1828         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[7]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[7]);
1829         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[8]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[8]);
1830         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[9]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[9]);
1831         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[10]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[10]);
1832         fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[11]  =        %d;\n", wpDetectPara.icrgb2RYuv_matrix[11]);
1833 
1834         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[0]);
1835         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[1]);
1836         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[2]);
1837         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[3]);
1838         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[4]);
1839         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[5]);
1840         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[0]);
1841         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[1]);
1842         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[2]);
1843         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[3]);
1844         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[4]);
1845         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[5]);
1846         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[0]);
1847         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[1]);
1848         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[2]);
1849         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[0]);
1850         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[1]);
1851         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[2]);
1852         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].disP1P2  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].disP1P2);
1853 
1854         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[0]);
1855         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[1]);
1856         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[2]);
1857         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[3]);
1858         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[4]);
1859         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[5]);
1860         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[0]);
1861         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[1]);
1862         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[2]);
1863         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[3]);
1864         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[4]);
1865         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[5]);
1866         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[0]);
1867         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[1]);
1868         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[2]);
1869         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[0]);
1870         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[1]);
1871         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[2]);
1872         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].disP1P2  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].disP1P2);
1873 
1874         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[0]);
1875         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[1]);
1876         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[2]);
1877         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[3]);
1878         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[4]);
1879         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[5]);
1880         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[0]);
1881         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[1]);
1882         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[2]);
1883         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[3]);
1884         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[4]);
1885         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5]  =        %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[5]);
1886         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[0]);
1887         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[1]);
1888         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[2]);
1889         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[0]);
1890         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[1]);
1891         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2]  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[2]);
1892         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].disP1P2  =    %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].disP1P2);
1893 
1894         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[0]);
1895         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[1]);
1896         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[2]);
1897         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[3]);
1898         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[4]);
1899         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[5]);
1900         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[0]);
1901         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[1]);
1902         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[2]);
1903         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[3]);
1904         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[4]);
1905         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5]  =       %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[5]);
1906         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0]  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[0]);
1907         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1]  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[1]);
1908         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2]  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[2]);
1909         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0]  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[0]);
1910         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1]  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[1]);
1911         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2]  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[2]);
1912         fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].disP1P2  =   %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].disP1P2);
1913         fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0]  =    %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[0] ); //rgb2xy parpmeter
1914         fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1]  =    %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[1] ); //rgb2xy parpmeter
1915         fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2]  =    %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[2] ); //rgb2xy parpmeter
1916         fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[0]  =    %d;\n", wpDetectPara.rgb2xy_param.rotationMat[0]            ); //rgb2xy parpmeter
1917         fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[1]  =    %d;\n", wpDetectPara.rgb2xy_param.rotationMat[1]            ); //rgb2xy parpmeter
1918         fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[2]  =    %d;\n", wpDetectPara.rgb2xy_param.rotationMat[2]            ); //rgb2xy parpmeter
1919         fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[3]  =    %d;\n", wpDetectPara.rgb2xy_param.rotationMat[3]            ); //rgb2xy parpmeter
1920         fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[4]  =    %d;\n", wpDetectPara.rgb2xy_param.rotationMat[4]            ); //rgb2xy parpmeter
1921         fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[5]  =    %d;\n", wpDetectPara.rgb2xy_param.rotationMat[5]            ); //rgb2xy parpmeter
1922         fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[0].NorrangeX[0]            ); //xy detect xy region
1923         fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[0].NorrangeX[1]            ); //xy detect xy region
1924         fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[0].NorrangeY[0]            ); //xy detect xy region
1925         fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[0].NorrangeY[1]            ); //xy detect xy region
1926         fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[0].SperangeX[0]            ); //xy detect xy region
1927         fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[0].SperangeX[1]            ); //xy detect xy region
1928         fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[0].SperangeY[0]            ); //xy detect xy region
1929         fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[0].SperangeY[1]            ); //xy detect xy region
1930         fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[1].NorrangeX[0]            );
1931         fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[1].NorrangeX[1]            );
1932         fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[1].NorrangeY[0]            );
1933         fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[1].NorrangeY[1]            );
1934         fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[1].SperangeX[0]            );
1935         fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[1].SperangeX[1]            );
1936         fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[1].SperangeY[0]            );
1937         fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[1].SperangeY[1]            );
1938         fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[2].NorrangeX[0]            );
1939         fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[2].NorrangeX[1]            );
1940         fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[2].NorrangeY[0]            );
1941         fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[2].NorrangeY[1]            );
1942         fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[2].SperangeX[0]            );
1943         fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[2].SperangeX[1]            );
1944         fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[2].SperangeY[0]            );
1945         fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[2].SperangeY[1]            );
1946         fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[3].NorrangeX[0]            );
1947         fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[3].NorrangeX[1]            );
1948         fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[3].NorrangeY[0]            );
1949         fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[3].NorrangeY[1]            );
1950         fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[3].SperangeX[0]            );
1951         fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[3].SperangeX[1]            );
1952         fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[3].SperangeY[0]            );
1953         fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[3].SperangeY[1]            );
1954         fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[4].NorrangeX[0]            );
1955         fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[4].NorrangeX[1]            );
1956         fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[4].NorrangeY[0]            );
1957         fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[4].NorrangeY[1]            );
1958         fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[4].SperangeX[0]            );
1959         fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[4].SperangeX[1]            );
1960         fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[4].SperangeY[0]            );
1961         fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[4].SperangeY[1]            );
1962         fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[5].NorrangeX[0]            );
1963         fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[5].NorrangeX[1]            );
1964         fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[5].NorrangeY[0]            );
1965         fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[5].NorrangeY[1]            );
1966         fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[5].SperangeX[0]            );
1967         fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[5].SperangeX[1]            );
1968         fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[5].SperangeY[0]            );
1969         fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[5].SperangeY[1]            );
1970         fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[6].NorrangeX[0]            );
1971         fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[6].NorrangeX[1]            );
1972         fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[6].NorrangeY[0]            );
1973         fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[6].NorrangeY[1]            );
1974         fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeX[0]  =    %d;\n", wpDetectPara.xyRange_param[6].SperangeX[0]            );
1975         fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeX[1]  =    %d;\n", wpDetectPara.xyRange_param[6].SperangeX[1]            );
1976         fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeY[0]  =    %d;\n", wpDetectPara.xyRange_param[6].SperangeY[0]            );
1977         fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeY[1]  =    %d;\n", wpDetectPara.xyRange_param[6].SperangeY[1]            );
1978         fprintf(fp, "awbHwConfig->pre_wbgain_inv_r  =    %d;\n", wpDetectPara.pre_wbgain_inv_r);
1979         fprintf(fp, "awbHwConfig->pre_wbgain_inv_g  =    %d;\n", wpDetectPara.pre_wbgain_inv_g);
1980         fprintf(fp, "awbHwConfig->pre_wbgain_inv_b  =    %d;\n", wpDetectPara.pre_wbgain_inv_b);
1981         //add new
1982 #if defined(ISP_HW_V30)
1983         fprintf(fp, "awbHwConfig->multiwindow_en  =    %d;\n", wpDetectPara.multiwindow_en); // multiwindow auto white balance measure enable
1984         fprintf(fp, "awbHwConfig->multiwindow[0][0]  =    %d;\n", wpDetectPara.multiwindow[0][0]); // multiwindow0 row start
1985         fprintf(fp, "awbHwConfig->multiwindow[0][1]  =    %d;\n", wpDetectPara.multiwindow[0][1]); // multiwindow0 column start
1986         fprintf(fp, "awbHwConfig->multiwindow[0][2]  =    %d;\n", wpDetectPara.multiwindow[0][2]); // multiwindow0 row size
1987         fprintf(fp, "awbHwConfig->multiwindow[0][3]  =    %d;\n", wpDetectPara.multiwindow[0][3]); // multiwindow0 column size
1988         fprintf(fp, "awbHwConfig->multiwindow[1][0]  =    %d;\n", wpDetectPara.multiwindow[1][0]); // multiwindow1 row start
1989         fprintf(fp, "awbHwConfig->multiwindow[1][1]  =    %d;\n", wpDetectPara.multiwindow[1][1]); // multiwindow1 column start
1990         fprintf(fp, "awbHwConfig->multiwindow[1][2]  =    %d;\n", wpDetectPara.multiwindow[1][2]); // multiwindow1 row size
1991         fprintf(fp, "awbHwConfig->multiwindow[1][3]  =    %d;\n", wpDetectPara.multiwindow[1][3]); // multiwindow1 column size
1992         fprintf(fp, "awbHwConfig->multiwindow[2][0]  =    %d;\n", wpDetectPara.multiwindow[2][0]); // multiwindow2 row start
1993         fprintf(fp, "awbHwConfig->multiwindow[2][1]  =    %d;\n", wpDetectPara.multiwindow[2][1]); // multiwindow2 column start
1994         fprintf(fp, "awbHwConfig->multiwindow[2][2]  =    %d;\n", wpDetectPara.multiwindow[2][2]); // multiwindow2 row size
1995         fprintf(fp, "awbHwConfig->multiwindow[2][3]  =    %d;\n", wpDetectPara.multiwindow[2][3]); // multiwindow2 column size
1996         fprintf(fp, "awbHwConfig->multiwindow[3][0]  =    %d;\n", wpDetectPara.multiwindow[3][0]); // multiwindow3 row start
1997         fprintf(fp, "awbHwConfig->multiwindow[3][1]  =    %d;\n", wpDetectPara.multiwindow[3][1]); // multiwindow3 column start
1998         fprintf(fp, "awbHwConfig->multiwindow[3][2]  =    %d;\n", wpDetectPara.multiwindow[3][2]); // multiwindow3 row size
1999         fprintf(fp, "awbHwConfig->multiwindow[3][3]  =    %d;\n", wpDetectPara.multiwindow[3][3]); // multiwindow3 column size
2000 #endif
2001         fprintf(fp, "awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2002         fprintf(fp, "awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2003         fprintf(fp, "awbHwConfig->excludeWpRange[0].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[0].measureEnable); //white points region0 measure enable
2004         fprintf(fp, "awbHwConfig->excludeWpRange[0].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[0].domain       ); //white points region0 exclusion in domain,1 uv domain,2 xy domain.
2005         fprintf(fp, "awbHwConfig->excludeWpRange[0].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[0].xu[0]        ); //left x/u boundary of white points exclusion region0
2006         fprintf(fp, "awbHwConfig->excludeWpRange[0].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[0].xu[1]        ); //right x/u boundary of white points exclusion region0
2007         fprintf(fp, "awbHwConfig->excludeWpRange[0].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[0].yv[0]        ); //up y/v boundary of white points exclusion region0
2008         fprintf(fp, "awbHwConfig->excludeWpRange[0].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[0].yv[1]        ); //down y/v boundary of white points exclusion region0
2009         fprintf(fp, "awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2010         fprintf(fp, "awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2011         fprintf(fp, "awbHwConfig->excludeWpRange[1].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[1].measureEnable); //white points region1 measure enable
2012         fprintf(fp, "awbHwConfig->excludeWpRange[1].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[1].domain       ); //white points region1 exclusion in domain,1 uv domain,2 xy domain.
2013         fprintf(fp, "awbHwConfig->excludeWpRange[1].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[1].xu[0]        ); //left x/u boundary of white points exclusion region1
2014         fprintf(fp, "awbHwConfig->excludeWpRange[1].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[1].xu[1]        ); //right x/u boundary of white points exclusion region1
2015         fprintf(fp, "awbHwConfig->excludeWpRange[1].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[1].yv[0]        ); //up y/v boundary of white points exclusion region1
2016         fprintf(fp, "awbHwConfig->excludeWpRange[1].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[1].yv[1]        ); //down y/v boundary of white points exclusion region1
2017         fprintf(fp, "awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2018         fprintf(fp, "awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2019         fprintf(fp, "awbHwConfig->excludeWpRange[2].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[2].measureEnable); //white points region2 measure enable
2020         fprintf(fp, "awbHwConfig->excludeWpRange[2].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[2].domain       ); //white points region2 exclusion in domain,1 uv domain,2 xy domain.
2021         fprintf(fp, "awbHwConfig->excludeWpRange[2].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[2].xu[0]        ); //left x/u boundary of white points exclusion region2
2022         fprintf(fp, "awbHwConfig->excludeWpRange[2].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[2].xu[1]        ); //right x/u boundary of white points exclusion region2
2023         fprintf(fp, "awbHwConfig->excludeWpRange[2].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[2].yv[0]        ); //up y/v boundary of white points exclusion region2
2024         fprintf(fp, "awbHwConfig->excludeWpRange[2].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[2].yv[1]        ); //down y/v boundary of white points exclusion region2
2025         fprintf(fp, "awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2026         fprintf(fp, "awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2027         fprintf(fp, "awbHwConfig->excludeWpRange[3].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[3].measureEnable); //white points region3 measure enable
2028         fprintf(fp, "awbHwConfig->excludeWpRange[3].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[3].domain       ); //white points region3 exclusion in domain,1 uv domain,2 xy domain.
2029         fprintf(fp, "awbHwConfig->excludeWpRange[3].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[3].xu[0]        ); //left x/u boundary of white points exclusion region3
2030         fprintf(fp, "awbHwConfig->excludeWpRange[3].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[3].xu[1]        ); //right x/u boundary of white points exclusion region3
2031         fprintf(fp, "awbHwConfig->excludeWpRange[3].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[3].yv[0]        ); //up y/v boundary of white points exclusion region3
2032         fprintf(fp, "awbHwConfig->excludeWpRange[3].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[3].yv[1]        ); //down y/v boundary of white points exclusion region3
2033         fprintf(fp, "awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2034         fprintf(fp, "awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2035         fprintf(fp, "awbHwConfig->excludeWpRange[4].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[4].measureEnable); //white points region4 measure enable
2036         fprintf(fp, "awbHwConfig->excludeWpRange[4].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[4].domain       ); //white points region4 exclusion in domain,1 uv domain,2 xy domain.
2037         fprintf(fp, "awbHwConfig->excludeWpRange[4].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[4].xu[0]        ); //left x/u boundary of white points exclusion region4
2038         fprintf(fp, "awbHwConfig->excludeWpRange[4].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[4].xu[1]        ); //right x/u boundary of white points exclusion region4
2039         fprintf(fp, "awbHwConfig->excludeWpRange[4].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[4].yv[0]        ); //up y/v boundary of white points exclusion region4
2040         fprintf(fp, "awbHwConfig->excludeWpRange[4].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[4].yv[1]        ); //down y/v boundary of white points exclusion region4
2041         fprintf(fp, "awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2042         fprintf(fp, "awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2043         fprintf(fp, "awbHwConfig->excludeWpRange[5].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[5].measureEnable); //white points region5 measure enable
2044         fprintf(fp, "awbHwConfig->excludeWpRange[5].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[5].domain       ); //white points region5 exclusion in domain,1 uv domain,2 xy domain.
2045         fprintf(fp, "awbHwConfig->excludeWpRange[5].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[5].xu[0]        ); //left x/u boundary of white points exclusion region5
2046         fprintf(fp, "awbHwConfig->excludeWpRange[5].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[5].xu[1]        ); //right x/u boundary of white points exclusion region5
2047         fprintf(fp, "awbHwConfig->excludeWpRange[5].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[5].yv[0]        ); //up y/v boundary of white points exclusion region5
2048         fprintf(fp, "awbHwConfig->excludeWpRange[5].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[5].yv[1]        ); //down y/v boundary of white points exclusion region5
2049         fprintf(fp, "awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]   =     %d;\n", wpDetectPara.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);  //white points region0 exclusion enable
2050         fprintf(fp, "awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]   =     %d;\n", wpDetectPara.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);  //white points region0 exclusion enable
2051         fprintf(fp, "awbHwConfig->excludeWpRange[6].measureEnable   =     %d;\n", wpDetectPara.excludeWpRange[6].measureEnable);  //white points region6 measure enable
2052         fprintf(fp, "awbHwConfig->excludeWpRange[6].domain          =     (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[6].domain       ); //white points region6 exclusion in domain,1 uv domain,2 xy domain.
2053         fprintf(fp, "awbHwConfig->excludeWpRange[6].xu[0]           =     %d;\n", wpDetectPara.excludeWpRange[6].xu[0]        ); //left x/u boundary of white points exclusion region6
2054         fprintf(fp, "awbHwConfig->excludeWpRange[6].xu[1]           =     %d;\n", wpDetectPara.excludeWpRange[6].xu[1]        ); //right x/u boundary of white points exclusion region6
2055         fprintf(fp, "awbHwConfig->excludeWpRange[6].yv[0]           =     %d;\n", wpDetectPara.excludeWpRange[6].yv[0]        ); //up y/v boundary of white points exclusion region6
2056         fprintf(fp, "awbHwConfig->excludeWpRange[6].yv[1]           =     %d;\n", wpDetectPara.excludeWpRange[6].yv[1]        ); //down y/v boundary of white points exclusion region6
2057 
2058         for (int i = 0; i < RK_AIQ_AWBWP_WEIGHT_CURVE_DOT_NUM; i++) {
2059             fprintf(fp, "awbHwConfig->wpDiffwei_y[%d]  =%d;\n", i, wpDetectPara.wpDiffwei_y[i]);
2060         }
2061         for (int i = 0; i < RK_AIQ_AWBWP_WEIGHT_CURVE_DOT_NUM; i++) {
2062             fprintf(fp, "awbHwConfig->wpDiffwei_w[%d]  =%d;\n", i, wpDetectPara.wpDiffwei_w[i]);
2063         }
2064         for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) {
2065             fprintf(fp, "awbHwConfig->blkWeight[%d]  =%d;\n", i, wpDetectPara.blkWeight[i]);
2066         }
2067         fprintf(fp, "awbHwConfig->blk_rtdw_measure_en  =    %d;\n", wpDetectPara.blk_rtdw_measure_en );
2068         fclose(fp);
2069 
2070     }
2071 }
2072 
2073 
2074 RKAIQ_END_DECLARE
2075