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