xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/hwi/isp32/Isp32Params.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2021-2022 Rockchip Eletronics Co., Ltd.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Licensed under the Apache License, Version 2.0 (the "License");
5*4882a593Smuzhiyun  * you may not use this file except in compliance with the License.
6*4882a593Smuzhiyun  * You may obtain a copy of the License at
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *      http://www.apache.org/licenses/LICENSE-2.0
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * Unless required by applicable law or agreed to in writing, software
11*4882a593Smuzhiyun  * distributed under the License is distributed on an "AS IS" BASIS,
12*4882a593Smuzhiyun  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4882a593Smuzhiyun  * See the License for the specific language governing permissions and
14*4882a593Smuzhiyun  * limitations under the License.
15*4882a593Smuzhiyun  */
16*4882a593Smuzhiyun #include "Isp32Params.h"
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun namespace RkCam {
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define ISP2X_WBGAIN_FIXSCALE_BIT  8
21*4882a593Smuzhiyun #define ISP3X_WBGAIN_INTSCALE_BIT  8
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun 
convertAiqAwbGainToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_wb_gain_v32_t & awb_gain,bool awb_gain_update)24*4882a593Smuzhiyun void Isp32Params::convertAiqAwbGainToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
25*4882a593Smuzhiyun         const rk_aiq_wb_gain_v32_t& awb_gain, bool awb_gain_update)
26*4882a593Smuzhiyun {
27*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V32
28*4882a593Smuzhiyun     if(awb_gain_update) {
29*4882a593Smuzhiyun         isp_cfg.module_ens |= 1LL << RK_ISP2X_AWB_GAIN_ID;
30*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_AWB_GAIN_ID;
31*4882a593Smuzhiyun         isp_cfg.module_en_update |= 1LL << RK_ISP2X_AWB_GAIN_ID;
32*4882a593Smuzhiyun     } else {
33*4882a593Smuzhiyun         return;
34*4882a593Smuzhiyun     }
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun     struct isp32_awb_gain_cfg *  cfg = &isp_cfg.others.awb_gain_cfg;
37*4882a593Smuzhiyun     uint16_t max_wb_gain = (1 << (ISP2X_WBGAIN_FIXSCALE_BIT + 3)) - 1;
38*4882a593Smuzhiyun     rk_aiq_wb_gain_v32_t awb_gain1 = awb_gain;
39*4882a593Smuzhiyun #if 0 //to do
40*4882a593Smuzhiyun     if(blc != nullptr && blc->v0.enable) {
41*4882a593Smuzhiyun         awb_gain1.bgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_b);
42*4882a593Smuzhiyun         awb_gain1.gbgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_gb);
43*4882a593Smuzhiyun         awb_gain1.rgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_r);
44*4882a593Smuzhiyun         awb_gain1.grgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc->v0.blc_gr);
45*4882a593Smuzhiyun     }
46*4882a593Smuzhiyun #endif
47*4882a593Smuzhiyun     uint16_t R = (uint16_t)(0.5 + awb_gain1.rgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
48*4882a593Smuzhiyun     uint16_t B = (uint16_t)(0.5 + awb_gain1.bgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
49*4882a593Smuzhiyun     uint16_t Gr = (uint16_t)(0.5 + awb_gain1.grgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
50*4882a593Smuzhiyun     uint16_t Gb = (uint16_t)(0.5 + awb_gain1.gbgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT));
51*4882a593Smuzhiyun     if(awb_gain.applyPosition == IN_AWBGAIN0) {
52*4882a593Smuzhiyun         cfg->gain0_red       = R > max_wb_gain ? max_wb_gain : R;
53*4882a593Smuzhiyun         cfg->gain0_blue      = B > max_wb_gain ? max_wb_gain : B;
54*4882a593Smuzhiyun         cfg->gain0_green_r   = Gr > max_wb_gain ? max_wb_gain : Gr ;
55*4882a593Smuzhiyun         cfg->gain0_green_b   = Gb > max_wb_gain ? max_wb_gain : Gb;
56*4882a593Smuzhiyun         cfg->gain1_red       = R > max_wb_gain ? max_wb_gain : R;
57*4882a593Smuzhiyun         cfg->gain1_blue      = B > max_wb_gain ? max_wb_gain : B;
58*4882a593Smuzhiyun         cfg->gain1_green_r   = Gr > max_wb_gain ? max_wb_gain : Gr ;
59*4882a593Smuzhiyun         cfg->gain1_green_b   = Gb > max_wb_gain ? max_wb_gain : Gb;
60*4882a593Smuzhiyun         cfg->gain2_red       = R > max_wb_gain ? max_wb_gain : R;
61*4882a593Smuzhiyun         cfg->gain2_blue      = B > max_wb_gain ? max_wb_gain : B;
62*4882a593Smuzhiyun         cfg->gain2_green_r   = Gr > max_wb_gain ? max_wb_gain : Gr ;
63*4882a593Smuzhiyun         cfg->gain2_green_b   = Gb > max_wb_gain ? max_wb_gain : Gb;
64*4882a593Smuzhiyun         cfg->awb1_gain_r = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
65*4882a593Smuzhiyun         cfg->awb1_gain_b = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
66*4882a593Smuzhiyun         cfg->awb1_gain_gr = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
67*4882a593Smuzhiyun         cfg->awb1_gain_gb = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
68*4882a593Smuzhiyun     } else {
69*4882a593Smuzhiyun         cfg->gain0_red       = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
70*4882a593Smuzhiyun         cfg->gain0_blue      = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
71*4882a593Smuzhiyun         cfg->gain0_green_r   = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
72*4882a593Smuzhiyun         cfg->gain0_green_b   = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
73*4882a593Smuzhiyun         cfg->gain1_red       = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
74*4882a593Smuzhiyun         cfg->gain1_blue      = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
75*4882a593Smuzhiyun         cfg->gain1_green_r   = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
76*4882a593Smuzhiyun         cfg->gain1_green_b   = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
77*4882a593Smuzhiyun         cfg->gain2_red       = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
78*4882a593Smuzhiyun         cfg->gain2_blue      = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
79*4882a593Smuzhiyun         cfg->gain2_green_r   = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
80*4882a593Smuzhiyun         cfg->gain2_green_b   = (1 << ISP2X_WBGAIN_FIXSCALE_BIT);
81*4882a593Smuzhiyun         cfg->awb1_gain_r = R > max_wb_gain ? max_wb_gain : R;
82*4882a593Smuzhiyun         cfg->awb1_gain_b = B > max_wb_gain ? max_wb_gain : B;
83*4882a593Smuzhiyun         cfg->awb1_gain_gr = Gr > max_wb_gain ? max_wb_gain : Gr;
84*4882a593Smuzhiyun         cfg->awb1_gain_gb = Gb > max_wb_gain ? max_wb_gain : Gb;
85*4882a593Smuzhiyun     }
86*4882a593Smuzhiyun #endif
87*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V32
88*4882a593Smuzhiyun     mLatestWbGainCfg = *cfg;
89*4882a593Smuzhiyun #endif
90*4882a593Smuzhiyun }
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V32
WriteAwbReg(struct isp32_rawawb_meas_cfg * awb_cfg_v32)93*4882a593Smuzhiyun static void WriteAwbReg(struct isp32_rawawb_meas_cfg* awb_cfg_v32)
94*4882a593Smuzhiyun {
95*4882a593Smuzhiyun #if 0
96*4882a593Smuzhiyun     char fName[100];
97*4882a593Smuzhiyun     sprintf(fName, "./tmp/awb_reg.txt");
98*4882a593Smuzhiyun     LOGE_AWB( "%s", fName);
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun     FILE* fp = fopen(fName, "wb");
101*4882a593Smuzhiyun     if(fp == NULL){
102*4882a593Smuzhiyun         return;
103*4882a593Smuzhiyun     }
104*4882a593Smuzhiyun     //fprintf(fp, "\t\tsw_rawawb_en = 0x%0x (%d)\n",                              awb_cfg_v32->en                            ,awb_cfg_v32->en);
105*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_uv_en0 = 0x%0x (%d)\n",                            awb_cfg_v32->uv_en0                        ,awb_cfg_v32->uv_en0);
106*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_xy_en0 = 0x%0x (%d)\n",                            awb_cfg_v32->xy_en0                        ,awb_cfg_v32->xy_en0);
107*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_yuv3d_en0 = 0x%0x (%d)\n",                         awb_cfg_v32->yuv3d_en0                     ,awb_cfg_v32->yuv3d_en0);
108*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx0 = 0x%0x (%d)\n",                     awb_cfg_v32->yuv3d_ls_idx0                 ,awb_cfg_v32->yuv3d_ls_idx0);
109*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx1 = 0x%0x (%d)\n",                     awb_cfg_v32->yuv3d_ls_idx1                 ,awb_cfg_v32->yuv3d_ls_idx1);
110*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx2 = 0x%0x (%d)\n",                     awb_cfg_v32->yuv3d_ls_idx2                 ,awb_cfg_v32->yuv3d_ls_idx2);
111*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_yuv3d_ls_idx3 = 0x%0x (%d)\n",                     awb_cfg_v32->yuv3d_ls_idx3                 ,awb_cfg_v32->yuv3d_ls_idx3);
112*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_in_rshift_to_12bit_en = 0x%0x (%d)\n",             awb_cfg_v32->in_rshift_to_12bit_en         ,awb_cfg_v32->in_rshift_to_12bit_en);
113*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_in_overexposure_check_en = 0x%0x (%d)\n",          awb_cfg_v32->in_overexposure_check_en      ,awb_cfg_v32->in_overexposure_check_en);
114*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wind_size = 0x%0x (%d)\n",                         awb_cfg_v32->wind_size                     ,awb_cfg_v32->wind_size);
115*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawlsc_bypass_en = 0x%0x (%d)\n",                         awb_cfg_v32->rawlsc_bypass_en                     ,awb_cfg_v32->rawlsc_bypass_en);
116*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_light_num = 0x%0x (%d)\n",                         awb_cfg_v32->light_num                     ,awb_cfg_v32->light_num);
117*4882a593Smuzhiyun     //fprintf(fp, "\t\tsw_rawawb_2ddr_path_en = 0x%0x (%d)\n",                      awb_cfg_v32->2ddr_path_en                  ,awb_cfg_v32->2ddr_path_en);
118*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_uv_en1 = 0x%0x (%d)\n",                            awb_cfg_v32->uv_en1                        ,awb_cfg_v32->uv_en1);
119*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_xy_en1 = 0x%0x (%d)\n",                            awb_cfg_v32->xy_en1                        ,awb_cfg_v32->xy_en1);
120*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_yuv3d_en1 = 0x%0x (%d)\n",                         awb_cfg_v32->yuv3d_en1                     ,awb_cfg_v32->yuv3d_en1);
121*4882a593Smuzhiyun     //fprintf(fp, "\t\tsw_rawawb_2ddr_path_sel = 0x%0x (%d)\n",                     awb_cfg_v32->2ddr_path_sel                 ,awb_cfg_v32->2ddr_path_sel);
122*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawbin_low12bit_val = 0x%0x (%d)\n",                    awb_cfg_v32->low12bit_val                ,awb_cfg_v32->low12bit_val);
123*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_blk_measure_en = 0x%0x (%d)\n",                    awb_cfg_v32->blk_measure_enable                ,awb_cfg_v32->blk_measure_enable);
124*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_blk_measure_mode = 0x%0x (%d)\n",                  awb_cfg_v32->blk_measure_mode              ,awb_cfg_v32->blk_measure_mode);
125*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_blk_measure_xytype = 0x%0x (%d)\n",                awb_cfg_v32->blk_measure_xytype            ,awb_cfg_v32->blk_measure_xytype);
126*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_blk_rtdw_measure_en = 0x%0x (%d)\n",               awb_cfg_v32->blk_rtdw_measure_en           ,awb_cfg_v32->blk_rtdw_measure_en);
127*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_blk_measure_illu_idx = 0x%0x (%d)\n",              awb_cfg_v32->blk_measure_illu_idx          ,awb_cfg_v32->blk_measure_illu_idx);
128*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_ds16x8_mode_en = 0x%0x (%d)\n",                    awb_cfg_v32->ds16x8_mode_en                ,awb_cfg_v32->ds16x8_mode_en);
129*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_blk_with_luma_wei_en = 0x%0x (%d)\n",              awb_cfg_v32->blk_with_luma_wei_en          ,awb_cfg_v32->blk_with_luma_wei_en);
130*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_in_overexposure_threshold = 0x%0x (%d)\n",         awb_cfg_v32->in_overexposure_threshold     ,awb_cfg_v32->in_overexposure_threshold);
131*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_h_offs = 0x%0x (%d)\n",                            awb_cfg_v32->h_offs                        ,awb_cfg_v32->h_offs);
132*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_v_offs = 0x%0x (%d)\n",                            awb_cfg_v32->v_offs                        ,awb_cfg_v32->v_offs);
133*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_h_size = 0x%0x (%d)\n",                            awb_cfg_v32->h_size                        ,awb_cfg_v32->h_size);
134*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_v_size = 0x%0x (%d)\n",                            awb_cfg_v32->v_size                        ,awb_cfg_v32->v_size);
135*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_r_max = 0x%0x (%d)\n",                             awb_cfg_v32->r_max                         ,awb_cfg_v32->r_max);
136*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_g_max = 0x%0x (%d)\n",                             awb_cfg_v32->g_max                         ,awb_cfg_v32->g_max);
137*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_b_max = 0x%0x (%d)\n",                             awb_cfg_v32->b_max                         ,awb_cfg_v32->b_max);
138*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_y_max = 0x%0x (%d)\n",                             awb_cfg_v32->y_max                         ,awb_cfg_v32->y_max);
139*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_r_min = 0x%0x (%d)\n",                             awb_cfg_v32->r_min                         ,awb_cfg_v32->r_min);
140*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_g_min = 0x%0x (%d)\n",                             awb_cfg_v32->g_min                         ,awb_cfg_v32->g_min);
141*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_b_min = 0x%0x (%d)\n",                             awb_cfg_v32->b_min                         ,awb_cfg_v32->b_min);
142*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_y_min = 0x%0x (%d)\n",                             awb_cfg_v32->y_min                         ,awb_cfg_v32->y_min);
143*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_wei_en0 = 0x%0x (%d)\n",                   awb_cfg_v32->wp_luma_wei_en0               ,awb_cfg_v32->wp_luma_wei_en0);
144*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_wei_en1 = 0x%0x (%d)\n",                   awb_cfg_v32->wp_luma_wei_en1               ,awb_cfg_v32->wp_luma_wei_en1);
145*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_blk_wei_en0 = 0x%0x (%d)\n",                    awb_cfg_v32->wp_blk_wei_en0                ,awb_cfg_v32->wp_blk_wei_en0);
146*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_blk_wei_en1 = 0x%0x (%d)\n",                    awb_cfg_v32->wp_blk_wei_en1                ,awb_cfg_v32->wp_blk_wei_en1);
147*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_hist_xytype = 0x%0x (%d)\n",                    awb_cfg_v32->wp_hist_xytype                ,awb_cfg_v32->wp_hist_xytype);
148*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y0 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y0           ,awb_cfg_v32->wp_luma_weicurve_y0);
149*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y1 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y1           ,awb_cfg_v32->wp_luma_weicurve_y1);
150*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y2 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y2           ,awb_cfg_v32->wp_luma_weicurve_y2);
151*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y3 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y3           ,awb_cfg_v32->wp_luma_weicurve_y3);
152*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y4 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y4           ,awb_cfg_v32->wp_luma_weicurve_y4);
153*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y5 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y5           ,awb_cfg_v32->wp_luma_weicurve_y5);
154*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y6 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y6           ,awb_cfg_v32->wp_luma_weicurve_y6);
155*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y7 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y7           ,awb_cfg_v32->wp_luma_weicurve_y7);
156*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_y8 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_y8           ,awb_cfg_v32->wp_luma_weicurve_y8);
157*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w0 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w0           ,awb_cfg_v32->wp_luma_weicurve_w0);
158*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w1 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w1           ,awb_cfg_v32->wp_luma_weicurve_w1);
159*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w2 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w2           ,awb_cfg_v32->wp_luma_weicurve_w2);
160*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w3 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w3           ,awb_cfg_v32->wp_luma_weicurve_w3);
161*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w4 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w4           ,awb_cfg_v32->wp_luma_weicurve_w4);
162*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w5 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w5           ,awb_cfg_v32->wp_luma_weicurve_w5);
163*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w6 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w6           ,awb_cfg_v32->wp_luma_weicurve_w6);
164*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w7 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w7           ,awb_cfg_v32->wp_luma_weicurve_w7);
165*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wp_luma_weicurve_w8 = 0x%0x (%d)\n",               awb_cfg_v32->wp_luma_weicurve_w8           ,awb_cfg_v32->wp_luma_weicurve_w8);
166*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_pre_wbgain_inv_r = 0x%0x (%d)\n",                  awb_cfg_v32->pre_wbgain_inv_r              ,awb_cfg_v32->pre_wbgain_inv_r);
167*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_pre_wbgain_inv_g = 0x%0x (%d)\n",                  awb_cfg_v32->pre_wbgain_inv_g              ,awb_cfg_v32->pre_wbgain_inv_g);
168*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_pre_wbgain_inv_b = 0x%0x (%d)\n",                  awb_cfg_v32->pre_wbgain_inv_b              ,awb_cfg_v32->pre_wbgain_inv_b);
169*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_u_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_u_0                   ,awb_cfg_v32->vertex0_u_0);
170*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_v_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_v_0                   ,awb_cfg_v32->vertex0_v_0);
171*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_u_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_u_0                   ,awb_cfg_v32->vertex1_u_0);
172*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_v_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_v_0                   ,awb_cfg_v32->vertex1_v_0);
173*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_u_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_u_0                   ,awb_cfg_v32->vertex2_u_0);
174*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_v_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_v_0                   ,awb_cfg_v32->vertex2_v_0);
175*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_u_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_u_0                   ,awb_cfg_v32->vertex3_u_0);
176*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_v_0 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_v_0                   ,awb_cfg_v32->vertex3_v_0);
177*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope01_0 = 0x%0x (%d)\n",                        awb_cfg_v32->islope01_0                    ,awb_cfg_v32->islope01_0);
178*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope12_0 = 0x%0x (%d)\n",                        awb_cfg_v32->islope12_0                    ,awb_cfg_v32->islope12_0);
179*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope23_0 = 0x%0x (%d)\n",                        awb_cfg_v32->islope23_0                    ,awb_cfg_v32->islope23_0);
180*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope30_0 = 0x%0x (%d)\n",                        awb_cfg_v32->islope30_0                    ,awb_cfg_v32->islope30_0);
181*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_u_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_u_1                   ,awb_cfg_v32->vertex0_u_1);
182*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_v_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_v_1                   ,awb_cfg_v32->vertex0_v_1);
183*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_u_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_u_1                   ,awb_cfg_v32->vertex1_u_1);
184*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_v_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_v_1                   ,awb_cfg_v32->vertex1_v_1);
185*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_u_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_u_1                   ,awb_cfg_v32->vertex2_u_1);
186*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_v_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_v_1                   ,awb_cfg_v32->vertex2_v_1);
187*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_u_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_u_1                   ,awb_cfg_v32->vertex3_u_1);
188*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_v_1 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_v_1                   ,awb_cfg_v32->vertex3_v_1);
189*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope01_1 = 0x%0x (%d)\n",                        awb_cfg_v32->islope01_1                    ,awb_cfg_v32->islope01_1);
190*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope12_1 = 0x%0x (%d)\n",                        awb_cfg_v32->islope12_1                    ,awb_cfg_v32->islope12_1);
191*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope23_1 = 0x%0x (%d)\n",                        awb_cfg_v32->islope23_1                    ,awb_cfg_v32->islope23_1);
192*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope30_1 = 0x%0x (%d)\n",                        awb_cfg_v32->islope30_1                    ,awb_cfg_v32->islope30_1);
193*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_u_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_u_2                   ,awb_cfg_v32->vertex0_u_2);
194*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_v_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_v_2                   ,awb_cfg_v32->vertex0_v_2);
195*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_u_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_u_2                   ,awb_cfg_v32->vertex1_u_2);
196*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_v_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_v_2                   ,awb_cfg_v32->vertex1_v_2);
197*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_u_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_u_2                   ,awb_cfg_v32->vertex2_u_2);
198*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_v_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_v_2                   ,awb_cfg_v32->vertex2_v_2);
199*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_u_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_u_2                   ,awb_cfg_v32->vertex3_u_2);
200*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_v_2 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_v_2                   ,awb_cfg_v32->vertex3_v_2);
201*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope01_2 = 0x%0x (%d)\n",                        awb_cfg_v32->islope01_2                    ,awb_cfg_v32->islope01_2);
202*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope12_2 = 0x%0x (%d)\n",                        awb_cfg_v32->islope12_2                    ,awb_cfg_v32->islope12_2);
203*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope23_2 = 0x%0x (%d)\n",                        awb_cfg_v32->islope23_2                    ,awb_cfg_v32->islope23_2);
204*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope30_2 = 0x%0x (%d)\n",                        awb_cfg_v32->islope30_2                    ,awb_cfg_v32->islope30_2);
205*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_u_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_u_3                   ,awb_cfg_v32->vertex0_u_3);
206*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex0_v_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex0_v_3                   ,awb_cfg_v32->vertex0_v_3);
207*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_u_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_u_3                   ,awb_cfg_v32->vertex1_u_3);
208*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex1_v_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex1_v_3                   ,awb_cfg_v32->vertex1_v_3);
209*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_u_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_u_3                   ,awb_cfg_v32->vertex2_u_3);
210*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex2_v_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex2_v_3                   ,awb_cfg_v32->vertex2_v_3);
211*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_u_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_u_3                   ,awb_cfg_v32->vertex3_u_3);
212*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vertex3_v_3 = 0x%0x (%d)\n",                       awb_cfg_v32->vertex3_v_3                   ,awb_cfg_v32->vertex3_v_3);
213*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope01_3 = 0x%0x (%d)\n",                        awb_cfg_v32->islope01_3                    ,awb_cfg_v32->islope01_3);
214*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope12_3 = 0x%0x (%d)\n",                        awb_cfg_v32->islope12_3                    ,awb_cfg_v32->islope12_3);
215*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope23_3 = 0x%0x (%d)\n",                        awb_cfg_v32->islope23_3                    ,awb_cfg_v32->islope23_3);
216*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_islope30_3 = 0x%0x (%d)\n",                        awb_cfg_v32->islope30_3                    ,awb_cfg_v32->islope30_3);
217*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat0_y = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat0_y                ,awb_cfg_v32->rgb2ryuvmat0_y);
218*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat1_y = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat1_y                ,awb_cfg_v32->rgb2ryuvmat1_y);
219*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat2_y = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat2_y                ,awb_cfg_v32->rgb2ryuvmat2_y);
220*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvofs_y = 0x%0x (%d)\n",                     awb_cfg_v32->rgb2ryuvofs_y                 ,awb_cfg_v32->rgb2ryuvofs_y);
221*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat0_u = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat0_u                ,awb_cfg_v32->rgb2ryuvmat0_u);
222*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat1_u = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat1_u                ,awb_cfg_v32->rgb2ryuvmat1_u);
223*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat2_u = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat2_u                ,awb_cfg_v32->rgb2ryuvmat2_u);
224*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvofs_u = 0x%0x (%d)\n",                     awb_cfg_v32->rgb2ryuvofs_u                 ,awb_cfg_v32->rgb2ryuvofs_u);
225*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat0_v = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat0_v                ,awb_cfg_v32->rgb2ryuvmat0_v);
226*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat1_v = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat1_v                ,awb_cfg_v32->rgb2ryuvmat1_v);
227*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvmat2_v = 0x%0x (%d)\n",                    awb_cfg_v32->rgb2ryuvmat2_v                ,awb_cfg_v32->rgb2ryuvmat2_v);
228*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rgb2ryuvofs_v = 0x%0x (%d)\n",                     awb_cfg_v32->rgb2ryuvofs_v                 ,awb_cfg_v32->rgb2ryuvofs_v);
229*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls0_y = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls0_y                 ,awb_cfg_v32->coor_x1_ls0_y);
230*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls0_y = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls0_y                 ,awb_cfg_v32->vec_x21_ls0_y);
231*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls0_u = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls0_u                 ,awb_cfg_v32->coor_x1_ls0_u);
232*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls0_u = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls0_u                 ,awb_cfg_v32->vec_x21_ls0_u);
233*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls0_v = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls0_v                 ,awb_cfg_v32->coor_x1_ls0_v);
234*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls0_v = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls0_v                 ,awb_cfg_v32->vec_x21_ls0_v);
235*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls0 = 0x%0x (%d)\n",                      awb_cfg_v32->dis_x1x2_ls0                  ,awb_cfg_v32->dis_x1x2_ls0);
236*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu0_ls0 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu0_ls0                     ,awb_cfg_v32->rotu0_ls0);
237*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu1_ls0 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu1_ls0                     ,awb_cfg_v32->rotu1_ls0);
238*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu2_ls0 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu2_ls0                     ,awb_cfg_v32->rotu2_ls0);
239*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu3_ls0 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu3_ls0                     ,awb_cfg_v32->rotu3_ls0);
240*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu4_ls0 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu4_ls0                     ,awb_cfg_v32->rotu4_ls0);
241*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu5_ls0 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu5_ls0                     ,awb_cfg_v32->rotu5_ls0);
242*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th0_ls0 = 0x%0x (%d)\n",                           awb_cfg_v32->th0_ls0                       ,awb_cfg_v32->th0_ls0);
243*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th1_ls0 = 0x%0x (%d)\n",                           awb_cfg_v32->th1_ls0                       ,awb_cfg_v32->th1_ls0);
244*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th2_ls0 = 0x%0x (%d)\n",                           awb_cfg_v32->th2_ls0                       ,awb_cfg_v32->th2_ls0);
245*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th3_ls0 = 0x%0x (%d)\n",                           awb_cfg_v32->th3_ls0                       ,awb_cfg_v32->th3_ls0);
246*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th4_ls0 = 0x%0x (%d)\n",                           awb_cfg_v32->th4_ls0                       ,awb_cfg_v32->th4_ls0);
247*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th5_ls0 = 0x%0x (%d)\n",                           awb_cfg_v32->th5_ls0                       ,awb_cfg_v32->th5_ls0);
248*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls1_y = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls1_y                 ,awb_cfg_v32->coor_x1_ls1_y);
249*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls1_y = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls1_y                 ,awb_cfg_v32->vec_x21_ls1_y);
250*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls1_u = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls1_u                 ,awb_cfg_v32->coor_x1_ls1_u);
251*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls1_u = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls1_u                 ,awb_cfg_v32->vec_x21_ls1_u);
252*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls1_v = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls1_v                 ,awb_cfg_v32->coor_x1_ls1_v);
253*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls1_v = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls1_v                 ,awb_cfg_v32->vec_x21_ls1_v);
254*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls1 = 0x%0x (%d)\n",                      awb_cfg_v32->dis_x1x2_ls1                  ,awb_cfg_v32->dis_x1x2_ls1);
255*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu0_ls1 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu0_ls1                     ,awb_cfg_v32->rotu0_ls1);
256*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu1_ls1 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu1_ls1                     ,awb_cfg_v32->rotu1_ls1);
257*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu2_ls1 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu2_ls1                     ,awb_cfg_v32->rotu2_ls1);
258*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu3_ls1 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu3_ls1                     ,awb_cfg_v32->rotu3_ls1);
259*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu4_ls1 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu4_ls1                     ,awb_cfg_v32->rotu4_ls1);
260*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu5_ls1 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu5_ls1                     ,awb_cfg_v32->rotu5_ls1);
261*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th0_ls1 = 0x%0x (%d)\n",                           awb_cfg_v32->th0_ls1                       ,awb_cfg_v32->th0_ls1);
262*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th1_ls1 = 0x%0x (%d)\n",                           awb_cfg_v32->th1_ls1                       ,awb_cfg_v32->th1_ls1);
263*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th2_ls1 = 0x%0x (%d)\n",                           awb_cfg_v32->th2_ls1                       ,awb_cfg_v32->th2_ls1);
264*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th3_ls1 = 0x%0x (%d)\n",                           awb_cfg_v32->th3_ls1                       ,awb_cfg_v32->th3_ls1);
265*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th4_ls1 = 0x%0x (%d)\n",                           awb_cfg_v32->th4_ls1                       ,awb_cfg_v32->th4_ls1);
266*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th5_ls1 = 0x%0x (%d)\n",                           awb_cfg_v32->th5_ls1                       ,awb_cfg_v32->th5_ls1);
267*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls2_y = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls2_y                 ,awb_cfg_v32->coor_x1_ls2_y);
268*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls2_y = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls2_y                 ,awb_cfg_v32->vec_x21_ls2_y);
269*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls2_u = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls2_u                 ,awb_cfg_v32->coor_x1_ls2_u);
270*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls2_u = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls2_u                 ,awb_cfg_v32->vec_x21_ls2_u);
271*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls2_v = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls2_v                 ,awb_cfg_v32->coor_x1_ls2_v);
272*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls2_v = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls2_v                 ,awb_cfg_v32->vec_x21_ls2_v);
273*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls2 = 0x%0x (%d)\n",                      awb_cfg_v32->dis_x1x2_ls2                  ,awb_cfg_v32->dis_x1x2_ls2);
274*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu0_ls2 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu0_ls2                     ,awb_cfg_v32->rotu0_ls2);
275*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu1_ls2 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu1_ls2                     ,awb_cfg_v32->rotu1_ls2);
276*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu2_ls2 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu2_ls2                     ,awb_cfg_v32->rotu2_ls2);
277*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu3_ls2 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu3_ls2                     ,awb_cfg_v32->rotu3_ls2);
278*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu4_ls2 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu4_ls2                     ,awb_cfg_v32->rotu4_ls2);
279*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu5_ls2 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu5_ls2                     ,awb_cfg_v32->rotu5_ls2);
280*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th0_ls2 = 0x%0x (%d)\n",                           awb_cfg_v32->th0_ls2                       ,awb_cfg_v32->th0_ls2);
281*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th1_ls2 = 0x%0x (%d)\n",                           awb_cfg_v32->th1_ls2                       ,awb_cfg_v32->th1_ls2);
282*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th2_ls2 = 0x%0x (%d)\n",                           awb_cfg_v32->th2_ls2                       ,awb_cfg_v32->th2_ls2);
283*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th3_ls2 = 0x%0x (%d)\n",                           awb_cfg_v32->th3_ls2                       ,awb_cfg_v32->th3_ls2);
284*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th4_ls2 = 0x%0x (%d)\n",                           awb_cfg_v32->th4_ls2                       ,awb_cfg_v32->th4_ls2);
285*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th5_ls2 = 0x%0x (%d)\n",                           awb_cfg_v32->th5_ls2                       ,awb_cfg_v32->th5_ls2);
286*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls3_y = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls3_y                 ,awb_cfg_v32->coor_x1_ls3_y);
287*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls3_y = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls3_y                 ,awb_cfg_v32->vec_x21_ls3_y);
288*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls3_u = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls3_u                 ,awb_cfg_v32->coor_x1_ls3_u);
289*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls3_u = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls3_u                 ,awb_cfg_v32->vec_x21_ls3_u);
290*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_coor_x1_ls3_v = 0x%0x (%d)\n",                     awb_cfg_v32->coor_x1_ls3_v                 ,awb_cfg_v32->coor_x1_ls3_v);
291*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_vec_x21_ls3_v = 0x%0x (%d)\n",                     awb_cfg_v32->vec_x21_ls3_v                 ,awb_cfg_v32->vec_x21_ls3_v);
292*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_dis_x1x2_ls3 = 0x%0x (%d)\n",                      awb_cfg_v32->dis_x1x2_ls3                  ,awb_cfg_v32->dis_x1x2_ls3);
293*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu0_ls3 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu0_ls3                     ,awb_cfg_v32->rotu0_ls3);
294*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu1_ls3 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu1_ls3                     ,awb_cfg_v32->rotu1_ls3);
295*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu2_ls3 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu2_ls3                     ,awb_cfg_v32->rotu2_ls3);
296*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu3_ls3 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu3_ls3                     ,awb_cfg_v32->rotu3_ls3);
297*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu4_ls3 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu4_ls3                     ,awb_cfg_v32->rotu4_ls3);
298*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_rotu5_ls3 = 0x%0x (%d)\n",                         awb_cfg_v32->rotu5_ls3                     ,awb_cfg_v32->rotu5_ls3);
299*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th0_ls3 = 0x%0x (%d)\n",                           awb_cfg_v32->th0_ls3                       ,awb_cfg_v32->th0_ls3);
300*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th1_ls3 = 0x%0x (%d)\n",                           awb_cfg_v32->th1_ls3                       ,awb_cfg_v32->th1_ls3);
301*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th2_ls3 = 0x%0x (%d)\n",                           awb_cfg_v32->th2_ls3                       ,awb_cfg_v32->th2_ls3);
302*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th3_ls3 = 0x%0x (%d)\n",                           awb_cfg_v32->th3_ls3                       ,awb_cfg_v32->th3_ls3);
303*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th4_ls3 = 0x%0x (%d)\n",                           awb_cfg_v32->th4_ls3                       ,awb_cfg_v32->th4_ls3);
304*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_th5_ls3 = 0x%0x (%d)\n",                           awb_cfg_v32->th5_ls3                       ,awb_cfg_v32->th5_ls3);
305*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wt0 = 0x%0x (%d)\n",                               awb_cfg_v32->wt0                           ,awb_cfg_v32->wt0);
306*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wt1 = 0x%0x (%d)\n",                               awb_cfg_v32->wt1                           ,awb_cfg_v32->wt1);
307*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_wt2 = 0x%0x (%d)\n",                               awb_cfg_v32->wt2                           ,awb_cfg_v32->wt2);
308*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_mat0_x = 0x%0x (%d)\n",                            awb_cfg_v32->mat0_x                        ,awb_cfg_v32->mat0_x);
309*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_mat0_y = 0x%0x (%d)\n",                            awb_cfg_v32->mat0_y                        ,awb_cfg_v32->mat0_y);
310*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_mat1_x = 0x%0x (%d)\n",                            awb_cfg_v32->mat1_x                        ,awb_cfg_v32->mat1_x);
311*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_mat1_y = 0x%0x (%d)\n",                            awb_cfg_v32->mat1_y                        ,awb_cfg_v32->mat1_y);
312*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_mat2_x = 0x%0x (%d)\n",                            awb_cfg_v32->mat2_x                        ,awb_cfg_v32->mat2_x);
313*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_mat2_y = 0x%0x (%d)\n",                            awb_cfg_v32->mat2_y                        ,awb_cfg_v32->mat2_y);
314*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x0_0 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x0_0                      ,awb_cfg_v32->nor_x0_0);
315*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x1_0 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x1_0                      ,awb_cfg_v32->nor_x1_0);
316*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y0_0 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y0_0                      ,awb_cfg_v32->nor_y0_0);
317*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y1_0 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y1_0                      ,awb_cfg_v32->nor_y1_0);
318*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x0_0 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x0_0                      ,awb_cfg_v32->big_x0_0);
319*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x1_0 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x1_0                      ,awb_cfg_v32->big_x1_0);
320*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y0_0 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y0_0                      ,awb_cfg_v32->big_y0_0);
321*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y1_0 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y1_0                      ,awb_cfg_v32->big_y1_0);
322*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x0_1 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x0_1                      ,awb_cfg_v32->nor_x0_1);
323*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x1_1 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x1_1                      ,awb_cfg_v32->nor_x1_1);
324*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y0_1 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y0_1                      ,awb_cfg_v32->nor_y0_1);
325*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y1_1 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y1_1                      ,awb_cfg_v32->nor_y1_1);
326*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x0_1 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x0_1                      ,awb_cfg_v32->big_x0_1);
327*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x1_1 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x1_1                      ,awb_cfg_v32->big_x1_1);
328*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y0_1 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y0_1                      ,awb_cfg_v32->big_y0_1);
329*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y1_1 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y1_1                      ,awb_cfg_v32->big_y1_1);
330*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x0_2 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x0_2                      ,awb_cfg_v32->nor_x0_2);
331*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x1_2 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x1_2                      ,awb_cfg_v32->nor_x1_2);
332*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y0_2 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y0_2                      ,awb_cfg_v32->nor_y0_2);
333*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y1_2 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y1_2                      ,awb_cfg_v32->nor_y1_2);
334*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x0_2 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x0_2                      ,awb_cfg_v32->big_x0_2);
335*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x1_2 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x1_2                      ,awb_cfg_v32->big_x1_2);
336*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y0_2 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y0_2                      ,awb_cfg_v32->big_y0_2);
337*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y1_2 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y1_2                      ,awb_cfg_v32->big_y1_2);
338*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x0_3 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x0_3                      ,awb_cfg_v32->nor_x0_3);
339*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_x1_3 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_x1_3                      ,awb_cfg_v32->nor_x1_3);
340*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y0_3 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y0_3                      ,awb_cfg_v32->nor_y0_3);
341*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_nor_y1_3 = 0x%0x (%d)\n",                          awb_cfg_v32->nor_y1_3                      ,awb_cfg_v32->nor_y1_3);
342*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x0_3 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x0_3                      ,awb_cfg_v32->big_x0_3);
343*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_x1_3 = 0x%0x (%d)\n",                          awb_cfg_v32->big_x1_3                      ,awb_cfg_v32->big_x1_3);
344*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y0_3 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y0_3                      ,awb_cfg_v32->big_y0_3);
345*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_big_y1_3 = 0x%0x (%d)\n",                          awb_cfg_v32->big_y1_3                      ,awb_cfg_v32->big_y1_3);
346*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region0_excen          ,awb_cfg_v32->exc_wp_region0_excen);
347*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_measen = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region0_measen         ,awb_cfg_v32->exc_wp_region0_measen);
348*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region0_domain         ,awb_cfg_v32->exc_wp_region0_domain);
349*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region1_excen          ,awb_cfg_v32->exc_wp_region1_excen);
350*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_measen = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region1_measen         ,awb_cfg_v32->exc_wp_region1_measen);
351*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region1_domain         ,awb_cfg_v32->exc_wp_region1_domain);
352*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region2_excen          ,awb_cfg_v32->exc_wp_region2_excen);
353*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_measen = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region2_measen         ,awb_cfg_v32->exc_wp_region2_measen);
354*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region2_domain         ,awb_cfg_v32->exc_wp_region2_domain);
355*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region3_excen          ,awb_cfg_v32->exc_wp_region3_excen);
356*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_measen = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region3_measen         ,awb_cfg_v32->exc_wp_region3_measen);
357*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region3_domain         ,awb_cfg_v32->exc_wp_region3_domain);
358*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region4_excen          ,awb_cfg_v32->exc_wp_region4_excen);
359*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region4_domain         ,awb_cfg_v32->exc_wp_region4_domain);
360*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region5_excen          ,awb_cfg_v32->exc_wp_region5_excen);
361*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region5_domain         ,awb_cfg_v32->exc_wp_region5_domain);
362*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_excen = 0x%0x (%d)\n",              awb_cfg_v32->exc_wp_region6_excen          ,awb_cfg_v32->exc_wp_region6_excen);
363*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_domain = 0x%0x (%d)\n",             awb_cfg_v32->exc_wp_region6_domain         ,awb_cfg_v32->exc_wp_region6_domain);
364*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow_en = 0x%0x (%d)\n",                    awb_cfg_v32->multiwindow_en                ,awb_cfg_v32->multiwindow_en);
365*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow0_h_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow0_h_offs           ,awb_cfg_v32->multiwindow0_h_offs);
366*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow0_v_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow0_v_offs           ,awb_cfg_v32->multiwindow0_v_offs);
367*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow0_h_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow0_h_size           ,awb_cfg_v32->multiwindow0_h_size);
368*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow1_v_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow1_v_size           ,awb_cfg_v32->multiwindow1_v_size);
369*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow1_h_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow1_h_offs           ,awb_cfg_v32->multiwindow1_h_offs);
370*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow1_v_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow1_v_offs           ,awb_cfg_v32->multiwindow1_v_offs);
371*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow1_h_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow1_h_size           ,awb_cfg_v32->multiwindow1_h_size);
372*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow1_v_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow1_v_size           ,awb_cfg_v32->multiwindow1_v_size);
373*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow2_h_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow2_h_offs           ,awb_cfg_v32->multiwindow2_h_offs);
374*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow2_v_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow2_v_offs           ,awb_cfg_v32->multiwindow2_v_offs);
375*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow2_h_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow2_h_size           ,awb_cfg_v32->multiwindow2_h_size);
376*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow2_v_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow2_v_size           ,awb_cfg_v32->multiwindow2_v_size);
377*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow3_h_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow3_h_offs           ,awb_cfg_v32->multiwindow3_h_offs);
378*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow3_v_offs = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow3_v_offs           ,awb_cfg_v32->multiwindow3_v_offs);
379*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow3_h_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow3_h_size           ,awb_cfg_v32->multiwindow3_h_size);
380*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_multiwindow3_v_size = 0x%0x (%d)\n",               awb_cfg_v32->multiwindow3_v_size           ,awb_cfg_v32->multiwindow3_v_size);
381*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region0_xu0            ,awb_cfg_v32->exc_wp_region0_xu0);
382*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region0_xu1            ,awb_cfg_v32->exc_wp_region0_xu1);
383*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region0_yv0            ,awb_cfg_v32->exc_wp_region0_yv0);
384*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region0_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region0_yv1            ,awb_cfg_v32->exc_wp_region0_yv1);
385*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region1_xu0            ,awb_cfg_v32->exc_wp_region1_xu0);
386*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region1_xu1            ,awb_cfg_v32->exc_wp_region1_xu1);
387*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region1_yv0            ,awb_cfg_v32->exc_wp_region1_yv0);
388*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region1_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region1_yv1            ,awb_cfg_v32->exc_wp_region1_yv1);
389*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region2_xu0            ,awb_cfg_v32->exc_wp_region2_xu0);
390*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region2_xu1            ,awb_cfg_v32->exc_wp_region2_xu1);
391*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region2_yv0            ,awb_cfg_v32->exc_wp_region2_yv0);
392*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region2_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region2_yv1            ,awb_cfg_v32->exc_wp_region2_yv1);
393*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region3_xu0            ,awb_cfg_v32->exc_wp_region3_xu0);
394*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region3_xu1            ,awb_cfg_v32->exc_wp_region3_xu1);
395*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region3_yv0            ,awb_cfg_v32->exc_wp_region3_yv0);
396*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region3_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region3_yv1            ,awb_cfg_v32->exc_wp_region3_yv1);
397*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region4_xu0            ,awb_cfg_v32->exc_wp_region4_xu0);
398*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region4_xu1            ,awb_cfg_v32->exc_wp_region4_xu1);
399*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region4_yv0            ,awb_cfg_v32->exc_wp_region4_yv0);
400*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region4_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region4_yv1            ,awb_cfg_v32->exc_wp_region4_yv1);
401*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region5_xu0            ,awb_cfg_v32->exc_wp_region5_xu0);
402*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region5_xu1            ,awb_cfg_v32->exc_wp_region5_xu1);
403*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region5_yv0            ,awb_cfg_v32->exc_wp_region5_yv0);
404*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region5_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region5_yv1            ,awb_cfg_v32->exc_wp_region5_yv1);
405*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_xu0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region6_xu0            ,awb_cfg_v32->exc_wp_region6_xu0);
406*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_xu1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region6_xu1            ,awb_cfg_v32->exc_wp_region6_xu1);
407*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_yv0 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region6_yv0            ,awb_cfg_v32->exc_wp_region6_yv0);
408*4882a593Smuzhiyun     fprintf(fp, "\t\tsw_rawawb_exc_wp_region6_yv1 = 0x%0x (%d)\n",                awb_cfg_v32->exc_wp_region6_yv1            ,awb_cfg_v32->exc_wp_region6_yv1);
409*4882a593Smuzhiyun 
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun     fclose(fp);
412*4882a593Smuzhiyun #endif
413*4882a593Smuzhiyun }
convertAiqAwbToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_awb_meas_cfg_v32_t & awb_meas,bool awb_cfg_udpate)414*4882a593Smuzhiyun void Isp32Params::convertAiqAwbToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
415*4882a593Smuzhiyun         const rk_aiq_isp_awb_meas_cfg_v32_t& awb_meas,
416*4882a593Smuzhiyun         bool awb_cfg_udpate) {
417*4882a593Smuzhiyun     if (awb_cfg_udpate) {
418*4882a593Smuzhiyun         if (awb_meas.awbEnable) {
419*4882a593Smuzhiyun             isp_cfg.module_ens |= ISP2X_MODULE_RAWAWB;
420*4882a593Smuzhiyun             isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAWB;
421*4882a593Smuzhiyun             isp_cfg.module_en_update |= ISP2X_MODULE_RAWAWB;
422*4882a593Smuzhiyun         }
423*4882a593Smuzhiyun     } else {
424*4882a593Smuzhiyun         return;
425*4882a593Smuzhiyun     }
426*4882a593Smuzhiyun     //to do :
427*4882a593Smuzhiyun     //config blc2 important
428*4882a593Smuzhiyun     //isp_cfg.module_ens |= ISP2X_MODULE_BLS;
429*4882a593Smuzhiyun     //isp_cfg.module_cfg_update |= ISP2X_MODULE_BLS;
430*4882a593Smuzhiyun     //isp_cfg.module_en_update |= ISP2X_MODULE_BLS;
431*4882a593Smuzhiyun 
432*4882a593Smuzhiyun     struct isp32_rawawb_meas_cfg* awb_cfg_v32 = &isp_cfg.meas.rawawb;
433*4882a593Smuzhiyun     awb_cfg_v32->bls2_en = awb_meas.blc.enable;
434*4882a593Smuzhiyun     awb_cfg_v32->bls2_val.r = awb_meas.blc.blc[0];
435*4882a593Smuzhiyun     awb_cfg_v32->bls2_val.gr = awb_meas.blc.blc[1];
436*4882a593Smuzhiyun     awb_cfg_v32->bls2_val.gb = awb_meas.blc.blc[2];
437*4882a593Smuzhiyun     awb_cfg_v32->bls2_val.b = awb_meas.blc.blc[3];
438*4882a593Smuzhiyun     LOGV_AWB("blc2_cfg %d %d,%d,%d,%d", awb_cfg_v32->bls2_en, awb_cfg_v32->bls2_val.r, awb_cfg_v32->bls2_val.gr,
439*4882a593Smuzhiyun              awb_cfg_v32->bls2_val.gb, awb_cfg_v32->bls2_val.b);
440*4882a593Smuzhiyun 
441*4882a593Smuzhiyun     awb_cfg_v32->rawawb_sel = 0;
442*4882a593Smuzhiyun     if (awb_meas.frameChoose == CALIB_AWB_INPUT_DRC) {
443*4882a593Smuzhiyun         awb_cfg_v32->drc2awb_sel = 1;
444*4882a593Smuzhiyun         //awb_cfg_v32->rawawb_sel need check
445*4882a593Smuzhiyun     } else {
446*4882a593Smuzhiyun         awb_cfg_v32->drc2awb_sel = 0;
447*4882a593Smuzhiyun         if (awb_meas.frameChoose == CALIB_AWB_INPUT_BAYERNR) {
448*4882a593Smuzhiyun             awb_cfg_v32->bnr2awb_sel = 1;
449*4882a593Smuzhiyun             //awb_cfg_v32->rawawb_sel need check
450*4882a593Smuzhiyun         }
451*4882a593Smuzhiyun         else {
452*4882a593Smuzhiyun             awb_cfg_v32->bnr2awb_sel = 0;
453*4882a593Smuzhiyun             awb_cfg_v32->rawawb_sel = awb_meas.frameChoose;
454*4882a593Smuzhiyun         }
455*4882a593Smuzhiyun     }
456*4882a593Smuzhiyun     awb_cfg_v32->low12bit_val = awb_meas.inputBitIs12Bit;
457*4882a593Smuzhiyun     //awb_cfg_v32->ddr_path_en = awb_meas.write2ddrEnable;
458*4882a593Smuzhiyun     //awb_cfg_v32->ddr_path_sel = awb_meas.write2ddrSelc;
459*4882a593Smuzhiyun     awb_cfg_v32->in_rshift_to_12bit_en = awb_meas.inputShiftEnable;
460*4882a593Smuzhiyun     awb_cfg_v32->in_overexposure_check_en = true;
461*4882a593Smuzhiyun     awb_cfg_v32->in_overexposure_threshold = awb_meas.overexposure_value;
462*4882a593Smuzhiyun     if(awb_cfg_v32->in_overexposure_threshold == 0) {
463*4882a593Smuzhiyun         awb_cfg_v32->in_overexposure_check_en = false;
464*4882a593Smuzhiyun     }
465*4882a593Smuzhiyun     awb_cfg_v32->xy_en0    = awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
466*4882a593Smuzhiyun     awb_cfg_v32->uv_en0    = awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
467*4882a593Smuzhiyun     awb_cfg_v32->yuv3d_en0 = awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
468*4882a593Smuzhiyun     awb_cfg_v32->xy_en1    = awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
469*4882a593Smuzhiyun     awb_cfg_v32->uv_en1    = awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
470*4882a593Smuzhiyun     awb_cfg_v32->yuv3d_en1 = awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
471*4882a593Smuzhiyun     awb_cfg_v32->wp_blk_wei_en0 =
472*4882a593Smuzhiyun         awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
473*4882a593Smuzhiyun     awb_cfg_v32->wp_blk_wei_en1 = awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
474*4882a593Smuzhiyun     awb_cfg_v32->rawlsc_bypass_en      = awb_meas.lscBypEnable;
475*4882a593Smuzhiyun     awb_cfg_v32->blk_measure_enable   = awb_meas.blkStatisticsEnable;
476*4882a593Smuzhiyun     awb_cfg_v32->blk_measure_mode     = awb_meas.blkMeasureMode;
477*4882a593Smuzhiyun     awb_cfg_v32->blk_measure_xytype   = awb_meas.xyRangeTypeForBlkStatistics;
478*4882a593Smuzhiyun     awb_cfg_v32->blk_measure_illu_idx = awb_meas.illIdxForBlkStatistics;
479*4882a593Smuzhiyun     awb_cfg_v32->blk_with_luma_wei_en = awb_meas.blkStatisticsWithLumaWeightEn;
480*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_wei_en0 =
481*4882a593Smuzhiyun         awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
482*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_wei_en1 = awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
483*4882a593Smuzhiyun     awb_cfg_v32->wp_hist_xytype  = awb_meas.xyRangeTypeForWpHist;
484*4882a593Smuzhiyun     awb_cfg_v32->yuv3d_ls_idx0   = awb_meas.threeDyuvIllu[0];
485*4882a593Smuzhiyun     awb_cfg_v32->yuv3d_ls_idx1   = awb_meas.threeDyuvIllu[1];
486*4882a593Smuzhiyun     awb_cfg_v32->yuv3d_ls_idx2   = awb_meas.threeDyuvIllu[2];
487*4882a593Smuzhiyun     awb_cfg_v32->yuv3d_ls_idx3   = awb_meas.threeDyuvIllu[3];
488*4882a593Smuzhiyun     awb_cfg_v32->light_num       = awb_meas.lightNum;
489*4882a593Smuzhiyun     awb_cfg_v32->h_offs          = awb_meas.windowSet[0];
490*4882a593Smuzhiyun     awb_cfg_v32->v_offs          = awb_meas.windowSet[1];
491*4882a593Smuzhiyun     awb_cfg_v32->h_size          = awb_meas.windowSet[2];
492*4882a593Smuzhiyun     awb_cfg_v32->v_size          = awb_meas.windowSet[3];
493*4882a593Smuzhiyun  #if RKAIQ_HAVE_AWB_V32LT
494*4882a593Smuzhiyun     if(awb_meas.dsMode ==RK_AIQ_AWB_DS_4X4 || awb_meas.dsMode ==RK_AIQ_AWB_DS_8X8){
495*4882a593Smuzhiyun         awb_cfg_v32->wind_size       = awb_meas.dsMode;
496*4882a593Smuzhiyun         awb_cfg_v32->ds16x8_mode_en = 0;
497*4882a593Smuzhiyun     }else if(awb_meas.dsMode ==RK_AIQ_AWB_DS_16X8){
498*4882a593Smuzhiyun         awb_cfg_v32->ds16x8_mode_en = 1;
499*4882a593Smuzhiyun         awb_cfg_v32->wind_size = RK_AIQ_AWB_DS_8X8;
500*4882a593Smuzhiyun     }
501*4882a593Smuzhiyun  #else
502*4882a593Smuzhiyun     awb_cfg_v32->wind_size       = awb_meas.dsMode;
503*4882a593Smuzhiyun  #endif
504*4882a593Smuzhiyun     awb_cfg_v32->r_max           = awb_meas.maxR;
505*4882a593Smuzhiyun     awb_cfg_v32->g_max           = awb_meas.maxG;
506*4882a593Smuzhiyun     awb_cfg_v32->b_max           = awb_meas.maxB;
507*4882a593Smuzhiyun     awb_cfg_v32->y_max           = awb_meas.maxY;
508*4882a593Smuzhiyun     awb_cfg_v32->r_min           = awb_meas.minR;
509*4882a593Smuzhiyun     awb_cfg_v32->g_min           = awb_meas.minG;
510*4882a593Smuzhiyun     awb_cfg_v32->b_min           = awb_meas.minB;
511*4882a593Smuzhiyun     awb_cfg_v32->y_min           = awb_meas.minY;
512*4882a593Smuzhiyun     awb_cfg_v32->vertex0_u_0     = awb_meas.uvRange_param[0].pu_region[0];
513*4882a593Smuzhiyun     awb_cfg_v32->vertex0_v_0     = awb_meas.uvRange_param[0].pv_region[0];
514*4882a593Smuzhiyun     awb_cfg_v32->vertex1_u_0     = awb_meas.uvRange_param[0].pu_region[1];
515*4882a593Smuzhiyun     awb_cfg_v32->vertex1_v_0     = awb_meas.uvRange_param[0].pv_region[1];
516*4882a593Smuzhiyun     awb_cfg_v32->vertex2_u_0     = awb_meas.uvRange_param[0].pu_region[2];
517*4882a593Smuzhiyun     awb_cfg_v32->vertex2_v_0     = awb_meas.uvRange_param[0].pv_region[2];
518*4882a593Smuzhiyun     awb_cfg_v32->vertex3_u_0     = awb_meas.uvRange_param[0].pu_region[3];
519*4882a593Smuzhiyun     awb_cfg_v32->vertex3_v_0     = awb_meas.uvRange_param[0].pv_region[3];
520*4882a593Smuzhiyun     awb_cfg_v32->islope01_0      = awb_meas.uvRange_param[0].slope_inv[0];
521*4882a593Smuzhiyun     awb_cfg_v32->islope12_0      = awb_meas.uvRange_param[0].slope_inv[1];
522*4882a593Smuzhiyun     awb_cfg_v32->islope23_0      = awb_meas.uvRange_param[0].slope_inv[2];
523*4882a593Smuzhiyun     awb_cfg_v32->islope30_0      = awb_meas.uvRange_param[0].slope_inv[3];
524*4882a593Smuzhiyun     awb_cfg_v32->vertex0_u_1     = awb_meas.uvRange_param[1].pu_region[0];
525*4882a593Smuzhiyun     awb_cfg_v32->vertex0_v_1     = awb_meas.uvRange_param[1].pv_region[0];
526*4882a593Smuzhiyun     awb_cfg_v32->vertex1_u_1     = awb_meas.uvRange_param[1].pu_region[1];
527*4882a593Smuzhiyun     awb_cfg_v32->vertex1_v_1     = awb_meas.uvRange_param[1].pv_region[1];
528*4882a593Smuzhiyun     awb_cfg_v32->vertex2_u_1     = awb_meas.uvRange_param[1].pu_region[2];
529*4882a593Smuzhiyun     awb_cfg_v32->vertex2_v_1     = awb_meas.uvRange_param[1].pv_region[2];
530*4882a593Smuzhiyun     awb_cfg_v32->vertex3_u_1     = awb_meas.uvRange_param[1].pu_region[3];
531*4882a593Smuzhiyun     awb_cfg_v32->vertex3_v_1     = awb_meas.uvRange_param[1].pv_region[3];
532*4882a593Smuzhiyun     awb_cfg_v32->islope01_1      = awb_meas.uvRange_param[1].slope_inv[0];
533*4882a593Smuzhiyun     awb_cfg_v32->islope12_1      = awb_meas.uvRange_param[1].slope_inv[1];
534*4882a593Smuzhiyun     awb_cfg_v32->islope23_1      = awb_meas.uvRange_param[1].slope_inv[2];
535*4882a593Smuzhiyun     awb_cfg_v32->islope30_1      = awb_meas.uvRange_param[1].slope_inv[3];
536*4882a593Smuzhiyun     awb_cfg_v32->vertex0_u_2     = awb_meas.uvRange_param[2].pu_region[0];
537*4882a593Smuzhiyun     awb_cfg_v32->vertex0_v_2     = awb_meas.uvRange_param[2].pv_region[0];
538*4882a593Smuzhiyun     awb_cfg_v32->vertex1_u_2     = awb_meas.uvRange_param[2].pu_region[1];
539*4882a593Smuzhiyun     awb_cfg_v32->vertex1_v_2     = awb_meas.uvRange_param[2].pv_region[1];
540*4882a593Smuzhiyun     awb_cfg_v32->vertex2_u_2     = awb_meas.uvRange_param[2].pu_region[2];
541*4882a593Smuzhiyun     awb_cfg_v32->vertex2_v_2     = awb_meas.uvRange_param[2].pv_region[2];
542*4882a593Smuzhiyun     awb_cfg_v32->vertex3_u_2     = awb_meas.uvRange_param[2].pu_region[3];
543*4882a593Smuzhiyun     awb_cfg_v32->vertex3_v_2     = awb_meas.uvRange_param[2].pv_region[3];
544*4882a593Smuzhiyun     awb_cfg_v32->islope01_2      = awb_meas.uvRange_param[2].slope_inv[0];
545*4882a593Smuzhiyun     awb_cfg_v32->islope12_2      = awb_meas.uvRange_param[2].slope_inv[1];
546*4882a593Smuzhiyun     awb_cfg_v32->islope23_2      = awb_meas.uvRange_param[2].slope_inv[2];
547*4882a593Smuzhiyun     awb_cfg_v32->islope30_2      = awb_meas.uvRange_param[2].slope_inv[3];
548*4882a593Smuzhiyun     awb_cfg_v32->vertex0_u_3     = awb_meas.uvRange_param[3].pu_region[0];
549*4882a593Smuzhiyun     awb_cfg_v32->vertex0_v_3     = awb_meas.uvRange_param[3].pv_region[0];
550*4882a593Smuzhiyun     awb_cfg_v32->vertex1_u_3     = awb_meas.uvRange_param[3].pu_region[1];
551*4882a593Smuzhiyun     awb_cfg_v32->vertex1_v_3     = awb_meas.uvRange_param[3].pv_region[1];
552*4882a593Smuzhiyun     awb_cfg_v32->vertex2_u_3     = awb_meas.uvRange_param[3].pu_region[2];
553*4882a593Smuzhiyun     awb_cfg_v32->vertex2_v_3     = awb_meas.uvRange_param[3].pv_region[2];
554*4882a593Smuzhiyun     awb_cfg_v32->vertex3_u_3     = awb_meas.uvRange_param[3].pu_region[3];
555*4882a593Smuzhiyun     awb_cfg_v32->vertex3_v_3     = awb_meas.uvRange_param[3].pv_region[3];
556*4882a593Smuzhiyun     awb_cfg_v32->islope01_3      = awb_meas.uvRange_param[3].slope_inv[0];
557*4882a593Smuzhiyun     awb_cfg_v32->islope12_3      = awb_meas.uvRange_param[3].slope_inv[1];
558*4882a593Smuzhiyun     awb_cfg_v32->islope23_3      = awb_meas.uvRange_param[3].slope_inv[2];
559*4882a593Smuzhiyun     awb_cfg_v32->islope30_3      = awb_meas.uvRange_param[3].slope_inv[3];
560*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat0_u  = awb_meas.icrgb2RYuv_matrix[0];
561*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat1_u  = awb_meas.icrgb2RYuv_matrix[1];
562*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat2_u  = awb_meas.icrgb2RYuv_matrix[2];
563*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvofs_u   = awb_meas.icrgb2RYuv_matrix[3];
564*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat0_v  = awb_meas.icrgb2RYuv_matrix[4];
565*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat1_v  = awb_meas.icrgb2RYuv_matrix[5];
566*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat2_v  = awb_meas.icrgb2RYuv_matrix[6];
567*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvofs_v   = awb_meas.icrgb2RYuv_matrix[7];
568*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat0_y  = awb_meas.icrgb2RYuv_matrix[8];
569*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat1_y  = awb_meas.icrgb2RYuv_matrix[9];
570*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvmat2_y  = awb_meas.icrgb2RYuv_matrix[10];
571*4882a593Smuzhiyun     awb_cfg_v32->rgb2ryuvofs_y   = awb_meas.icrgb2RYuv_matrix[11];
572*4882a593Smuzhiyun     awb_cfg_v32->rotu0_ls0       = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[0];
573*4882a593Smuzhiyun     awb_cfg_v32->rotu1_ls0       = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[1];
574*4882a593Smuzhiyun     awb_cfg_v32->rotu2_ls0       = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[2];
575*4882a593Smuzhiyun     awb_cfg_v32->rotu3_ls0       = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[3];
576*4882a593Smuzhiyun     awb_cfg_v32->rotu4_ls0       = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[4];
577*4882a593Smuzhiyun     awb_cfg_v32->rotu5_ls0       = awb_meas.ic3Dyuv2Range_param[0].thcurve_u[5];
578*4882a593Smuzhiyun     awb_cfg_v32->th0_ls0         = awb_meas.ic3Dyuv2Range_param[0].thcure_th[0];
579*4882a593Smuzhiyun     awb_cfg_v32->th1_ls0         = awb_meas.ic3Dyuv2Range_param[0].thcure_th[1];
580*4882a593Smuzhiyun     awb_cfg_v32->th2_ls0         = awb_meas.ic3Dyuv2Range_param[0].thcure_th[2];
581*4882a593Smuzhiyun     awb_cfg_v32->th3_ls0         = awb_meas.ic3Dyuv2Range_param[0].thcure_th[3];
582*4882a593Smuzhiyun     awb_cfg_v32->th4_ls0         = awb_meas.ic3Dyuv2Range_param[0].thcure_th[4];
583*4882a593Smuzhiyun     awb_cfg_v32->th5_ls0         = awb_meas.ic3Dyuv2Range_param[0].thcure_th[5];
584*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls0_u   = awb_meas.ic3Dyuv2Range_param[0].lineP1[0];
585*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls0_v   = awb_meas.ic3Dyuv2Range_param[0].lineP1[1];
586*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls0_y   = awb_meas.ic3Dyuv2Range_param[0].lineP1[2];
587*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls0_u   = awb_meas.ic3Dyuv2Range_param[0].vP1P2[0];
588*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls0_v   = awb_meas.ic3Dyuv2Range_param[0].vP1P2[1];
589*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls0_y   = awb_meas.ic3Dyuv2Range_param[0].vP1P2[2];
590*4882a593Smuzhiyun     awb_cfg_v32->dis_x1x2_ls0    = awb_meas.ic3Dyuv2Range_param[0].disP1P2;
591*4882a593Smuzhiyun     awb_cfg_v32->rotu0_ls1       = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[0];
592*4882a593Smuzhiyun     awb_cfg_v32->rotu1_ls1       = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[1];
593*4882a593Smuzhiyun     awb_cfg_v32->rotu2_ls1       = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[2];
594*4882a593Smuzhiyun     awb_cfg_v32->rotu3_ls1       = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[3];
595*4882a593Smuzhiyun     awb_cfg_v32->rotu4_ls1       = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[4];
596*4882a593Smuzhiyun     awb_cfg_v32->rotu5_ls1       = awb_meas.ic3Dyuv2Range_param[1].thcurve_u[5];
597*4882a593Smuzhiyun     awb_cfg_v32->th0_ls1         = awb_meas.ic3Dyuv2Range_param[1].thcure_th[0];
598*4882a593Smuzhiyun     awb_cfg_v32->th1_ls1         = awb_meas.ic3Dyuv2Range_param[1].thcure_th[1];
599*4882a593Smuzhiyun     awb_cfg_v32->th2_ls1         = awb_meas.ic3Dyuv2Range_param[1].thcure_th[2];
600*4882a593Smuzhiyun     awb_cfg_v32->th3_ls1         = awb_meas.ic3Dyuv2Range_param[1].thcure_th[3];
601*4882a593Smuzhiyun     awb_cfg_v32->th4_ls1         = awb_meas.ic3Dyuv2Range_param[1].thcure_th[4];
602*4882a593Smuzhiyun     awb_cfg_v32->th5_ls1         = awb_meas.ic3Dyuv2Range_param[1].thcure_th[5];
603*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls1_u   = awb_meas.ic3Dyuv2Range_param[1].lineP1[0];
604*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls1_v   = awb_meas.ic3Dyuv2Range_param[1].lineP1[1];
605*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls1_y   = awb_meas.ic3Dyuv2Range_param[1].lineP1[2];
606*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls1_u   = awb_meas.ic3Dyuv2Range_param[1].vP1P2[0];
607*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls1_v   = awb_meas.ic3Dyuv2Range_param[1].vP1P2[1];
608*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls1_y   = awb_meas.ic3Dyuv2Range_param[1].vP1P2[2];
609*4882a593Smuzhiyun     awb_cfg_v32->dis_x1x2_ls1    = awb_meas.ic3Dyuv2Range_param[1].disP1P2;
610*4882a593Smuzhiyun     awb_cfg_v32->rotu0_ls2       = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[0];
611*4882a593Smuzhiyun     awb_cfg_v32->rotu1_ls2       = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[1];
612*4882a593Smuzhiyun     awb_cfg_v32->rotu2_ls2       = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[2];
613*4882a593Smuzhiyun     awb_cfg_v32->rotu3_ls2       = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[3];
614*4882a593Smuzhiyun     awb_cfg_v32->rotu4_ls2       = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[4];
615*4882a593Smuzhiyun     awb_cfg_v32->rotu5_ls2       = awb_meas.ic3Dyuv2Range_param[2].thcurve_u[5];
616*4882a593Smuzhiyun     awb_cfg_v32->th0_ls2         = awb_meas.ic3Dyuv2Range_param[2].thcure_th[0];
617*4882a593Smuzhiyun     awb_cfg_v32->th1_ls2         = awb_meas.ic3Dyuv2Range_param[2].thcure_th[1];
618*4882a593Smuzhiyun     awb_cfg_v32->th2_ls2         = awb_meas.ic3Dyuv2Range_param[2].thcure_th[2];
619*4882a593Smuzhiyun     awb_cfg_v32->th3_ls2         = awb_meas.ic3Dyuv2Range_param[2].thcure_th[3];
620*4882a593Smuzhiyun     awb_cfg_v32->th4_ls2         = awb_meas.ic3Dyuv2Range_param[2].thcure_th[4];
621*4882a593Smuzhiyun     awb_cfg_v32->th5_ls2         = awb_meas.ic3Dyuv2Range_param[2].thcure_th[5];
622*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls2_u   = awb_meas.ic3Dyuv2Range_param[2].lineP1[0];
623*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls2_v   = awb_meas.ic3Dyuv2Range_param[2].lineP1[1];
624*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls2_y   = awb_meas.ic3Dyuv2Range_param[2].lineP1[2];
625*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls2_u   = awb_meas.ic3Dyuv2Range_param[2].vP1P2[0];
626*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls2_v   = awb_meas.ic3Dyuv2Range_param[2].vP1P2[1];
627*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls2_y   = awb_meas.ic3Dyuv2Range_param[2].vP1P2[2];
628*4882a593Smuzhiyun     awb_cfg_v32->dis_x1x2_ls2    = awb_meas.ic3Dyuv2Range_param[2].disP1P2;
629*4882a593Smuzhiyun 
630*4882a593Smuzhiyun     awb_cfg_v32->rotu0_ls3        = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[0];
631*4882a593Smuzhiyun     awb_cfg_v32->rotu1_ls3        = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[1];
632*4882a593Smuzhiyun     awb_cfg_v32->rotu2_ls3        = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[2];
633*4882a593Smuzhiyun     awb_cfg_v32->rotu3_ls3        = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[3];
634*4882a593Smuzhiyun     awb_cfg_v32->rotu4_ls3        = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[4];
635*4882a593Smuzhiyun     awb_cfg_v32->rotu5_ls3        = awb_meas.ic3Dyuv2Range_param[3].thcurve_u[5];
636*4882a593Smuzhiyun     awb_cfg_v32->th0_ls3          = awb_meas.ic3Dyuv2Range_param[3].thcure_th[0];
637*4882a593Smuzhiyun     awb_cfg_v32->th1_ls3          = awb_meas.ic3Dyuv2Range_param[3].thcure_th[1];
638*4882a593Smuzhiyun     awb_cfg_v32->th2_ls3          = awb_meas.ic3Dyuv2Range_param[3].thcure_th[2];
639*4882a593Smuzhiyun     awb_cfg_v32->th3_ls3          = awb_meas.ic3Dyuv2Range_param[3].thcure_th[3];
640*4882a593Smuzhiyun     awb_cfg_v32->th4_ls3          = awb_meas.ic3Dyuv2Range_param[3].thcure_th[4];
641*4882a593Smuzhiyun     awb_cfg_v32->th5_ls3          = awb_meas.ic3Dyuv2Range_param[3].thcure_th[5];
642*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls3_u    = awb_meas.ic3Dyuv2Range_param[3].lineP1[0];
643*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls3_v    = awb_meas.ic3Dyuv2Range_param[3].lineP1[1];
644*4882a593Smuzhiyun     awb_cfg_v32->coor_x1_ls3_y    = awb_meas.ic3Dyuv2Range_param[3].lineP1[2];
645*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls3_u    = awb_meas.ic3Dyuv2Range_param[3].vP1P2[0];
646*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls3_v    = awb_meas.ic3Dyuv2Range_param[3].vP1P2[1];
647*4882a593Smuzhiyun     awb_cfg_v32->vec_x21_ls3_y    = awb_meas.ic3Dyuv2Range_param[3].vP1P2[2];
648*4882a593Smuzhiyun     awb_cfg_v32->dis_x1x2_ls3     = awb_meas.ic3Dyuv2Range_param[3].disP1P2;
649*4882a593Smuzhiyun     awb_cfg_v32->wt0              = awb_meas.rgb2xy_param.pseudoLuminanceWeight[0];
650*4882a593Smuzhiyun     awb_cfg_v32->wt1              = awb_meas.rgb2xy_param.pseudoLuminanceWeight[1];
651*4882a593Smuzhiyun     awb_cfg_v32->wt2              = awb_meas.rgb2xy_param.pseudoLuminanceWeight[2];
652*4882a593Smuzhiyun     awb_cfg_v32->mat0_x           = awb_meas.rgb2xy_param.rotationMat[0];
653*4882a593Smuzhiyun     awb_cfg_v32->mat1_x           = awb_meas.rgb2xy_param.rotationMat[1];
654*4882a593Smuzhiyun     awb_cfg_v32->mat2_x           = awb_meas.rgb2xy_param.rotationMat[2];
655*4882a593Smuzhiyun     awb_cfg_v32->mat0_y           = awb_meas.rgb2xy_param.rotationMat[3];
656*4882a593Smuzhiyun     awb_cfg_v32->mat1_y           = awb_meas.rgb2xy_param.rotationMat[4];
657*4882a593Smuzhiyun     awb_cfg_v32->mat2_y           = awb_meas.rgb2xy_param.rotationMat[5];
658*4882a593Smuzhiyun     awb_cfg_v32->nor_x0_0         = awb_meas.xyRange_param[0].NorrangeX[0];
659*4882a593Smuzhiyun     awb_cfg_v32->nor_x1_0         = awb_meas.xyRange_param[0].NorrangeX[1];
660*4882a593Smuzhiyun     awb_cfg_v32->nor_y0_0         = awb_meas.xyRange_param[0].NorrangeY[0];
661*4882a593Smuzhiyun     awb_cfg_v32->nor_y1_0         = awb_meas.xyRange_param[0].NorrangeY[1];
662*4882a593Smuzhiyun     awb_cfg_v32->big_x0_0         = awb_meas.xyRange_param[0].SperangeX[0];
663*4882a593Smuzhiyun     awb_cfg_v32->big_x1_0         = awb_meas.xyRange_param[0].SperangeX[1];
664*4882a593Smuzhiyun     awb_cfg_v32->big_y0_0         = awb_meas.xyRange_param[0].SperangeY[0];
665*4882a593Smuzhiyun     awb_cfg_v32->big_y1_0         = awb_meas.xyRange_param[0].SperangeY[1];
666*4882a593Smuzhiyun     awb_cfg_v32->nor_x0_1         = awb_meas.xyRange_param[1].NorrangeX[0];
667*4882a593Smuzhiyun     awb_cfg_v32->nor_x1_1         = awb_meas.xyRange_param[1].NorrangeX[1];
668*4882a593Smuzhiyun     awb_cfg_v32->nor_y0_1         = awb_meas.xyRange_param[1].NorrangeY[0];
669*4882a593Smuzhiyun     awb_cfg_v32->nor_y1_1         = awb_meas.xyRange_param[1].NorrangeY[1];
670*4882a593Smuzhiyun     awb_cfg_v32->big_x0_1         = awb_meas.xyRange_param[1].SperangeX[0];
671*4882a593Smuzhiyun     awb_cfg_v32->big_x1_1         = awb_meas.xyRange_param[1].SperangeX[1];
672*4882a593Smuzhiyun     awb_cfg_v32->big_y0_1         = awb_meas.xyRange_param[1].SperangeY[0];
673*4882a593Smuzhiyun     awb_cfg_v32->big_y1_1         = awb_meas.xyRange_param[1].SperangeY[1];
674*4882a593Smuzhiyun     awb_cfg_v32->nor_x0_2         = awb_meas.xyRange_param[2].NorrangeX[0];
675*4882a593Smuzhiyun     awb_cfg_v32->nor_x1_2         = awb_meas.xyRange_param[2].NorrangeX[1];
676*4882a593Smuzhiyun     awb_cfg_v32->nor_y0_2         = awb_meas.xyRange_param[2].NorrangeY[0];
677*4882a593Smuzhiyun     awb_cfg_v32->nor_y1_2         = awb_meas.xyRange_param[2].NorrangeY[1];
678*4882a593Smuzhiyun     awb_cfg_v32->big_x0_2         = awb_meas.xyRange_param[2].SperangeX[0];
679*4882a593Smuzhiyun     awb_cfg_v32->big_x1_2         = awb_meas.xyRange_param[2].SperangeX[1];
680*4882a593Smuzhiyun     awb_cfg_v32->big_y0_2         = awb_meas.xyRange_param[2].SperangeY[0];
681*4882a593Smuzhiyun     awb_cfg_v32->big_y1_2         = awb_meas.xyRange_param[2].SperangeY[1];
682*4882a593Smuzhiyun     awb_cfg_v32->nor_x0_3         = awb_meas.xyRange_param[3].NorrangeX[0];
683*4882a593Smuzhiyun     awb_cfg_v32->nor_x1_3         = awb_meas.xyRange_param[3].NorrangeX[1];
684*4882a593Smuzhiyun     awb_cfg_v32->nor_y0_3         = awb_meas.xyRange_param[3].NorrangeY[0];
685*4882a593Smuzhiyun     awb_cfg_v32->nor_y1_3         = awb_meas.xyRange_param[3].NorrangeY[1];
686*4882a593Smuzhiyun     awb_cfg_v32->big_x0_3         = awb_meas.xyRange_param[3].SperangeX[0];
687*4882a593Smuzhiyun     awb_cfg_v32->big_x1_3         = awb_meas.xyRange_param[3].SperangeX[1];
688*4882a593Smuzhiyun     awb_cfg_v32->big_y0_3         = awb_meas.xyRange_param[3].SperangeY[0];
689*4882a593Smuzhiyun     awb_cfg_v32->big_y1_3         = awb_meas.xyRange_param[3].SperangeY[1];
690*4882a593Smuzhiyun     awb_cfg_v32->pre_wbgain_inv_r = awb_meas.pre_wbgain_inv_r;
691*4882a593Smuzhiyun     awb_cfg_v32->pre_wbgain_inv_g = awb_meas.pre_wbgain_inv_g;
692*4882a593Smuzhiyun     awb_cfg_v32->pre_wbgain_inv_b = awb_meas.pre_wbgain_inv_b;
693*4882a593Smuzhiyun     awb_cfg_v32->multiwindow_en      = awb_meas.multiwindow_en;
694*4882a593Smuzhiyun     awb_cfg_v32->multiwindow0_h_offs = awb_meas.multiwindow[0][0];
695*4882a593Smuzhiyun     awb_cfg_v32->multiwindow0_v_offs = awb_meas.multiwindow[0][1];
696*4882a593Smuzhiyun     awb_cfg_v32->multiwindow0_h_size =
697*4882a593Smuzhiyun         awb_meas.multiwindow[0][0] + awb_meas.multiwindow[0][2];
698*4882a593Smuzhiyun     awb_cfg_v32->multiwindow0_v_size =
699*4882a593Smuzhiyun         awb_meas.multiwindow[0][1] + awb_meas.multiwindow[0][3];
700*4882a593Smuzhiyun     awb_cfg_v32->multiwindow1_h_offs = awb_meas.multiwindow[1][0];
701*4882a593Smuzhiyun     awb_cfg_v32->multiwindow1_v_offs = awb_meas.multiwindow[1][1];
702*4882a593Smuzhiyun     awb_cfg_v32->multiwindow1_h_size =
703*4882a593Smuzhiyun         awb_meas.multiwindow[1][0] + awb_meas.multiwindow[1][2];
704*4882a593Smuzhiyun     awb_cfg_v32->multiwindow1_v_size =
705*4882a593Smuzhiyun         awb_meas.multiwindow[1][1] + awb_meas.multiwindow[1][3];
706*4882a593Smuzhiyun     awb_cfg_v32->multiwindow2_h_offs = awb_meas.multiwindow[2][0];
707*4882a593Smuzhiyun     awb_cfg_v32->multiwindow2_v_offs = awb_meas.multiwindow[2][1];
708*4882a593Smuzhiyun     awb_cfg_v32->multiwindow2_h_size =
709*4882a593Smuzhiyun         awb_meas.multiwindow[2][0] + awb_meas.multiwindow[2][2];
710*4882a593Smuzhiyun     awb_cfg_v32->multiwindow2_v_size =
711*4882a593Smuzhiyun         awb_meas.multiwindow[2][1] + awb_meas.multiwindow[2][3];
712*4882a593Smuzhiyun     awb_cfg_v32->multiwindow3_h_offs = awb_meas.multiwindow[3][0];
713*4882a593Smuzhiyun     awb_cfg_v32->multiwindow3_v_offs = awb_meas.multiwindow[3][1];
714*4882a593Smuzhiyun     awb_cfg_v32->multiwindow3_h_size =
715*4882a593Smuzhiyun         awb_meas.multiwindow[3][0] + awb_meas.multiwindow[3][2];
716*4882a593Smuzhiyun     awb_cfg_v32->multiwindow3_v_size =
717*4882a593Smuzhiyun         awb_meas.multiwindow[3][1] + awb_meas.multiwindow[3][3];
718*4882a593Smuzhiyun     int exc_wp_region0_excen0 =
719*4882a593Smuzhiyun         awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
720*4882a593Smuzhiyun     int exc_wp_region0_excen1 =
721*4882a593Smuzhiyun         awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
722*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_excen = ((exc_wp_region0_excen1 << 1) + exc_wp_region0_excen0) & 0x3;
723*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_measen = awb_meas.excludeWpRange[0].measureEnable;
724*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_domain = awb_meas.excludeWpRange[0].domain;
725*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_xu0    = awb_meas.excludeWpRange[0].xu[0];
726*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_xu1    = awb_meas.excludeWpRange[0].xu[1];
727*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_yv0    = awb_meas.excludeWpRange[0].yv[0];
728*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_yv1    = awb_meas.excludeWpRange[0].yv[1];
729*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region0_weight = awb_meas.excludeWpRange[0].weightInculde;
730*4882a593Smuzhiyun     int exc_wp_region1_excen0 =
731*4882a593Smuzhiyun         awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
732*4882a593Smuzhiyun     int exc_wp_region1_excen1 =
733*4882a593Smuzhiyun         awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
734*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_excen =  ((exc_wp_region1_excen1 << 1) + exc_wp_region1_excen0) & 0x3;
735*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_measen = awb_meas.excludeWpRange[1].measureEnable;
736*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_domain = awb_meas.excludeWpRange[1].domain;
737*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_xu0    = awb_meas.excludeWpRange[1].xu[0];
738*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_xu1    = awb_meas.excludeWpRange[1].xu[1];
739*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_yv0    = awb_meas.excludeWpRange[1].yv[0];
740*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_yv1    = awb_meas.excludeWpRange[1].yv[1];
741*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region1_weight = awb_meas.excludeWpRange[1].weightInculde;
742*4882a593Smuzhiyun     int exc_wp_region2_excen0 =
743*4882a593Smuzhiyun         awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
744*4882a593Smuzhiyun     int exc_wp_region2_excen1 =
745*4882a593Smuzhiyun         awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
746*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_excen = ((exc_wp_region2_excen1 << 1) + exc_wp_region2_excen0) & 0x3;
747*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_measen = awb_meas.excludeWpRange[2].measureEnable;
748*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_domain = awb_meas.excludeWpRange[2].domain;
749*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_xu0    = awb_meas.excludeWpRange[2].xu[0];
750*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_xu1    = awb_meas.excludeWpRange[2].xu[1];
751*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_yv0    = awb_meas.excludeWpRange[2].yv[0];
752*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_yv1    = awb_meas.excludeWpRange[2].yv[1];
753*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region2_weight = awb_meas.excludeWpRange[2].weightInculde;
754*4882a593Smuzhiyun     int exc_wp_region3_excen0 =
755*4882a593Smuzhiyun         awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
756*4882a593Smuzhiyun     int exc_wp_region3_excen1 =
757*4882a593Smuzhiyun         awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
758*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_excen = ((exc_wp_region3_excen1 << 1) + exc_wp_region3_excen0) & 0x3;
759*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_measen = awb_meas.excludeWpRange[3].measureEnable;
760*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_domain = awb_meas.excludeWpRange[3].domain;
761*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_xu0    = awb_meas.excludeWpRange[3].xu[0];
762*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_xu1    = awb_meas.excludeWpRange[3].xu[1];
763*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_yv0    = awb_meas.excludeWpRange[3].yv[0];
764*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_yv1    = awb_meas.excludeWpRange[3].yv[1];
765*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region3_weight = awb_meas.excludeWpRange[3].weightInculde;
766*4882a593Smuzhiyun     int exc_wp_region4_excen0 =
767*4882a593Smuzhiyun         awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
768*4882a593Smuzhiyun     int exc_wp_region4_excen1 =
769*4882a593Smuzhiyun         awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
770*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_excen = ((exc_wp_region4_excen1 << 1) + exc_wp_region4_excen0) & 0x3;
771*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_domain = awb_meas.excludeWpRange[4].domain;
772*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_xu0    = awb_meas.excludeWpRange[4].xu[0];
773*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_xu1    = awb_meas.excludeWpRange[4].xu[1];
774*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_yv0    = awb_meas.excludeWpRange[4].yv[0];
775*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_yv1    = awb_meas.excludeWpRange[4].yv[1];
776*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region4_weight = awb_meas.excludeWpRange[4].weightInculde;
777*4882a593Smuzhiyun     int exc_wp_region5_excen0 =
778*4882a593Smuzhiyun         awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
779*4882a593Smuzhiyun     int exc_wp_region5_excen1 =
780*4882a593Smuzhiyun         awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
781*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_excen = ((exc_wp_region5_excen1 << 1) + exc_wp_region5_excen0) & 0x3;
782*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_domain = awb_meas.excludeWpRange[5].domain;
783*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_xu0    = awb_meas.excludeWpRange[5].xu[0];
784*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_xu1    = awb_meas.excludeWpRange[5].xu[1];
785*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_yv0    = awb_meas.excludeWpRange[5].yv[0];
786*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_yv1    = awb_meas.excludeWpRange[5].yv[1];
787*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region5_weight = awb_meas.excludeWpRange[5].weightInculde;
788*4882a593Smuzhiyun     int exc_wp_region6_excen0 =
789*4882a593Smuzhiyun         awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
790*4882a593Smuzhiyun     int exc_wp_region6_excen1 =
791*4882a593Smuzhiyun         awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
792*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_excen = ((exc_wp_region6_excen1 << 1) + exc_wp_region6_excen0) & 0x3;
793*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_domain = awb_meas.excludeWpRange[6].domain;
794*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_xu0    = awb_meas.excludeWpRange[6].xu[0];
795*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_xu1    = awb_meas.excludeWpRange[6].xu[1];
796*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_yv0    = awb_meas.excludeWpRange[6].yv[0];
797*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_yv1    = awb_meas.excludeWpRange[6].yv[1];
798*4882a593Smuzhiyun     awb_cfg_v32->exc_wp_region6_weight = awb_meas.excludeWpRange[6].weightInculde;
799*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y0   = awb_meas.wpDiffwei_y[0];
800*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y1   = awb_meas.wpDiffwei_y[1];
801*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y2   = awb_meas.wpDiffwei_y[2];
802*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y3   = awb_meas.wpDiffwei_y[3];
803*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y4   = awb_meas.wpDiffwei_y[4];
804*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y5   = awb_meas.wpDiffwei_y[5];
805*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y6   = awb_meas.wpDiffwei_y[6];
806*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y7   = awb_meas.wpDiffwei_y[7];
807*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_y8   = awb_meas.wpDiffwei_y[8];
808*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w0   = awb_meas.wpDiffwei_w[0];
809*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w1   = awb_meas.wpDiffwei_w[1];
810*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w2   = awb_meas.wpDiffwei_w[2];
811*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w3   = awb_meas.wpDiffwei_w[3];
812*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w4   = awb_meas.wpDiffwei_w[4];
813*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w5   = awb_meas.wpDiffwei_w[5];
814*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w6   = awb_meas.wpDiffwei_w[6];
815*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w7   = awb_meas.wpDiffwei_w[7];
816*4882a593Smuzhiyun     awb_cfg_v32->wp_luma_weicurve_w8   = awb_meas.wpDiffwei_w[8];
817*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V32LT
818*4882a593Smuzhiyun     for (int i = 0; i < ISP32L_RAWAWB_WEIGHT_NUM; i++) {
819*4882a593Smuzhiyun         awb_cfg_v32->win_weight[i] = awb_meas.blkWeight[i*5]|
820*4882a593Smuzhiyun             (awb_meas.blkWeight[i*5+1]<<6)|
821*4882a593Smuzhiyun             (awb_meas.blkWeight[i*5+2]<<12)|
822*4882a593Smuzhiyun             (awb_meas.blkWeight[i*5+3]<<18)|
823*4882a593Smuzhiyun             (awb_meas.blkWeight[i*5+4]<<24);
824*4882a593Smuzhiyun     }
825*4882a593Smuzhiyun #else
826*4882a593Smuzhiyun     for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) {
827*4882a593Smuzhiyun         awb_cfg_v32->wp_blk_wei_w[i] = awb_meas.blkWeight[i];
828*4882a593Smuzhiyun     }
829*4882a593Smuzhiyun #endif
830*4882a593Smuzhiyun     awb_cfg_v32->blk_rtdw_measure_en = awb_meas.blk_rtdw_measure_en;
831*4882a593Smuzhiyun 
832*4882a593Smuzhiyun     WriteAwbReg(awb_cfg_v32);
833*4882a593Smuzhiyun 
834*4882a593Smuzhiyun }
835*4882a593Smuzhiyun #endif
836*4882a593Smuzhiyun #if RKAIQ_HAVE_AF_V31 || RKAIQ_ONLY_AF_STATS_V31
convertAiqAfToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_af_v31_t & af_data,bool af_cfg_udpate)837*4882a593Smuzhiyun void Isp32Params::convertAiqAfToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
838*4882a593Smuzhiyun         const rk_aiq_isp_af_v31_t& af_data,
839*4882a593Smuzhiyun         bool af_cfg_udpate) {
840*4882a593Smuzhiyun     int i;
841*4882a593Smuzhiyun 
842*4882a593Smuzhiyun     if (!af_cfg_udpate) return;
843*4882a593Smuzhiyun 
844*4882a593Smuzhiyun     if (af_data.af_en) isp_cfg.module_ens |= ISP2X_MODULE_RAWAF;
845*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP2X_MODULE_RAWAF;
846*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAF;
847*4882a593Smuzhiyun 
848*4882a593Smuzhiyun     isp_cfg.meas.rawaf.rawaf_sel      = af_data.rawaf_sel;
849*4882a593Smuzhiyun     isp_cfg.meas.rawaf.gamma_en       = af_data.gamma_en;
850*4882a593Smuzhiyun     isp_cfg.meas.rawaf.gaus_en        = af_data.gaus_en;
851*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_fir_sel     = af_data.v1_fir_sel;
852*4882a593Smuzhiyun     isp_cfg.meas.rawaf.hiir_en        = af_data.hiir_en;
853*4882a593Smuzhiyun     isp_cfg.meas.rawaf.viir_en        = af_data.viir_en;
854*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_fv_mode     = af_data.v1_fv_outmode;
855*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2_fv_mode     = af_data.v2_fv_outmode;
856*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1_fv_mode     = af_data.h1_fv_outmode;
857*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2_fv_mode     = af_data.h2_fv_outmode;
858*4882a593Smuzhiyun     isp_cfg.meas.rawaf.ldg_en         = af_data.ldg_en;
859*4882a593Smuzhiyun     isp_cfg.meas.rawaf.accu_8bit_mode = af_data.accu_8bit_mode;
860*4882a593Smuzhiyun     isp_cfg.meas.rawaf.y_mode         = af_data.y_mode;
861*4882a593Smuzhiyun     isp_cfg.meas.rawaf.vldg_sel       = af_data.vldg_sel;
862*4882a593Smuzhiyun     isp_cfg.meas.rawaf.sobel_sel      = af_data.sobel_sel;
863*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_dnscl_mode   = af_data.v_dnscl_mode;
864*4882a593Smuzhiyun     isp_cfg.meas.rawaf.from_awb       = af_data.from_awb;
865*4882a593Smuzhiyun     isp_cfg.meas.rawaf.from_ynr       = af_data.from_ynr;
866*4882a593Smuzhiyun     if (af_data.af_en) {
867*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_mode = af_data.ae_mode;
868*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_config_use = af_data.ae_config_use;
869*4882a593Smuzhiyun     } else {
870*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_mode = 0;
871*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_config_use = 1;
872*4882a593Smuzhiyun     }
873*4882a593Smuzhiyun 
874*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.line_en, af_data.line_en,
875*4882a593Smuzhiyun            ISP32_RAWAF_LINE_NUM * sizeof(unsigned char));
876*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.line_num, af_data.line_num,
877*4882a593Smuzhiyun            ISP32_RAWAF_LINE_NUM * sizeof(unsigned char));
878*4882a593Smuzhiyun 
879*4882a593Smuzhiyun     isp_cfg.meas.rawaf.num_afm_win   = af_data.window_num;
880*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].h_offs = af_data.wina_h_offs;
881*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].v_offs = af_data.wina_v_offs;
882*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].h_size = af_data.wina_h_size;
883*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].v_size = af_data.wina_v_size;
884*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].h_offs = af_data.winb_h_offs;
885*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].v_offs = af_data.winb_v_offs;
886*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].h_size = af_data.winb_h_size;
887*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].v_size = af_data.winb_v_size;
888*4882a593Smuzhiyun 
889*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.gamma_y, af_data.gamma_y,
890*4882a593Smuzhiyun            ISP32_RAWAF_GAMMA_NUM * sizeof(unsigned short));
891*4882a593Smuzhiyun 
892*4882a593Smuzhiyun     /* THRES */
893*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_thres = af_data.thres;
894*4882a593Smuzhiyun     /* VAR_SHIFT */
895*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_var_shift[0] = af_data.shift_sum_a;
896*4882a593Smuzhiyun     isp_cfg.meas.rawaf.lum_var_shift[0] = af_data.shift_y_a;
897*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_var_shift[1] = af_data.shift_sum_b;
898*4882a593Smuzhiyun     isp_cfg.meas.rawaf.lum_var_shift[1] = af_data.shift_y_b;
899*4882a593Smuzhiyun     /* HVIIR_VAR_SHIFT */
900*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1iir_var_shift = af_data.h1_fv_shift;
901*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2iir_var_shift = af_data.h2_fv_shift;
902*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1iir_var_shift = af_data.v1_fv_shift;
903*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2iir_var_shift = af_data.v2_fv_shift;
904*4882a593Smuzhiyun 
905*4882a593Smuzhiyun     /* HIIR_THRESH */
906*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_thresh = af_data.h_fv_thresh;
907*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_thresh = af_data.v_fv_thresh;
908*4882a593Smuzhiyun 
909*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_CURVE_NUM; i++) {
910*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_lumth = af_data.h_ldg_lumth[i];
911*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_gain  = af_data.h_ldg_gain[i];
912*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_gslp  = af_data.h_ldg_gslp[i];
913*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_lumth = af_data.v_ldg_lumth[i];
914*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_gain  = af_data.v_ldg_gain[i];
915*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_gslp  = af_data.v_ldg_gslp[i];
916*4882a593Smuzhiyun     }
917*4882a593Smuzhiyun 
918*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_HIIR_COE_NUM; i++) {
919*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h1iir1_coe[i] = af_data.h1_iir1_coe[i];
920*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h1iir2_coe[i] = af_data.h1_iir2_coe[i];
921*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h2iir1_coe[i] = af_data.h2_iir1_coe[i];
922*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h2iir2_coe[i] = af_data.h2_iir2_coe[i];
923*4882a593Smuzhiyun     }
924*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_GAUS_COE_NUM; i++) {
925*4882a593Smuzhiyun         isp_cfg.meas.rawaf.gaus_coe[i] = af_data.gaus_coe[i];
926*4882a593Smuzhiyun     }
927*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_VIIR_COE_NUM; i++) {
928*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v1iir_coe[i] = af_data.v1_iir_coe[i];
929*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v2iir_coe[i] = af_data.v2_iir_coe[i];
930*4882a593Smuzhiyun     }
931*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_VFIR_COE_NUM; i++) {
932*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v1fir_coe[i] = af_data.v1_fir_coe[i];
933*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v2fir_coe[i] = af_data.v2_fir_coe[i];
934*4882a593Smuzhiyun     }
935*4882a593Smuzhiyun     isp_cfg.meas.rawaf.highlit_thresh = af_data.highlit_thresh;
936*4882a593Smuzhiyun 
937*4882a593Smuzhiyun     // rawae3 is used by af now!!!
938*4882a593Smuzhiyun     if (af_data.af_en && af_data.ae_mode) {
939*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_RAWAE3;
940*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_RAWAE3;
941*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAE3;
942*4882a593Smuzhiyun 
943*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.h_offs = af_data.wina_h_offs;
944*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.v_offs = af_data.wina_v_offs;
945*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.h_size = af_data.wina_h_size;
946*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.v_size = af_data.wina_v_size;
947*4882a593Smuzhiyun     }
948*4882a593Smuzhiyun     mLatestMeasCfg.rawaf = isp_cfg.meas.rawaf;
949*4882a593Smuzhiyun     mLatestMeasCfg.rawae3 = isp_cfg.meas.rawae3;
950*4882a593Smuzhiyun }
951*4882a593Smuzhiyun #endif
952*4882a593Smuzhiyun #if RKAIQ_HAVE_AF_V32_LITE || RKAIQ_ONLY_AF_STATS_V32_LITE
convertAiqAfLiteToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_af_v32_t & af_data,bool af_cfg_udpate)953*4882a593Smuzhiyun void Isp32Params::convertAiqAfLiteToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
954*4882a593Smuzhiyun                                             const rk_aiq_isp_af_v32_t& af_data,
955*4882a593Smuzhiyun                                             bool af_cfg_udpate) {
956*4882a593Smuzhiyun     int i;
957*4882a593Smuzhiyun 
958*4882a593Smuzhiyun     if (!af_cfg_udpate) return;
959*4882a593Smuzhiyun 
960*4882a593Smuzhiyun     if (af_data.af_en) isp_cfg.module_ens |= ISP2X_MODULE_RAWAF;
961*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP2X_MODULE_RAWAF;
962*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAF;
963*4882a593Smuzhiyun 
964*4882a593Smuzhiyun     isp_cfg.meas.rawaf.rawaf_sel      = af_data.rawaf_sel;
965*4882a593Smuzhiyun     isp_cfg.meas.rawaf.gamma_en       = af_data.gamma_en;
966*4882a593Smuzhiyun     isp_cfg.meas.rawaf.gaus_en        = af_data.gaus_en;
967*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_fir_sel     = af_data.v1_fir_sel;
968*4882a593Smuzhiyun     isp_cfg.meas.rawaf.hiir_en        = af_data.hiir_en;
969*4882a593Smuzhiyun     isp_cfg.meas.rawaf.viir_en        = af_data.viir_en;
970*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_fv_mode     = af_data.v1_fv_outmode;
971*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2_fv_mode     = af_data.v2_fv_outmode;
972*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1_fv_mode     = af_data.h1_fv_outmode;
973*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2_fv_mode     = af_data.h2_fv_outmode;
974*4882a593Smuzhiyun     isp_cfg.meas.rawaf.ldg_en         = af_data.ldg_en;
975*4882a593Smuzhiyun     isp_cfg.meas.rawaf.accu_8bit_mode = af_data.accu_8bit_mode;
976*4882a593Smuzhiyun     isp_cfg.meas.rawaf.y_mode         = af_data.y_mode;
977*4882a593Smuzhiyun     isp_cfg.meas.rawaf.vldg_sel       = af_data.vldg_sel;
978*4882a593Smuzhiyun     isp_cfg.meas.rawaf.sobel_sel      = af_data.sobel_sel;
979*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_dnscl_mode   = af_data.v_dnscl_mode;
980*4882a593Smuzhiyun     isp_cfg.meas.rawaf.from_awb       = af_data.from_awb;
981*4882a593Smuzhiyun     isp_cfg.meas.rawaf.from_ynr       = af_data.from_ynr;
982*4882a593Smuzhiyun     if (af_data.af_en) {
983*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_mode = af_data.ae_mode;
984*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_config_use = af_data.ae_config_use;
985*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_sel = af_data.ae_sel;
986*4882a593Smuzhiyun     } else {
987*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_mode = 0;
988*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_config_use = 1;
989*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_sel = 1;
990*4882a593Smuzhiyun     }
991*4882a593Smuzhiyun 
992*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.line_en, af_data.line_en,
993*4882a593Smuzhiyun            ISP32_RAWAF_LINE_NUM * sizeof(unsigned char));
994*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.line_num, af_data.line_num,
995*4882a593Smuzhiyun            ISP32_RAWAF_LINE_NUM * sizeof(unsigned char));
996*4882a593Smuzhiyun 
997*4882a593Smuzhiyun     isp_cfg.meas.rawaf.num_afm_win   = af_data.window_num;
998*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].h_offs = af_data.wina_h_offs;
999*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].v_offs = af_data.wina_v_offs;
1000*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].h_size = af_data.wina_h_size;
1001*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].v_size = af_data.wina_v_size;
1002*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].h_offs = af_data.winb_h_offs;
1003*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].v_offs = af_data.winb_v_offs;
1004*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].h_size = af_data.winb_h_size;
1005*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].v_size = af_data.winb_v_size;
1006*4882a593Smuzhiyun 
1007*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.gamma_y, af_data.gamma_y,
1008*4882a593Smuzhiyun            ISP32_RAWAF_GAMMA_NUM * sizeof(unsigned short));
1009*4882a593Smuzhiyun 
1010*4882a593Smuzhiyun     /* THRES */
1011*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_thres = af_data.thres;
1012*4882a593Smuzhiyun     /* VAR_SHIFT */
1013*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_var_shift[0] = af_data.shift_sum_a;
1014*4882a593Smuzhiyun     isp_cfg.meas.rawaf.lum_var_shift[0] = af_data.shift_y_a;
1015*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_var_shift[1] = af_data.shift_sum_b;
1016*4882a593Smuzhiyun     isp_cfg.meas.rawaf.lum_var_shift[1] = af_data.shift_y_b;
1017*4882a593Smuzhiyun     /* HVIIR_VAR_SHIFT */
1018*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1iir_var_shift = af_data.h1_fv_shift;
1019*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2iir_var_shift = af_data.h2_fv_shift;
1020*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1iir_var_shift = af_data.v1_fv_shift;
1021*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2iir_var_shift = af_data.v2_fv_shift;
1022*4882a593Smuzhiyun 
1023*4882a593Smuzhiyun     /* HIIR_THRESH */
1024*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_thresh = af_data.h_fv_thresh;
1025*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_limit = af_data.h_fv_limit;
1026*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_slope = af_data.h_fv_slope;
1027*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_thresh = af_data.v_fv_thresh;
1028*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_limit = af_data.v_fv_limit;
1029*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_slope = af_data.v_fv_slope;
1030*4882a593Smuzhiyun 
1031*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_CURVE_NUM; i++) {
1032*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_lumth = af_data.h_ldg_lumth[i];
1033*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_gain  = af_data.h_ldg_gain[i];
1034*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_gslp  = af_data.h_ldg_gslp[i];
1035*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_lumth = af_data.v_ldg_lumth[i];
1036*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_gain  = af_data.v_ldg_gain[i];
1037*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_gslp  = af_data.v_ldg_gslp[i];
1038*4882a593Smuzhiyun     }
1039*4882a593Smuzhiyun 
1040*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_HIIR_COE_NUM; i++) {
1041*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h1iir1_coe[i] = af_data.h1_iir1_coe[i];
1042*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h1iir2_coe[i] = af_data.h1_iir2_coe[i];
1043*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h2iir1_coe[i] = af_data.h2_iir1_coe[i];
1044*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h2iir2_coe[i] = af_data.h2_iir2_coe[i];
1045*4882a593Smuzhiyun     }
1046*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_GAUS_COE_NUM; i++) {
1047*4882a593Smuzhiyun         isp_cfg.meas.rawaf.gaus_coe[i] = af_data.gaus_coe[i];
1048*4882a593Smuzhiyun     }
1049*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_VIIR_COE_NUM; i++) {
1050*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v1iir_coe[i] = af_data.v1_iir_coe[i];
1051*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v2iir_coe[i] = af_data.v2_iir_coe[i];
1052*4882a593Smuzhiyun     }
1053*4882a593Smuzhiyun     for (i = 0; i < ISP32_RAWAF_VFIR_COE_NUM; i++) {
1054*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v1fir_coe[i] = af_data.v1_fir_coe[i];
1055*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v2fir_coe[i] = af_data.v2_fir_coe[i];
1056*4882a593Smuzhiyun     }
1057*4882a593Smuzhiyun     isp_cfg.meas.rawaf.highlit_thresh = af_data.highlit_thresh;
1058*4882a593Smuzhiyun 
1059*4882a593Smuzhiyun     /* af32 add */
1060*4882a593Smuzhiyun     isp_cfg.meas.rawaf.bnr2af_sel = af_data.from_bnr;
1061*4882a593Smuzhiyun     isp_cfg.meas.rawaf.tnrin_shift = af_data.bnrin_shift;
1062*4882a593Smuzhiyun     isp_cfg.meas.rawaf.hldg_dilate_num = af_data.hldg_dilate_num;
1063*4882a593Smuzhiyun     isp_cfg.meas.rawaf.hiir_left_border_mode = af_data.hiir_left_border_mode;
1064*4882a593Smuzhiyun     isp_cfg.meas.rawaf.avg_ds_en = af_data.avg_ds_en;
1065*4882a593Smuzhiyun     isp_cfg.meas.rawaf.avg_ds_mode = af_data.avg_ds_mode;
1066*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1_acc_mode = af_data.h1_acc_mode;
1067*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2_acc_mode = af_data.h2_acc_mode;
1068*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_acc_mode = af_data.v1_acc_mode;
1069*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2_acc_mode = af_data.v2_acc_mode;
1070*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_limit = af_data.h_fv_limit;
1071*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_slope = af_data.h_fv_slope;
1072*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_limit = af_data.v_fv_limit;
1073*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_slope = af_data.v_fv_slope;
1074*4882a593Smuzhiyun     isp_cfg.meas.rawaf.bls_en = af_data.bls_en;
1075*4882a593Smuzhiyun     isp_cfg.meas.rawaf.bls_offset = af_data.bls_offset;
1076*4882a593Smuzhiyun 
1077*4882a593Smuzhiyun     // rawae0 is used by af now!!!
1078*4882a593Smuzhiyun     if (af_data.af_en && af_data.ae_mode) {
1079*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_RAWAE0;
1080*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_RAWAE0;
1081*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAE0;
1082*4882a593Smuzhiyun 
1083*4882a593Smuzhiyun         isp_cfg.meas.rawae0.win.h_offs = af_data.wina_h_offs;
1084*4882a593Smuzhiyun         isp_cfg.meas.rawae0.win.v_offs = af_data.wina_v_offs;
1085*4882a593Smuzhiyun         isp_cfg.meas.rawae0.win.h_size = af_data.wina_h_size;
1086*4882a593Smuzhiyun         isp_cfg.meas.rawae0.win.v_size = af_data.wina_v_size;
1087*4882a593Smuzhiyun     }
1088*4882a593Smuzhiyun     mLatestMeasCfg.rawaf = isp_cfg.meas.rawaf;
1089*4882a593Smuzhiyun     mLatestMeasCfg.rawae3 = isp_cfg.meas.rawae3;
1090*4882a593Smuzhiyun }
1091*4882a593Smuzhiyun #endif
1092*4882a593Smuzhiyun #if RKAIQ_HAVE_CAC_V11
convertAiqCacToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_cac_v32_t & cac_cfg)1093*4882a593Smuzhiyun void Isp32Params::convertAiqCacToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1094*4882a593Smuzhiyun         const rk_aiq_isp_cac_v32_t& cac_cfg) {
1095*4882a593Smuzhiyun 
1096*4882a593Smuzhiyun     LOGD_ACAC("convert CAC params enable %d", cac_cfg.enable);
1097*4882a593Smuzhiyun 
1098*4882a593Smuzhiyun     if (cac_cfg.enable) {
1099*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP3X_MODULE_CAC;
1100*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_CAC;
1101*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP3X_MODULE_CAC;
1102*4882a593Smuzhiyun     } else {
1103*4882a593Smuzhiyun         isp_cfg.module_en_update |= (ISP3X_MODULE_CAC);
1104*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(ISP3X_MODULE_CAC);
1105*4882a593Smuzhiyun         isp_cfg.module_cfg_update &= ~(ISP3X_MODULE_CAC);
1106*4882a593Smuzhiyun     }
1107*4882a593Smuzhiyun 
1108*4882a593Smuzhiyun     struct isp32_cac_cfg* cfg = &isp_cfg.others.cac_cfg;
1109*4882a593Smuzhiyun     memcpy(cfg, &cac_cfg.cfg, sizeof(*cfg));
1110*4882a593Smuzhiyun 
1111*4882a593Smuzhiyun #if 1
1112*4882a593Smuzhiyun     LOGD_ACAC("Dump CAC config: ");
1113*4882a593Smuzhiyun     LOGD_ACAC("current enable: %d",    cac_cfg.enable);
1114*4882a593Smuzhiyun     LOGD_ACAC("by en: %d",             cfg->bypass_en);
1115*4882a593Smuzhiyun     LOGD_ACAC("center en: %d",         cfg->center_en);
1116*4882a593Smuzhiyun     LOGD_ACAC("center x: %d",          cfg->center_width);
1117*4882a593Smuzhiyun     LOGD_ACAC("center y: %d",          cfg->center_height);
1118*4882a593Smuzhiyun     LOGD_ACAC("psf shift bits: %d",    cfg->psf_sft_bit);
1119*4882a593Smuzhiyun     LOGD_ACAC("psf cfg num: %d",       cfg->cfg_num);
1120*4882a593Smuzhiyun     LOGD_ACAC("psf buf fd: %d",        cfg->buf_fd);
1121*4882a593Smuzhiyun     LOGD_ACAC("psf hwsize: %d",        cfg->hsize);
1122*4882a593Smuzhiyun     LOGD_ACAC("psf vsize: %d",          cfg->vsize);
1123*4882a593Smuzhiyun     for (int i = 0; i < RKCAC_STRENGTH_TABLE_LEN; i++) {
1124*4882a593Smuzhiyun         LOGD_ACAC("strength %d: %d", i, cfg->strength[i]);
1125*4882a593Smuzhiyun     }
1126*4882a593Smuzhiyun     LOGD_ACAC("clip_g_mode : %d",     cfg->clip_g_mode);
1127*4882a593Smuzhiyun     LOGD_ACAC("edge_detect_en : %d",  cfg->edge_detect_en);
1128*4882a593Smuzhiyun     LOGD_ACAC("neg_clip0_en : %d",    cfg->neg_clip0_en);
1129*4882a593Smuzhiyun     LOGD_ACAC("flat_thed_b : %d",     cfg->flat_thed_b);
1130*4882a593Smuzhiyun     LOGD_ACAC("flat_thed_r : %d",     cfg->flat_thed_r);
1131*4882a593Smuzhiyun     LOGD_ACAC("offset_b : %d",        cfg->offset_b);
1132*4882a593Smuzhiyun     LOGD_ACAC("offset_r : %d",        cfg->offset_r);
1133*4882a593Smuzhiyun     LOGD_ACAC("expo_thed_b : %d",     cfg->expo_thed_b);
1134*4882a593Smuzhiyun     LOGD_ACAC("expo_thed_r : %d",     cfg->expo_thed_r);
1135*4882a593Smuzhiyun     LOGD_ACAC("expo_adj_b : %d",      cfg->expo_adj_b);
1136*4882a593Smuzhiyun     LOGD_ACAC("expo_adj_r : %d",      cfg->expo_adj_r);
1137*4882a593Smuzhiyun #endif
1138*4882a593Smuzhiyun }
1139*4882a593Smuzhiyun #endif
1140*4882a593Smuzhiyun 
1141*4882a593Smuzhiyun #if RKAIQ_HAVE_BAYER2DNR_V23
convertAiqRawnrToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_baynr_v32_t & rawnr)1142*4882a593Smuzhiyun void Isp32Params::convertAiqRawnrToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1143*4882a593Smuzhiyun         rk_aiq_isp_baynr_v32_t& rawnr) {
1144*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, rawnr.bayer_en);
1145*4882a593Smuzhiyun     bool enable = rawnr.bayer_en;
1146*4882a593Smuzhiyun     if (enable) {
1147*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BAYNR;
1148*4882a593Smuzhiyun     } else {
1149*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(ISP3X_MODULE_BAYNR);
1150*4882a593Smuzhiyun     }
1151*4882a593Smuzhiyun 
1152*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_BAYNR;
1153*4882a593Smuzhiyun 
1154*4882a593Smuzhiyun #if 1
1155*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_BAYNR;
1156*4882a593Smuzhiyun 
1157*4882a593Smuzhiyun     struct isp32_baynr_cfg* pBayernr = &isp_cfg.others.baynr_cfg;
1158*4882a593Smuzhiyun     pBayernr->bay3d_gain_en          = rawnr.bay3d_gain_en;
1159*4882a593Smuzhiyun     pBayernr->lg2_mode               = rawnr.lg2_mode;
1160*4882a593Smuzhiyun     pBayernr->gauss_en               = rawnr.gauss_en;
1161*4882a593Smuzhiyun     pBayernr->log_bypass             = rawnr.log_bypass;
1162*4882a593Smuzhiyun 
1163*4882a593Smuzhiyun     pBayernr->dgain0 = rawnr.dgain[0];
1164*4882a593Smuzhiyun     pBayernr->dgain1 = rawnr.dgain[1];
1165*4882a593Smuzhiyun     pBayernr->dgain2 = rawnr.dgain[2];
1166*4882a593Smuzhiyun 
1167*4882a593Smuzhiyun     pBayernr->pix_diff = rawnr.pix_diff;
1168*4882a593Smuzhiyun 
1169*4882a593Smuzhiyun     pBayernr->diff_thld = rawnr.diff_thld;
1170*4882a593Smuzhiyun     pBayernr->softthld  = rawnr.softthld;
1171*4882a593Smuzhiyun 
1172*4882a593Smuzhiyun     pBayernr->bltflt_streng = rawnr.bltflt_streng;
1173*4882a593Smuzhiyun     pBayernr->reg_w1        = rawnr.reg_w1;
1174*4882a593Smuzhiyun 
1175*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_BAYNR_XY_NUM; i++) {
1176*4882a593Smuzhiyun         pBayernr->sigma_x[i] = rawnr.sigma_x[i];
1177*4882a593Smuzhiyun         pBayernr->sigma_y[i] = rawnr.sigma_y[i];
1178*4882a593Smuzhiyun     }
1179*4882a593Smuzhiyun 
1180*4882a593Smuzhiyun     pBayernr->weit_d2 = rawnr.weit_d[2];
1181*4882a593Smuzhiyun     pBayernr->weit_d1 = rawnr.weit_d[1];
1182*4882a593Smuzhiyun     pBayernr->weit_d0 = rawnr.weit_d[0];
1183*4882a593Smuzhiyun 
1184*4882a593Smuzhiyun     pBayernr->lg2_lgoff = rawnr.lg2_lgoff;
1185*4882a593Smuzhiyun     pBayernr->lg2_off   = rawnr.lg2_off;
1186*4882a593Smuzhiyun 
1187*4882a593Smuzhiyun     pBayernr->dat_max = rawnr.dat_max;
1188*4882a593Smuzhiyun 
1189*4882a593Smuzhiyun     pBayernr->rgain_off = rawnr.rgain_off;
1190*4882a593Smuzhiyun     pBayernr->bgain_off = rawnr.bgain_off;
1191*4882a593Smuzhiyun 
1192*4882a593Smuzhiyun     for (int i = 0; i < ISP32_BAYNR_GAIN_NUM; i++) {
1193*4882a593Smuzhiyun         pBayernr->gain_x[i] = rawnr.gain_x[i];
1194*4882a593Smuzhiyun         pBayernr->gain_y[i] = rawnr.gain_y[i];
1195*4882a593Smuzhiyun     }
1196*4882a593Smuzhiyun #endif
1197*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
1198*4882a593Smuzhiyun }
1199*4882a593Smuzhiyun #endif
1200*4882a593Smuzhiyun #if (RKAIQ_HAVE_BAYERTNR_V23 || RKAIQ_HAVE_BAYERTNR_V23_LITE)
convertAiqTnrToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_tnr_v32_t & tnr)1201*4882a593Smuzhiyun void Isp32Params::convertAiqTnrToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1202*4882a593Smuzhiyun         rk_aiq_isp_tnr_v32_t& tnr) {
1203*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d\n", __FUNCTION__, __LINE__, tnr.bay3d_en);
1204*4882a593Smuzhiyun     bool enable = tnr.bay3d_en;
1205*4882a593Smuzhiyun     if (enable) {
1206*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
1207*4882a593Smuzhiyun         // bayer3dnr enable  bayer2dnr must enable at the same time
1208*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BAYNR;
1209*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP3X_MODULE_BAYNR;
1210*4882a593Smuzhiyun     } else {
1211*4882a593Smuzhiyun         // isp_cfg.module_ens &= ~(ISP3X_MODULE_BAY3D);
1212*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
1213*4882a593Smuzhiyun     }
1214*4882a593Smuzhiyun 
1215*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_BAY3D;
1216*4882a593Smuzhiyun 
1217*4882a593Smuzhiyun #if 1
1218*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_BAY3D;
1219*4882a593Smuzhiyun 
1220*4882a593Smuzhiyun     struct isp32_bay3d_cfg* pBayertnr = &isp_cfg.others.bay3d_cfg;
1221*4882a593Smuzhiyun 
1222*4882a593Smuzhiyun     pBayertnr->bwsaving_en       = tnr.bwsaving_en;
1223*4882a593Smuzhiyun     pBayertnr->bypass_en         = tnr.bypass_en;
1224*4882a593Smuzhiyun     pBayertnr->hibypass_en       = tnr.hibypass_en;
1225*4882a593Smuzhiyun     pBayertnr->lobypass_en       = tnr.lobypass_en;
1226*4882a593Smuzhiyun     pBayertnr->himed_bypass_en   = tnr.himed_bypass_en;
1227*4882a593Smuzhiyun     pBayertnr->higaus_bypass_en  = tnr.higaus_bypass_en;
1228*4882a593Smuzhiyun     pBayertnr->hiabs_possel      = tnr.hiabs_possel;
1229*4882a593Smuzhiyun     pBayertnr->hichnsplit_en     = tnr.hichnsplit_en;
1230*4882a593Smuzhiyun     pBayertnr->lomed_bypass_en   = tnr.lomed_bypass_en;
1231*4882a593Smuzhiyun     pBayertnr->logaus5_bypass_en = tnr.logaus5_bypass_en;
1232*4882a593Smuzhiyun     pBayertnr->logaus3_bypass_en = tnr.logaus3_bypass_en;
1233*4882a593Smuzhiyun     pBayertnr->glbpk_en          = tnr.glbpk_en;
1234*4882a593Smuzhiyun     pBayertnr->loswitch_protect  = tnr.loswitch_protect;
1235*4882a593Smuzhiyun 
1236*4882a593Smuzhiyun     pBayertnr->softwgt  = tnr.softwgt;
1237*4882a593Smuzhiyun     pBayertnr->hidif_th = tnr.hidif_th;
1238*4882a593Smuzhiyun 
1239*4882a593Smuzhiyun     pBayertnr->glbpk2 = tnr.glbpk2;
1240*4882a593Smuzhiyun 
1241*4882a593Smuzhiyun     /* BAY3D_CTRL1 */
1242*4882a593Smuzhiyun     pBayertnr->hiwgt_opt_en = tnr.hiwgt_opt_en;
1243*4882a593Smuzhiyun     pBayertnr->hichncor_en = tnr.hichncor_en;
1244*4882a593Smuzhiyun     pBayertnr->bwopt_gain_dis = tnr.bwopt_gain_dis;
1245*4882a593Smuzhiyun     pBayertnr->lo4x8_en = tnr.lo4x8_en;
1246*4882a593Smuzhiyun     pBayertnr->lo4x4_en = tnr.lo4x4_en;
1247*4882a593Smuzhiyun     pBayertnr->hisig_ind_sel = tnr.hisig_ind_sel;
1248*4882a593Smuzhiyun     pBayertnr->pksig_ind_sel = tnr.pksig_ind_sel;
1249*4882a593Smuzhiyun     pBayertnr->iirwr_rnd_en = tnr.iirwr_rnd_en;
1250*4882a593Smuzhiyun     pBayertnr->curds_high_en = tnr.curds_high_en;
1251*4882a593Smuzhiyun     pBayertnr->higaus3_mode = tnr.higaus3_mode;
1252*4882a593Smuzhiyun     pBayertnr->higaus5x5_en = tnr.higaus5x5_en;
1253*4882a593Smuzhiyun     pBayertnr->wgtmix_opt_en = tnr.wgtmix_opt_en;
1254*4882a593Smuzhiyun 
1255*4882a593Smuzhiyun     pBayertnr->wgtmm_opt_en = tnr.wgtmm_opt_en;
1256*4882a593Smuzhiyun     pBayertnr->wgtmm_sel_en = tnr.wgtmm_sel_en;
1257*4882a593Smuzhiyun 
1258*4882a593Smuzhiyun     pBayertnr->wgtlmt   = tnr.wgtlmt;
1259*4882a593Smuzhiyun     pBayertnr->wgtratio = tnr.wgtratio;
1260*4882a593Smuzhiyun 
1261*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_BAY3D_XY_NUM; i++) {
1262*4882a593Smuzhiyun         pBayertnr->sig0_x[i] = tnr.sig0_x[i];
1263*4882a593Smuzhiyun         pBayertnr->sig0_y[i] = tnr.sig0_y[i];
1264*4882a593Smuzhiyun 
1265*4882a593Smuzhiyun         pBayertnr->sig1_x[i] = tnr.sig1_x[i];
1266*4882a593Smuzhiyun         pBayertnr->sig1_y[i] = tnr.sig1_y[i];
1267*4882a593Smuzhiyun 
1268*4882a593Smuzhiyun         // pBayertnr->sig2_x[i] = tnr.bay3d_sig1_x[i];
1269*4882a593Smuzhiyun         pBayertnr->sig2_y[i] = tnr.sig2_y[i];
1270*4882a593Smuzhiyun     }
1271*4882a593Smuzhiyun 
1272*4882a593Smuzhiyun     pBayertnr->wgtmin = tnr.wgtmin;
1273*4882a593Smuzhiyun 
1274*4882a593Smuzhiyun     pBayertnr->hisigrat0 = tnr.hisigrat0;
1275*4882a593Smuzhiyun     pBayertnr->hisigrat1 = tnr.hisigrat1;
1276*4882a593Smuzhiyun 
1277*4882a593Smuzhiyun     pBayertnr->hisigoff0 = tnr.hisigoff0;
1278*4882a593Smuzhiyun     pBayertnr->hisigoff1 = tnr.hisigoff1;
1279*4882a593Smuzhiyun 
1280*4882a593Smuzhiyun     pBayertnr->losigoff = tnr.losigoff;
1281*4882a593Smuzhiyun     pBayertnr->losigrat = tnr.losigrat;
1282*4882a593Smuzhiyun 
1283*4882a593Smuzhiyun     pBayertnr->rgain_off = tnr.rgain_off;
1284*4882a593Smuzhiyun     pBayertnr->bgain_off = tnr.bgain_off;
1285*4882a593Smuzhiyun 
1286*4882a593Smuzhiyun     pBayertnr->siggaus0 = tnr.siggaus0;
1287*4882a593Smuzhiyun     pBayertnr->siggaus1 = tnr.siggaus1;
1288*4882a593Smuzhiyun     pBayertnr->siggaus2 = tnr.siggaus2;
1289*4882a593Smuzhiyun     pBayertnr->siggaus3 = tnr.siggaus3;
1290*4882a593Smuzhiyun #endif
1291*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
1292*4882a593Smuzhiyun }
1293*4882a593Smuzhiyun #endif
1294*4882a593Smuzhiyun 
1295*4882a593Smuzhiyun #if RKAIQ_HAVE_YNR_V22
convertAiqYnrToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_ynr_v32_t & ynr)1296*4882a593Smuzhiyun void Isp32Params::convertAiqYnrToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1297*4882a593Smuzhiyun         rk_aiq_isp_ynr_v32_t& ynr) {
1298*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, ynr.ynr_en);
1299*4882a593Smuzhiyun 
1300*4882a593Smuzhiyun     bool enable = ynr.ynr_en;
1301*4882a593Smuzhiyun 
1302*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_YNR;
1303*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_YNR;
1304*4882a593Smuzhiyun 
1305*4882a593Smuzhiyun #if 1
1306*4882a593Smuzhiyun 
1307*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_YNR;
1308*4882a593Smuzhiyun 
1309*4882a593Smuzhiyun     struct isp32_ynr_cfg* pYnr = &isp_cfg.others.ynr_cfg;
1310*4882a593Smuzhiyun 
1311*4882a593Smuzhiyun     pYnr->rnr_en            = ynr.rnr_en;
1312*4882a593Smuzhiyun     pYnr->thumb_mix_cur_en  = ynr.thumb_mix_cur_en;
1313*4882a593Smuzhiyun     pYnr->global_gain_alpha = ynr.global_gain_alpha;
1314*4882a593Smuzhiyun     pYnr->global_gain       = ynr.global_gain;
1315*4882a593Smuzhiyun     pYnr->flt1x1_bypass_sel = ynr.flt1x1_bypass_sel;
1316*4882a593Smuzhiyun     pYnr->nlm11x11_bypass   = ynr.nlm11x11_bypass;
1317*4882a593Smuzhiyun     pYnr->flt1x1_bypass_sel = ynr.flt1x1_bypass_sel;
1318*4882a593Smuzhiyun     pYnr->flt1x1_bypass     = ynr.flt1x1_bypass;
1319*4882a593Smuzhiyun     pYnr->lgft3x3_bypass    = ynr.lgft3x3_bypass;
1320*4882a593Smuzhiyun     pYnr->lbft5x5_bypass    = ynr.lbft5x5_bypass;
1321*4882a593Smuzhiyun     pYnr->bft3x3_bypass     = ynr.bft3x3_bypass;
1322*4882a593Smuzhiyun     if (!enable) {
1323*4882a593Smuzhiyun         pYnr->nlm11x11_bypass  = 0x01;
1324*4882a593Smuzhiyun         pYnr->flt1x1_bypass  = 0x01;
1325*4882a593Smuzhiyun         pYnr->lgft3x3_bypass = 0x01;
1326*4882a593Smuzhiyun         pYnr->lbft5x5_bypass = 0x01;
1327*4882a593Smuzhiyun         pYnr->bft3x3_bypass  = 0x01;
1328*4882a593Smuzhiyun     }
1329*4882a593Smuzhiyun 
1330*4882a593Smuzhiyun     pYnr->rnr_max_r       = ynr.rnr_max_r;
1331*4882a593Smuzhiyun     pYnr->local_gainscale = ynr.local_gainscale;
1332*4882a593Smuzhiyun 
1333*4882a593Smuzhiyun     pYnr->rnr_center_coorh = ynr.rnr_center_coorh;
1334*4882a593Smuzhiyun     pYnr->rnr_center_coorv = ynr.rnr_center_coorv;
1335*4882a593Smuzhiyun 
1336*4882a593Smuzhiyun     pYnr->loclagain_adj_thresh = ynr.localgain_adj_thresh;
1337*4882a593Smuzhiyun     pYnr->localgain_adj        = ynr.localgain_adj;
1338*4882a593Smuzhiyun 
1339*4882a593Smuzhiyun     pYnr->low_bf_inv1 = ynr.low_bf_inv1;
1340*4882a593Smuzhiyun     pYnr->low_bf_inv0 = ynr.low_bf_inv0;
1341*4882a593Smuzhiyun 
1342*4882a593Smuzhiyun     pYnr->low_peak_supress = ynr.low_peak_supress;
1343*4882a593Smuzhiyun     pYnr->low_thred_adj    = ynr.low_thred_adj;
1344*4882a593Smuzhiyun 
1345*4882a593Smuzhiyun     pYnr->low_dist_adj        = ynr.low_dist_adj;
1346*4882a593Smuzhiyun     pYnr->low_edge_adj_thresh = ynr.low_edge_adj_thresh;
1347*4882a593Smuzhiyun 
1348*4882a593Smuzhiyun     pYnr->low_bi_weight     = ynr.low_bi_weight;
1349*4882a593Smuzhiyun     pYnr->low_weight        = ynr.low_weight;
1350*4882a593Smuzhiyun     pYnr->low_center_weight = ynr.low_center_weight;
1351*4882a593Smuzhiyun 
1352*4882a593Smuzhiyun     pYnr->frame_full_size  = ynr.frame_full_size;
1353*4882a593Smuzhiyun     pYnr->lbf_weight_thres = ynr.lbf_weight_thres;
1354*4882a593Smuzhiyun 
1355*4882a593Smuzhiyun     pYnr->low_gauss1_coeff2 = ynr.low_gauss1_coeff2;
1356*4882a593Smuzhiyun     pYnr->low_gauss1_coeff1 = ynr.low_gauss1_coeff1;
1357*4882a593Smuzhiyun     pYnr->low_gauss1_coeff0 = ynr.low_gauss1_coeff0;
1358*4882a593Smuzhiyun 
1359*4882a593Smuzhiyun     pYnr->low_gauss2_coeff2 = ynr.low_gauss2_coeff2;
1360*4882a593Smuzhiyun     pYnr->low_gauss2_coeff1 = ynr.low_gauss2_coeff1;
1361*4882a593Smuzhiyun     pYnr->low_gauss2_coeff0 = ynr.low_gauss2_coeff0;
1362*4882a593Smuzhiyun 
1363*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_YNR_XY_NUM; i++) {
1364*4882a593Smuzhiyun         pYnr->luma_points_x[i] = ynr.luma_points_x[i];
1365*4882a593Smuzhiyun         pYnr->lsgm_y[i]        = ynr.lsgm_y[i];
1366*4882a593Smuzhiyun         //pYnr->hsgm_y[i]        = ynr.ynr_hsgm_y[i];
1367*4882a593Smuzhiyun         pYnr->rnr_strength3[i] = ynr.rnr_strength[i];
1368*4882a593Smuzhiyun     }
1369*4882a593Smuzhiyun 
1370*4882a593Smuzhiyun     pYnr->nlm_min_sigma      = ynr.nlm_min_sigma;
1371*4882a593Smuzhiyun     pYnr->nlm_hi_gain_alpha  = ynr.nlm_hi_gain_alpha;
1372*4882a593Smuzhiyun     pYnr->nlm_hi_bf_scale    = ynr.nlm_hi_bf_scale;
1373*4882a593Smuzhiyun 
1374*4882a593Smuzhiyun     pYnr->nlm_coe[0]  = ynr.nlm_coe_0;
1375*4882a593Smuzhiyun     pYnr->nlm_coe[1]  = ynr.nlm_coe_1;
1376*4882a593Smuzhiyun     pYnr->nlm_coe[2]  = ynr.nlm_coe_2;
1377*4882a593Smuzhiyun     pYnr->nlm_coe[3]  = ynr.nlm_coe_3;
1378*4882a593Smuzhiyun     pYnr->nlm_coe[4]  = ynr.nlm_coe_4;
1379*4882a593Smuzhiyun     pYnr->nlm_coe[5]  = ynr.nlm_coe_5;
1380*4882a593Smuzhiyun 
1381*4882a593Smuzhiyun     pYnr->nlm_center_weight  = ynr.nlm_center_weight;
1382*4882a593Smuzhiyun     pYnr->nlm_weight_offset  = ynr.nlm_weight_offset;
1383*4882a593Smuzhiyun 
1384*4882a593Smuzhiyun     pYnr->nlm_nr_weight      = ynr.nlm_nr_weight;
1385*4882a593Smuzhiyun #endif
1386*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
1387*4882a593Smuzhiyun }
1388*4882a593Smuzhiyun #endif
1389*4882a593Smuzhiyun #if (RKAIQ_HAVE_CNR_V30 || RKAIQ_HAVE_CNR_V30_LITE)
convertAiqUvnrToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_cnr_v32_t & uvnr)1390*4882a593Smuzhiyun void Isp32Params::convertAiqUvnrToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1391*4882a593Smuzhiyun         rk_aiq_isp_cnr_v32_t& uvnr) {
1392*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, uvnr.cnr_en);
1393*4882a593Smuzhiyun 
1394*4882a593Smuzhiyun     bool enable = uvnr.cnr_en;
1395*4882a593Smuzhiyun 
1396*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_CNR;
1397*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_CNR;
1398*4882a593Smuzhiyun 
1399*4882a593Smuzhiyun 
1400*4882a593Smuzhiyun #if 1
1401*4882a593Smuzhiyun 
1402*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_CNR;
1403*4882a593Smuzhiyun     struct isp32_cnr_cfg* pCnr = &isp_cfg.others.cnr_cfg;
1404*4882a593Smuzhiyun 
1405*4882a593Smuzhiyun     pCnr->exgain_bypass = uvnr.exgain_bypass;
1406*4882a593Smuzhiyun     pCnr->yuv422_mode   = uvnr.yuv422_mode;
1407*4882a593Smuzhiyun     pCnr->thumb_mode    = uvnr.thumb_mode;
1408*4882a593Smuzhiyun     pCnr->bf3x3_wgt0_sel = uvnr.bf3x3_wgt0_sel;
1409*4882a593Smuzhiyun 
1410*4882a593Smuzhiyun     pCnr->gain_iso          = uvnr.gain_iso;
1411*4882a593Smuzhiyun     pCnr->global_gain_alpha = uvnr.global_gain_alpha;
1412*4882a593Smuzhiyun     pCnr->global_gain       = uvnr.global_gain;
1413*4882a593Smuzhiyun 
1414*4882a593Smuzhiyun     pCnr->thumb_sigma_c    = uvnr.thumb_sigma_c;
1415*4882a593Smuzhiyun     pCnr->thumb_sigma_y = uvnr.thumb_sigma_y;
1416*4882a593Smuzhiyun 
1417*4882a593Smuzhiyun     pCnr->thumb_bf_ratio = uvnr.thumb_bf_ratio;
1418*4882a593Smuzhiyun 
1419*4882a593Smuzhiyun     pCnr->lbf1x7_weit_d0 = uvnr.lbf1x7_weit_d[0];
1420*4882a593Smuzhiyun     pCnr->lbf1x7_weit_d1 = uvnr.lbf1x7_weit_d[1];
1421*4882a593Smuzhiyun     pCnr->lbf1x7_weit_d2 = uvnr.lbf1x7_weit_d[2];
1422*4882a593Smuzhiyun     pCnr->lbf1x7_weit_d3 = uvnr.lbf1x7_weit_d[3];
1423*4882a593Smuzhiyun 
1424*4882a593Smuzhiyun     pCnr->iir_uvgain = uvnr.iir_uvgain;
1425*4882a593Smuzhiyun     pCnr->iir_strength = uvnr.iir_strength;
1426*4882a593Smuzhiyun     pCnr->exp_shift = uvnr.exp_shift;
1427*4882a593Smuzhiyun     pCnr->wgt_slope = uvnr.wgt_slope;
1428*4882a593Smuzhiyun 
1429*4882a593Smuzhiyun     pCnr->chroma_ghost = uvnr.chroma_ghost;
1430*4882a593Smuzhiyun     pCnr->iir_uv_clip = uvnr.iir_uv_clip;
1431*4882a593Smuzhiyun 
1432*4882a593Smuzhiyun     for (int i = 0; i < 6; i++) {
1433*4882a593Smuzhiyun         pCnr->gaus_coe[i] = uvnr.gaus_coe[i];
1434*4882a593Smuzhiyun     }
1435*4882a593Smuzhiyun 
1436*4882a593Smuzhiyun     pCnr->gaus_ratio  = uvnr.gaus_ratio;
1437*4882a593Smuzhiyun     pCnr->bf_wgt_clip    = uvnr.bf_wgt_clip;
1438*4882a593Smuzhiyun     pCnr->global_alpha = uvnr.global_alpha;
1439*4882a593Smuzhiyun     if (!enable) {
1440*4882a593Smuzhiyun         pCnr->global_alpha = 0x000;
1441*4882a593Smuzhiyun         LOGD_ANR("0x0024 global_alpha:0x%x 0x%x\n", uvnr.global_alpha, pCnr->global_alpha);
1442*4882a593Smuzhiyun     }
1443*4882a593Smuzhiyun 
1444*4882a593Smuzhiyun     pCnr->uv_gain    = uvnr.uv_gain;
1445*4882a593Smuzhiyun     pCnr->sigma_r  = uvnr.sigma_r;
1446*4882a593Smuzhiyun     pCnr->bf_ratio    = uvnr.bf_ratio;
1447*4882a593Smuzhiyun 
1448*4882a593Smuzhiyun     pCnr->adj_offset = uvnr.adj_offset;
1449*4882a593Smuzhiyun     pCnr->adj_ratio = uvnr.adj_ratio;
1450*4882a593Smuzhiyun 
1451*4882a593Smuzhiyun     for (int i = 0; i < ISP32_CNR_SIGMA_Y_NUM; i++) {
1452*4882a593Smuzhiyun         pCnr->sigma_y[i] = uvnr.sigma_y[i];
1453*4882a593Smuzhiyun     }
1454*4882a593Smuzhiyun 
1455*4882a593Smuzhiyun     pCnr->iir_gain_alpha = uvnr.iir_gain_alpha;
1456*4882a593Smuzhiyun     pCnr->iir_global_gain = uvnr.iir_global_gain;
1457*4882a593Smuzhiyun #endif
1458*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
1459*4882a593Smuzhiyun }
1460*4882a593Smuzhiyun #endif
1461*4882a593Smuzhiyun 
1462*4882a593Smuzhiyun #if RKAIQ_HAVE_DEBAYER_V2 || RKAIQ_HAVE_DEBAYER_V2_LITE
convertAiqAdebayerToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_debayer_v32_t & debayer)1463*4882a593Smuzhiyun void Isp32Params::convertAiqAdebayerToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1464*4882a593Smuzhiyun         rk_aiq_isp_debayer_v32_t & debayer)
1465*4882a593Smuzhiyun {
1466*4882a593Smuzhiyun 
1467*4882a593Smuzhiyun     if (debayer.updatecfg) {
1468*4882a593Smuzhiyun         if (debayer.enable) {
1469*4882a593Smuzhiyun             isp_cfg.module_ens |= ISP2X_MODULE_DEBAYER;
1470*4882a593Smuzhiyun             isp_cfg.module_en_update |= ISP2X_MODULE_DEBAYER;
1471*4882a593Smuzhiyun             isp_cfg.module_cfg_update |= ISP2X_MODULE_DEBAYER;
1472*4882a593Smuzhiyun         } else {
1473*4882a593Smuzhiyun             isp_cfg.module_ens &= ~ISP2X_MODULE_DEBAYER;
1474*4882a593Smuzhiyun             isp_cfg.module_en_update |= ISP2X_MODULE_DEBAYER;
1475*4882a593Smuzhiyun         }
1476*4882a593Smuzhiyun     } else {
1477*4882a593Smuzhiyun         return;
1478*4882a593Smuzhiyun     }
1479*4882a593Smuzhiyun     /* CONTROL */
1480*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter_c_en = debayer.filter_c_en;
1481*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter_g_en = debayer.filter_g_en;
1482*4882a593Smuzhiyun 
1483*4882a593Smuzhiyun     /* G_INTERP */
1484*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.clip_en = debayer.clip_en;
1485*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.dist_scale = debayer.dist_scale;
1486*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.thed0 = debayer.thed0;
1487*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.thed1 = debayer.thed1;
1488*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.select_thed = debayer.select_thed;
1489*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.max_ratio = debayer.max_ratio;
1490*4882a593Smuzhiyun 
1491*4882a593Smuzhiyun     /* G_INTERP_FILTER1 */
1492*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter1_coe1 = debayer.filter1_coe[0];
1493*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter1_coe2 = debayer.filter1_coe[1];
1494*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter1_coe3 = debayer.filter1_coe[2];
1495*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter1_coe4 = debayer.filter1_coe[3];
1496*4882a593Smuzhiyun 
1497*4882a593Smuzhiyun     /* G_INTERP_FILTER2 */
1498*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter2_coe1 = debayer.filter2_coe[0];
1499*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter2_coe2 = debayer.filter2_coe[1];
1500*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter2_coe3 = debayer.filter2_coe[2];
1501*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.filter2_coe4 = debayer.filter2_coe[3];
1502*4882a593Smuzhiyun 
1503*4882a593Smuzhiyun     /* G_INTERP_OFFSET */
1504*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.hf_offset = debayer.hf_offset;
1505*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.gain_offset = debayer.gain_offset;
1506*4882a593Smuzhiyun 
1507*4882a593Smuzhiyun     /* G_FILTER_OFFSET */
1508*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.offset = debayer.offset;
1509*4882a593Smuzhiyun 
1510*4882a593Smuzhiyun #if RKAIQ_HAVE_DEBAYER_V2
1511*4882a593Smuzhiyun     /* C_FILTER_GUIDE_GAUS */
1512*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.guid_gaus_coe0 = debayer.guid_gaus_coe[0];
1513*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.guid_gaus_coe1 = debayer.guid_gaus_coe[1];
1514*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.guid_gaus_coe2 = debayer.guid_gaus_coe[2];
1515*4882a593Smuzhiyun 
1516*4882a593Smuzhiyun     /* C_FILTER_CE_GAUS */
1517*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.ce_gaus_coe0 = debayer.ce_gaus_coe[0];
1518*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.ce_gaus_coe1 = debayer.ce_gaus_coe[1];
1519*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.ce_gaus_coe2 = debayer.ce_gaus_coe[2];
1520*4882a593Smuzhiyun 
1521*4882a593Smuzhiyun     /* C_FILTER_ALPHA_GAUS */
1522*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.alpha_gaus_coe0 = debayer.alpha_gaus_coe[0];
1523*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.alpha_gaus_coe1 = debayer.alpha_gaus_coe[1];
1524*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.alpha_gaus_coe2 = debayer.alpha_gaus_coe[2];
1525*4882a593Smuzhiyun 
1526*4882a593Smuzhiyun     /* C_FILTER_IIR */
1527*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.ce_sgm = debayer.ce_sgm;
1528*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.exp_shift = debayer.exp_shift;
1529*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.wgtslope = debayer.wgtslope;
1530*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.wet_clip = debayer.wet_clip;
1531*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.wet_ghost = debayer.wet_ghost;
1532*4882a593Smuzhiyun 
1533*4882a593Smuzhiyun     /* C_FILTER_BF */
1534*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.bf_clip = debayer.bf_clip;
1535*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.bf_curwgt = debayer.bf_curwgt;
1536*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.bf_sgm = debayer.bf_sgm;
1537*4882a593Smuzhiyun 
1538*4882a593Smuzhiyun     /* C_FILTER_LOG_OFFSET */
1539*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.loghf_offset = debayer.loghf_offset;
1540*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.loggd_offset = debayer.loggd_offset;
1541*4882a593Smuzhiyun 
1542*4882a593Smuzhiyun     /* C_FILTER_ALPHA */
1543*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.alpha_offset = debayer.alpha_offset;
1544*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.alpha_scale = debayer.alpha_scale;
1545*4882a593Smuzhiyun 
1546*4882a593Smuzhiyun     /* C_FILTER_EDGE */
1547*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.edge_offset = debayer.edge_offset;
1548*4882a593Smuzhiyun     isp_cfg.others.debayer_cfg.edge_scale = debayer.edge_scale;
1549*4882a593Smuzhiyun #endif
1550*4882a593Smuzhiyun }
1551*4882a593Smuzhiyun #endif
1552*4882a593Smuzhiyun 
1553*4882a593Smuzhiyun #if RKAIQ_HAVE_MERGE_V12
convertAiqMergeToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_merge_v32_t & amerge_data)1554*4882a593Smuzhiyun void Isp32Params::convertAiqMergeToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1555*4882a593Smuzhiyun         const rk_aiq_isp_merge_v32_t& amerge_data) {
1556*4882a593Smuzhiyun     isp_cfg.module_en_update |= 1LL << RK_ISP2X_HDRMGE_ID;
1557*4882a593Smuzhiyun     isp_cfg.module_ens |= 1LL << RK_ISP2X_HDRMGE_ID;
1558*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_HDRMGE_ID;
1559*4882a593Smuzhiyun 
1560*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.mode         = amerge_data.Merge_v12.mode;
1561*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain0_inv    = amerge_data.Merge_v12.gain0_inv;
1562*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain0        = amerge_data.Merge_v12.gain0;
1563*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain1_inv    = amerge_data.Merge_v12.gain1_inv;
1564*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain1        = amerge_data.Merge_v12.gain1;
1565*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain2        = amerge_data.Merge_v12.gain2;
1566*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_dif_0p15  = amerge_data.Merge_v12.lm_dif_0p15;
1567*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_dif_0p9   = amerge_data.Merge_v12.lm_dif_0p9;
1568*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_diff_0p15 = amerge_data.Merge_v12.ms_dif_0p15;
1569*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_dif_0p8   = amerge_data.Merge_v12.ms_dif_0p8;
1570*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_HDRMGE_L_CURVE_NUM; i++) {
1571*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.curve.curve_0[i] = amerge_data.Merge_v12.l0_y[i];
1572*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.curve.curve_1[i] = amerge_data.Merge_v12.l1_y[i];
1573*4882a593Smuzhiyun     }
1574*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_HDRMGE_E_CURVE_NUM; i++)
1575*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.e_y[i] = amerge_data.Merge_v12.e_y[i];
1576*4882a593Smuzhiyun 
1577*4882a593Smuzhiyun     // merge v11 add
1578*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.s_base  = amerge_data.Merge_v12.s_base;
1579*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_thd0 = amerge_data.Merge_v12.ms_thd0;
1580*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_thd1 = amerge_data.Merge_v12.ms_thd1;
1581*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_scl  = amerge_data.Merge_v12.ms_scl;
1582*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_thd0 = amerge_data.Merge_v12.lm_thd0;
1583*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_thd1 = amerge_data.Merge_v12.lm_thd1;
1584*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_scl  = amerge_data.Merge_v12.lm_scl;
1585*4882a593Smuzhiyun 
1586*4882a593Smuzhiyun     // merge v12 add
1587*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.each_raw_en    = amerge_data.Merge_v12.each_raw_en;
1588*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.each_raw_gain0 = amerge_data.Merge_v12.each_raw_gain0;
1589*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.each_raw_gain1 = amerge_data.Merge_v12.each_raw_gain1;
1590*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_HDRMGE_E_CURVE_NUM; i++) {
1591*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.l_raw0[i] = amerge_data.Merge_v12.l_raw0[i];
1592*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.l_raw1[i] = amerge_data.Merge_v12.l_raw1[i];
1593*4882a593Smuzhiyun     }
1594*4882a593Smuzhiyun 
1595*4882a593Smuzhiyun #if 0
1596*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain0_inv %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain0_inv);
1597*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain0);
1598*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain1_inv %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain1_inv);
1599*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain1);
1600*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain2 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain2);
1601*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_dif_0p15 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_dif_0p15);
1602*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_dif_0p9 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_dif_0p9);
1603*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_diff_0p15 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_diff_0p15);
1604*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_dif_0p8 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_dif_0p8);
1605*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: s_base %d", __LINE__, isp_cfg.others.hdrmge_cfg.s_base);
1606*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: sw_hdrmge_ms_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd0);
1607*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd0);
1608*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_thd1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd1);
1609*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_scl %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_scl);
1610*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_thd0);
1611*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_thd1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_thd1);
1612*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_scl %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_scl);
1613*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: each_raw_en 0x%x each_raw_gain0 0x%x each_raw_gain1 0x%x\n", __LINE__, isp_cfg.others.hdrmge_cfg.each_raw_en,
1614*4882a593Smuzhiyun                     isp_cfg.others.hdrmge_cfg.each_raw_gain0, isp_cfg.others.hdrmge_cfg.each_raw_gain1);
1615*4882a593Smuzhiyun     for(int i = 0 ; i < 17; i++)
1616*4882a593Smuzhiyun     {
1617*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: curve_0[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.curve.curve_0[i]);
1618*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: curve_1[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.curve.curve_1[i]);
1619*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: e_y[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.e_y[i]);
1620*4882a593Smuzhiyun     }
1621*4882a593Smuzhiyun #endif
1622*4882a593Smuzhiyun }
1623*4882a593Smuzhiyun #endif
1624*4882a593Smuzhiyun 
1625*4882a593Smuzhiyun #if RKAIQ_HAVE_DEHAZE_V12
convertAiqAdehazeToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_dehaze_v32_t & dhaze)1626*4882a593Smuzhiyun void Isp32Params::convertAiqAdehazeToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1627*4882a593Smuzhiyun         const rk_aiq_isp_dehaze_v32_t& dhaze) {
1628*4882a593Smuzhiyun     if (dhaze.enable) {
1629*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
1630*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_DHAZ;
1631*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP2X_MODULE_DHAZ;
1632*4882a593Smuzhiyun     } else {
1633*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
1634*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(ISP2X_MODULE_DHAZ);
1635*4882a593Smuzhiyun         isp_cfg.module_cfg_update &= ~(ISP2X_MODULE_DHAZ);
1636*4882a593Smuzhiyun         return;
1637*4882a593Smuzhiyun     }
1638*4882a593Smuzhiyun 
1639*4882a593Smuzhiyun     struct isp32_dhaz_cfg* cfg = &isp_cfg.others.dhaz_cfg;
1640*4882a593Smuzhiyun 
1641*4882a593Smuzhiyun     cfg->round_en        = dhaze.ProcResV12.round_en;
1642*4882a593Smuzhiyun     cfg->soft_wr_en      = dhaze.ProcResV12.soft_wr_en;
1643*4882a593Smuzhiyun     cfg->enhance_en      = dhaze.ProcResV12.enhance_en;
1644*4882a593Smuzhiyun     cfg->air_lc_en       = dhaze.ProcResV12.air_lc_en;
1645*4882a593Smuzhiyun     cfg->hpara_en        = dhaze.ProcResV12.hpara_en;
1646*4882a593Smuzhiyun     cfg->hist_en         = dhaze.ProcResV12.hist_en;
1647*4882a593Smuzhiyun     cfg->dc_en           = dhaze.ProcResV12.dc_en;
1648*4882a593Smuzhiyun     cfg->yblk_th         = dhaze.ProcResV12.yblk_th;
1649*4882a593Smuzhiyun     cfg->yhist_th        = dhaze.ProcResV12.yhist_th;
1650*4882a593Smuzhiyun     cfg->dc_max_th       = dhaze.ProcResV12.dc_max_th;
1651*4882a593Smuzhiyun     cfg->dc_min_th       = dhaze.ProcResV12.dc_min_th;
1652*4882a593Smuzhiyun     cfg->wt_max          = dhaze.ProcResV12.wt_max;
1653*4882a593Smuzhiyun     cfg->bright_max      = dhaze.ProcResV12.bright_max;
1654*4882a593Smuzhiyun     cfg->bright_min      = dhaze.ProcResV12.bright_min;
1655*4882a593Smuzhiyun     cfg->tmax_base       = dhaze.ProcResV12.tmax_base;
1656*4882a593Smuzhiyun     cfg->dark_th         = dhaze.ProcResV12.dark_th;
1657*4882a593Smuzhiyun     cfg->air_max         = dhaze.ProcResV12.air_max;
1658*4882a593Smuzhiyun     cfg->air_min         = dhaze.ProcResV12.air_min;
1659*4882a593Smuzhiyun     cfg->tmax_max        = dhaze.ProcResV12.tmax_max;
1660*4882a593Smuzhiyun     cfg->tmax_off        = dhaze.ProcResV12.tmax_off;
1661*4882a593Smuzhiyun     cfg->hist_k          = dhaze.ProcResV12.hist_k;
1662*4882a593Smuzhiyun     cfg->hist_th_off     = dhaze.ProcResV12.hist_th_off;
1663*4882a593Smuzhiyun     cfg->hist_min        = dhaze.ProcResV12.hist_min;
1664*4882a593Smuzhiyun     cfg->hist_gratio     = dhaze.ProcResV12.hist_gratio;
1665*4882a593Smuzhiyun     cfg->hist_scale      = dhaze.ProcResV12.hist_scale;
1666*4882a593Smuzhiyun     cfg->enhance_value   = dhaze.ProcResV12.enhance_value;
1667*4882a593Smuzhiyun     cfg->enhance_chroma  = dhaze.ProcResV12.enhance_chroma;
1668*4882a593Smuzhiyun     cfg->iir_wt_sigma    = dhaze.ProcResV12.iir_wt_sigma;
1669*4882a593Smuzhiyun     cfg->iir_sigma       = dhaze.ProcResV12.iir_sigma;
1670*4882a593Smuzhiyun     cfg->stab_fnum       = dhaze.ProcResV12.stab_fnum;
1671*4882a593Smuzhiyun     cfg->iir_tmax_sigma  = dhaze.ProcResV12.iir_tmax_sigma;
1672*4882a593Smuzhiyun     cfg->iir_air_sigma   = dhaze.ProcResV12.iir_air_sigma;
1673*4882a593Smuzhiyun     cfg->iir_pre_wet     = dhaze.ProcResV12.iir_pre_wet;
1674*4882a593Smuzhiyun     cfg->cfg_wt          = dhaze.ProcResV12.cfg_wt;
1675*4882a593Smuzhiyun     cfg->cfg_air         = dhaze.ProcResV12.cfg_air;
1676*4882a593Smuzhiyun     cfg->cfg_alpha       = dhaze.ProcResV12.cfg_alpha;
1677*4882a593Smuzhiyun     cfg->cfg_gratio      = dhaze.ProcResV12.cfg_gratio;
1678*4882a593Smuzhiyun     cfg->cfg_tmax        = dhaze.ProcResV12.cfg_tmax;
1679*4882a593Smuzhiyun     cfg->range_sima      = dhaze.ProcResV12.range_sima;
1680*4882a593Smuzhiyun     cfg->space_sigma_cur = dhaze.ProcResV12.space_sigma_cur;
1681*4882a593Smuzhiyun     cfg->space_sigma_pre = dhaze.ProcResV12.space_sigma_pre;
1682*4882a593Smuzhiyun     cfg->dc_weitcur      = dhaze.ProcResV12.dc_weitcur;
1683*4882a593Smuzhiyun     cfg->bf_weight       = dhaze.ProcResV12.bf_weight;
1684*4882a593Smuzhiyun     cfg->gaus_h0         = dhaze.ProcResV12.gaus_h0;
1685*4882a593Smuzhiyun     cfg->gaus_h1         = dhaze.ProcResV12.gaus_h1;
1686*4882a593Smuzhiyun     cfg->gaus_h2         = dhaze.ProcResV12.gaus_h2;
1687*4882a593Smuzhiyun 
1688*4882a593Smuzhiyun     for (int i = 0; i < ISP32_DHAZ_SIGMA_IDX_NUM; i++)
1689*4882a593Smuzhiyun         cfg->sigma_idx[i] = dhaze.ProcResV12.sigma_idx[i];
1690*4882a593Smuzhiyun 
1691*4882a593Smuzhiyun     for (int i = 0; i < ISP32_DHAZ_ENH_CURVE_NUM; i++)
1692*4882a593Smuzhiyun         cfg->enh_curve[i] = dhaze.ProcResV12.enh_curve[i];
1693*4882a593Smuzhiyun 
1694*4882a593Smuzhiyun     for (int i = 0; i < ISP32_DHAZ_SIGMA_LUT_NUM; i++)
1695*4882a593Smuzhiyun         cfg->sigma_lut[i] = dhaze.ProcResV12.sigma_lut[i];
1696*4882a593Smuzhiyun 
1697*4882a593Smuzhiyun     for (int i = 0; i < ISP32_DHAZ_HIST_WR_NUM; i++) cfg->hist_wr[i] = dhaze.ProcResV12.hist_wr[i];
1698*4882a593Smuzhiyun 
1699*4882a593Smuzhiyun     // dehaze v12 add
1700*4882a593Smuzhiyun     cfg->enh_luma_en      = dhaze.ProcResV12.enh_luma_en;
1701*4882a593Smuzhiyun     cfg->color_deviate_en = dhaze.ProcResV12.color_deviate_en;
1702*4882a593Smuzhiyun     for (int i = 0; i < ISP32_DHAZ_ENH_LUMA_NUM; i++)
1703*4882a593Smuzhiyun         cfg->enh_luma[i] = dhaze.ProcResV12.enh_luma[i];
1704*4882a593Smuzhiyun 
1705*4882a593Smuzhiyun #if 0
1706*4882a593Smuzhiyun     LOGE_ADEHAZE("%s(%d) dehaze local gain IDX(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->sigma_idx[0], cfg->sigma_idx[1],
1707*4882a593Smuzhiyun                  cfg->sigma_idx[2], cfg->sigma_idx[3], cfg->sigma_idx[4], cfg->sigma_idx[5]);
1708*4882a593Smuzhiyun     LOGE_ADEHAZE("%s(%d) dehaze local gain LUT(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->sigma_lut[0], cfg->sigma_lut[1],
1709*4882a593Smuzhiyun                  cfg->sigma_lut[2], cfg->sigma_lut[3], cfg->sigma_lut[4], cfg->sigma_lut[5]);
1710*4882a593Smuzhiyun     LOGE_ADEHAZE("%s(%d) enh_luma(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->enh_luma[0], cfg->enh_luma[1],
1711*4882a593Smuzhiyun                  cfg->enh_luma[2], cfg->enh_luma[3], cfg->enh_luma[4], cfg->enh_luma[5]);
1712*4882a593Smuzhiyun #endif
1713*4882a593Smuzhiyun }
1714*4882a593Smuzhiyun #endif
1715*4882a593Smuzhiyun 
1716*4882a593Smuzhiyun #if RKAIQ_HAVE_DRC_V12 || RKAIQ_HAVE_DRC_V12_LITE
convertAiqDrcToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_drc_v32_t & adrc_data)1717*4882a593Smuzhiyun void Isp32Params::convertAiqDrcToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1718*4882a593Smuzhiyun         rk_aiq_isp_drc_v32_t& adrc_data) {
1719*4882a593Smuzhiyun     if (adrc_data.bDrcEn) {
1720*4882a593Smuzhiyun         isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
1721*4882a593Smuzhiyun         isp_cfg.module_ens |= 1LL << Rk_ISP21_DRC_ID;
1722*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= 1LL << Rk_ISP21_DRC_ID;
1723*4882a593Smuzhiyun     } else {
1724*4882a593Smuzhiyun         isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
1725*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(1LL << Rk_ISP21_DRC_ID);
1726*4882a593Smuzhiyun         isp_cfg.module_cfg_update &= ~(1LL << Rk_ISP21_DRC_ID);
1727*4882a593Smuzhiyun         return;
1728*4882a593Smuzhiyun     }
1729*4882a593Smuzhiyun 
1730*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.bypass_en       = adrc_data.DrcProcRes.Drc_v12.bypass_en;
1731*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.offset_pow2     = adrc_data.DrcProcRes.Drc_v12.offset_pow2;
1732*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.compres_scl     = adrc_data.DrcProcRes.Drc_v12.compres_scl;
1733*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.position        = adrc_data.DrcProcRes.Drc_v12.position;
1734*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.delta_scalein   = adrc_data.DrcProcRes.Drc_v12.delta_scalein;
1735*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.hpdetail_ratio  = adrc_data.DrcProcRes.Drc_v12.hpdetail_ratio;
1736*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.lpdetail_ratio  = adrc_data.DrcProcRes.Drc_v12.lpdetail_ratio;
1737*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weicur_pix      = adrc_data.DrcProcRes.Drc_v12.weicur_pix;
1738*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weipre_frame    = adrc_data.DrcProcRes.Drc_v12.weipre_frame;
1739*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.bilat_wt_off    = adrc_data.DrcProcRes.Drc_v12.bilat_wt_off;
1740*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.force_sgm_inv0  = adrc_data.DrcProcRes.Drc_v12.force_sgm_inv0;
1741*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.motion_scl      = adrc_data.DrcProcRes.Drc_v12.motion_scl;
1742*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.edge_scl        = adrc_data.DrcProcRes.Drc_v12.edge_scl;
1743*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.space_sgm_inv1  = adrc_data.DrcProcRes.Drc_v12.space_sgm_inv1;
1744*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.space_sgm_inv0  = adrc_data.DrcProcRes.Drc_v12.space_sgm_inv0;
1745*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.range_sgm_inv1  = adrc_data.DrcProcRes.Drc_v12.range_sgm_inv1;
1746*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.range_sgm_inv0  = adrc_data.DrcProcRes.Drc_v12.range_sgm_inv0;
1747*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weig_maxl       = adrc_data.DrcProcRes.Drc_v12.weig_maxl;
1748*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weig_bilat      = adrc_data.DrcProcRes.Drc_v12.weig_bilat;
1749*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.enable_soft_thd = adrc_data.DrcProcRes.Drc_v12.enable_soft_thd;
1750*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.bilat_soft_thd  = adrc_data.DrcProcRes.Drc_v12.bilat_soft_thd;
1751*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.iir_weight      = adrc_data.DrcProcRes.Drc_v12.iir_weight;
1752*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.min_ogain       = adrc_data.DrcProcRes.Drc_v12.min_ogain;
1753*4882a593Smuzhiyun 
1754*4882a593Smuzhiyun     for (int i = 0; i < ISP32_DRC_Y_NUM; i++) {
1755*4882a593Smuzhiyun         isp_cfg.others.drc_cfg.gain_y[i]    = adrc_data.DrcProcRes.Drc_v12.gain_y[i];
1756*4882a593Smuzhiyun         isp_cfg.others.drc_cfg.compres_y[i] = adrc_data.DrcProcRes.Drc_v12.compres_y[i];
1757*4882a593Smuzhiyun         isp_cfg.others.drc_cfg.scale_y[i]   = adrc_data.DrcProcRes.Drc_v12.scale_y[i];
1758*4882a593Smuzhiyun     }
1759*4882a593Smuzhiyun 
1760*4882a593Smuzhiyun     // drc v12 add
1761*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.gas_t           = adrc_data.DrcProcRes.Drc_v12.gas_t;
1762*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.gas_l0          = adrc_data.DrcProcRes.Drc_v12.gas_l0;
1763*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.gas_l1          = adrc_data.DrcProcRes.Drc_v12.gas_l1;
1764*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.gas_l2          = adrc_data.DrcProcRes.Drc_v12.gas_l2;
1765*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.gas_l3          = adrc_data.DrcProcRes.Drc_v12.gas_l3;
1766*4882a593Smuzhiyun 
1767*4882a593Smuzhiyun #if 0
1768*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: sw_drc_offset_pow2 %d", __LINE__, isp_cfg.others.drc_cfg.offset_pow2);
1769*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_offset_pow2 %d", isp_cfg.others.drc_cfg.offset_pow2);
1770*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_compres_scl %d", isp_cfg.others.drc_cfg.compres_scl);
1771*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_position %d", isp_cfg.others.drc_cfg.position);
1772*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_delta_scalein %d", isp_cfg.others.drc_cfg.delta_scalein);
1773*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_hpdetail_ratio %d", isp_cfg.others.drc_cfg.hpdetail_ratio);
1774*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_lpdetail_ratio %d", isp_cfg.others.drc_cfg.lpdetail_ratio);
1775*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_weicur_pix %d", isp_cfg.others.drc_cfg.weicur_pix);
1776*4882a593Smuzhiyun #endif
1777*4882a593Smuzhiyun }
1778*4882a593Smuzhiyun #endif
1779*4882a593Smuzhiyun 
1780*4882a593Smuzhiyun #if RKAIQ_HAVE_CCM_V2
convertAiqCcmToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_ccm_cfg_v2_t & ccm)1781*4882a593Smuzhiyun void Isp32Params::convertAiqCcmToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1782*4882a593Smuzhiyun         const rk_aiq_ccm_cfg_v2_t& ccm) {
1783*4882a593Smuzhiyun     if (ccm.ccmEnable) {
1784*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_CCM;
1785*4882a593Smuzhiyun     }
1786*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP2X_MODULE_CCM;
1787*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP2X_MODULE_CCM;
1788*4882a593Smuzhiyun 
1789*4882a593Smuzhiyun     struct isp32_ccm_cfg* cfg = &isp_cfg.others.ccm_cfg;
1790*4882a593Smuzhiyun     const float* coeff        = ccm.matrix;
1791*4882a593Smuzhiyun     const float* offset       = ccm.offs;
1792*4882a593Smuzhiyun 
1793*4882a593Smuzhiyun     cfg->coeff0_r = (coeff[0] - 1) > 0 ? (short)((coeff[0] - 1) * 128 + 0.5)
1794*4882a593Smuzhiyun                     : (short)((coeff[0] - 1) * 128 - 0.5);  // check -128?
1795*4882a593Smuzhiyun     cfg->coeff1_r = coeff[1] > 0 ? (short)(coeff[1] * 128 + 0.5) : (short)(coeff[1] * 128 - 0.5);
1796*4882a593Smuzhiyun     cfg->coeff2_r = coeff[2] > 0 ? (short)(coeff[2] * 128 + 0.5) : (short)(coeff[2] * 128 - 0.5);
1797*4882a593Smuzhiyun     cfg->coeff0_g = coeff[3] > 0 ? (short)(coeff[3] * 128 + 0.5) : (short)(coeff[3] * 128 - 0.5);
1798*4882a593Smuzhiyun     cfg->coeff1_g = (coeff[4] - 1) > 0 ? (short)((coeff[4] - 1) * 128 + 0.5)
1799*4882a593Smuzhiyun                     : (short)((coeff[4] - 1) * 128 - 0.5);
1800*4882a593Smuzhiyun     cfg->coeff2_g = coeff[5] > 0 ? (short)(coeff[5] * 128 + 0.5) : (short)(coeff[5] * 128 - 0.5);
1801*4882a593Smuzhiyun     cfg->coeff0_b = coeff[6] > 0 ? (short)(coeff[6] * 128 + 0.5) : (short)(coeff[6] * 128 - 0.5);
1802*4882a593Smuzhiyun     cfg->coeff1_b = coeff[7] > 0 ? (short)(coeff[7] * 128 + 0.5) : (short)(coeff[7] * 128 - 0.5);
1803*4882a593Smuzhiyun     cfg->coeff2_b = (coeff[8] - 1) > 0 ? (short)((coeff[8] - 1) * 128 + 0.5)
1804*4882a593Smuzhiyun                     : (short)((coeff[8] - 1) * 128 - 0.5);
1805*4882a593Smuzhiyun 
1806*4882a593Smuzhiyun     cfg->offset_r =
1807*4882a593Smuzhiyun         offset[0] > 0 ? (short)(offset[0] + 0.5) : (short)(offset[0] - 0.5);  // for 12bit
1808*4882a593Smuzhiyun     cfg->offset_g = offset[1] > 0 ? (short)(offset[1] + 0.5) : (int)(offset[1] - 0.5);
1809*4882a593Smuzhiyun     cfg->offset_b = offset[2] > 0 ? (short)(offset[2] + 0.5) : (short)(offset[2] - 0.5);
1810*4882a593Smuzhiyun 
1811*4882a593Smuzhiyun     cfg->coeff0_y         = (u16)ccm.rgb2y_para[0];
1812*4882a593Smuzhiyun     cfg->coeff1_y         = (u16)ccm.rgb2y_para[1];
1813*4882a593Smuzhiyun     cfg->coeff2_y         = (u16)ccm.rgb2y_para[2];
1814*4882a593Smuzhiyun     cfg->bound_bit        = (u8)ccm.bound_bit;  // check
1815*4882a593Smuzhiyun     cfg->right_bit        = (u8)ccm.right_bit;
1816*4882a593Smuzhiyun     cfg->highy_adjust_dis = (u8)(ccm.highy_adj_en ? 0 : 1);
1817*4882a593Smuzhiyun     for (int i = 0; i < ISP32_CCM_CURVE_NUM; i++) {
1818*4882a593Smuzhiyun         cfg->alp_y[i] = (u16)(ccm.alp_y[i]);
1819*4882a593Smuzhiyun     }
1820*4882a593Smuzhiyun     cfg->enh_adj_en  = (u8)(ccm.enh_adj_en);
1821*4882a593Smuzhiyun     cfg->asym_adj_en = (u8)(ccm.asym_adj_en ? 1 : 0);
1822*4882a593Smuzhiyun 
1823*4882a593Smuzhiyun     cfg->color_coef0_r2y   = (u16)ccm.enh_rgb2y_para[0];
1824*4882a593Smuzhiyun     cfg->color_coef1_g2y   = (u16)ccm.enh_rgb2y_para[1];
1825*4882a593Smuzhiyun     cfg->color_coef2_b2y   = (u16)ccm.enh_rgb2y_para[2];
1826*4882a593Smuzhiyun     cfg->color_enh_rat_max = (u16)(ccm.enh_rat_max * 1024);
1827*4882a593Smuzhiyun }
1828*4882a593Smuzhiyun #endif
1829*4882a593Smuzhiyun 
1830*4882a593Smuzhiyun #if (RKAIQ_HAVE_SHARP_V33 || RKAIQ_HAVE_SHARP_V33_LITE)
convertAiqSharpenToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_sharp_v32_t & sharp)1831*4882a593Smuzhiyun void Isp32Params::convertAiqSharpenToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1832*4882a593Smuzhiyun         rk_aiq_isp_sharp_v32_t& sharp) {
1833*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d enter! enable:%d\n", __FUNCTION__, __LINE__, sharp.sharp_en);
1834*4882a593Smuzhiyun     bool enable = sharp.sharp_en;
1835*4882a593Smuzhiyun 
1836*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_SHARP;
1837*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_SHARP;
1838*4882a593Smuzhiyun 
1839*4882a593Smuzhiyun #if 1
1840*4882a593Smuzhiyun 
1841*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_SHARP;
1842*4882a593Smuzhiyun     struct isp32_sharp_cfg* pSharp = &isp_cfg.others.sharp_cfg;
1843*4882a593Smuzhiyun 
1844*4882a593Smuzhiyun     pSharp->radius_ds_mode = sharp.sharp_radius_ds_mode;
1845*4882a593Smuzhiyun     pSharp->noiseclip_mode = sharp.sharp_noiseclip_mode;
1846*4882a593Smuzhiyun     pSharp->exgain_bypass  = sharp.sharp_exgain_bypass;
1847*4882a593Smuzhiyun     pSharp->center_mode    = sharp.sharp_center_mode;
1848*4882a593Smuzhiyun     pSharp->bypass         = sharp.sharp_bypass;
1849*4882a593Smuzhiyun     if (!enable) {
1850*4882a593Smuzhiyun         pSharp->bypass = 0x01;
1851*4882a593Smuzhiyun     }
1852*4882a593Smuzhiyun 
1853*4882a593Smuzhiyun     pSharp->clip_hf_mode = sharp.sharp_clip_hf_mode;
1854*4882a593Smuzhiyun     pSharp->add_mode     = sharp.sharp_add_mode;
1855*4882a593Smuzhiyun 
1856*4882a593Smuzhiyun     pSharp->sharp_ratio = sharp.sharp_sharp_ratio;
1857*4882a593Smuzhiyun     pSharp->bf_ratio    = sharp.sharp_bf_ratio;
1858*4882a593Smuzhiyun     pSharp->gaus_ratio  = sharp.sharp_gaus_ratio;
1859*4882a593Smuzhiyun     pSharp->pbf_ratio   = sharp.sharp_pbf_ratio;
1860*4882a593Smuzhiyun 
1861*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_SHARP_X_NUM; i++) {
1862*4882a593Smuzhiyun         pSharp->luma_dx[i] = sharp.sharp_luma_dx[i];
1863*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  luma_dx[%d]:0x%x \n", __FUNCTION__, __LINE__, i, pSharp->luma_dx[i]);
1864*4882a593Smuzhiyun     }
1865*4882a593Smuzhiyun 
1866*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_SHARP_Y_NUM; i++) {
1867*4882a593Smuzhiyun         pSharp->pbf_sigma_inv[i] = sharp.sharp_pbf_sigma_inv[i];
1868*4882a593Smuzhiyun         pSharp->bf_sigma_inv[i]  = sharp.sharp_bf_sigma_inv[i];
1869*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  pbf_sigma_inv[%d]:0x%x \n", __FUNCTION__, __LINE__, i,
1870*4882a593Smuzhiyun                     pSharp->pbf_sigma_inv[i]);
1871*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  bf_sigma_inv[%d]:0x%x \n", __FUNCTION__, __LINE__, i,
1872*4882a593Smuzhiyun                     pSharp->bf_sigma_inv[i]);
1873*4882a593Smuzhiyun     }
1874*4882a593Smuzhiyun 
1875*4882a593Smuzhiyun     pSharp->bf_sigma_shift  = sharp.sharp_bf_sigma_shift;
1876*4882a593Smuzhiyun     pSharp->pbf_sigma_shift = sharp.sharp_pbf_sigma_shift;
1877*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  bf_sigma_shift:0x%x \n", __FUNCTION__, __LINE__, pSharp->bf_sigma_shift);
1878*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  pbf_sigma_shift:0x%x \n", __FUNCTION__, __LINE__, pSharp->pbf_sigma_shift);
1879*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_SHARP_Y_NUM; i++) {
1880*4882a593Smuzhiyun         pSharp->clip_hf[i] = sharp.sharp_clip_hf[i];
1881*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  clip_hf[%d]:0x%x \n", __FUNCTION__, __LINE__, i, pSharp->clip_hf[i]);
1882*4882a593Smuzhiyun     }
1883*4882a593Smuzhiyun 
1884*4882a593Smuzhiyun     pSharp->pbf_coef2 = sharp.sharp_pbf_coef[2];
1885*4882a593Smuzhiyun     pSharp->pbf_coef1 = sharp.sharp_pbf_coef[1];
1886*4882a593Smuzhiyun     pSharp->pbf_coef0 = sharp.sharp_pbf_coef[0];
1887*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  pbf_coef2:0x%x \n", __FUNCTION__, __LINE__, pSharp->pbf_coef2);
1888*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  pbf_coef1:0x%x \n", __FUNCTION__, __LINE__, pSharp->pbf_coef1);
1889*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  pbf_coef0:0x%x \n", __FUNCTION__, __LINE__, pSharp->pbf_coef0);
1890*4882a593Smuzhiyun 
1891*4882a593Smuzhiyun     pSharp->bf_coef2 = sharp.sharp_bf_coef[2];
1892*4882a593Smuzhiyun     pSharp->bf_coef1 = sharp.sharp_bf_coef[1];
1893*4882a593Smuzhiyun     pSharp->bf_coef0 = sharp.sharp_bf_coef[0];
1894*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d bf_coef2:0x%x \n", __FUNCTION__, __LINE__, pSharp->bf_coef2);
1895*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d bf_coef1:0x%x \n", __FUNCTION__, __LINE__, pSharp->bf_coef1);
1896*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d bf_coef0:0x%x \n", __FUNCTION__, __LINE__, pSharp->bf_coef0);
1897*4882a593Smuzhiyun     for (int i = 0; i < ISP3X_SHARP_GAUS_COEF_NUM; i++) {
1898*4882a593Smuzhiyun         pSharp->gaus_coef[i] = sharp.sharp_gaus_coef[i];
1899*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  gaus_coef[%d]:0x%x \n", __FUNCTION__, __LINE__, i,
1900*4882a593Smuzhiyun                     pSharp->gaus_coef[i]);
1901*4882a593Smuzhiyun     }
1902*4882a593Smuzhiyun 
1903*4882a593Smuzhiyun     pSharp->global_gain       = sharp.sharp_global_gain;
1904*4882a593Smuzhiyun     pSharp->global_gain_alpha = sharp.sharp_global_gain_alpha;
1905*4882a593Smuzhiyun     pSharp->local_gainscale   = sharp.sharp_local_gainscale;
1906*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  gloable_gain:0x%x \n", __FUNCTION__, __LINE__, pSharp->global_gain);
1907*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  gloable_gain_alpha:0x%x \n", __FUNCTION__, __LINE__,
1908*4882a593Smuzhiyun                 pSharp->global_gain_alpha);
1909*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  local_gainscale:0x%x \n", __FUNCTION__, __LINE__, pSharp->local_gainscale);
1910*4882a593Smuzhiyun 
1911*4882a593Smuzhiyun     for (int i = 0; i < 14; i++) {
1912*4882a593Smuzhiyun         pSharp->gain_adj[i] = sharp.sharp_gain_adj[i];
1913*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  sharp_gain_adj:0x%x \n", __FUNCTION__, __LINE__, pSharp->gain_adj[i]);
1914*4882a593Smuzhiyun     }
1915*4882a593Smuzhiyun     pSharp->center_wid = sharp.sharp_center_wid;
1916*4882a593Smuzhiyun     pSharp->center_het = sharp.sharp_center_het;
1917*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  center_wid:0x%x \n", __FUNCTION__, __LINE__, pSharp->center_wid);
1918*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  center_het:0x%x \n", __FUNCTION__, __LINE__, pSharp->center_het);
1919*4882a593Smuzhiyun 
1920*4882a593Smuzhiyun     for (int i = 0; i < 22; i++) {
1921*4882a593Smuzhiyun         pSharp->strength[i] = sharp.sharp_strength[i];
1922*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  strength[%d]:0x%x \n", __FUNCTION__, __LINE__, i, pSharp->strength[i]);
1923*4882a593Smuzhiyun     }
1924*4882a593Smuzhiyun     pSharp->noise_sigma    = sharp.sharp_noise_sigma;
1925*4882a593Smuzhiyun     pSharp->enhance_bit    = sharp.sharp_enhance_bit;
1926*4882a593Smuzhiyun     pSharp->noise_strength = sharp.sharp_noise_strength;
1927*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  noise_sigma:0x%x \n", __FUNCTION__, __LINE__, pSharp->noise_sigma);
1928*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  enhance_bit:0x%x \n", __FUNCTION__, __LINE__, pSharp->enhance_bit);
1929*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d  noise_strength:0x%x \n", __FUNCTION__, __LINE__, pSharp->noise_strength);
1930*4882a593Smuzhiyun 
1931*4882a593Smuzhiyun     for (int i = 0; i < 8; i++) {
1932*4882a593Smuzhiyun         pSharp->ehf_th[i]   = sharp.sharp_ehf_th[i];
1933*4882a593Smuzhiyun         pSharp->clip_neg[i] = sharp.sharp_clip_neg[i];
1934*4882a593Smuzhiyun         LOGD_ASHARP("%s:%d  ehf_th[%d]:0x%x  clip_neg[%d]:0x%x\n", __FUNCTION__, __LINE__, i,
1935*4882a593Smuzhiyun                     pSharp->ehf_th[i], i, pSharp->clip_neg[i]);
1936*4882a593Smuzhiyun     }
1937*4882a593Smuzhiyun #endif
1938*4882a593Smuzhiyun     LOGD_ASHARP("%s:%d exit!\n", __FUNCTION__, __LINE__);
1939*4882a593Smuzhiyun }
1940*4882a593Smuzhiyun #endif
convertAiqBlcToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,rk_aiq_isp_blc_v32_t & blc)1941*4882a593Smuzhiyun void Isp32Params::convertAiqBlcToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
1942*4882a593Smuzhiyun         rk_aiq_isp_blc_v32_t& blc) {
1943*4882a593Smuzhiyun     LOGD_ABLC("%s:(%d) enter enable:%d\n", __FUNCTION__, __LINE__, blc.enable);
1944*4882a593Smuzhiyun 
1945*4882a593Smuzhiyun     if (blc.enable) {
1946*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BLS;
1947*4882a593Smuzhiyun     }
1948*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_BLS;
1949*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_BLS;
1950*4882a593Smuzhiyun 
1951*4882a593Smuzhiyun #if 1
1952*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.enable_auto = 0;
1953*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.en_windows  = 0;
1954*4882a593Smuzhiyun 
1955*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window1.h_offs = 0;
1956*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window1.v_offs = 0;
1957*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window1.h_size = 0;
1958*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window1.v_size = 0;
1959*4882a593Smuzhiyun 
1960*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window2.h_offs = 0;
1961*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window2.v_offs = 0;
1962*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window2.h_size = 0;
1963*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_window2.v_size = 0;
1964*4882a593Smuzhiyun 
1965*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls_samples = 0;
1966*4882a593Smuzhiyun 
1967*4882a593Smuzhiyun     // blc0
1968*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.fixed_val.r  = blc.blc_r;
1969*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.fixed_val.gr = blc.blc_gr;
1970*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.fixed_val.gb = blc.blc_gb;
1971*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.fixed_val.b  = blc.blc_b;
1972*4882a593Smuzhiyun 
1973*4882a593Smuzhiyun     if (blc.isp_ob_predgain != 0 ) {
1974*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.r  = CLIP((int)(blc.blc1_r * blc.isp_ob_predgain), 0, 32767);
1975*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.gr = CLIP((int)(blc.blc1_gr * blc.isp_ob_predgain), 0, 32767);
1976*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.gb = CLIP((int)(blc.blc1_gb * blc.isp_ob_predgain), 0, 32767);
1977*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.b  = CLIP((int)(blc.blc1_b * blc.isp_ob_predgain), 0, 32767);
1978*4882a593Smuzhiyun     } else {
1979*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.r  = (int)blc.blc1_r;
1980*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.gr = (int)blc.blc1_gr;
1981*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.gb = (int)blc.blc1_gb;
1982*4882a593Smuzhiyun         isp_cfg.others.bls_cfg.bls1_val.b  = (int)blc.blc1_b;
1983*4882a593Smuzhiyun     }
1984*4882a593Smuzhiyun 
1985*4882a593Smuzhiyun     // TODO bls1 params
1986*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.bls1_en = blc.blc1_enable;
1987*4882a593Smuzhiyun 
1988*4882a593Smuzhiyun     // blc_ob
1989*4882a593Smuzhiyun 
1990*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.isp_ob_offset   = CLIP((int)blc.isp_ob_offset, 0, 511);
1991*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.isp_ob_predgain = CLIP((int)(blc.isp_ob_predgain * (1 << 8)), 0, 65535);
1992*4882a593Smuzhiyun     isp_cfg.others.bls_cfg.isp_ob_max      = CLIP(blc.isp_ob_max, 0, 1048575);
1993*4882a593Smuzhiyun 
1994*4882a593Smuzhiyun #if defined(ISP_HW_V32) || defined(ISP_HW_V32_LITE)
1995*4882a593Smuzhiyun     mLatestBlsCfg = isp_cfg.others.bls_cfg;
1996*4882a593Smuzhiyun #endif
1997*4882a593Smuzhiyun 
1998*4882a593Smuzhiyun     LOGD_ABLC("isp_ob_offset = 0x%x ,isp_ob_predgain = 0x%x, isp_ob_max = %x \n",
1999*4882a593Smuzhiyun               isp_cfg.others.bls_cfg.isp_ob_offset, isp_cfg.others.bls_cfg.isp_ob_predgain,
2000*4882a593Smuzhiyun               isp_cfg.others.bls_cfg.isp_ob_max);
2001*4882a593Smuzhiyun 
2002*4882a593Smuzhiyun #endif
2003*4882a593Smuzhiyun     LOGD_ABLC("%s:(%d) exit \n", __FUNCTION__, __LINE__);
2004*4882a593Smuzhiyun }
2005*4882a593Smuzhiyun 
convertAiqAldchToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,const rk_aiq_isp_ldch_v21_t & ldch_cfg)2006*4882a593Smuzhiyun void Isp32Params::convertAiqAldchToIsp32Params(struct isp32_isp_params_cfg& isp_cfg,
2007*4882a593Smuzhiyun         const rk_aiq_isp_ldch_v21_t& ldch_cfg)
2008*4882a593Smuzhiyun {
2009*4882a593Smuzhiyun     struct isp32_ldch_cfg *pLdchCfg = &isp_cfg.others.ldch_cfg;
2010*4882a593Smuzhiyun 
2011*4882a593Smuzhiyun     if (ldch_cfg.base.sw_ldch_en) {
2012*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP32_MODULE_LDCH;
2013*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP32_MODULE_LDCH;
2014*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP32_MODULE_LDCH;
2015*4882a593Smuzhiyun 
2016*4882a593Smuzhiyun         pLdchCfg->hsize = ldch_cfg.base.lut_h_size;
2017*4882a593Smuzhiyun         pLdchCfg->vsize = ldch_cfg.base.lut_v_size;
2018*4882a593Smuzhiyun         pLdchCfg->buf_fd = ldch_cfg.base.lut_mapxy_buf_fd;
2019*4882a593Smuzhiyun 
2020*4882a593Smuzhiyun         pLdchCfg->frm_end_dis = ldch_cfg.frm_end_dis;
2021*4882a593Smuzhiyun         pLdchCfg->zero_interp_en = ldch_cfg.zero_interp_en;
2022*4882a593Smuzhiyun         pLdchCfg->sample_avr_en = ldch_cfg.sample_avr_en;
2023*4882a593Smuzhiyun         pLdchCfg->bic_mode_en = ldch_cfg.bic_mode_en;
2024*4882a593Smuzhiyun         pLdchCfg->force_map_en = ldch_cfg.force_map_en;
2025*4882a593Smuzhiyun         pLdchCfg->map13p3_en = ldch_cfg.map13p3_en;
2026*4882a593Smuzhiyun         memcpy(pLdchCfg->bicubic, ldch_cfg.bicubic, sizeof(ldch_cfg.bicubic));
2027*4882a593Smuzhiyun 
2028*4882a593Smuzhiyun         LOGV_CAMHW_SUBM(ISP20PARAM_SUBM, "enable ldch h/v size: %dx%d, buf_fd: %d",
2029*4882a593Smuzhiyun                         pLdchCfg->hsize, pLdchCfg->vsize, pLdchCfg->buf_fd);
2030*4882a593Smuzhiyun 
2031*4882a593Smuzhiyun     } else {
2032*4882a593Smuzhiyun         isp_cfg.module_ens &= ~ISP32_MODULE_LDCH;
2033*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP32_MODULE_LDCH;
2034*4882a593Smuzhiyun     }
2035*4882a593Smuzhiyun }
2036*4882a593Smuzhiyun 
convertAiqExpIspDgainToIsp32Params(struct isp32_isp_params_cfg & isp_cfg,RKAiqAecExpInfo_t ae_exp)2037*4882a593Smuzhiyun void Isp32Params::convertAiqExpIspDgainToIsp32Params(struct isp32_isp_params_cfg& isp_cfg, RKAiqAecExpInfo_t ae_exp)
2038*4882a593Smuzhiyun {
2039*4882a593Smuzhiyun     // TODO
2040*4882a593Smuzhiyun     struct isp32_awb_gain_cfg *  cfg = &isp_cfg.others.awb_gain_cfg;
2041*4882a593Smuzhiyun     uint16_t max_wb_gain = (1 << (ISP2X_WBGAIN_FIXSCALE_BIT + ISP3X_WBGAIN_INTSCALE_BIT)) - 1;
2042*4882a593Smuzhiyun 
2043*4882a593Smuzhiyun     if(_working_mode == RK_AIQ_WORKING_MODE_NORMAL) {
2044*4882a593Smuzhiyun 
2045*4882a593Smuzhiyun         float isp_dgain = MAX(1.0f, ae_exp.LinearExp.exp_real_params.isp_dgain);
2046*4882a593Smuzhiyun         if (isp_dgain < 1.0000001f)
2047*4882a593Smuzhiyun             return;
2048*4882a593Smuzhiyun         cfg->gain0_red = MIN(cfg->gain0_red * isp_dgain + 0.5, max_wb_gain);
2049*4882a593Smuzhiyun         cfg->gain0_green_r = MIN(cfg->gain0_green_r * isp_dgain + 0.5, max_wb_gain);
2050*4882a593Smuzhiyun         cfg->gain0_green_b = MIN(cfg->gain0_green_b * isp_dgain + 0.5, max_wb_gain);
2051*4882a593Smuzhiyun         cfg->gain0_blue = MIN(cfg->gain0_blue * isp_dgain + 0.5, max_wb_gain);
2052*4882a593Smuzhiyun 
2053*4882a593Smuzhiyun         cfg->gain1_red = MIN(cfg->gain1_red * isp_dgain + 0.5, max_wb_gain);
2054*4882a593Smuzhiyun         cfg->gain1_green_r = MIN(cfg->gain1_green_r * isp_dgain + 0.5, max_wb_gain);
2055*4882a593Smuzhiyun         cfg->gain1_green_b = MIN(cfg->gain1_green_b * isp_dgain + 0.5, max_wb_gain);
2056*4882a593Smuzhiyun         cfg->gain1_blue = MIN(cfg->gain1_blue * isp_dgain + 0.5, max_wb_gain);
2057*4882a593Smuzhiyun 
2058*4882a593Smuzhiyun         cfg->gain2_red = MIN(cfg->gain2_red * isp_dgain + 0.5, max_wb_gain);
2059*4882a593Smuzhiyun         cfg->gain2_green_r = MIN(cfg->gain2_green_r * isp_dgain + 0.5, max_wb_gain);
2060*4882a593Smuzhiyun         cfg->gain2_green_b = MIN(cfg->gain2_green_b * isp_dgain + 0.5, max_wb_gain);
2061*4882a593Smuzhiyun         cfg->gain2_blue = MIN(cfg->gain2_blue * isp_dgain + 0.5, max_wb_gain);
2062*4882a593Smuzhiyun 
2063*4882a593Smuzhiyun 
2064*4882a593Smuzhiyun     } else {
2065*4882a593Smuzhiyun 
2066*4882a593Smuzhiyun         float isp_dgain0 = MAX(1.0f, ae_exp.HdrExp[0].exp_real_params.isp_dgain);
2067*4882a593Smuzhiyun         float isp_dgain1 = MAX(1.0f, ae_exp.HdrExp[1].exp_real_params.isp_dgain);
2068*4882a593Smuzhiyun         float isp_dgain2 = MAX(1.0f, ae_exp.HdrExp[2].exp_real_params.isp_dgain);
2069*4882a593Smuzhiyun         if (isp_dgain0 < 1.0000001f &&
2070*4882a593Smuzhiyun             isp_dgain1 < 1.0000001f &&
2071*4882a593Smuzhiyun             isp_dgain2 < 1.0000001f )
2072*4882a593Smuzhiyun             return;
2073*4882a593Smuzhiyun 
2074*4882a593Smuzhiyun         cfg->gain0_red = MIN(cfg->gain0_red * isp_dgain0 + 0.5, max_wb_gain);
2075*4882a593Smuzhiyun         cfg->gain0_green_r = MIN(cfg->gain0_green_r * isp_dgain0 + 0.5, max_wb_gain);
2076*4882a593Smuzhiyun         cfg->gain0_green_b = MIN(cfg->gain0_green_b * isp_dgain0 + 0.5, max_wb_gain);
2077*4882a593Smuzhiyun         cfg->gain0_blue = MIN(cfg->gain0_blue * isp_dgain0 + 0.5, max_wb_gain);
2078*4882a593Smuzhiyun 
2079*4882a593Smuzhiyun         cfg->gain1_red = MIN(cfg->gain1_red * isp_dgain1 + 0.5, max_wb_gain);
2080*4882a593Smuzhiyun         cfg->gain1_green_r = MIN(cfg->gain1_green_r * isp_dgain1 + 0.5, max_wb_gain);
2081*4882a593Smuzhiyun         cfg->gain1_green_b = MIN(cfg->gain1_green_b * isp_dgain1 + 0.5, max_wb_gain);
2082*4882a593Smuzhiyun         cfg->gain1_blue = MIN(cfg->gain1_blue * isp_dgain1 + 0.5, max_wb_gain);
2083*4882a593Smuzhiyun 
2084*4882a593Smuzhiyun         cfg->gain2_red = MIN(cfg->gain2_red * isp_dgain2 + 0.5, max_wb_gain);
2085*4882a593Smuzhiyun         cfg->gain2_green_r = MIN(cfg->gain2_green_r * isp_dgain2 + 0.5, max_wb_gain);
2086*4882a593Smuzhiyun         cfg->gain2_green_b = MIN(cfg->gain2_green_b * isp_dgain2 + 0.5, max_wb_gain);
2087*4882a593Smuzhiyun         cfg->gain2_blue = MIN(cfg->gain2_blue * isp_dgain2 + 0.5, max_wb_gain);
2088*4882a593Smuzhiyun 
2089*4882a593Smuzhiyun     }
2090*4882a593Smuzhiyun 
2091*4882a593Smuzhiyun 
2092*4882a593Smuzhiyun }
2093*4882a593Smuzhiyun 
convert3aResultsToIspCfg(SmartPtr<cam3aResult> & result,void * isp_cfg_p,bool is_multi_isp)2094*4882a593Smuzhiyun bool Isp32Params::convert3aResultsToIspCfg(SmartPtr<cam3aResult>& result, void* isp_cfg_p, bool is_multi_isp) {
2095*4882a593Smuzhiyun     struct isp32_isp_params_cfg& isp_cfg       = *(struct isp32_isp_params_cfg*)isp_cfg_p;
2096*4882a593Smuzhiyun 
2097*4882a593Smuzhiyun     if (result.ptr() == NULL) {
2098*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "3A result empty");
2099*4882a593Smuzhiyun         return false;
2100*4882a593Smuzhiyun     }
2101*4882a593Smuzhiyun     int32_t type = result->getType();
2102*4882a593Smuzhiyun     //LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s, module (0x%x) convert params!\n", __FUNCTION__, type);
2103*4882a593Smuzhiyun     switch (type) {
2104*4882a593Smuzhiyun     case RESULT_TYPE_EXPOSURE_PARAM:
2105*4882a593Smuzhiyun     {
2106*4882a593Smuzhiyun         RkAiqSensorExpParamsProxy* expParams =
2107*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqSensorExpParamsProxy>();
2108*4882a593Smuzhiyun         if (expParams)
2109*4882a593Smuzhiyun             convertAiqExpIspDgainToIsp32Params(isp_cfg,
2110*4882a593Smuzhiyun                                                expParams->data()->aecExpInfo);
2111*4882a593Smuzhiyun     }
2112*4882a593Smuzhiyun     break;
2113*4882a593Smuzhiyun     case RESULT_TYPE_AWBGAIN_PARAM: {
2114*4882a593Smuzhiyun         RkAiqIspAwbGainParamsProxyV32* awb_gain =
2115*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspAwbGainParamsProxyV32>();
2116*4882a593Smuzhiyun         if (awb_gain) {
2117*4882a593Smuzhiyun             convertAiqAwbGainToIsp32Params(isp_cfg, awb_gain->data()->result, true);
2118*4882a593Smuzhiyun         }
2119*4882a593Smuzhiyun     }
2120*4882a593Smuzhiyun     break;
2121*4882a593Smuzhiyun     case RESULT_TYPE_AWB_PARAM: {
2122*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V32
2123*4882a593Smuzhiyun         mAwbParams = result.ptr();
2124*4882a593Smuzhiyun         RkAiqIspAwbParamsProxyV32* params =
2125*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspAwbParamsProxyV32>();
2126*4882a593Smuzhiyun 
2127*4882a593Smuzhiyun         if (params) convertAiqAwbToIsp32Params(isp_cfg, params->data()->result, true);
2128*4882a593Smuzhiyun #endif
2129*4882a593Smuzhiyun     }
2130*4882a593Smuzhiyun     break;
2131*4882a593Smuzhiyun     case RESULT_TYPE_GIC_PARAM: {
2132*4882a593Smuzhiyun #if RKAIQ_HAVE_GIC_V2
2133*4882a593Smuzhiyun         RkAiqIspGicParamsProxy* params =
2134*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspGicParamsProxy>();
2135*4882a593Smuzhiyun         if (params) convertAiqAgicToIsp21Params(isp_cfg, params->data()->result);
2136*4882a593Smuzhiyun #endif
2137*4882a593Smuzhiyun     }
2138*4882a593Smuzhiyun     break;
2139*4882a593Smuzhiyun     case RESULT_TYPE_LSC_PARAM: {
2140*4882a593Smuzhiyun #if RKAIQ_HAVE_LSC_V3
2141*4882a593Smuzhiyun         RkAiqIspLscParamsProxy* params =
2142*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspLscParamsProxy>();
2143*4882a593Smuzhiyun         if (params) convertAiqLscToIsp20Params(isp_cfg, params->data()->result);
2144*4882a593Smuzhiyun #endif
2145*4882a593Smuzhiyun     }
2146*4882a593Smuzhiyun     break;
2147*4882a593Smuzhiyun     case RESULT_TYPE_AF_PARAM: {
2148*4882a593Smuzhiyun #if RKAIQ_HAVE_AF_V31 || RKAIQ_ONLY_AF_STATS_V31
2149*4882a593Smuzhiyun         RkAiqIspAfParamsProxyV32* params =
2150*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspAfParamsProxyV32>();
2151*4882a593Smuzhiyun         if (params) convertAiqAfToIsp32Params(isp_cfg, params->data()->result, true);
2152*4882a593Smuzhiyun #endif
2153*4882a593Smuzhiyun #if RKAIQ_HAVE_AF_V32_LITE || RKAIQ_ONLY_AF_STATS_V32_LITE
2154*4882a593Smuzhiyun         RkAiqIspAfParamsProxyV32Lite* params =
2155*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspAfParamsProxyV32Lite>();
2156*4882a593Smuzhiyun         if (params) convertAiqAfLiteToIsp32Params(isp_cfg, params->data()->result, true);
2157*4882a593Smuzhiyun #endif
2158*4882a593Smuzhiyun     }
2159*4882a593Smuzhiyun     break;
2160*4882a593Smuzhiyun     case RESULT_TYPE_CCM_PARAM: {
2161*4882a593Smuzhiyun #if RKAIQ_HAVE_CCM_V2
2162*4882a593Smuzhiyun         RkAiqIspCcmParamsProxyV32* params =
2163*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspCcmParamsProxyV32>();
2164*4882a593Smuzhiyun         if (params) convertAiqCcmToIsp32Params(isp_cfg, params->data()->result);
2165*4882a593Smuzhiyun #endif
2166*4882a593Smuzhiyun     }
2167*4882a593Smuzhiyun     break;
2168*4882a593Smuzhiyun     case RESULT_TYPE_CAC_PARAM: {
2169*4882a593Smuzhiyun #if RKAIQ_HAVE_CAC_V11
2170*4882a593Smuzhiyun         RkAiqIspCacParamsProxyV32* params =
2171*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspCacParamsProxyV32>();
2172*4882a593Smuzhiyun         if (params)
2173*4882a593Smuzhiyun             convertAiqCacToIsp32Params(isp_cfg, params->data()->result);
2174*4882a593Smuzhiyun #endif
2175*4882a593Smuzhiyun     }
2176*4882a593Smuzhiyun     break;
2177*4882a593Smuzhiyun     case RESULT_TYPE_DEBAYER_PARAM: {
2178*4882a593Smuzhiyun #if RKAIQ_HAVE_DEBAYER_V2 || RKAIQ_HAVE_DEBAYER_V2_LITE
2179*4882a593Smuzhiyun         RkAiqIspDebayerParamsProxyV32* params =
2180*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspDebayerParamsProxyV32>();
2181*4882a593Smuzhiyun 
2182*4882a593Smuzhiyun         if (params) {
2183*4882a593Smuzhiyun             convertAiqAdebayerToIsp32Params(isp_cfg, params->data()->result);
2184*4882a593Smuzhiyun         }
2185*4882a593Smuzhiyun #endif
2186*4882a593Smuzhiyun     }
2187*4882a593Smuzhiyun     break;
2188*4882a593Smuzhiyun     case RESULT_TYPE_AEC_PARAM: {
2189*4882a593Smuzhiyun         RkAiqIspAecParamsProxy* params =
2190*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspAecParamsProxy>();
2191*4882a593Smuzhiyun         if (params) {
2192*4882a593Smuzhiyun             convertAiqAeToIsp20Params(isp_cfg, params->data()->result);
2193*4882a593Smuzhiyun         }
2194*4882a593Smuzhiyun     }
2195*4882a593Smuzhiyun     break;
2196*4882a593Smuzhiyun     case RESULT_TYPE_HIST_PARAM: {
2197*4882a593Smuzhiyun         RkAiqIspHistParamsProxy* params =
2198*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspHistParamsProxy>();
2199*4882a593Smuzhiyun         if (params) convertAiqHistToIsp20Params(isp_cfg, params->data()->result);
2200*4882a593Smuzhiyun     }
2201*4882a593Smuzhiyun     break;
2202*4882a593Smuzhiyun     case RESULT_TYPE_AGAMMA_PARAM: {
2203*4882a593Smuzhiyun #if RKAIQ_HAVE_GAMMA_V11
2204*4882a593Smuzhiyun         RkAiqIspAgammaParamsProxy* params =
2205*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspAgammaParamsProxy>();
2206*4882a593Smuzhiyun         if (params) convertAiqAgammaToIsp3xParams(isp_cfg, params->data()->result);
2207*4882a593Smuzhiyun #endif
2208*4882a593Smuzhiyun     }
2209*4882a593Smuzhiyun     break;
2210*4882a593Smuzhiyun     case RESULT_TYPE_MERGE_PARAM: {
2211*4882a593Smuzhiyun #if RKAIQ_HAVE_MERGE_V12
2212*4882a593Smuzhiyun         RkAiqIspMergeParamsProxy* params =
2213*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspMergeParamsProxy>();
2214*4882a593Smuzhiyun         if (params) convertAiqMergeToIsp32Params(isp_cfg, params->data()->result);
2215*4882a593Smuzhiyun #endif
2216*4882a593Smuzhiyun     }
2217*4882a593Smuzhiyun     break;
2218*4882a593Smuzhiyun     case RESULT_TYPE_DEHAZE_PARAM: {
2219*4882a593Smuzhiyun #if RKAIQ_HAVE_DEHAZE_V12
2220*4882a593Smuzhiyun         RkAiqIspDehazeParamsProxy* params =
2221*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspDehazeParamsProxy>();
2222*4882a593Smuzhiyun         if (params) convertAiqAdehazeToIsp32Params(isp_cfg, params->data()->result);
2223*4882a593Smuzhiyun #endif
2224*4882a593Smuzhiyun     }
2225*4882a593Smuzhiyun     break;
2226*4882a593Smuzhiyun     case RESULT_TYPE_DRC_PARAM: {
2227*4882a593Smuzhiyun #if RKAIQ_HAVE_DRC_V12 || RKAIQ_HAVE_DRC_V12_LITE
2228*4882a593Smuzhiyun         RkAiqIspDrcParamsProxy* params = result.get_cast_ptr<RkAiqIspDrcParamsProxy>();
2229*4882a593Smuzhiyun         if (params) convertAiqDrcToIsp32Params(isp_cfg, params->data()->result);
2230*4882a593Smuzhiyun #endif
2231*4882a593Smuzhiyun     }
2232*4882a593Smuzhiyun     break;
2233*4882a593Smuzhiyun     case RESULT_TYPE_LUT3D_PARAM: {
2234*4882a593Smuzhiyun #if RKAIQ_HAVE_3DLUT_V1
2235*4882a593Smuzhiyun         RkAiqIspLut3dParamsProxy* params =
2236*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspLut3dParamsProxy>();
2237*4882a593Smuzhiyun         if (params) convertAiqA3dlutToIsp20Params(isp_cfg, params->data()->result);
2238*4882a593Smuzhiyun #endif
2239*4882a593Smuzhiyun     }
2240*4882a593Smuzhiyun     break;
2241*4882a593Smuzhiyun #if RKAIQ_HAVE_DPCC_V1
2242*4882a593Smuzhiyun     case RESULT_TYPE_DPCC_PARAM: {
2243*4882a593Smuzhiyun         RkAiqIspDpccParamsProxy* params =
2244*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspDpccParamsProxy>();
2245*4882a593Smuzhiyun         if (params) convertAiqDpccToIsp20Params(isp_cfg, params->data()->result);
2246*4882a593Smuzhiyun     }
2247*4882a593Smuzhiyun     break;
2248*4882a593Smuzhiyun #endif
2249*4882a593Smuzhiyun     case RESULT_TYPE_CSM_PARAM: {
2250*4882a593Smuzhiyun         RkAiqIspCsmParamsProxy* params =
2251*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspCsmParamsProxy>();
2252*4882a593Smuzhiyun         if (params) convertAiqCsmToIsp21Params(isp_cfg, params->data()->result);
2253*4882a593Smuzhiyun     }
2254*4882a593Smuzhiyun     break;
2255*4882a593Smuzhiyun     case RESULT_TYPE_RAWNR_PARAM: {
2256*4882a593Smuzhiyun #if RKAIQ_HAVE_BAYER2DNR_V23
2257*4882a593Smuzhiyun         RkAiqIspBaynrParamsProxyV32* params =
2258*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspBaynrParamsProxyV32>();
2259*4882a593Smuzhiyun         if (params) convertAiqRawnrToIsp32Params(isp_cfg, params->data()->result);
2260*4882a593Smuzhiyun #endif
2261*4882a593Smuzhiyun     }
2262*4882a593Smuzhiyun     break;
2263*4882a593Smuzhiyun     case RESULT_TYPE_TNR_PARAM: {
2264*4882a593Smuzhiyun #if (RKAIQ_HAVE_BAYERTNR_V23 || RKAIQ_HAVE_BAYERTNR_V23_LITE)
2265*4882a593Smuzhiyun         RkAiqIspTnrParamsProxyV32* params =
2266*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspTnrParamsProxyV32>();
2267*4882a593Smuzhiyun         if (params) convertAiqTnrToIsp32Params(isp_cfg, params->data()->result);
2268*4882a593Smuzhiyun #endif
2269*4882a593Smuzhiyun     }
2270*4882a593Smuzhiyun     break;
2271*4882a593Smuzhiyun     case RESULT_TYPE_YNR_PARAM: {
2272*4882a593Smuzhiyun #if RKAIQ_HAVE_YNR_V22
2273*4882a593Smuzhiyun         RkAiqIspYnrParamsProxyV32* params =
2274*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspYnrParamsProxyV32>();
2275*4882a593Smuzhiyun         if (params) convertAiqYnrToIsp32Params(isp_cfg, params->data()->result);
2276*4882a593Smuzhiyun #endif
2277*4882a593Smuzhiyun     }
2278*4882a593Smuzhiyun     break;
2279*4882a593Smuzhiyun     case RESULT_TYPE_UVNR_PARAM: {
2280*4882a593Smuzhiyun #if (RKAIQ_HAVE_CNR_V30 || RKAIQ_HAVE_CNR_V30_LITE)
2281*4882a593Smuzhiyun         RkAiqIspCnrParamsProxyV32* params =
2282*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspCnrParamsProxyV32>();
2283*4882a593Smuzhiyun         if (params) convertAiqUvnrToIsp32Params(isp_cfg, params->data()->result);
2284*4882a593Smuzhiyun #endif
2285*4882a593Smuzhiyun     }
2286*4882a593Smuzhiyun     break;
2287*4882a593Smuzhiyun     case RESULT_TYPE_BLC_PARAM:
2288*4882a593Smuzhiyun     {
2289*4882a593Smuzhiyun         RkAiqIspBlcParamsProxyV32* params =
2290*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspBlcParamsProxyV32>();
2291*4882a593Smuzhiyun         if (params) convertAiqBlcToIsp32Params(isp_cfg, params->data()->result);
2292*4882a593Smuzhiyun     }
2293*4882a593Smuzhiyun     break;
2294*4882a593Smuzhiyun     case RESULT_TYPE_GAIN_PARAM: {
2295*4882a593Smuzhiyun         RkAiqIspGainParamsProxyV3x* params =
2296*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspGainParamsProxyV3x>();
2297*4882a593Smuzhiyun         if (params) convertAiqGainToIsp3xParams(isp_cfg, params->data()->result);
2298*4882a593Smuzhiyun     }
2299*4882a593Smuzhiyun     break;
2300*4882a593Smuzhiyun     case RESULT_TYPE_SHARPEN_PARAM: {
2301*4882a593Smuzhiyun #if (RKAIQ_HAVE_SHARP_V33 || RKAIQ_HAVE_SHARP_V33_LITE)
2302*4882a593Smuzhiyun         RkAiqIspSharpParamsProxyV32* params =
2303*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspSharpParamsProxyV32>();
2304*4882a593Smuzhiyun         if (params) convertAiqSharpenToIsp32Params(isp_cfg, params->data()->result);
2305*4882a593Smuzhiyun #endif
2306*4882a593Smuzhiyun     }
2307*4882a593Smuzhiyun     break;
2308*4882a593Smuzhiyun     case RESULT_TYPE_CGC_PARAM: {
2309*4882a593Smuzhiyun #if RKAIQ_HAVE_CGC_V1
2310*4882a593Smuzhiyun         RkAiqIspCgcParamsProxy* params =
2311*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspCgcParamsProxy>();
2312*4882a593Smuzhiyun         if (params) convertAiqCgcToIsp21Params(isp_cfg, params->data()->result);
2313*4882a593Smuzhiyun #endif
2314*4882a593Smuzhiyun     }
2315*4882a593Smuzhiyun     break;
2316*4882a593Smuzhiyun     case RESULT_TYPE_CP_PARAM: {
2317*4882a593Smuzhiyun #if RKAIQ_HAVE_ACP_V10
2318*4882a593Smuzhiyun         RkAiqIspCpParamsProxy* params =
2319*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspCpParamsProxy>();
2320*4882a593Smuzhiyun         if (params) convertAiqCpToIsp20Params(isp_cfg, params->data()->result);
2321*4882a593Smuzhiyun #endif
2322*4882a593Smuzhiyun     }
2323*4882a593Smuzhiyun     break;
2324*4882a593Smuzhiyun     case RESULT_TYPE_IE_PARAM: {
2325*4882a593Smuzhiyun #if RKAIQ_HAVE_AIE_V10
2326*4882a593Smuzhiyun         RkAiqIspIeParamsProxy* params =
2327*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqIspIeParamsProxy>();
2328*4882a593Smuzhiyun         if (params) convertAiqIeToIsp20Params(isp_cfg, params->data()->result);
2329*4882a593Smuzhiyun #endif
2330*4882a593Smuzhiyun     }
2331*4882a593Smuzhiyun     break;
2332*4882a593Smuzhiyun     case RESULT_TYPE_LDCH_PARAM:
2333*4882a593Smuzhiyun     {
2334*4882a593Smuzhiyun         RkAiqIspLdchParamsProxyV32* params = result.get_cast_ptr<RkAiqIspLdchParamsProxyV32>();
2335*4882a593Smuzhiyun         if (params)
2336*4882a593Smuzhiyun             convertAiqAldchToIsp32Params(isp_cfg, params->data()->result);
2337*4882a593Smuzhiyun     }
2338*4882a593Smuzhiyun     break;
2339*4882a593Smuzhiyun     default:
2340*4882a593Smuzhiyun         LOGE("unknown param type: 0x%x!", type);
2341*4882a593Smuzhiyun         return false;
2342*4882a593Smuzhiyun     }
2343*4882a593Smuzhiyun 
2344*4882a593Smuzhiyun     return true;
2345*4882a593Smuzhiyun }
2346*4882a593Smuzhiyun 
2347*4882a593Smuzhiyun }  // namespace RkCam
2348