blob: 7175c23fcacd3e9bbc58d6cce9faa350790fb8d5 [file] [log] [blame]
Christopher Ferris05667cd2021-02-16 16:01:34 -08001/****************************************************************************
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
Christopher Ferris6cd53a52022-12-12 23:39:16 +000070#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))
Christopher Ferris05667cd2021-02-16 16:01:34 -0800101#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)
107enum rkisp1_cif_isp_version {
108 RKISP1_V10 = 10,
109 RKISP1_V11,
110 RKISP1_V12,
111 RKISP1_V13,
112};
113enum 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};
121enum 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};
126enum rkisp1_cif_isp_flt_mode {
127 RKISP1_CIF_ISP_FLT_STATIC_MODE,
128 RKISP1_CIF_ISP_FLT_DYNAMIC_MODE
129};
130enum 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};
134enum rkisp1_cif_isp_exp_meas_mode {
135 RKISP1_CIF_ISP_EXP_MEASURING_MODE_0,
136 RKISP1_CIF_ISP_EXP_MEASURING_MODE_1,
137};
138struct rkisp1_cif_isp_window {
139 __u16 h_offs;
140 __u16 v_offs;
141 __u16 h_size;
142 __u16 v_size;
143};
144struct rkisp1_cif_isp_bls_fixed_val {
145 __s16 r;
146 __s16 gr;
147 __s16 gb;
148 __s16 b;
149};
150struct 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};
158struct 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};
166struct 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};
174struct rkisp1_cif_isp_gamma_corr_curve {
175 __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
176};
177struct rkisp1_cif_isp_gamma_curve_x_axis_pnts {
178 __u32 gamma_dx0;
179 __u32 gamma_dx1;
180};
181struct 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};
187struct 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};
199struct 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};
209struct 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};
218struct 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};
230struct 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};
236struct 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};
252struct rkisp1_cif_isp_bdm_config {
253 __u8 demosaic_th;
254};
255struct rkisp1_cif_isp_ctk_config {
256 __u16 coeff[3][3];
257 __u16 ct_offset[3];
258};
259enum rkisp1_cif_isp_goc_mode {
260 RKISP1_CIF_ISP_GOC_MODE_LOGARITHMIC,
261 RKISP1_CIF_ISP_GOC_MODE_EQUIDISTANT
262};
263struct rkisp1_cif_isp_goc_config {
264 __u32 mode;
265 __u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES];
266};
267struct 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};
273struct rkisp1_cif_isp_aec_config {
274 __u32 mode;
275 __u32 autostop;
276 struct rkisp1_cif_isp_window meas_window;
277};
278struct 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};
284enum 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};
293enum rkisp1_cif_isp_dpf_rb_filtersize {
294 RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9,
295 RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9,
296};
297enum rkisp1_cif_isp_dpf_nll_scale_mode {
298 RKISP1_CIF_ISP_NLL_SCALE_LINEAR,
299 RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC,
300};
301struct rkisp1_cif_isp_dpf_nll {
302 __u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS];
303 __u32 scale_mode;
304};
305struct 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};
311struct 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};
316struct 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};
323struct 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};
329struct rkisp1_cif_isp_dpf_strength_config {
330 __u8 r;
331 __u8 g;
332 __u8 b;
333};
334struct 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};
349struct 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};
355struct 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};
362struct 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};
368struct rkisp1_cif_isp_awb_stat {
369 struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID];
370};
371struct rkisp1_cif_isp_bls_meas_val {
372 __u16 meas_r;
373 __u16 meas_gr;
374 __u16 meas_gb;
375 __u16 meas_b;
376};
377struct 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};
381struct rkisp1_cif_isp_af_meas_val {
382 __u32 sum;
383 __u32 lum;
384};
385struct rkisp1_cif_isp_af_stat {
386 struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
387};
388struct rkisp1_cif_isp_hist_stat {
389 __u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX];
390};
391struct 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};
397struct rkisp1_stat_buffer {
398 __u32 meas_type;
399 __u32 frame_id;
400 struct rkisp1_cif_isp_stat params;
401};
402#endif