• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_PISP_BE_CONFIG_H_
8 #define _UAPI_PISP_BE_CONFIG_H_
9 #include <linux/types.h>
10 #include "pisp_common.h"
11 #define PISP_BACK_END_INPUT_ALIGN 4u
12 #define PISP_BACK_END_COMPRESSED_ALIGN 8u
13 #define PISP_BACK_END_OUTPUT_MIN_ALIGN 16u
14 #define PISP_BACK_END_OUTPUT_MAX_ALIGN 64u
15 #define PISP_BACK_END_MIN_TILE_WIDTH 16u
16 #define PISP_BACK_END_MIN_TILE_HEIGHT 16u
17 #define PISP_BACK_END_NUM_OUTPUTS 2
18 #define PISP_BACK_END_HOG_OUTPUT 1
19 #define PISP_BACK_END_NUM_TILES 64
20 enum pisp_be_bayer_enable {
21   PISP_BE_BAYER_ENABLE_INPUT = 0x000001,
22   PISP_BE_BAYER_ENABLE_DECOMPRESS = 0x000002,
23   PISP_BE_BAYER_ENABLE_DPC = 0x000004,
24   PISP_BE_BAYER_ENABLE_GEQ = 0x000008,
25   PISP_BE_BAYER_ENABLE_TDN_INPUT = 0x000010,
26   PISP_BE_BAYER_ENABLE_TDN_DECOMPRESS = 0x000020,
27   PISP_BE_BAYER_ENABLE_TDN = 0x000040,
28   PISP_BE_BAYER_ENABLE_TDN_COMPRESS = 0x000080,
29   PISP_BE_BAYER_ENABLE_TDN_OUTPUT = 0x000100,
30   PISP_BE_BAYER_ENABLE_SDN = 0x000200,
31   PISP_BE_BAYER_ENABLE_BLC = 0x000400,
32   PISP_BE_BAYER_ENABLE_STITCH_INPUT = 0x000800,
33   PISP_BE_BAYER_ENABLE_STITCH_DECOMPRESS = 0x001000,
34   PISP_BE_BAYER_ENABLE_STITCH = 0x002000,
35   PISP_BE_BAYER_ENABLE_STITCH_COMPRESS = 0x004000,
36   PISP_BE_BAYER_ENABLE_STITCH_OUTPUT = 0x008000,
37   PISP_BE_BAYER_ENABLE_WBG = 0x010000,
38   PISP_BE_BAYER_ENABLE_CDN = 0x020000,
39   PISP_BE_BAYER_ENABLE_LSC = 0x040000,
40   PISP_BE_BAYER_ENABLE_TONEMAP = 0x080000,
41   PISP_BE_BAYER_ENABLE_CAC = 0x100000,
42   PISP_BE_BAYER_ENABLE_DEBIN = 0x200000,
43   PISP_BE_BAYER_ENABLE_DEMOSAIC = 0x400000,
44 };
45 enum pisp_be_rgb_enable {
46   PISP_BE_RGB_ENABLE_INPUT = 0x000001,
47   PISP_BE_RGB_ENABLE_CCM = 0x000002,
48   PISP_BE_RGB_ENABLE_SAT_CONTROL = 0x000004,
49   PISP_BE_RGB_ENABLE_YCBCR = 0x000008,
50   PISP_BE_RGB_ENABLE_FALSE_COLOUR = 0x000010,
51   PISP_BE_RGB_ENABLE_SHARPEN = 0x000020,
52   PISP_BE_RGB_ENABLE_YCBCR_INVERSE = 0x000080,
53   PISP_BE_RGB_ENABLE_GAMMA = 0x000100,
54   PISP_BE_RGB_ENABLE_CSC0 = 0x000200,
55   PISP_BE_RGB_ENABLE_CSC1 = 0x000400,
56   PISP_BE_RGB_ENABLE_DOWNSCALE0 = 0x001000,
57   PISP_BE_RGB_ENABLE_DOWNSCALE1 = 0x002000,
58   PISP_BE_RGB_ENABLE_RESAMPLE0 = 0x008000,
59   PISP_BE_RGB_ENABLE_RESAMPLE1 = 0x010000,
60   PISP_BE_RGB_ENABLE_OUTPUT0 = 0x040000,
61   PISP_BE_RGB_ENABLE_OUTPUT1 = 0x080000,
62   PISP_BE_RGB_ENABLE_HOG = 0x200000
63 };
64 #define PISP_BE_RGB_ENABLE_CSC(i) (PISP_BE_RGB_ENABLE_CSC0 << (i))
65 #define PISP_BE_RGB_ENABLE_DOWNSCALE(i) (PISP_BE_RGB_ENABLE_DOWNSCALE0 << (i))
66 #define PISP_BE_RGB_ENABLE_RESAMPLE(i) (PISP_BE_RGB_ENABLE_RESAMPLE0 << (i))
67 #define PISP_BE_RGB_ENABLE_OUTPUT(i) (PISP_BE_RGB_ENABLE_OUTPUT0 << (i))
68 enum pisp_be_dirty {
69   PISP_BE_DIRTY_GLOBAL = 0x0001,
70   PISP_BE_DIRTY_SH_FC_COMBINE = 0x0002,
71   PISP_BE_DIRTY_CROP = 0x0004
72 };
73 struct pisp_be_global_config {
74   __u32 bayer_enables;
75   __u32 rgb_enables;
76   __u8 bayer_order;
77   __u8 pad[3];
78 } __attribute__((packed));
79 struct pisp_be_input_buffer_config {
80   __u32 addr[3][2];
81 } __attribute__((packed));
82 struct pisp_be_dpc_config {
83   __u8 coeff_level;
84   __u8 coeff_range;
85   __u8 pad;
86 #define PISP_BE_DPC_FLAG_FOLDBACK 1
87   __u8 flags;
88 } __attribute__((packed));
89 struct pisp_be_geq_config {
90   __u16 offset;
91 #define PISP_BE_GEQ_SHARPER (1U << 15)
92 #define PISP_BE_GEQ_SLOPE ((1 << 10) - 1)
93   __u16 slope_sharper;
94   __u16 min;
95   __u16 max;
96 } __attribute__((packed));
97 struct pisp_be_tdn_input_buffer_config {
98   __u32 addr[2];
99 } __attribute__((packed));
100 struct pisp_be_tdn_config {
101   __u16 black_level;
102   __u16 ratio;
103   __u16 noise_constant;
104   __u16 noise_slope;
105   __u16 threshold;
106   __u8 reset;
107   __u8 pad;
108 } __attribute__((packed));
109 struct pisp_be_tdn_output_buffer_config {
110   __u32 addr[2];
111 } __attribute__((packed));
112 struct pisp_be_sdn_config {
113   __u16 black_level;
114   __u8 leakage;
115   __u8 pad;
116   __u16 noise_constant;
117   __u16 noise_slope;
118   __u16 noise_constant2;
119   __u16 noise_slope2;
120 } __attribute__((packed));
121 struct pisp_be_stitch_input_buffer_config {
122   __u32 addr[2];
123 } __attribute__((packed));
124 #define PISP_BE_STITCH_STREAMING_LONG 0x8000
125 #define PISP_BE_STITCH_EXPOSURE_RATIO_MASK 0x7fff
126 struct pisp_be_stitch_config {
127   __u16 threshold_lo;
128   __u8 threshold_diff_power;
129   __u8 pad;
130   __u16 exposure_ratio;
131   __u8 motion_threshold_256;
132   __u8 motion_threshold_recip;
133 } __attribute__((packed));
134 struct pisp_be_stitch_output_buffer_config {
135   __u32 addr[2];
136 } __attribute__((packed));
137 struct pisp_be_cdn_config {
138   __u16 thresh;
139   __u8 iir_strength;
140   __u8 g_adjust;
141 } __attribute__((packed));
142 #define PISP_BE_LSC_LOG_GRID_SIZE 5
143 #define PISP_BE_LSC_GRID_SIZE (1 << PISP_BE_LSC_LOG_GRID_SIZE)
144 #define PISP_BE_LSC_STEP_PRECISION 18
145 struct pisp_be_lsc_config {
146   __u16 grid_step_x;
147   __u16 grid_step_y;
148 #define PISP_BE_LSC_LUT_SIZE (PISP_BE_LSC_GRID_SIZE + 1)
149   __u32 lut_packed[PISP_BE_LSC_LUT_SIZE][PISP_BE_LSC_LUT_SIZE];
150 } __attribute__((packed));
151 struct pisp_be_lsc_extra {
152   __u16 offset_x;
153   __u16 offset_y;
154 } __attribute__((packed));
155 #define PISP_BE_CAC_LOG_GRID_SIZE 3
156 #define PISP_BE_CAC_GRID_SIZE (1 << PISP_BE_CAC_LOG_GRID_SIZE)
157 #define PISP_BE_CAC_STEP_PRECISION 20
158 struct pisp_be_cac_config {
159   __u16 grid_step_x;
160   __u16 grid_step_y;
161 #define PISP_BE_CAC_LUT_SIZE (PISP_BE_CAC_GRID_SIZE + 1)
162   __s8 lut[PISP_BE_CAC_LUT_SIZE][PISP_BE_CAC_LUT_SIZE][2][2];
163 } __attribute__((packed));
164 struct pisp_be_cac_extra {
165   __u16 offset_x;
166   __u16 offset_y;
167 } __attribute__((packed));
168 #define PISP_BE_DEBIN_NUM_COEFFS 4
169 struct pisp_be_debin_config {
170   __s8 coeffs[PISP_BE_DEBIN_NUM_COEFFS];
171   __s8 h_enable;
172   __s8 v_enable;
173   __s8 pad[2];
174 } __attribute__((packed));
175 #define PISP_BE_TONEMAP_LUT_SIZE 64
176 struct pisp_be_tonemap_config {
177   __u16 detail_constant;
178   __u16 detail_slope;
179   __u16 iir_strength;
180   __u16 strength;
181   __u32 lut[PISP_BE_TONEMAP_LUT_SIZE];
182 } __attribute__((packed));
183 struct pisp_be_demosaic_config {
184   __u8 sharper;
185   __u8 fc_mode;
186   __u8 pad[2];
187 } __attribute__((packed));
188 struct pisp_be_ccm_config {
189   __s16 coeffs[9];
190   __u8 pad[2];
191   __s32 offsets[3];
192 } __attribute__((packed));
193 struct pisp_be_sat_control_config {
194   __u8 shift_r;
195   __u8 shift_g;
196   __u8 shift_b;
197   __u8 pad;
198 } __attribute__((packed));
199 struct pisp_be_false_colour_config {
200   __u8 distance;
201   __u8 pad[3];
202 } __attribute__((packed));
203 #define PISP_BE_SHARPEN_SIZE 5
204 #define PISP_BE_SHARPEN_FUNC_NUM_POINTS 9
205 struct pisp_be_sharpen_config {
206   __s8 kernel0[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
207   __s8 pad0[3];
208   __s8 kernel1[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
209   __s8 pad1[3];
210   __s8 kernel2[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
211   __s8 pad2[3];
212   __s8 kernel3[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
213   __s8 pad3[3];
214   __s8 kernel4[PISP_BE_SHARPEN_SIZE * PISP_BE_SHARPEN_SIZE];
215   __s8 pad4[3];
216   __u16 threshold_offset0;
217   __u16 threshold_slope0;
218   __u16 scale0;
219   __u16 pad5;
220   __u16 threshold_offset1;
221   __u16 threshold_slope1;
222   __u16 scale1;
223   __u16 pad6;
224   __u16 threshold_offset2;
225   __u16 threshold_slope2;
226   __u16 scale2;
227   __u16 pad7;
228   __u16 threshold_offset3;
229   __u16 threshold_slope3;
230   __u16 scale3;
231   __u16 pad8;
232   __u16 threshold_offset4;
233   __u16 threshold_slope4;
234   __u16 scale4;
235   __u16 pad9;
236   __u16 positive_strength;
237   __u16 positive_pre_limit;
238   __u16 positive_func[PISP_BE_SHARPEN_FUNC_NUM_POINTS];
239   __u16 positive_limit;
240   __u16 negative_strength;
241   __u16 negative_pre_limit;
242   __u16 negative_func[PISP_BE_SHARPEN_FUNC_NUM_POINTS];
243   __u16 negative_limit;
244   __u8 enables;
245   __u8 white;
246   __u8 black;
247   __u8 grey;
248 } __attribute__((packed));
249 struct pisp_be_sh_fc_combine_config {
250   __u8 y_factor;
251   __u8 c1_factor;
252   __u8 c2_factor;
253   __u8 pad;
254 } __attribute__((packed));
255 #define PISP_BE_GAMMA_LUT_SIZE 64
256 struct pisp_be_gamma_config {
257   __u32 lut[PISP_BE_GAMMA_LUT_SIZE];
258 } __attribute__((packed));
259 struct pisp_be_crop_config {
260   __u16 offset_x, offset_y;
261   __u16 width, height;
262 } __attribute__((packed));
263 #define PISP_BE_RESAMPLE_FILTER_SIZE 96
264 struct pisp_be_resample_config {
265   __u16 scale_factor_h, scale_factor_v;
266   __s16 coef[PISP_BE_RESAMPLE_FILTER_SIZE];
267 } __attribute__((packed));
268 struct pisp_be_resample_extra {
269   __u16 scaled_width;
270   __u16 scaled_height;
271   __s16 initial_phase_h[3];
272   __s16 initial_phase_v[3];
273 } __attribute__((packed));
274 struct pisp_be_downscale_config {
275   __u16 scale_factor_h;
276   __u16 scale_factor_v;
277   __u16 scale_recip_h;
278   __u16 scale_recip_v;
279 } __attribute__((packed));
280 struct pisp_be_downscale_extra {
281   __u16 scaled_width;
282   __u16 scaled_height;
283 } __attribute__((packed));
284 struct pisp_be_hog_config {
285   __u8 compute_signed;
286   __u8 channel_mix[3];
287   __u32 stride;
288 } __attribute__((packed));
289 struct pisp_be_axi_config {
290   __u8 r_qos;
291   __u8 r_cache_prot;
292   __u8 w_qos;
293   __u8 w_cache_prot;
294 } __attribute__((packed));
295 enum pisp_be_transform {
296   PISP_BE_TRANSFORM_NONE = 0x0,
297   PISP_BE_TRANSFORM_HFLIP = 0x1,
298   PISP_BE_TRANSFORM_VFLIP = 0x2,
299   PISP_BE_TRANSFORM_ROT180 = (PISP_BE_TRANSFORM_HFLIP | PISP_BE_TRANSFORM_VFLIP)
300 };
301 struct pisp_be_output_format_config {
302   struct pisp_image_format_config image;
303   __u8 transform;
304   __u8 pad[3];
305   __u16 lo;
306   __u16 hi;
307   __u16 lo2;
308   __u16 hi2;
309 } __attribute__((packed));
310 struct pisp_be_output_buffer_config {
311   __u32 addr[3][2];
312 } __attribute__((packed));
313 struct pisp_be_hog_buffer_config {
314   __u32 addr[2];
315 } __attribute__((packed));
316 struct pisp_be_config {
317   struct pisp_be_input_buffer_config input_buffer;
318   struct pisp_be_tdn_input_buffer_config tdn_input_buffer;
319   struct pisp_be_stitch_input_buffer_config stitch_input_buffer;
320   struct pisp_be_tdn_output_buffer_config tdn_output_buffer;
321   struct pisp_be_stitch_output_buffer_config stitch_output_buffer;
322   struct pisp_be_output_buffer_config output_buffer[PISP_BACK_END_NUM_OUTPUTS];
323   struct pisp_be_hog_buffer_config hog_buffer;
324   struct pisp_be_global_config global;
325   struct pisp_image_format_config input_format;
326   struct pisp_decompress_config decompress;
327   struct pisp_be_dpc_config dpc;
328   struct pisp_be_geq_config geq;
329   struct pisp_image_format_config tdn_input_format;
330   struct pisp_decompress_config tdn_decompress;
331   struct pisp_be_tdn_config tdn;
332   struct pisp_compress_config tdn_compress;
333   struct pisp_image_format_config tdn_output_format;
334   struct pisp_be_sdn_config sdn;
335   struct pisp_bla_config blc;
336   struct pisp_compress_config stitch_compress;
337   struct pisp_image_format_config stitch_output_format;
338   struct pisp_image_format_config stitch_input_format;
339   struct pisp_decompress_config stitch_decompress;
340   struct pisp_be_stitch_config stitch;
341   struct pisp_be_lsc_config lsc;
342   struct pisp_wbg_config wbg;
343   struct pisp_be_cdn_config cdn;
344   struct pisp_be_cac_config cac;
345   struct pisp_be_debin_config debin;
346   struct pisp_be_tonemap_config tonemap;
347   struct pisp_be_demosaic_config demosaic;
348   struct pisp_be_ccm_config ccm;
349   struct pisp_be_sat_control_config sat_control;
350   struct pisp_be_ccm_config ycbcr;
351   struct pisp_be_sharpen_config sharpen;
352   struct pisp_be_false_colour_config false_colour;
353   struct pisp_be_sh_fc_combine_config sh_fc_combine;
354   struct pisp_be_ccm_config ycbcr_inverse;
355   struct pisp_be_gamma_config gamma;
356   struct pisp_be_ccm_config csc[PISP_BACK_END_NUM_OUTPUTS];
357   struct pisp_be_downscale_config downscale[PISP_BACK_END_NUM_OUTPUTS];
358   struct pisp_be_resample_config resample[PISP_BACK_END_NUM_OUTPUTS];
359   struct pisp_be_output_format_config output_format[PISP_BACK_END_NUM_OUTPUTS];
360   struct pisp_be_hog_config hog;
361   struct pisp_be_axi_config axi;
362   struct pisp_be_lsc_extra lsc_extra;
363   struct pisp_be_cac_extra cac_extra;
364   struct pisp_be_downscale_extra downscale_extra[PISP_BACK_END_NUM_OUTPUTS];
365   struct pisp_be_resample_extra resample_extra[PISP_BACK_END_NUM_OUTPUTS];
366   struct pisp_be_crop_config crop;
367   struct pisp_image_format_config hog_format;
368   __u32 dirty_flags_bayer;
369   __u32 dirty_flags_rgb;
370   __u32 dirty_flags_extra;
371 } __attribute__((packed));
372 enum pisp_tile_edge {
373   PISP_LEFT_EDGE = (1 << 0),
374   PISP_RIGHT_EDGE = (1 << 1),
375   PISP_TOP_EDGE = (1 << 2),
376   PISP_BOTTOM_EDGE = (1 << 3)
377 };
378 struct pisp_tile {
379   __u8 edge;
380   __u8 pad0[3];
381   __u32 input_addr_offset;
382   __u32 input_addr_offset2;
383   __u16 input_offset_x;
384   __u16 input_offset_y;
385   __u16 input_width;
386   __u16 input_height;
387   __u32 tdn_input_addr_offset;
388   __u32 tdn_output_addr_offset;
389   __u32 stitch_input_addr_offset;
390   __u32 stitch_output_addr_offset;
391   __u32 lsc_grid_offset_x;
392   __u32 lsc_grid_offset_y;
393   __u32 cac_grid_offset_x;
394   __u32 cac_grid_offset_y;
395   __u16 crop_x_start[PISP_BACK_END_NUM_OUTPUTS];
396   __u16 crop_x_end[PISP_BACK_END_NUM_OUTPUTS];
397   __u16 crop_y_start[PISP_BACK_END_NUM_OUTPUTS];
398   __u16 crop_y_end[PISP_BACK_END_NUM_OUTPUTS];
399   __u16 downscale_phase_x[3 * PISP_BACK_END_NUM_OUTPUTS];
400   __u16 downscale_phase_y[3 * PISP_BACK_END_NUM_OUTPUTS];
401   __u16 resample_in_width[PISP_BACK_END_NUM_OUTPUTS];
402   __u16 resample_in_height[PISP_BACK_END_NUM_OUTPUTS];
403   __u16 resample_phase_x[3 * PISP_BACK_END_NUM_OUTPUTS];
404   __u16 resample_phase_y[3 * PISP_BACK_END_NUM_OUTPUTS];
405   __u16 output_offset_x[PISP_BACK_END_NUM_OUTPUTS];
406   __u16 output_offset_y[PISP_BACK_END_NUM_OUTPUTS];
407   __u16 output_width[PISP_BACK_END_NUM_OUTPUTS];
408   __u16 output_height[PISP_BACK_END_NUM_OUTPUTS];
409   __u32 output_addr_offset[PISP_BACK_END_NUM_OUTPUTS];
410   __u32 output_addr_offset2[PISP_BACK_END_NUM_OUTPUTS];
411   __u32 output_hog_addr_offset;
412 } __attribute__((packed));
413 struct pisp_be_tiles_config {
414   struct pisp_be_config config;
415   struct pisp_tile tiles[PISP_BACK_END_NUM_TILES];
416   __u32 num_tiles;
417 } __attribute__((packed));
418 #endif
419