1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#ifndef _ATOM_ISP_H
20#define _ATOM_ISP_H
21
22#include <linux/types.h>
23#include <linux/version.h>
24
25
26#define ATOMISP_HW_REVISION_MASK 0x0000ff00
27#define ATOMISP_HW_REVISION_SHIFT 8
28#define ATOMISP_HW_REVISION_ISP2300 0x00
29#define ATOMISP_HW_REVISION_ISP2400 0x10
30#define ATOMISP_HW_REVISION_ISP2401_LEGACY 0x11
31#define ATOMISP_HW_REVISION_ISP2401 0x20
32
33#define ATOMISP_HW_STEPPING_MASK 0x000000ff
34#define ATOMISP_HW_STEPPING_A0 0x00
35#define ATOMISP_HW_STEPPING_B0 0x10
36
37
38#define CI_MODE_PREVIEW 0x8000
39#define CI_MODE_VIDEO 0x4000
40#define CI_MODE_STILL_CAPTURE 0x2000
41#define CI_MODE_CONTINUOUS 0x1000
42#define CI_MODE_NONE 0x0000
43
44#define OUTPUT_MODE_FILE 0x0100
45#define OUTPUT_MODE_TEXT 0x0200
46
47
48
49
50
51#define ATOMISP_BUFFER_HAS_PER_FRAME_SETTING 0x80000000
52
53
54#define V4L2_PIX_FMT_CUSTOM_M10MO_RAW v4l2_fourcc('M', '1', '0', '1')
55
56
57#define V4L2_MBUS_FMT_CUSTOM_YUV420 0x8001
58#define V4L2_MBUS_FMT_CUSTOM_YVU420 0x8002
59#define V4L2_MBUS_FMT_CUSTOM_YUV422P 0x8003
60#define V4L2_MBUS_FMT_CUSTOM_YUV444 0x8004
61#define V4L2_MBUS_FMT_CUSTOM_NV12 0x8005
62#define V4L2_MBUS_FMT_CUSTOM_NV21 0x8006
63#define V4L2_MBUS_FMT_CUSTOM_NV16 0x8007
64#define V4L2_MBUS_FMT_CUSTOM_YUYV 0x8008
65#define V4L2_MBUS_FMT_CUSTOM_SBGGR16 0x8009
66#define V4L2_MBUS_FMT_CUSTOM_RGB32 0x800a
67
68
69#if 0
70#define V4L2_MBUS_FMT_CUSTOM_M10MO_RAW 0x800b
71#endif
72
73
74struct atomisp_nr_config {
75
76 unsigned int bnr_gain;
77
78 unsigned int ynr_gain;
79
80 unsigned int direction;
81
82 unsigned int threshold_cb;
83
84 unsigned int threshold_cr;
85};
86
87
88struct atomisp_tnr_config {
89 unsigned int gain;
90 unsigned int threshold_y;
91 unsigned int threshold_uv;
92};
93
94
95
96
97struct atomisp_histogram {
98 unsigned int num_elements;
99 void __user *data;
100};
101
102enum atomisp_ob_mode {
103 atomisp_ob_mode_none,
104 atomisp_ob_mode_fixed,
105 atomisp_ob_mode_raster
106};
107
108
109struct atomisp_ob_config {
110
111 enum atomisp_ob_mode mode;
112
113 unsigned int level_gr;
114
115 unsigned int level_r;
116
117 unsigned int level_b;
118
119 unsigned int level_gb;
120
121 unsigned short start_position;
122
123 unsigned short end_position;
124};
125
126
127struct atomisp_ee_config {
128
129 unsigned int gain;
130
131 unsigned int threshold;
132
133 unsigned int detail_gain;
134};
135
136struct atomisp_3a_output {
137 int ae_y;
138 int awb_cnt;
139 int awb_gr;
140 int awb_r;
141 int awb_b;
142 int awb_gb;
143 int af_hpf1;
144 int af_hpf2;
145};
146
147enum atomisp_calibration_type {
148 calibration_type1,
149 calibration_type2,
150 calibration_type3
151};
152
153struct atomisp_calibration_group {
154 unsigned int size;
155 unsigned int type;
156 unsigned short *calb_grp_values;
157};
158
159struct atomisp_gc_config {
160 __u16 gain_k1;
161 __u16 gain_k2;
162};
163
164struct atomisp_3a_config {
165 unsigned int ae_y_coef_r;
166 unsigned int ae_y_coef_g;
167 unsigned int ae_y_coef_b;
168 unsigned int awb_lg_high_raw;
169
170 unsigned int awb_lg_low;
171 unsigned int awb_lg_high;
172 int af_fir1_coef[7];
173 int af_fir2_coef[7];
174};
175
176struct atomisp_dvs_grid_info {
177 u32 enable;
178 u32 width;
179 u32 aligned_width;
180 u32 height;
181 u32 aligned_height;
182 u32 bqs_per_grid_cell;
183 u32 num_hor_coefs;
184 u32 num_ver_coefs;
185};
186
187struct atomisp_dvs_envelop {
188 unsigned int width;
189 unsigned int height;
190};
191
192struct atomisp_grid_info {
193 u32 enable;
194 u32 use_dmem;
195 u32 has_histogram;
196 u32 s3a_width;
197 u32 s3a_height;
198 u32 aligned_width;
199 u32 aligned_height;
200 u32 s3a_bqs_per_grid_cell;
201 u32 deci_factor_log2;
202 u32 elem_bit_depth;
203};
204
205struct atomisp_dis_vector {
206 int x;
207 int y;
208};
209
210
211
212
213struct atomisp_dvs2_coef_types {
214 short __user *odd_real;
215 short __user *odd_imag;
216 short __user *even_real;
217 short __user *even_imag;
218};
219
220
221
222
223
224struct atomisp_dvs2_stat_types {
225 int __user *odd_real;
226 int __user *odd_imag;
227 int __user *even_real;
228 int __user *even_imag;
229};
230
231struct atomisp_dis_coefficients {
232 struct atomisp_dvs_grid_info grid_info;
233 struct atomisp_dvs2_coef_types hor_coefs;
234 struct atomisp_dvs2_coef_types ver_coefs;
235};
236
237struct atomisp_dvs2_statistics {
238 struct atomisp_dvs_grid_info grid_info;
239 struct atomisp_dvs2_stat_types hor_prod;
240 struct atomisp_dvs2_stat_types ver_prod;
241};
242
243struct atomisp_dis_statistics {
244 struct atomisp_dvs2_statistics dvs2_stat;
245 u32 exp_id;
246};
247
248struct atomisp_3a_rgby_output {
249 u32 r;
250 u32 g;
251 u32 b;
252 u32 y;
253};
254
255
256
257
258
259
260
261
262
263enum atomisp_metadata_type {
264 ATOMISP_MAIN_METADATA = 0,
265 ATOMISP_SEC_METADATA,
266 ATOMISP_METADATA_TYPE_NUM,
267};
268
269struct atomisp_metadata_with_type {
270
271 enum atomisp_metadata_type type;
272 void __user *data;
273 u32 width;
274 u32 height;
275 u32 stride;
276 u32 exp_id;
277 u32 *effective_width;
278};
279
280struct atomisp_metadata {
281 void __user *data;
282 u32 width;
283 u32 height;
284 u32 stride;
285 u32 exp_id;
286 u32 *effective_width;
287};
288
289struct atomisp_ext_isp_ctrl {
290 u32 id;
291 u32 data;
292};
293
294struct atomisp_3a_statistics {
295 struct atomisp_grid_info grid_info;
296 struct atomisp_3a_output __user *data;
297 struct atomisp_3a_rgby_output __user *rgby_data;
298 u32 exp_id;
299 u32 isp_config_id;
300};
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315struct atomisp_cont_capture_conf {
316 int num_captures;
317 unsigned int skip_frames;
318 int offset;
319 __u32 reserved[5];
320};
321
322struct atomisp_ae_window {
323 int x_left;
324 int x_right;
325 int y_top;
326 int y_bottom;
327 int weight;
328};
329
330
331struct atomisp_wb_config {
332 unsigned int integer_bits;
333 unsigned int gr;
334 unsigned int r;
335 unsigned int b;
336 unsigned int gb;
337};
338
339
340struct atomisp_cc_config {
341 unsigned int fraction_bits;
342 int matrix[3 * 3];
343
344};
345
346
347struct atomisp_de_config {
348 unsigned int pixelnoise;
349 unsigned int c1_coring_threshold;
350 unsigned int c2_coring_threshold;
351};
352
353
354struct atomisp_ce_config {
355 unsigned char uv_level_min;
356 unsigned char uv_level_max;
357};
358
359
360struct atomisp_dp_config {
361
362
363
364
365
366 unsigned int threshold;
367
368
369
370 unsigned int gain;
371 unsigned int gr;
372 unsigned int r;
373 unsigned int b;
374 unsigned int gb;
375};
376
377
378struct atomisp_xnr_config {
379 __u16 threshold;
380};
381
382
383struct atomisp_metadata_config {
384 u32 metadata_height;
385 u32 metadata_stride;
386};
387
388
389
390
391struct atomisp_resolution {
392 u32 width;
393 u32 height;
394};
395
396
397
398
399struct atomisp_zoom_point {
400 s32 x;
401 s32 y;
402};
403
404
405
406
407struct atomisp_zoom_region {
408 struct atomisp_zoom_point
409 origin;
410 struct atomisp_resolution resolution;
411};
412
413struct atomisp_dz_config {
414 u32 dx;
415 u32 dy;
416 struct atomisp_zoom_region zoom_region;
417};
418
419struct atomisp_parm {
420 struct atomisp_grid_info info;
421 struct atomisp_dvs_grid_info dvs_grid;
422 struct atomisp_dvs_envelop dvs_envelop;
423 struct atomisp_wb_config wb_config;
424 struct atomisp_cc_config cc_config;
425 struct atomisp_ob_config ob_config;
426 struct atomisp_de_config de_config;
427 struct atomisp_dz_config dz_config;
428 struct atomisp_ce_config ce_config;
429 struct atomisp_dp_config dp_config;
430 struct atomisp_nr_config nr_config;
431 struct atomisp_ee_config ee_config;
432 struct atomisp_tnr_config tnr_config;
433 struct atomisp_metadata_config metadata_config;
434};
435
436struct dvs2_bq_resolution {
437 int width_bq;
438 int height_bq;
439};
440
441struct atomisp_dvs2_bq_resolutions {
442
443 struct dvs2_bq_resolution source_bq;
444
445 struct dvs2_bq_resolution output_bq;
446
447 struct dvs2_bq_resolution envelope_bq;
448
449 struct dvs2_bq_resolution ispfilter_bq;
450
451 struct dvs2_bq_resolution gdc_shift_bq;
452};
453
454struct atomisp_dvs_6axis_config {
455 u32 exp_id;
456 u32 width_y;
457 u32 height_y;
458 u32 width_uv;
459 u32 height_uv;
460 u32 *xcoords_y;
461 u32 *ycoords_y;
462 u32 *xcoords_uv;
463 u32 *ycoords_uv;
464};
465
466struct atomisp_formats_config {
467 u32 video_full_range_flag;
468};
469
470struct atomisp_parameters {
471 struct atomisp_wb_config *wb_config;
472 struct atomisp_cc_config *cc_config;
473 struct atomisp_tnr_config *tnr_config;
474 struct atomisp_ecd_config *ecd_config;
475 struct atomisp_ynr_config *ynr_config;
476 struct atomisp_fc_config *fc_config;
477 struct atomisp_formats_config *formats_config;
478 struct atomisp_cnr_config *cnr_config;
479 struct atomisp_macc_config *macc_config;
480 struct atomisp_ctc_config *ctc_config;
481 struct atomisp_aa_config *aa_config;
482 struct atomisp_aa_config *baa_config;
483 struct atomisp_ce_config *ce_config;
484 struct atomisp_dvs_6axis_config *dvs_6axis_config;
485 struct atomisp_ob_config *ob_config;
486 struct atomisp_dp_config *dp_config;
487 struct atomisp_nr_config *nr_config;
488 struct atomisp_ee_config *ee_config;
489 struct atomisp_de_config *de_config;
490 struct atomisp_gc_config *gc_config;
491 struct atomisp_anr_config *anr_config;
492 struct atomisp_3a_config *a3a_config;
493 struct atomisp_xnr_config *xnr_config;
494 struct atomisp_dz_config *dz_config;
495 struct atomisp_cc_config *yuv2rgb_cc_config;
496
497 struct atomisp_cc_config *rgb2yuv_cc_config;
498
499 struct atomisp_macc_table *macc_table;
500 struct atomisp_gamma_table *gamma_table;
501 struct atomisp_ctc_table *ctc_table;
502 struct atomisp_xnr_table *xnr_table;
503 struct atomisp_rgb_gamma_table *r_gamma_table;
504 struct atomisp_rgb_gamma_table *g_gamma_table;
505 struct atomisp_rgb_gamma_table *b_gamma_table;
506 struct atomisp_vector *motion_vector;
507 struct atomisp_shading_table *shading_table;
508 struct atomisp_morph_table *morph_table;
509 struct atomisp_dvs_coefficients *dvs_coefs;
510 struct atomisp_dis_coefficients *dvs2_coefs;
511 struct atomisp_capture_config *capture_config;
512 struct atomisp_anr_thres *anr_thres;
513
514 void *lin_2500_config;
515 void *obgrid_2500_config;
516 void *bnr_2500_config;
517 void *shd_2500_config;
518 void *dm_2500_config;
519 void *rgbpp_2500_config;
520 void *dvs_stat_2500_config;
521 void *lace_stat_2500_config;
522 void *yuvp1_2500_config;
523 void *yuvp2_2500_config;
524 void *tnr_2500_config;
525 void *dpc_2500_config;
526 void *awb_2500_config;
527 void *awb_fr_2500_config;
528 void *anr_2500_config;
529 void *af_2500_config;
530 void *ae_2500_config;
531 void *bds_2500_config;
532 void *dvs_2500_config;
533 void *res_mgr_2500_config;
534
535
536
537
538
539 void *output_frame;
540
541
542
543
544 u32 isp_config_id;
545
546
547
548
549
550
551
552 u32 per_frame_setting;
553};
554
555#define ATOMISP_GAMMA_TABLE_SIZE 1024
556struct atomisp_gamma_table {
557 unsigned short data[ATOMISP_GAMMA_TABLE_SIZE];
558};
559
560
561
562
563
564#define ATOMISP_MORPH_TABLE_NUM_PLANES 6
565struct atomisp_morph_table {
566 unsigned int enabled;
567
568 unsigned int height;
569 unsigned int width;
570 unsigned short __user *coordinates_x[ATOMISP_MORPH_TABLE_NUM_PLANES];
571 unsigned short __user *coordinates_y[ATOMISP_MORPH_TABLE_NUM_PLANES];
572};
573
574#define ATOMISP_NUM_SC_COLORS 4
575#define ATOMISP_SC_FLAG_QUERY BIT(0)
576
577struct atomisp_shading_table {
578 __u32 enable;
579
580 __u32 sensor_width;
581 __u32 sensor_height;
582 __u32 width;
583 __u32 height;
584 __u32 fraction_bits;
585
586 __u16 *data[ATOMISP_NUM_SC_COLORS];
587};
588
589struct atomisp_makernote_info {
590
591 unsigned int focal_length;
592
593 unsigned int f_number_curr;
594
595
596
597
598
599
600 unsigned int f_number_range;
601};
602
603
604#define ATOMISP_NUM_MACC_AXES 16
605struct atomisp_macc_table {
606 short data[4 * ATOMISP_NUM_MACC_AXES];
607};
608
609struct atomisp_macc_config {
610 int color_effect;
611 struct atomisp_macc_table table;
612};
613
614
615#define ATOMISP_CTC_TABLE_SIZE 1024
616struct atomisp_ctc_table {
617 unsigned short data[ATOMISP_CTC_TABLE_SIZE];
618};
619
620
621struct atomisp_overlay {
622
623
624
625
626 struct v4l2_framebuffer *frame;
627
628 unsigned char bg_y;
629
630 char bg_u;
631
632 char bg_v;
633
634 unsigned char blend_input_perc_y;
635
636 unsigned char blend_input_perc_u;
637
638 unsigned char blend_input_perc_v;
639
640 unsigned char blend_overlay_perc_y;
641
642 unsigned char blend_overlay_perc_u;
643
644 unsigned char blend_overlay_perc_v;
645
646
647 unsigned int overlay_start_x;
648
649
650 unsigned int overlay_start_y;
651};
652
653
654struct atomisp_sensor_mode_data {
655 unsigned int coarse_integration_time_min;
656 unsigned int coarse_integration_time_max_margin;
657 unsigned int fine_integration_time_min;
658 unsigned int fine_integration_time_max_margin;
659 unsigned int fine_integration_time_def;
660 unsigned int frame_length_lines;
661 unsigned int line_length_pck;
662 unsigned int read_mode;
663 unsigned int vt_pix_clk_freq_mhz;
664 unsigned int crop_horizontal_start;
665 unsigned int crop_vertical_start;
666 unsigned int crop_horizontal_end;
667 unsigned int crop_vertical_end;
668 unsigned int output_width;
669 unsigned int output_height;
670 u8 binning_factor_x;
671 u8 binning_factor_y;
672 u16 hts;
673};
674
675struct atomisp_exposure {
676 unsigned int integration_time[8];
677 unsigned int shutter_speed[8];
678 unsigned int gain[4];
679 unsigned int aperture;
680};
681
682
683struct atomisp_bc_video_package {
684 int ioctl_cmd;
685 int device_id;
686 int inputparam;
687 int outputparam;
688};
689
690enum atomisp_focus_hp {
691 ATOMISP_FOCUS_HP_IN_PROGRESS = (1U << 2),
692 ATOMISP_FOCUS_HP_COMPLETE = (2U << 2),
693 ATOMISP_FOCUS_HP_FAILED = (3U << 2)
694};
695
696
697#define ATOMISP_FOCUS_STATUS_MOVING BIT(0)
698#define ATOMISP_FOCUS_STATUS_ACCEPTS_NEW_MOVE BIT(1)
699#define ATOMISP_FOCUS_STATUS_HOME_POSITION (3U << 2)
700
701enum atomisp_camera_port {
702 ATOMISP_CAMERA_PORT_SECONDARY,
703 ATOMISP_CAMERA_PORT_PRIMARY,
704 ATOMISP_CAMERA_PORT_TERTIARY,
705 ATOMISP_CAMERA_NR_PORTS
706};
707
708
709
710
711
712enum atomisp_flash_mode {
713 ATOMISP_FLASH_MODE_OFF,
714 ATOMISP_FLASH_MODE_FLASH,
715 ATOMISP_FLASH_MODE_TORCH,
716 ATOMISP_FLASH_MODE_INDICATOR,
717};
718
719
720
721enum atomisp_flash_status {
722 ATOMISP_FLASH_STATUS_OK,
723 ATOMISP_FLASH_STATUS_HW_ERROR,
724 ATOMISP_FLASH_STATUS_INTERRUPTED,
725 ATOMISP_FLASH_STATUS_TIMEOUT,
726};
727
728
729
730
731
732
733
734
735enum atomisp_frame_status {
736 ATOMISP_FRAME_STATUS_OK,
737 ATOMISP_FRAME_STATUS_CORRUPTED,
738 ATOMISP_FRAME_STATUS_FLASH_EXPOSED,
739 ATOMISP_FRAME_STATUS_FLASH_PARTIAL,
740 ATOMISP_FRAME_STATUS_FLASH_FAILED,
741};
742
743enum atomisp_acc_type {
744 ATOMISP_ACC_STANDALONE,
745 ATOMISP_ACC_OUTPUT,
746 ATOMISP_ACC_VIEWFINDER
747};
748
749enum atomisp_acc_arg_type {
750 ATOMISP_ACC_ARG_SCALAR_IN,
751 ATOMISP_ACC_ARG_SCALAR_OUT,
752 ATOMISP_ACC_ARG_SCALAR_IO,
753 ATOMISP_ACC_ARG_PTR_IN,
754 ATOMISP_ACC_ARG_PTR_OUT,
755 ATOMISP_ACC_ARG_PTR_IO,
756 ATOMISP_ARG_PTR_NOFLUSH,
757 ATOMISP_ARG_PTR_STABLE,
758 ATOMISP_ACC_ARG_FRAME
759};
760
761
762enum atomisp_acc_memory {
763 ATOMISP_ACC_MEMORY_PMEM0 = 0,
764 ATOMISP_ACC_MEMORY_DMEM0,
765
766 ATOMISP_ACC_MEMORY_DMEM = ATOMISP_ACC_MEMORY_DMEM0,
767 ATOMISP_ACC_MEMORY_VMEM0,
768 ATOMISP_ACC_MEMORY_VAMEM0,
769 ATOMISP_ACC_MEMORY_VAMEM1,
770 ATOMISP_ACC_MEMORY_VAMEM2,
771 ATOMISP_ACC_MEMORY_HMEM0,
772 ATOMISP_ACC_NR_MEMORY
773};
774
775enum atomisp_ext_isp_id {
776 EXT_ISP_CID_ISO = 0,
777 EXT_ISP_CID_CAPTURE_HDR,
778 EXT_ISP_CID_CAPTURE_LLS,
779 EXT_ISP_CID_FOCUS_MODE,
780 EXT_ISP_CID_FOCUS_EXECUTION,
781 EXT_ISP_CID_TOUCH_POSX,
782 EXT_ISP_CID_TOUCH_POSY,
783 EXT_ISP_CID_CAF_STATUS,
784 EXT_ISP_CID_AF_STATUS,
785 EXT_ISP_CID_GET_AF_MODE,
786 EXT_ISP_CID_CAPTURE_BURST,
787 EXT_ISP_CID_FLASH_MODE,
788 EXT_ISP_CID_ZOOM,
789 EXT_ISP_CID_SHOT_MODE
790};
791
792#define EXT_ISP_FOCUS_MODE_NORMAL 0
793#define EXT_ISP_FOCUS_MODE_MACRO 1
794#define EXT_ISP_FOCUS_MODE_TOUCH_AF 2
795#define EXT_ISP_FOCUS_MODE_PREVIEW_CAF 3
796#define EXT_ISP_FOCUS_MODE_MOVIE_CAF 4
797#define EXT_ISP_FOCUS_MODE_FACE_CAF 5
798#define EXT_ISP_FOCUS_MODE_TOUCH_MACRO 6
799#define EXT_ISP_FOCUS_MODE_TOUCH_CAF 7
800
801#define EXT_ISP_FOCUS_STOP 0
802#define EXT_ISP_FOCUS_SEARCH 1
803#define EXT_ISP_PAN_FOCUSING 2
804
805#define EXT_ISP_CAF_RESTART_CHECK 1
806#define EXT_ISP_CAF_STATUS_FOCUSING 2
807#define EXT_ISP_CAF_STATUS_SUCCESS 3
808#define EXT_ISP_CAF_STATUS_FAIL 4
809
810#define EXT_ISP_AF_STATUS_INVALID 1
811#define EXT_ISP_AF_STATUS_FOCUSING 2
812#define EXT_ISP_AF_STATUS_SUCCESS 3
813#define EXT_ISP_AF_STATUS_FAIL 4
814
815enum atomisp_burst_capture_options {
816 EXT_ISP_BURST_CAPTURE_CTRL_START = 0,
817 EXT_ISP_BURST_CAPTURE_CTRL_STOP
818};
819
820#define EXT_ISP_FLASH_MODE_OFF 0
821#define EXT_ISP_FLASH_MODE_ON 1
822#define EXT_ISP_FLASH_MODE_AUTO 2
823#define EXT_ISP_LED_TORCH_OFF 3
824#define EXT_ISP_LED_TORCH_ON 4
825
826#define EXT_ISP_SHOT_MODE_AUTO 0
827#define EXT_ISP_SHOT_MODE_BEAUTY_FACE 1
828#define EXT_ISP_SHOT_MODE_BEST_PHOTO 2
829#define EXT_ISP_SHOT_MODE_DRAMA 3
830#define EXT_ISP_SHOT_MODE_BEST_FACE 4
831#define EXT_ISP_SHOT_MODE_ERASER 5
832#define EXT_ISP_SHOT_MODE_PANORAMA 6
833#define EXT_ISP_SHOT_MODE_RICH_TONE_HDR 7
834#define EXT_ISP_SHOT_MODE_NIGHT 8
835#define EXT_ISP_SHOT_MODE_SOUND_SHOT 9
836#define EXT_ISP_SHOT_MODE_ANIMATED_PHOTO 10
837#define EXT_ISP_SHOT_MODE_SPORTS 11
838
839struct atomisp_sp_arg {
840 enum atomisp_acc_arg_type type;
841 void *value;
842 unsigned int size;
843};
844
845
846
847
848struct atomisp_acc_fw_arg {
849 unsigned int fw_handle;
850 unsigned int index;
851 void __user *value;
852 size_t size;
853};
854
855
856
857
858struct atomisp_acc_s_mapped_arg {
859 unsigned int fw_handle;
860 __u32 memory;
861 size_t length;
862 unsigned long css_ptr;
863};
864
865struct atomisp_acc_fw_abort {
866 unsigned int fw_handle;
867
868 unsigned int timeout;
869};
870
871struct atomisp_acc_fw_load {
872 unsigned int size;
873 unsigned int fw_handle;
874 void __user *data;
875};
876
877
878
879
880struct atomisp_acc_fw_load_to_pipe {
881 __u32 flags;
882 unsigned int fw_handle;
883 __u32 size;
884 void __user *data;
885 __u32 type;
886 __u32 reserved[3];
887};
888
889
890
891
892struct atomisp_s_runmode {
893 __u32 mode;
894};
895
896#define ATOMISP_ACC_FW_LOAD_FL_PREVIEW BIT(0)
897#define ATOMISP_ACC_FW_LOAD_FL_COPY BIT(1)
898#define ATOMISP_ACC_FW_LOAD_FL_VIDEO BIT(2)
899#define ATOMISP_ACC_FW_LOAD_FL_CAPTURE BIT(3)
900#define ATOMISP_ACC_FW_LOAD_FL_ACC BIT(4)
901#define ATOMISP_ACC_FW_LOAD_FL_ENABLE BIT(16)
902
903#define ATOMISP_ACC_FW_LOAD_TYPE_NONE 0
904#define ATOMISP_ACC_FW_LOAD_TYPE_OUTPUT 1
905#define ATOMISP_ACC_FW_LOAD_TYPE_VIEWFINDER 2
906#define ATOMISP_ACC_FW_LOAD_TYPE_STANDALONE 3
907
908struct atomisp_acc_map {
909 __u32 flags;
910 __u32 length;
911 void __user *user_ptr;
912 unsigned long css_ptr;
913 __u32 reserved[4];
914};
915
916#define ATOMISP_MAP_FLAG_NOFLUSH 0x0001
917#define ATOMISP_MAP_FLAG_CACHED 0x0002
918#define ATOMISP_MAP_FLAG_CONTIGUOUS 0x0004
919#define ATOMISP_MAP_FLAG_CLEARED 0x0008
920
921struct atomisp_acc_state {
922 __u32 flags;
923#define ATOMISP_STATE_FLAG_ENABLE ATOMISP_ACC_FW_LOAD_FL_ENABLE
924 unsigned int fw_handle;
925};
926
927struct atomisp_update_exposure {
928 unsigned int gain;
929 unsigned int digi_gain;
930 unsigned int update_gain;
931 unsigned int update_digi_gain;
932};
933
934
935
936
937
938
939
940
941
942
943
944
945struct v4l2_private_int_data {
946 __u32 size;
947 void __user *data;
948 __u32 reserved[2];
949};
950
951enum atomisp_sensor_ae_bracketing_mode {
952 SENSOR_AE_BRACKETING_MODE_OFF = 0,
953 SENSOR_AE_BRACKETING_MODE_SINGLE,
954 SENSOR_AE_BRACKETING_MODE_SINGLE_TO_STREAMING,
955 SENSOR_AE_BRACKETING_MODE_LOOP,
956};
957
958struct atomisp_sensor_ae_bracketing_info {
959 unsigned int modes;
960 unsigned int lut_depth;
961};
962
963struct atomisp_sensor_ae_bracketing_lut_entry {
964 __u16 coarse_integration_time;
965 __u16 analog_gain;
966 __u16 digital_gain;
967};
968
969struct atomisp_sensor_ae_bracketing_lut {
970 struct atomisp_sensor_ae_bracketing_lut_entry *lut;
971 unsigned int lut_size;
972};
973
974
975#define ATOMISP_IOC_G_XNR \
976 _IOR('v', BASE_VIDIOC_PRIVATE + 0, int)
977#define ATOMISP_IOC_S_XNR \
978 _IOW('v', BASE_VIDIOC_PRIVATE + 0, int)
979#define ATOMISP_IOC_G_NR \
980 _IOR('v', BASE_VIDIOC_PRIVATE + 1, struct atomisp_nr_config)
981#define ATOMISP_IOC_S_NR \
982 _IOW('v', BASE_VIDIOC_PRIVATE + 1, struct atomisp_nr_config)
983#define ATOMISP_IOC_G_TNR \
984 _IOR('v', BASE_VIDIOC_PRIVATE + 2, struct atomisp_tnr_config)
985#define ATOMISP_IOC_S_TNR \
986 _IOW('v', BASE_VIDIOC_PRIVATE + 2, struct atomisp_tnr_config)
987#define ATOMISP_IOC_G_HISTOGRAM \
988 _IOWR('v', BASE_VIDIOC_PRIVATE + 3, struct atomisp_histogram)
989#define ATOMISP_IOC_S_HISTOGRAM \
990 _IOW('v', BASE_VIDIOC_PRIVATE + 3, struct atomisp_histogram)
991#define ATOMISP_IOC_G_BLACK_LEVEL_COMP \
992 _IOR('v', BASE_VIDIOC_PRIVATE + 4, struct atomisp_ob_config)
993#define ATOMISP_IOC_S_BLACK_LEVEL_COMP \
994 _IOW('v', BASE_VIDIOC_PRIVATE + 4, struct atomisp_ob_config)
995#define ATOMISP_IOC_G_EE \
996 _IOR('v', BASE_VIDIOC_PRIVATE + 5, struct atomisp_ee_config)
997#define ATOMISP_IOC_S_EE \
998 _IOW('v', BASE_VIDIOC_PRIVATE + 5, struct atomisp_ee_config)
999
1000
1001
1002
1003
1004#define ATOMISP_IOC_G_DIS_STAT \
1005 _IOWR('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dis_statistics)
1006
1007#define ATOMISP_IOC_G_DVS2_BQ_RESOLUTIONS \
1008 _IOR('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dvs2_bq_resolutions)
1009
1010#define ATOMISP_IOC_S_DIS_COEFS \
1011 _IOW('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dis_coefficients)
1012
1013#define ATOMISP_IOC_S_DIS_VECTOR \
1014 _IOW('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dvs_6axis_config)
1015
1016#define ATOMISP_IOC_G_3A_STAT \
1017 _IOWR('v', BASE_VIDIOC_PRIVATE + 7, struct atomisp_3a_statistics)
1018#define ATOMISP_IOC_G_ISP_PARM \
1019 _IOR('v', BASE_VIDIOC_PRIVATE + 8, struct atomisp_parm)
1020#define ATOMISP_IOC_S_ISP_PARM \
1021 _IOW('v', BASE_VIDIOC_PRIVATE + 8, struct atomisp_parm)
1022#define ATOMISP_IOC_G_ISP_GAMMA \
1023 _IOR('v', BASE_VIDIOC_PRIVATE + 9, struct atomisp_gamma_table)
1024#define ATOMISP_IOC_S_ISP_GAMMA \
1025 _IOW('v', BASE_VIDIOC_PRIVATE + 9, struct atomisp_gamma_table)
1026#define ATOMISP_IOC_G_ISP_GDC_TAB \
1027 _IOR('v', BASE_VIDIOC_PRIVATE + 10, struct atomisp_morph_table)
1028#define ATOMISP_IOC_S_ISP_GDC_TAB \
1029 _IOW('v', BASE_VIDIOC_PRIVATE + 10, struct atomisp_morph_table)
1030#define ATOMISP_IOC_ISP_MAKERNOTE \
1031 _IOWR('v', BASE_VIDIOC_PRIVATE + 11, struct atomisp_makernote_info)
1032
1033
1034#define ATOMISP_IOC_G_ISP_MACC \
1035 _IOR('v', BASE_VIDIOC_PRIVATE + 12, struct atomisp_macc_config)
1036#define ATOMISP_IOC_S_ISP_MACC \
1037 _IOW('v', BASE_VIDIOC_PRIVATE + 12, struct atomisp_macc_config)
1038
1039
1040#define ATOMISP_IOC_G_ISP_BAD_PIXEL_DETECTION \
1041 _IOR('v', BASE_VIDIOC_PRIVATE + 13, struct atomisp_dp_config)
1042#define ATOMISP_IOC_S_ISP_BAD_PIXEL_DETECTION \
1043 _IOW('v', BASE_VIDIOC_PRIVATE + 13, struct atomisp_dp_config)
1044
1045
1046#define ATOMISP_IOC_G_ISP_FALSE_COLOR_CORRECTION \
1047 _IOR('v', BASE_VIDIOC_PRIVATE + 14, struct atomisp_de_config)
1048#define ATOMISP_IOC_S_ISP_FALSE_COLOR_CORRECTION \
1049 _IOW('v', BASE_VIDIOC_PRIVATE + 14, struct atomisp_de_config)
1050
1051
1052#define ATOMISP_IOC_G_ISP_CTC \
1053 _IOR('v', BASE_VIDIOC_PRIVATE + 15, struct atomisp_ctc_table)
1054#define ATOMISP_IOC_S_ISP_CTC \
1055 _IOW('v', BASE_VIDIOC_PRIVATE + 15, struct atomisp_ctc_table)
1056
1057
1058#define ATOMISP_IOC_G_ISP_WHITE_BALANCE \
1059 _IOR('v', BASE_VIDIOC_PRIVATE + 16, struct atomisp_wb_config)
1060#define ATOMISP_IOC_S_ISP_WHITE_BALANCE \
1061 _IOW('v', BASE_VIDIOC_PRIVATE + 16, struct atomisp_wb_config)
1062
1063
1064#define ATOMISP_IOC_S_ISP_FPN_TABLE \
1065 _IOW('v', BASE_VIDIOC_PRIVATE + 17, struct v4l2_framebuffer)
1066
1067
1068#define ATOMISP_IOC_G_ISP_OVERLAY \
1069 _IOWR('v', BASE_VIDIOC_PRIVATE + 18, struct atomisp_overlay)
1070#define ATOMISP_IOC_S_ISP_OVERLAY \
1071 _IOW('v', BASE_VIDIOC_PRIVATE + 18, struct atomisp_overlay)
1072
1073
1074#define ATOMISP_IOC_CAMERA_BRIDGE \
1075 _IOWR('v', BASE_VIDIOC_PRIVATE + 19, struct atomisp_bc_video_package)
1076
1077
1078#define ATOMISP_IOC_G_SENSOR_MODE_DATA \
1079 _IOR('v', BASE_VIDIOC_PRIVATE + 20, struct atomisp_sensor_mode_data)
1080
1081#define ATOMISP_IOC_S_EXPOSURE \
1082 _IOW('v', BASE_VIDIOC_PRIVATE + 21, struct atomisp_exposure)
1083
1084
1085#define ATOMISP_IOC_G_SENSOR_CALIBRATION_GROUP \
1086 _IOWR('v', BASE_VIDIOC_PRIVATE + 22, struct atomisp_calibration_group)
1087
1088
1089#define ATOMISP_IOC_G_3A_CONFIG \
1090 _IOR('v', BASE_VIDIOC_PRIVATE + 23, struct atomisp_3a_config)
1091#define ATOMISP_IOC_S_3A_CONFIG \
1092 _IOW('v', BASE_VIDIOC_PRIVATE + 23, struct atomisp_3a_config)
1093
1094
1095#define ATOMISP_IOC_ACC_LOAD \
1096 _IOWR('v', BASE_VIDIOC_PRIVATE + 24, struct atomisp_acc_fw_load)
1097
1098#define ATOMISP_IOC_ACC_UNLOAD \
1099 _IOWR('v', BASE_VIDIOC_PRIVATE + 24, unsigned int)
1100
1101
1102#define ATOMISP_IOC_ACC_S_ARG \
1103 _IOW('v', BASE_VIDIOC_PRIVATE + 24, struct atomisp_acc_fw_arg)
1104
1105#define ATOMISP_IOC_ACC_START \
1106 _IOW('v', BASE_VIDIOC_PRIVATE + 24, unsigned int)
1107
1108#define ATOMISP_IOC_ACC_WAIT \
1109 _IOW('v', BASE_VIDIOC_PRIVATE + 25, unsigned int)
1110
1111#define ATOMISP_IOC_ACC_ABORT \
1112 _IOW('v', BASE_VIDIOC_PRIVATE + 25, struct atomisp_acc_fw_abort)
1113
1114#define ATOMISP_IOC_ACC_DESTAB \
1115 _IOW('v', BASE_VIDIOC_PRIVATE + 25, struct atomisp_acc_fw_arg)
1116
1117
1118#define ATOMISP_IOC_G_SENSOR_PRIV_INT_DATA \
1119 _IOWR('v', BASE_VIDIOC_PRIVATE + 26, struct v4l2_private_int_data)
1120
1121
1122#define ATOMISP_IOC_S_ISP_SHD_TAB \
1123 _IOWR('v', BASE_VIDIOC_PRIVATE + 27, struct atomisp_shading_table)
1124
1125
1126#define ATOMISP_IOC_G_ISP_GAMMA_CORRECTION \
1127 _IOR('v', BASE_VIDIOC_PRIVATE + 28, struct atomisp_gc_config)
1128
1129#define ATOMISP_IOC_S_ISP_GAMMA_CORRECTION \
1130 _IOW('v', BASE_VIDIOC_PRIVATE + 28, struct atomisp_gc_config)
1131
1132
1133#define ATOMISP_IOC_G_MOTOR_PRIV_INT_DATA \
1134 _IOWR('v', BASE_VIDIOC_PRIVATE + 29, struct v4l2_private_int_data)
1135
1136
1137
1138
1139
1140
1141#define ATOMISP_IOC_ACC_MAP \
1142 _IOWR('v', BASE_VIDIOC_PRIVATE + 30, struct atomisp_acc_map)
1143
1144
1145#define ATOMISP_IOC_ACC_UNMAP \
1146 _IOW('v', BASE_VIDIOC_PRIVATE + 30, struct atomisp_acc_map)
1147
1148#define ATOMISP_IOC_ACC_S_MAPPED_ARG \
1149 _IOW('v', BASE_VIDIOC_PRIVATE + 30, struct atomisp_acc_s_mapped_arg)
1150
1151#define ATOMISP_IOC_ACC_LOAD_TO_PIPE \
1152 _IOWR('v', BASE_VIDIOC_PRIVATE + 31, struct atomisp_acc_fw_load_to_pipe)
1153
1154#define ATOMISP_IOC_S_PARAMETERS \
1155 _IOW('v', BASE_VIDIOC_PRIVATE + 32, struct atomisp_parameters)
1156
1157#define ATOMISP_IOC_S_CONT_CAPTURE_CONFIG \
1158 _IOWR('v', BASE_VIDIOC_PRIVATE + 33, struct atomisp_cont_capture_conf)
1159
1160#define ATOMISP_IOC_G_METADATA \
1161 _IOWR('v', BASE_VIDIOC_PRIVATE + 34, struct atomisp_metadata)
1162
1163#define ATOMISP_IOC_G_METADATA_BY_TYPE \
1164 _IOWR('v', BASE_VIDIOC_PRIVATE + 34, struct atomisp_metadata_with_type)
1165
1166#define ATOMISP_IOC_EXT_ISP_CTRL \
1167 _IOWR('v', BASE_VIDIOC_PRIVATE + 35, struct atomisp_ext_isp_ctrl)
1168
1169#define ATOMISP_IOC_EXP_ID_UNLOCK \
1170 _IOW('v', BASE_VIDIOC_PRIVATE + 36, int)
1171
1172#define ATOMISP_IOC_EXP_ID_CAPTURE \
1173 _IOW('v', BASE_VIDIOC_PRIVATE + 37, int)
1174
1175#define ATOMISP_IOC_S_ENABLE_DZ_CAPT_PIPE \
1176 _IOWR('v', BASE_VIDIOC_PRIVATE + 38, unsigned int)
1177
1178#define ATOMISP_IOC_G_FORMATS_CONFIG \
1179 _IOR('v', BASE_VIDIOC_PRIVATE + 39, struct atomisp_formats_config)
1180
1181#define ATOMISP_IOC_S_FORMATS_CONFIG \
1182 _IOW('v', BASE_VIDIOC_PRIVATE + 39, struct atomisp_formats_config)
1183
1184#define ATOMISP_IOC_S_EXPOSURE_WINDOW \
1185 _IOW('v', BASE_VIDIOC_PRIVATE + 40, struct atomisp_ae_window)
1186
1187#define ATOMISP_IOC_S_ACC_STATE \
1188 _IOW('v', BASE_VIDIOC_PRIVATE + 41, struct atomisp_acc_state)
1189
1190#define ATOMISP_IOC_G_ACC_STATE \
1191 _IOR('v', BASE_VIDIOC_PRIVATE + 41, struct atomisp_acc_state)
1192
1193#define ATOMISP_IOC_INJECT_A_FAKE_EVENT \
1194 _IOW('v', BASE_VIDIOC_PRIVATE + 42, int)
1195
1196#define ATOMISP_IOC_G_SENSOR_AE_BRACKETING_INFO \
1197 _IOR('v', BASE_VIDIOC_PRIVATE + 43, struct atomisp_sensor_ae_bracketing_info)
1198
1199#define ATOMISP_IOC_S_SENSOR_AE_BRACKETING_MODE \
1200 _IOW('v', BASE_VIDIOC_PRIVATE + 43, unsigned int)
1201
1202#define ATOMISP_IOC_G_SENSOR_AE_BRACKETING_MODE \
1203 _IOR('v', BASE_VIDIOC_PRIVATE + 43, unsigned int)
1204
1205#define ATOMISP_IOC_S_SENSOR_AE_BRACKETING_LUT \
1206 _IOW('v', BASE_VIDIOC_PRIVATE + 43, struct atomisp_sensor_ae_bracketing_lut)
1207
1208#define ATOMISP_IOC_G_INVALID_FRAME_NUM \
1209 _IOR('v', BASE_VIDIOC_PRIVATE + 44, unsigned int)
1210
1211#define ATOMISP_IOC_S_ARRAY_RESOLUTION \
1212 _IOW('v', BASE_VIDIOC_PRIVATE + 45, struct atomisp_resolution)
1213
1214
1215#define ATOMISP_IOC_G_DEPTH_SYNC_COMP \
1216 _IOR('v', BASE_VIDIOC_PRIVATE + 46, unsigned int)
1217
1218#define ATOMISP_IOC_S_SENSOR_EE_CONFIG \
1219 _IOW('v', BASE_VIDIOC_PRIVATE + 47, unsigned int)
1220
1221#define ATOMISP_IOC_S_SENSOR_RUNMODE \
1222 _IOW('v', BASE_VIDIOC_PRIVATE + 48, struct atomisp_s_runmode)
1223
1224#define ATOMISP_IOC_G_UPDATE_EXPOSURE \
1225 _IOWR('v', BASE_VIDIOC_PRIVATE + 49, struct atomisp_update_exposure)
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239#define V4L2_CID_ATOMISP_BAD_PIXEL_DETECTION \
1240 (V4L2_CID_PRIVATE_BASE + 0)
1241#define V4L2_CID_ATOMISP_POSTPROCESS_GDC_CAC \
1242 (V4L2_CID_PRIVATE_BASE + 1)
1243#define V4L2_CID_ATOMISP_VIDEO_STABLIZATION \
1244 (V4L2_CID_PRIVATE_BASE + 2)
1245#define V4L2_CID_ATOMISP_FIXED_PATTERN_NR \
1246 (V4L2_CID_PRIVATE_BASE + 3)
1247#define V4L2_CID_ATOMISP_FALSE_COLOR_CORRECTION \
1248 (V4L2_CID_PRIVATE_BASE + 4)
1249#define V4L2_CID_ATOMISP_LOW_LIGHT \
1250 (V4L2_CID_PRIVATE_BASE + 5)
1251
1252
1253
1254#define V4L2_CID_CAMERA_LASTP1 (V4L2_CID_CAMERA_CLASS_BASE + 1024)
1255
1256#define V4L2_CID_FOCAL_ABSOLUTE (V4L2_CID_CAMERA_LASTP1 + 0)
1257#define V4L2_CID_FNUMBER_ABSOLUTE (V4L2_CID_CAMERA_LASTP1 + 1)
1258#define V4L2_CID_FNUMBER_RANGE (V4L2_CID_CAMERA_LASTP1 + 2)
1259
1260
1261
1262
1263
1264
1265
1266#define V4L2_CID_REQUEST_FLASH (V4L2_CID_CAMERA_LASTP1 + 3)
1267
1268#define V4L2_CID_FLASH_STATUS (V4L2_CID_CAMERA_LASTP1 + 5)
1269
1270#define V4L2_CID_FLASH_MODE (V4L2_CID_CAMERA_LASTP1 + 10)
1271
1272
1273#define V4L2_CID_VCM_SLEW (V4L2_CID_CAMERA_LASTP1 + 11)
1274
1275#define V4L2_CID_VCM_TIMING (V4L2_CID_CAMERA_LASTP1 + 12)
1276
1277
1278#define V4L2_CID_FOCUS_STATUS (V4L2_CID_CAMERA_LASTP1 + 14)
1279
1280
1281#define V4L2_CID_BIN_FACTOR_HORZ (V4L2_CID_CAMERA_LASTP1 + 15)
1282#define V4L2_CID_BIN_FACTOR_VERT (V4L2_CID_CAMERA_LASTP1 + 16)
1283
1284
1285#define V4L2_CID_G_SKIP_FRAMES (V4L2_CID_CAMERA_LASTP1 + 17)
1286
1287
1288#define V4L2_CID_2A_STATUS (V4L2_CID_CAMERA_LASTP1 + 18)
1289#define V4L2_2A_STATUS_AE_READY BIT(0)
1290#define V4L2_2A_STATUS_AWB_READY BIT(1)
1291
1292#define V4L2_CID_FMT_AUTO (V4L2_CID_CAMERA_LASTP1 + 19)
1293
1294#define V4L2_CID_RUN_MODE (V4L2_CID_CAMERA_LASTP1 + 20)
1295#define ATOMISP_RUN_MODE_VIDEO 1
1296#define ATOMISP_RUN_MODE_STILL_CAPTURE 2
1297#define ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE 3
1298#define ATOMISP_RUN_MODE_PREVIEW 4
1299#define ATOMISP_RUN_MODE_SDV 5
1300
1301#define V4L2_CID_ENABLE_VFPP (V4L2_CID_CAMERA_LASTP1 + 21)
1302#define V4L2_CID_ATOMISP_CONTINUOUS_MODE (V4L2_CID_CAMERA_LASTP1 + 22)
1303#define V4L2_CID_ATOMISP_CONTINUOUS_RAW_BUFFER_SIZE \
1304 (V4L2_CID_CAMERA_LASTP1 + 23)
1305#define V4L2_CID_ATOMISP_CONTINUOUS_VIEWFINDER \
1306 (V4L2_CID_CAMERA_LASTP1 + 24)
1307
1308#define V4L2_CID_VFPP (V4L2_CID_CAMERA_LASTP1 + 25)
1309#define ATOMISP_VFPP_ENABLE 0
1310#define ATOMISP_VFPP_DISABLE_SCALER 1
1311#define ATOMISP_VFPP_DISABLE_LOWLAT 2
1312
1313
1314#define V4L2_CID_FLASH_STATUS_REGISTER (V4L2_CID_CAMERA_LASTP1 + 26)
1315
1316#define V4L2_CID_START_ZSL_CAPTURE (V4L2_CID_CAMERA_LASTP1 + 28)
1317
1318#define V4L2_CID_ENABLE_RAW_BUFFER_LOCK (V4L2_CID_CAMERA_LASTP1 + 29)
1319
1320#define V4L2_CID_DEPTH_MODE (V4L2_CID_CAMERA_LASTP1 + 30)
1321
1322#define V4L2_CID_EXPOSURE_ZONE_NUM (V4L2_CID_CAMERA_LASTP1 + 31)
1323
1324#define V4L2_CID_DISABLE_DZ (V4L2_CID_CAMERA_LASTP1 + 32)
1325
1326#define V4L2_CID_TEST_PATTERN_COLOR_R (V4L2_CID_CAMERA_LASTP1 + 33)
1327#define V4L2_CID_TEST_PATTERN_COLOR_GR (V4L2_CID_CAMERA_LASTP1 + 34)
1328#define V4L2_CID_TEST_PATTERN_COLOR_GB (V4L2_CID_CAMERA_LASTP1 + 35)
1329#define V4L2_CID_TEST_PATTERN_COLOR_B (V4L2_CID_CAMERA_LASTP1 + 36)
1330
1331#define V4L2_CID_ATOMISP_SELECT_ISP_VERSION (V4L2_CID_CAMERA_LASTP1 + 38)
1332
1333#define V4L2_BUF_FLAG_BUFFER_INVALID 0x0400
1334#define V4L2_BUF_FLAG_BUFFER_VALID 0x0800
1335
1336#define V4L2_BUF_TYPE_VIDEO_CAPTURE_ION (V4L2_BUF_TYPE_PRIVATE + 1024)
1337
1338#define V4L2_EVENT_ATOMISP_3A_STATS_READY (V4L2_EVENT_PRIVATE_START + 1)
1339#define V4L2_EVENT_ATOMISP_METADATA_READY (V4L2_EVENT_PRIVATE_START + 2)
1340#define V4L2_EVENT_ATOMISP_RAW_BUFFERS_ALLOC_DONE (V4L2_EVENT_PRIVATE_START + 3)
1341#define V4L2_EVENT_ATOMISP_ACC_COMPLETE (V4L2_EVENT_PRIVATE_START + 4)
1342#define V4L2_EVENT_ATOMISP_PAUSE_BUFFER (V4L2_EVENT_PRIVATE_START + 5)
1343#define V4L2_EVENT_ATOMISP_CSS_RESET (V4L2_EVENT_PRIVATE_START + 6)
1344
1345enum {
1346 V4L2_COLORFX_SKIN_WHITEN_LOW = 1001,
1347 V4L2_COLORFX_SKIN_WHITEN_HIGH = 1002,
1348 V4L2_COLORFX_WARM = 1003,
1349 V4L2_COLORFX_COLD = 1004,
1350 V4L2_COLORFX_WASHED = 1005,
1351 V4L2_COLORFX_RED = 1006,
1352 V4L2_COLORFX_GREEN = 1007,
1353 V4L2_COLORFX_BLUE = 1008,
1354 V4L2_COLORFX_PINK = 1009,
1355 V4L2_COLORFX_YELLOW = 1010,
1356 V4L2_COLORFX_PURPLE = 1011,
1357};
1358
1359#endif
1360