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