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