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