1 /* 2 * This file is auto-generated. Modifications will be lost. 3 * 4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5 * for more information. 6 */ 7 #ifndef _UAPI_RKISP1_CONFIG_H 8 #define _UAPI_RKISP1_CONFIG_H 9 #include <linux/types.h> 10 #define RKISP1_CIF_ISP_MODULE_DPCC (1U << 0) 11 #define RKISP1_CIF_ISP_MODULE_BLS (1U << 1) 12 #define RKISP1_CIF_ISP_MODULE_SDG (1U << 2) 13 #define RKISP1_CIF_ISP_MODULE_HST (1U << 3) 14 #define RKISP1_CIF_ISP_MODULE_LSC (1U << 4) 15 #define RKISP1_CIF_ISP_MODULE_AWB_GAIN (1U << 5) 16 #define RKISP1_CIF_ISP_MODULE_FLT (1U << 6) 17 #define RKISP1_CIF_ISP_MODULE_BDM (1U << 7) 18 #define RKISP1_CIF_ISP_MODULE_CTK (1U << 8) 19 #define RKISP1_CIF_ISP_MODULE_GOC (1U << 9) 20 #define RKISP1_CIF_ISP_MODULE_CPROC (1U << 10) 21 #define RKISP1_CIF_ISP_MODULE_AFC (1U << 11) 22 #define RKISP1_CIF_ISP_MODULE_AWB (1U << 12) 23 #define RKISP1_CIF_ISP_MODULE_IE (1U << 13) 24 #define RKISP1_CIF_ISP_MODULE_AEC (1U << 14) 25 #define RKISP1_CIF_ISP_MODULE_WDR (1U << 15) 26 #define RKISP1_CIF_ISP_MODULE_DPF (1U << 16) 27 #define RKISP1_CIF_ISP_MODULE_DPF_STRENGTH (1U << 17) 28 #define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100 29 #define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800 30 #define RKISP1_CIF_ISP_AE_MEAN_MAX_V10 25 31 #define RKISP1_CIF_ISP_AE_MEAN_MAX_V12 81 32 #define RKISP1_CIF_ISP_AE_MEAN_MAX RKISP1_CIF_ISP_AE_MEAN_MAX_V12 33 #define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 16 34 #define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 32 35 #define RKISP1_CIF_ISP_HIST_BIN_N_MAX RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 36 #define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3 37 #define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17 38 #define RKISP1_CIF_ISP_BDM_MAX_TH 0xff 39 #define RKISP1_CIF_ISP_BLS_START_H_MAX 0x00000fff 40 #define RKISP1_CIF_ISP_BLS_STOP_H_MAX 0x00000fff 41 #define RKISP1_CIF_ISP_BLS_START_V_MAX 0x00000fff 42 #define RKISP1_CIF_ISP_BLS_STOP_V_MAX 0x00000fff 43 #define RKISP1_CIF_ISP_BLS_SAMPLES_MAX 0x00000012 44 #define RKISP1_CIF_ISP_BLS_FIX_SUB_MAX 0x00000fff 45 #define RKISP1_CIF_ISP_BLS_FIX_SUB_MIN 0xfffff000 46 #define RKISP1_CIF_ISP_BLS_FIX_MASK 0x00001fff 47 #define RKISP1_CIF_ISP_AWB_MAX_GRID 1 48 #define RKISP1_CIF_ISP_AWB_MAX_FRAMES 7 49 #define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10 17 50 #define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 34 51 #define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 52 #define RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE 8 53 #define RKISP1_CIF_ISP_LSC_SAMPLES_MAX 17 54 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 25 55 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81 56 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 57 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3 58 #define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2) 59 #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0) 60 #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1) 61 #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2) 62 #define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3) 63 #define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0) 64 #define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3) 65 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0) 66 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1) 67 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2) 68 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3) 69 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4) 70 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8) 71 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9) 72 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10) 73 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11) 74 #define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12) 75 #define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0) 76 #define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8) 77 #define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0) 78 #define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8) 79 #define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0) 80 #define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8) 81 #define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0) 82 #define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8) 83 #define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0) 84 #define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8) 85 #define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4)) 86 #define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2)) 87 #define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4)) 88 #define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2)) 89 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17 90 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6 91 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0) 92 #define RKISP1_CIF_ISP_STAT_AUTOEXP (1U << 1) 93 #define RKISP1_CIF_ISP_STAT_AFM (1U << 2) 94 #define RKISP1_CIF_ISP_STAT_HIST (1U << 3) 95 enum rkisp1_cif_isp_version { 96 RKISP1_V10 = 10, 97 RKISP1_V11, 98 RKISP1_V12, 99 RKISP1_V13, 100 RKISP1_V_IMX8MP, 101 }; 102 enum rkisp1_cif_isp_histogram_mode { 103 RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE, 104 RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED, 105 RKISP1_CIF_ISP_HISTOGRAM_MODE_R_HISTOGRAM, 106 RKISP1_CIF_ISP_HISTOGRAM_MODE_G_HISTOGRAM, 107 RKISP1_CIF_ISP_HISTOGRAM_MODE_B_HISTOGRAM, 108 RKISP1_CIF_ISP_HISTOGRAM_MODE_Y_HISTOGRAM 109 }; 110 enum rkisp1_cif_isp_awb_mode_type { 111 RKISP1_CIF_ISP_AWB_MODE_MANUAL, 112 RKISP1_CIF_ISP_AWB_MODE_RGB, 113 RKISP1_CIF_ISP_AWB_MODE_YCBCR 114 }; 115 enum rkisp1_cif_isp_flt_mode { 116 RKISP1_CIF_ISP_FLT_STATIC_MODE, 117 RKISP1_CIF_ISP_FLT_DYNAMIC_MODE 118 }; 119 enum rkisp1_cif_isp_exp_ctrl_autostop { 120 RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0 = 0, 121 RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1 = 1, 122 }; 123 enum rkisp1_cif_isp_exp_meas_mode { 124 RKISP1_CIF_ISP_EXP_MEASURING_MODE_0, 125 RKISP1_CIF_ISP_EXP_MEASURING_MODE_1, 126 }; 127 struct rkisp1_cif_isp_window { 128 __u16 h_offs; 129 __u16 v_offs; 130 __u16 h_size; 131 __u16 v_size; 132 }; 133 struct rkisp1_cif_isp_bls_fixed_val { 134 __s16 r; 135 __s16 gr; 136 __s16 gb; 137 __s16 b; 138 }; 139 struct rkisp1_cif_isp_bls_config { 140 __u8 enable_auto; 141 __u8 en_windows; 142 struct rkisp1_cif_isp_window bls_window1; 143 struct rkisp1_cif_isp_window bls_window2; 144 __u8 bls_samples; 145 struct rkisp1_cif_isp_bls_fixed_val fixed_val; 146 }; 147 struct rkisp1_cif_isp_dpcc_methods_config { 148 __u32 method; 149 __u32 line_thresh; 150 __u32 line_mad_fac; 151 __u32 pg_fac; 152 __u32 rnd_thresh; 153 __u32 rg_fac; 154 }; 155 struct rkisp1_cif_isp_dpcc_config { 156 __u32 mode; 157 __u32 output_mode; 158 __u32 set_use; 159 struct rkisp1_cif_isp_dpcc_methods_config methods[RKISP1_CIF_ISP_DPCC_METHODS_MAX]; 160 __u32 ro_limits; 161 __u32 rnd_offs; 162 }; 163 struct rkisp1_cif_isp_gamma_corr_curve { 164 __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE]; 165 }; 166 struct rkisp1_cif_isp_gamma_curve_x_axis_pnts { 167 __u32 gamma_dx0; 168 __u32 gamma_dx1; 169 }; 170 struct rkisp1_cif_isp_sdg_config { 171 struct rkisp1_cif_isp_gamma_corr_curve curve_r; 172 struct rkisp1_cif_isp_gamma_corr_curve curve_g; 173 struct rkisp1_cif_isp_gamma_corr_curve curve_b; 174 struct rkisp1_cif_isp_gamma_curve_x_axis_pnts xa_pnts; 175 }; 176 struct rkisp1_cif_isp_lsc_config { 177 __u16 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX]; 178 __u16 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX]; 179 __u16 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX]; 180 __u16 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX]; 181 __u16 x_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE]; 182 __u16 y_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE]; 183 __u16 x_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE]; 184 __u16 y_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE]; 185 __u16 config_width; 186 __u16 config_height; 187 }; 188 struct rkisp1_cif_isp_ie_config { 189 __u16 effect; 190 __u16 color_sel; 191 __u16 eff_mat_1; 192 __u16 eff_mat_2; 193 __u16 eff_mat_3; 194 __u16 eff_mat_4; 195 __u16 eff_mat_5; 196 __u16 eff_tint; 197 }; 198 struct rkisp1_cif_isp_cproc_config { 199 __u8 c_out_range; 200 __u8 y_in_range; 201 __u8 y_out_range; 202 __u8 contrast; 203 __u8 brightness; 204 __u8 sat; 205 __u8 hue; 206 }; 207 struct rkisp1_cif_isp_awb_meas_config { 208 struct rkisp1_cif_isp_window awb_wnd; 209 __u32 awb_mode; 210 __u8 max_y; 211 __u8 min_y; 212 __u8 max_csum; 213 __u8 min_c; 214 __u8 frames; 215 __u8 awb_ref_cr; 216 __u8 awb_ref_cb; 217 __u8 enable_ymax_cmp; 218 }; 219 struct rkisp1_cif_isp_awb_gain_config { 220 __u16 gain_red; 221 __u16 gain_green_r; 222 __u16 gain_blue; 223 __u16 gain_green_b; 224 }; 225 struct rkisp1_cif_isp_flt_config { 226 __u32 mode; 227 __u8 grn_stage1; 228 __u8 chr_h_mode; 229 __u8 chr_v_mode; 230 __u32 thresh_bl0; 231 __u32 thresh_bl1; 232 __u32 thresh_sh0; 233 __u32 thresh_sh1; 234 __u32 lum_weight; 235 __u32 fac_sh1; 236 __u32 fac_sh0; 237 __u32 fac_mid; 238 __u32 fac_bl0; 239 __u32 fac_bl1; 240 }; 241 struct rkisp1_cif_isp_bdm_config { 242 __u8 demosaic_th; 243 }; 244 struct rkisp1_cif_isp_ctk_config { 245 __u16 coeff[3][3]; 246 __u16 ct_offset[3]; 247 }; 248 enum rkisp1_cif_isp_goc_mode { 249 RKISP1_CIF_ISP_GOC_MODE_LOGARITHMIC, 250 RKISP1_CIF_ISP_GOC_MODE_EQUIDISTANT 251 }; 252 struct rkisp1_cif_isp_goc_config { 253 __u32 mode; 254 __u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES]; 255 }; 256 struct rkisp1_cif_isp_hst_config { 257 __u32 mode; 258 __u8 histogram_predivider; 259 struct rkisp1_cif_isp_window meas_window; 260 __u8 hist_weight[RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE]; 261 }; 262 struct rkisp1_cif_isp_aec_config { 263 __u32 mode; 264 __u32 autostop; 265 struct rkisp1_cif_isp_window meas_window; 266 }; 267 struct rkisp1_cif_isp_afc_config { 268 __u8 num_afm_win; 269 struct rkisp1_cif_isp_window afm_win[RKISP1_CIF_ISP_AFM_MAX_WINDOWS]; 270 __u32 thres; 271 __u32 var_shift; 272 }; 273 enum rkisp1_cif_isp_dpf_gain_usage { 274 RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED, 275 RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS, 276 RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS, 277 RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS, 278 RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS, 279 RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS, 280 RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX 281 }; 282 enum rkisp1_cif_isp_dpf_rb_filtersize { 283 RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9, 284 RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9, 285 }; 286 enum rkisp1_cif_isp_dpf_nll_scale_mode { 287 RKISP1_CIF_ISP_NLL_SCALE_LINEAR, 288 RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC, 289 }; 290 struct rkisp1_cif_isp_dpf_nll { 291 __u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS]; 292 __u32 scale_mode; 293 }; 294 struct rkisp1_cif_isp_dpf_rb_flt { 295 __u32 fltsize; 296 __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS]; 297 __u8 r_enable; 298 __u8 b_enable; 299 }; 300 struct rkisp1_cif_isp_dpf_g_flt { 301 __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS]; 302 __u8 gr_enable; 303 __u8 gb_enable; 304 }; 305 struct rkisp1_cif_isp_dpf_gain { 306 __u32 mode; 307 __u16 nf_r_gain; 308 __u16 nf_b_gain; 309 __u16 nf_gr_gain; 310 __u16 nf_gb_gain; 311 }; 312 struct rkisp1_cif_isp_dpf_config { 313 struct rkisp1_cif_isp_dpf_gain gain; 314 struct rkisp1_cif_isp_dpf_g_flt g_flt; 315 struct rkisp1_cif_isp_dpf_rb_flt rb_flt; 316 struct rkisp1_cif_isp_dpf_nll nll; 317 }; 318 struct rkisp1_cif_isp_dpf_strength_config { 319 __u8 r; 320 __u8 g; 321 __u8 b; 322 }; 323 struct rkisp1_cif_isp_isp_other_cfg { 324 struct rkisp1_cif_isp_dpcc_config dpcc_config; 325 struct rkisp1_cif_isp_bls_config bls_config; 326 struct rkisp1_cif_isp_sdg_config sdg_config; 327 struct rkisp1_cif_isp_lsc_config lsc_config; 328 struct rkisp1_cif_isp_awb_gain_config awb_gain_config; 329 struct rkisp1_cif_isp_flt_config flt_config; 330 struct rkisp1_cif_isp_bdm_config bdm_config; 331 struct rkisp1_cif_isp_ctk_config ctk_config; 332 struct rkisp1_cif_isp_goc_config goc_config; 333 struct rkisp1_cif_isp_dpf_config dpf_config; 334 struct rkisp1_cif_isp_dpf_strength_config dpf_strength_config; 335 struct rkisp1_cif_isp_cproc_config cproc_config; 336 struct rkisp1_cif_isp_ie_config ie_config; 337 }; 338 struct rkisp1_cif_isp_isp_meas_cfg { 339 struct rkisp1_cif_isp_awb_meas_config awb_meas_config; 340 struct rkisp1_cif_isp_hst_config hst_config; 341 struct rkisp1_cif_isp_aec_config aec_config; 342 struct rkisp1_cif_isp_afc_config afc_config; 343 }; 344 struct rkisp1_params_cfg { 345 __u32 module_en_update; 346 __u32 module_ens; 347 __u32 module_cfg_update; 348 struct rkisp1_cif_isp_isp_meas_cfg meas; 349 struct rkisp1_cif_isp_isp_other_cfg others; 350 }; 351 struct rkisp1_cif_isp_awb_meas { 352 __u32 cnt; 353 __u8 mean_y_or_g; 354 __u8 mean_cb_or_b; 355 __u8 mean_cr_or_r; 356 }; 357 struct rkisp1_cif_isp_awb_stat { 358 struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID]; 359 }; 360 struct rkisp1_cif_isp_bls_meas_val { 361 __u16 meas_r; 362 __u16 meas_gr; 363 __u16 meas_gb; 364 __u16 meas_b; 365 }; 366 struct rkisp1_cif_isp_ae_stat { 367 __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX]; 368 struct rkisp1_cif_isp_bls_meas_val bls_val; 369 }; 370 struct rkisp1_cif_isp_af_meas_val { 371 __u32 sum; 372 __u32 lum; 373 }; 374 struct rkisp1_cif_isp_af_stat { 375 struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS]; 376 }; 377 struct rkisp1_cif_isp_hist_stat { 378 __u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX]; 379 }; 380 struct rkisp1_cif_isp_stat { 381 struct rkisp1_cif_isp_awb_stat awb; 382 struct rkisp1_cif_isp_ae_stat ae; 383 struct rkisp1_cif_isp_af_stat af; 384 struct rkisp1_cif_isp_hist_stat hist; 385 }; 386 struct rkisp1_stat_buffer { 387 __u32 meas_type; 388 __u32 frame_id; 389 struct rkisp1_cif_isp_stat params; 390 }; 391 #endif 392