1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
|
#ifndef _KD_IMGSENSOR_DATA_H
#define _KD_IMGSENSOR_DATA_H
/* #include "../camera/kd_camera_hw.h" */
#include "kd_camera_feature.h"
#define SENSOR_CLOCK_POLARITY_HIGH 0
#define SENSOR_CLOCK_POLARITY_LOW 1
/* #define CONFIG_COMPAT */
#ifdef CONFIG_COMPAT
/* 64 bit */
#include <linux/fs.h>
#include <linux/compat.h>
#endif
/*************************************************
*
**************************************************/
/* In KERNEL mode,SHOULD be sync with mediatype.h */
/* CHECK before remove or modify */
/* #undef BOOL */
/* #define BOOL signed int */
#ifndef _MEDIA_TYPES_H
typedef unsigned char MUINT8;
typedef unsigned short MUINT16;
typedef unsigned int MUINT32;
typedef signed char MINT8;
typedef signed short MINT16;
typedef signed int MINT32;
#endif
/*******************************************************************************
*
********************************************************************************/
/* */
/* msdk_isp_exp.h */
/* */
#define BASEGAIN 0x40
#define BASEGAIN_SHIFT 6
typedef enum {
ISP_DRIVING_2MA = 0,
ISP_DRIVING_4MA,
ISP_DRIVING_6MA,
ISP_DRIVING_8MA
} ISP_DRIVING_CURRENT_ENUM;
enum {
IMAGE_NORMAL = 0,
IMAGE_H_MIRROR,
IMAGE_V_MIRROR,
IMAGE_HV_MIRROR
};
typedef enum {
MSDK_SCENARIO_ID_CAMERA_PREVIEW = 0,
MSDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG,
MSDK_SCENARIO_ID_VIDEO_PREVIEW,
MSDK_SCENARIO_ID_HIGH_SPEED_VIDEO,
MSDK_SCENARIO_ID_CAMERA_ZSD,
MSDK_SCENARIO_ID_CAMERA_3D_PREVIEW,
MSDK_SCENARIO_ID_CAMERA_3D_CAPTURE,
MSDK_SCENARIO_ID_CAMERA_3D_VIDEO,
MSDK_SCENARIO_ID_TV_OUT,
MSDK_SCENARIO_ID_SLIM_VIDEO,
MSDK_SCENARIO_ID_CUSTOM1,
MSDK_SCENARIO_ID_CUSTOM2,
MSDK_SCENARIO_ID_CUSTOM3,
MSDK_SCENARIO_ID_CUSTOM4,
MSDK_SCENARIO_ID_CUSTOM5,
MSDK_SCENARIO_ID_MAX,
} MSDK_SCENARIO_ID_ENUM;
typedef enum {
MSDK_CAMERA_OPERATION_NORMAL_MODE = 0,
MSDK_CAMERA_OPERATION_META_MODE
} ACDK_CAMERA_OPERATION_MODE_ENUM;
/*******************************************************************************
*
********************************************************************************/
/* */
#define MAX_NUM_OF_SUPPORT_SENSOR 16
/* */
#define SENSOR_CLOCK_POLARITY_HIGH 0
#define SENSOR_CLOCK_POLARITY_LOW 1
/* */
#define LENS_DRIVER_ID_DO_NOT_CARE 0xFFFFFFFF
#define SENSOR_DOES_NOT_EXIST 0x00FFFFFF
#define SENSOR_DOES_NOT_KNOW 0xFFFFFFFF
#define SENSOR_FEATURE_START 3000
typedef enum {
SENSOR_FEATURE_BEGIN = SENSOR_FEATURE_START,
SENSOR_FEATURE_GET_RESOLUTION,
SENSOR_FEATURE_GET_PERIOD,
SENSOR_FEATURE_GET_PIXEL_CLOCK_FREQ,
SENSOR_FEATURE_SET_ESHUTTER,
SENSOR_FEATURE_SET_NIGHTMODE,
SENSOR_FEATURE_SET_GAIN,
SENSOR_FEATURE_SET_GAIN_AND_ESHUTTER,
SENSOR_FEATURE_SET_FLASHLIGHT,
SENSOR_FEATURE_SET_ISP_MASTER_CLOCK_FREQ,
SENSOR_FEATURE_SET_REGISTER,
SENSOR_FEATURE_GET_REGISTER,
SENSOR_FEATURE_SET_CCT_REGISTER,
SENSOR_FEATURE_GET_CCT_REGISTER,
SENSOR_FEATURE_SET_ENG_REGISTER,
SENSOR_FEATURE_GET_ENG_REGISTER,
SENSOR_FEATURE_GET_REGISTER_DEFAULT,
SENSOR_FEATURE_GET_CONFIG_PARA,
SENSOR_FEATURE_CAMERA_PARA_TO_SENSOR,
SENSOR_FEATURE_SENSOR_TO_CAMERA_PARA,
SENSOR_FEATURE_GET_GROUP_COUNT,
SENSOR_FEATURE_GET_GROUP_INFO,
SENSOR_FEATURE_GET_ITEM_INFO,
SENSOR_FEATURE_SET_ITEM_INFO,
SENSOR_FEATURE_GET_ENG_INFO,
SENSOR_FEATURE_GET_LENS_DRIVER_ID,
SENSOR_FEATURE_SET_YUV_CMD,
SENSOR_FEATURE_SET_VIDEO_MODE,
SENSOR_FEATURE_SET_TARGET_FRAME_RATE,
SENSOR_FEATURE_SET_CALIBRATION_DATA,
SENSOR_FEATURE_SET_SENSOR_SYNC,
SENSOR_FEATURE_INITIALIZE_AF,
SENSOR_FEATURE_CONSTANT_AF,
SENSOR_FEATURE_INFINITY_AF,
SENSOR_FEATURE_MOVE_FOCUS_LENS,
SENSOR_FEATURE_GET_AF_STATUS,
SENSOR_FEATURE_GET_AE_STATUS,
SENSOR_FEATURE_GET_AWB_STATUS,
SENSOR_FEATURE_GET_AF_INF,
SENSOR_FEATURE_GET_AF_MACRO,
SENSOR_FEATURE_CHECK_SENSOR_ID,
SENSOR_FEATURE_SET_AUTO_FLICKER_MODE,
SENSOR_FEATURE_SET_TEST_PATTERN,
SENSOR_FEATURE_SET_SOFTWARE_PWDN,
SENSOR_FEATURE_SINGLE_FOCUS_MODE,
SENSOR_FEATURE_CANCEL_AF,
SENSOR_FEATURE_SET_AF_WINDOW,
SENSOR_FEATURE_GET_EV_AWB_REF,
SENSOR_FEATURE_GET_SHUTTER_GAIN_AWB_GAIN,
SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS,
SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS,
SENSOR_FEATURE_SET_AE_WINDOW,
SENSOR_FEATURE_GET_EXIF_INFO,
SENSOR_FEATURE_GET_DELAY_INFO,
SENSOR_FEATURE_SET_SLAVE_I2C_ID,
SENSOR_FEATURE_SUSPEND,
SENSOR_FEATURE_RESUME,
SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO,
SENSOR_FEATURE_GET_DEFAULT_FRAME_RATE_BY_SCENARIO,
SENSOR_FEATURE_GET_AE_AWB_LOCK_INFO,
SENSOR_FEATURE_AUTOTEST_CMD,
SENSOR_FEATURE_GET_TEST_PATTERN_CHECKSUM_VALUE,
SENSOR_FEATURE_GET_TEMPERATURE_VALUE,
SENSOR_FEATURE_GET_SENSOR_CURRENT_TEMPERATURE,
SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO,
SENSOR_FEATURE_GET_TRIGGER_FLASHLIGHT_INFO, /* Trigger flashlight or not */
SENSOR_FEATURE_SET_YUV_3A_CMD,
SENSOR_FEATURE_SET_N3D_I2C_STREAM_REGDATA,
SENSOR_FEATURE_SET_N3D_STOP_STREAMING,
SENSOR_FEATURE_SET_N3D_START_STREAMING,
SENSOR_FEATURE_GET_SENSOR_N3D_STREAM_TO_VSYNC_TIME,
SENSOR_FEATURE_SET_ESHUTTER_GAIN,
SENSOR_FEATURE_SET_OB_LOCK,
SENSOR_FEATURE_SET_SENSOR_OTP_AWB_CMD,
SENSOR_FEATURE_SET_SENSOR_OTP_LSC_CMD,
SENSOR_FEATURE_GET_YUV_CAPTURE_OUTPUT_JPEG,
SENSOR_FEATURE_SET_YUV_JPEG_PARA,
SENSOR_FEATURE_GET_YUV_JPEG_INFO,
SENSOR_FEATURE_SET_FRAMERATE,
SENSOR_FEATURE_SET_HDR,
SENSOR_FEATURE_GET_CROP_INFO,
SENSOR_FEATURE_GET_VC_INFO,
SENSOR_FEATURE_SET_IHDR_SHUTTER_GAIN,
SENSOR_FEATURE_SET_AWB_GAIN,
SENSOR_FEATURE_SET_MIN_MAX_FPS,
SENSOR_FEATURE_GET_PDAF_INFO,
SENSOR_FEATURE_GET_PDAF_DATA,
SENSOR_FEATURE_GET_SENSOR_PDAF_CAPACITY,
SENSOR_FEATURE_DEBUG_IMGSENSOR,
SENSOR_FEATURE_SET_HDR_SHUTTER,
SENSOR_FEATURE_SET_ISO,
SENSOR_FEATURE_SET_PDAF,
SENSOR_FEATURE_MAX
} ACDK_SENSOR_FEATURE_ENUM;
typedef enum {
SENSOR_AF_IDLE = 0,
SENSOR_AF_FOCUSING,
SENSOR_AF_FOCUSED,
SENSOR_AF_ERROR,
SENSOR_AF_SCENE_DETECTING,
SENSOR_AF_STATUS_MAX
} ACDK_SENSOR_AF_STATUS_ENUM;
typedef enum {
SENSOR_AE_IDLE = 0,
SENSOR_AE_EXPOSING,
SENSOR_AE_EXPOSED,
SENSOR_AE_ERROR,
SENSOR_AE_LOCKED
} ACDK_SENSOR_AE_STATUS_ENUM;
typedef enum {
SENSOR_AWB_IDLE = 0,
SENSOR_AWB_BALANCING,
SENSOR_AWB_BALANCED,
SENSOR_AWB_ERROR,
SENSOR_AWB_LOCKED
} ACDK_SENSOR_AWB_STATUS_ENUM;
typedef enum {
SENSOR_INTERFACE_TYPE_PARALLEL = 0,
SENSOR_INTERFACE_TYPE_MIPI,
SENSOR_INTERFACE_TYPE_SERIAL, /* add for 72 ATV using serial interface */
SENSOR_INTERFACE_TYPE_MAX
} ACDK_SENSOR_INTERFACE_TYPE_ENUM;
typedef enum {
SENSOR_OUTPUT_FORMAT_RAW_B = 0,
SENSOR_OUTPUT_FORMAT_RAW_Gb,
SENSOR_OUTPUT_FORMAT_RAW_Gr,
SENSOR_OUTPUT_FORMAT_RAW_R,
SENSOR_OUTPUT_FORMAT_UYVY,
SENSOR_OUTPUT_FORMAT_VYUY,
SENSOR_OUTPUT_FORMAT_YUYV,
SENSOR_OUTPUT_FORMAT_YVYU,
SENSOR_OUTPUT_FORMAT_CbYCrY,
SENSOR_OUTPUT_FORMAT_CrYCbY,
SENSOR_OUTPUT_FORMAT_YCbYCr,
SENSOR_OUTPUT_FORMAT_YCrYCb,
SENSOR_OUTPUT_FORMAT_RAW8_B,
SENSOR_OUTPUT_FORMAT_RAW8_Gb,
SENSOR_OUTPUT_FORMAT_RAW8_Gr,
SENSOR_OUTPUT_FORMAT_RAW8_R,
SENSOR_OUTPUT_FORMAT_RAW_RWB_B,
SENSOR_OUTPUT_FORMAT_RAW_RWB_Wb,
SENSOR_OUTPUT_FORMAT_RAW_RWB_Wr,
SENSOR_OUTPUT_FORMAT_RAW_RWB_R,
SENSOR_OUTPUT_FORMAT_RAW_MONO
} ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM;
typedef enum {
SENSOR_MIPI_1_LANE = 0,
SENSOR_MIPI_2_LANE,
SENSOR_MIPI_3_LANE,
SENSOR_MIPI_4_LANE
} ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM;
typedef enum {
SCAM_1_DATA_CHANNEL = 0,
SCAM_2_DATA_CHANNEL,
SCAM_3_DATA_CHANNEL,
SCAM_4_DATA_CHANNEL,
} SENSOR_SCAM_DATA_CHANNEL_ENUM;
typedef enum {
MIPI_OPHY_NCSI2 = 0,
MIPI_OPHY_CSI2 = 1,
} SENSOR_MIPI_TYPE_ENUM;
typedef enum {
MIPI_SETTLEDELAY_AUTO = 0,
MIPI_SETTLEDELAY_MANUAL = 1,
} SENSOR_SETTLEDELAY_MODE_ENUM;
typedef enum {
COMP8_NONE = 0,
COMP8_DI_30 = 0x30,
COMP8_DI_31 = 0x31,
COMP8_DI_32 = 0x32,
COMP8_DI_33 = 0x33,
COMP8_DI_34 = 0x34,
COMP8_DI_35 = 0x35,
COMP8_DI_36 = 0x36,
COMP8_DI_37 = 0x37,
COMP8_DI_2A = 0x2A,
} SENSOR_DPCM_TYPE_ENUM;
typedef struct {
MUINT16 SensorPreviewWidth;
MUINT16 SensorPreviewHeight;
MUINT16 SensorFullWidth;
MUINT16 SensorFullHeight;
MUINT16 SensorVideoWidth;
MUINT16 SensorVideoHeight;
MUINT16 SensorHighSpeedVideoWidth;
MUINT16 SensorHighSpeedVideoHeight;
MUINT16 SensorSlimVideoWidth;
MUINT16 SensorSlimVideoHeight;
MUINT16 SensorCustom1Width;
MUINT16 SensorCustom1Height;
MUINT16 SensorCustom2Width;
MUINT16 SensorCustom2Height;
MUINT16 SensorCustom3Width;
MUINT16 SensorCustom3Height;
MUINT16 SensorCustom4Width;
MUINT16 SensorCustom4Height;
MUINT16 SensorCustom5Width;
MUINT16 SensorCustom5Height;
MUINT16 Sensor3DPreviewWidth;
MUINT16 Sensor3DPreviewHeight;
MUINT16 Sensor3DFullWidth;
MUINT16 Sensor3DFullHeight;
MUINT16 Sensor3DVideoWidth;
MUINT16 Sensor3DVideoHeight;
MUINT16 SensorEffectivePreviewWidth;
MUINT16 SensorEffectivePreviewHeight;
MUINT16 SensorEffectiveFullWidth;
MUINT16 SensorEffectiveFullHeight;
MUINT16 SensorEffectiveVideoWidth;
MUINT16 SensorEffectiveVideoHeight;
MUINT16 SensorEffectiveHighSpeedVideoWidth;
MUINT16 SensorEffectiveHighSpeedVideoHeight;
MUINT16 SensorEffective3DPreviewWidth;
MUINT16 SensorEffective3DPreviewHeight;
MUINT16 SensorEffective3DFullWidth;
MUINT16 SensorEffective3DFullHeight;
MUINT16 SensorEffective3DVideoWidth;
MUINT16 SensorEffective3DVideoHeight;
MUINT16 SensorPreviewWidthOffset; /* from effective width to output width */
MUINT16 SensorPreviewHeightOffset; /* from effective height to output height */
MUINT16 SensorFullWidthOffset; /* from effective width to output width */
MUINT16 SensorFullHeightOffset; /* from effective height to output height */
MUINT16 SensorVideoWidthOffset; /* from effective width to output width */
MUINT16 SensorVideoHeightOffset; /* from effective height to output height */
MUINT16 SensorHighSpeedVideoWidthOffset; /* from effective width to output width */
MUINT16 SensorHighSpeedVideoHeightOffset; /* from effective height to output height */
MUINT16 Sensor3DPreviewWidthOffset; /* from effective width to output width */
MUINT16 Sensor3DPreviewHeightOffset; /* from effective height to output height */
MUINT16 Sensor3DFullWidthOffset; /* from effective width to output width */
MUINT16 Sensor3DFullHeightOffset; /* from effective height to output height */
MUINT16 Sensor3DVideoWidthOffset; /* from effective width to output width */
MUINT16 Sensor3DVideoHeightOffset; /* from effective height to output height */
} ACDK_SENSOR_RESOLUTION_INFO_STRUCT, *PACDK_SENSOR_RESOLUTION_INFO_STRUCT;
typedef struct {
MUINT16 SensorPreviewResolutionX;
MUINT16 SensorPreviewResolutionY;
MUINT16 SensorFullResolutionX;
MUINT16 SensorFullResolutionY;
MUINT8 SensorClockFreq; /* MHz */
MUINT8 SensorCameraPreviewFrameRate;
MUINT8 SensorVideoFrameRate;
MUINT8 SensorStillCaptureFrameRate;
MUINT8 SensorWebCamCaptureFrameRate;
MUINT8 SensorClockPolarity; /* SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low */
MUINT8 SensorClockFallingPolarity;
MUINT8 SensorClockRisingCount; /* 0..15 */
MUINT8 SensorClockFallingCount; /* 0..15 */
MUINT8 SensorClockDividCount; /* 0..15 */
MUINT8 SensorPixelClockCount; /* 0..15 */
MUINT8 SensorDataLatchCount; /* 0..15 */
MUINT8 SensorHsyncPolarity;
MUINT8 SensorVsyncPolarity;
MUINT8 SensorInterruptDelayLines;
MINT32 SensorResetActiveHigh;
MUINT32 SensorResetDelayCount;
ACDK_SENSOR_INTERFACE_TYPE_ENUM SensroInterfaceType;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM SensorMIPILaneNumber;
MUINT32 CaptureDelayFrame;
MUINT32 PreviewDelayFrame;
MUINT32 VideoDelayFrame;
MUINT32 HighSpeedVideoDelayFrame;
MUINT32 SlimVideoDelayFrame;
MUINT32 YUVAwbDelayFrame;
MUINT32 YUVEffectDelayFrame;
MUINT32 Custom1DelayFrame;
MUINT32 Custom2DelayFrame;
MUINT32 Custom3DelayFrame;
MUINT32 Custom4DelayFrame;
MUINT32 Custom5DelayFrame;
MUINT16 SensorGrabStartX;
MUINT16 SensorGrabStartY;
MUINT16 SensorDrivingCurrent;
MUINT8 SensorMasterClockSwitch;
MUINT8 AEShutDelayFrame; /* The frame of setting shutter default 0 for TG int */
MUINT8 AESensorGainDelayFrame; /* The frame of setting sensor gain */
MUINT8 AEISPGainDelayFrame;
MUINT8 MIPIDataLowPwr2HighSpeedTermDelayCount;
MUINT8 MIPIDataLowPwr2HighSpeedSettleDelayCount;
MUINT8 MIPICLKLowPwr2HighSpeedTermDelayCount;
MUINT8 SensorWidthSampling;
MUINT8 SensorHightSampling;
MUINT8 SensorPacketECCOrder;
SENSOR_MIPI_TYPE_ENUM MIPIsensorType;
MUINT8 SensorCaptureOutputJPEG; /* JPEG file or not? */
MUINT8 SensorModeNum;
MUINT8 IHDR_Support;
MUINT16 IHDR_LE_FirstLine;
SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode;
MUINT8 PDAF_Support;
MUINT8 DPCM_INFO;
MUINT8 PerFrameCTL_Support;
SENSOR_SCAM_DATA_CHANNEL_ENUM SCAM_DataNumber;
MUINT8 SCAM_DDR_En;
MUINT8 SCAM_CLK_INV;
MUINT8 SCAM_DEFAULT_DELAY;
MUINT8 SCAM_CRC_En;
MUINT8 SCAM_SOF_src;
MUINT32 SCAM_Timout_Cali;
} ACDK_SENSOR_INFO_STRUCT, *PACDK_SENSOR_INFO_STRUCT;
typedef struct {
MUINT16 SensorPreviewResolutionX;
MUINT16 SensorPreviewResolutionY;
MUINT16 SensorFullResolutionX;
MUINT16 SensorFullResolutionY;
MUINT8 SensorClockFreq; /* MHz */
MUINT8 SensorCameraPreviewFrameRate;
MUINT8 SensorVideoFrameRate;
MUINT8 SensorStillCaptureFrameRate;
MUINT8 SensorWebCamCaptureFrameRate;
MUINT8 SensorClockPolarity; /* SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low */
MUINT8 SensorClockFallingPolarity;
MUINT8 SensorClockRisingCount; /* 0..15 */
MUINT8 SensorClockFallingCount; /* 0..15 */
MUINT8 SensorClockDividCount; /* 0..15 */
MUINT8 SensorPixelClockCount; /* 0..15 */
MUINT8 SensorDataLatchCount; /* 0..15 */
MUINT8 SensorHsyncPolarity;
MUINT8 SensorVsyncPolarity;
MUINT8 SensorInterruptDelayLines;
MINT32 SensorResetActiveHigh;
MUINT32 SensorResetDelayCount;
ACDK_SENSOR_INTERFACE_TYPE_ENUM SensroInterfaceType;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM SensorMIPILaneNumber;
MUINT32 CaptureDelayFrame;
MUINT32 PreviewDelayFrame;
MUINT32 VideoDelayFrame;
MUINT32 HighSpeedVideoDelayFrame;
MUINT32 SlimVideoDelayFrame;
MUINT32 YUVAwbDelayFrame;
MUINT32 YUVEffectDelayFrame;
MUINT32 Custom1DelayFrame;
MUINT32 Custom2DelayFrame;
MUINT32 Custom3DelayFrame;
MUINT32 Custom4DelayFrame;
MUINT32 Custom5DelayFrame;
MUINT16 SensorGrabStartX_PRV;
MUINT16 SensorGrabStartY_PRV;
MUINT16 SensorGrabStartX_CAP;
MUINT16 SensorGrabStartY_CAP;
MUINT16 SensorGrabStartX_VD;
MUINT16 SensorGrabStartY_VD;
MUINT16 SensorGrabStartX_VD1;
MUINT16 SensorGrabStartY_VD1;
MUINT16 SensorGrabStartX_VD2;
MUINT16 SensorGrabStartY_VD2;
MUINT16 SensorGrabStartX_CST1;
MUINT16 SensorGrabStartY_CST1;
MUINT16 SensorGrabStartX_CST2;
MUINT16 SensorGrabStartY_CST2;
MUINT16 SensorGrabStartX_CST3;
MUINT16 SensorGrabStartY_CST3;
MUINT16 SensorGrabStartX_CST4;
MUINT16 SensorGrabStartY_CST4;
MUINT16 SensorGrabStartX_CST5;
MUINT16 SensorGrabStartY_CST5;
MUINT16 SensorDrivingCurrent;
MUINT8 SensorMasterClockSwitch;
MUINT8 AEShutDelayFrame; /* The frame of setting shutter default 0 for TG int */
MUINT8 AESensorGainDelayFrame; /* The frame of setting sensor gain */
MUINT8 AEISPGainDelayFrame;
MUINT8 MIPIDataLowPwr2HighSpeedTermDelayCount;
MUINT8 MIPIDataLowPwr2HighSpeedSettleDelayCount;
MUINT8 MIPIDataLowPwr2HSSettleDelayM0;
MUINT8 MIPIDataLowPwr2HSSettleDelayM1;
MUINT8 MIPIDataLowPwr2HSSettleDelayM2;
MUINT8 MIPIDataLowPwr2HSSettleDelayM3;
MUINT8 MIPIDataLowPwr2HSSettleDelayM4;
MUINT8 MIPICLKLowPwr2HighSpeedTermDelayCount;
MUINT8 SensorWidthSampling;
MUINT8 SensorHightSampling;
MUINT8 SensorPacketECCOrder;
SENSOR_MIPI_TYPE_ENUM MIPIsensorType;
MUINT8 SensorCaptureOutputJPEG; /* JPEG file or not? */
MUINT8 SensorModeNum;
MUINT8 IHDR_Support;
MUINT16 IHDR_LE_FirstLine;
SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode;
MUINT8 PDAF_Support;
MUINT8 DPCM_INFO;
MUINT8 IMGSENSOR_DPCM_TYPE_PRE;
MUINT8 IMGSENSOR_DPCM_TYPE_CAP;
MUINT8 IMGSENSOR_DPCM_TYPE_VD;
MUINT8 IMGSENSOR_DPCM_TYPE_VD1;
MUINT8 IMGSENSOR_DPCM_TYPE_VD2;
MUINT8 PerFrameCTL_Support;
SENSOR_SCAM_DATA_CHANNEL_ENUM SCAM_DataNumber;
MUINT8 SCAM_DDR_En;
MUINT8 SCAM_CLK_INV;
MUINT8 SCAM_DEFAULT_DELAY;
MUINT8 SCAM_CRC_En;
MUINT8 SCAM_SOF_src;
MUINT32 SCAM_Timout_Cali;
} ACDK_SENSOR_INFO2_STRUCT, *PACDK_SENSOR_INFO2_STRUCT;
typedef enum {
ACDK_CCT_REG_ISP = 0,
ACDK_CCT_REG_CMOS,
ACDK_CCT_REG_CCD
} ACDK_CCT_REG_TYPE_ENUM;
/* R/W ISP/Sensor Register */
typedef struct {
ACDK_CCT_REG_TYPE_ENUM Type;
MUINT32 RegAddr;
MUINT32 RegData;
} ACDK_CCT_REG_RW_STRUCT, *PACDK_CCT_REG_RW_STRUCT;
typedef struct {
ACDK_CCT_REG_TYPE_ENUM Type; /* ISP, CMOS_SENSOR, CCD_SENSOR */
MUINT32 DeviceId;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM StartPixelBayerPtn;
MUINT16 GrabXOffset;
MUINT16 GrabYOffset;
} ACDK_CCT_SENSOR_INFO_STRUCT, *PACDK_CCT_SENSOR_INFO_STRUCT;
typedef enum {
CMOS_SENSOR = 0,
CCD_SENSOR
} SENSOR_TYPE_ENUM;
typedef struct {
MUINT16 SensorId;
SENSOR_TYPE_ENUM SensorType;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
} ACDK_SENSOR_ENG_INFO_STRUCT;
typedef struct {
MUINT32 RegAddr;
MUINT32 RegData;
} ACDK_SENSOR_REG_INFO_STRUCT;
typedef struct {
MUINT8 debugStruct[32];
MUINT8 debugSubstruct[32];
MUINT32 isGet; /* 1 means get, 0 means set */
MUINT32 value;
} ACDK_SENSOR_DBG_IMGSENSOR_STRUCT;
typedef struct {
MUINT32 GroupIdx;
MUINT32 ItemCount;
MUINT8 *GroupNamePtr;
} ACDK_SENSOR_GROUP_INFO_STRUCT;
typedef struct {
MUINT32 GroupIdx;
MUINT32 ItemIdx;
MUINT8 ItemNamePtr[50]; /* item name */
MUINT32 ItemValue; /* item value */
MINT32 IsTrueFalse; /* is this item for enable/disable functions */
MINT32 IsReadOnly; /* is this item read only */
MINT32 IsNeedRestart; /* after set this item need restart */
MUINT32 Min; /* min value of item value */
MUINT32 Max; /* max value of item value */
} ACDK_SENSOR_ITEM_INFO_STRUCT;
typedef enum {
ACDK_SENSOR_IMAGE_NORMAL = 0,
ACDK_SENSOR_IMAGE_H_MIRROR,
ACDK_SENSOR_IMAGE_V_MIRROR,
ACDK_SENSOR_IMAGE_HV_MIRROR
} ACDK_SENSOR_IMAGE_MIRROR_ENUM;
typedef enum {
ACDK_SENSOR_OPERATION_MODE_CAMERA_PREVIEW = 0,
ACDK_SENSOR_OPERATION_MODE_VIDEO,
ACDK_SENSOR_OPERATION_MODE_STILL_CAPTURE,
ACDK_SENSOR_OPERATION_MODE_HIGHSP_VIDEO1,
ACDK_SENSOR_OPERATION_MODE_HIGHSP_VIDEO2,
ACDK_SENSOR_OPERATION_MODE_WEB_CAPTURE,
ACDK_SENSOR_OPERATION_MODE_CUSTOM1,
ACDK_SENSOR_OPERATION_MODE_CUSTOM2,
ACDK_SENSOR_OPERATION_MODE_CUSTOM3,
ACDK_SENSOR_OPERATION_MODE_CUSTOM4,
ACDK_SENSOR_OPERATION_MODE_CUSTOM5,
ACDK_SENSOR_OPERATION_MODE_MAX
} ACDK_SENSOR_OPERATION_MODE_ENUM;
typedef struct {
MUINT16 GrabStartX; /* The first grabed column data of the image sensor in pixel clock count */
MUINT16 GrabStartY; /* The first grabed row data of the image sensor in pixel clock count */
MUINT16 ExposureWindowWidth; /* Exposure window width of image sensor */
MUINT16 ExposureWindowHeight; /* Exposure window height of image sensor */
MUINT16 ImageTargetWidth; /* image captured width */
MUINT16 ImageTargetHeight; /* image captuerd height */
MUINT16 ExposurePixel; /* exposure window width of image sensor + dummy pixel */
MUINT16 CurrentExposurePixel; /* exposure window width of image sensor + dummy pixel */
MUINT16 ExposureLine; /* exposure window width of image sensor + dummy line */
MUINT16 ZoomFactor; /* digital zoom factor */
} ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT;
typedef struct {
ACDK_SENSOR_IMAGE_MIRROR_ENUM SensorImageMirror;
MINT32 EnableShutterTansfer; /* capture only */
MINT32 EnableFlashlightTansfer; /* flash light capture only */
ACDK_SENSOR_OPERATION_MODE_ENUM SensorOperationMode;
MUINT16 ImageTargetWidth; /* image captured width */
MUINT16 ImageTargetHeight; /* image captuerd height */
MUINT16 CaptureShutter; /* capture only */
MUINT16 FlashlightDuty; /* flash light capture only */
MUINT16 FlashlightOffset; /* flash light capture only */
MUINT16 FlashlightShutFactor; /* flash light capture only */
MUINT16 FlashlightMinShutter;
ACDK_CAMERA_OPERATION_MODE_ENUM MetaMode; /* capture only */
MUINT32 DefaultPclk; /* Sensor pixel clock(Ex:24000000) */
MUINT32 Pixels; /* Sensor active pixel number */
MUINT32 Lines; /* Sensor active line number */
MUINT32 Shutter; /* Sensor current shutter */
MUINT32 FrameLines; /* valid+dummy lines for minimum shutter */
} ACDK_SENSOR_CONFIG_STRUCT;
typedef enum {
MCLK_48MHZ_GROUP = 0x1,
MCLK_52MHZ_GROUP = 0x2,
} ACKD_SENSOR_MCLK_ENUM;
typedef struct {
MUINT8 on;
ACKD_SENSOR_MCLK_ENUM freq;
} ACDK_SENSOR_MCLK_STRUCT;
typedef struct {
MUINT16 full_w;
MUINT16 full_h;
MUINT16 x0_offset;
MUINT16 y0_offset;
MUINT16 w0_size;
MUINT16 h0_size;
MUINT16 scale_w;
MUINT16 scale_h;
MUINT16 x1_offset;
MUINT16 y1_offset;
MUINT16 w1_size;
MUINT16 h1_size;
MUINT16 x2_tg_offset;
MUINT16 y2_tg_offset;
MUINT16 w2_tg_size;
MUINT16 h2_tg_size;
} SENSOR_WINSIZE_INFO_STRUCT;
typedef struct {
MUINT32 SensorId;
SENSOR_WINSIZE_INFO_STRUCT SensorWinSize;
} SENSOR_WINSIZE_STRUCT, *pSENSOR_WINSIZE_STRUCT;
typedef struct {
MUINT16 VC_Num;
MUINT16 VC_PixelNum;
MUINT16 ModeSelect; /* 0: auto mode, 1:direct mode */
MUINT16 EXPO_Ratio; /* 1/1, 1/2, 1/4, 1/8 */
MUINT16 ODValue; /* OD Vaule */
MUINT16 RG_STATSMODE; /* STATS divistion mdoe 0: 16x16, 1:8x8, 2:4x4, 3:1x1*/
MUINT16 VC0_ID;
MUINT16 VC0_DataType;
MUINT16 VC0_SIZEH;
MUINT16 VC0_SIZEV;
MUINT16 VC1_ID;
MUINT16 VC1_DataType;
MUINT16 VC1_SIZEH;
MUINT16 VC1_SIZEV;
MUINT16 VC2_ID;
MUINT16 VC2_DataType;
MUINT16 VC2_SIZEH;
MUINT16 VC2_SIZEV;
MUINT16 VC3_ID;
MUINT16 VC3_DataType;
MUINT16 VC3_SIZEH;
MUINT16 VC3_SIZEV;
} SENSOR_VC_INFO_STRUCT, *pSENSOR_VC_INFO_STRUCT;
typedef struct {
MUINT32 ABS_GAIN_GR;
MUINT32 ABS_GAIN_R;
MUINT32 ABS_GAIN_B;
MUINT32 ABS_GAIN_GB;
} SET_SENSOR_AWB_GAIN, *PSET_SENSOR_AWB_GAIN;
typedef struct {
MUINT32 SENSOR_MODE;
MUINT32 ISO;
} SET_SENSOR_ISO, *PSET_SENSOR_ISO;
typedef struct {
MUINT32 i4OffsetX; /* start offset of first PD block */
MUINT32 i4OffsetY;
MUINT32 i4PitchX; /* PD block pitch */
MUINT32 i4PitchY;
MUINT32 i4PairNum; /* PD pair num in one block */
MUINT32 i4SubBlkW; /* sub block width (one PD pair in one sub block) */
MUINT32 i4SubBlkH; /* sub block height */
MUINT32 i4PosL[16][2]; /* left pd pixel position in one block*/
MUINT32 i4PosR[16][2]; /* right pd pixel position in one block*/
} SET_PD_BLOCK_INFO_T, *PSET_PD_BLOCK_INFO_T;
typedef enum {
SENSORIF_PARALLEL = 0,
SENSORIF_SERIAL,
SENSORIF_MIPI_DHY0,
SENSORIF_MIPI_DHY1,
SENSORIF_MIPI_DHY2
} SENSOR_PHY_TYPE_ENUM;
typedef enum {
DATA_8BIT_FMT = 0x0,
DATA_10BIT_FMT = 0x1,
DATA_12BIT_FMT = 0x2,
DATA_YUV422_FMT = 0x3,
} INDATA_FORMAT_ENUM;
typedef struct {
MINT32 mSensorDev;
MUINT8 GpioEnable;
SENSOR_PHY_TYPE_ENUM SensroInterfaceType;
INDATA_FORMAT_ENUM SensorIndataformat;
} IMGSENSOR_GPIO_STRUCT;
/*******************************************************************************
*
********************************************************************************/
#define MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE_KERNEL 4096
#define NVRAM_CAMERA_SENSOR_FILE_VERSION 1
/* Sensor table */
#define MAXIMUM_SENSOR_CCT_REG_NUMBER 100
#define MAXIMUM_SENSOR_ENG_REG_NUMBER 100
typedef struct {
MUINT32 Addr;
MUINT32 Para;
} SENSOR_REG_STRUCT;
typedef struct {
MUINT32 Version;
MUINT32 SensorId; /* ID of sensor module */
SENSOR_REG_STRUCT SensorEngReg[MAXIMUM_SENSOR_ENG_REG_NUMBER];
SENSOR_REG_STRUCT SensorCCTReg[MAXIMUM_SENSOR_CCT_REG_NUMBER];
MUINT8 CameraData[MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE_KERNEL / 2 - 8 - sizeof(SENSOR_REG_STRUCT) * (MAXIMUM_SENSOR_ENG_REG_NUMBER + MAXIMUM_SENSOR_CCT_REG_NUMBER)];
} NVRAM_SENSOR_DATA_STRUCT, *PNVRAM_SENSOR_DATA_STRUCT;
#define MAX_SENSOR_CAL_SIZE_KERNEL (1024) /* Byte */
#define MAX_SHADING_DATA_TBL ((MAX_SENSOR_CAL_SIZE_KERNEL-8)/4)
typedef struct {
MUINT32 DataFormat;
MUINT32 DataSize;
MUINT32 ShadingData[MAX_SHADING_DATA_TBL];
} SET_SENSOR_CALIBRATION_DATA_STRUCT, *PSET_SENSOR_CALIBRATION_DATA_STRUCT;
typedef struct {
MSDK_SCENARIO_ID_ENUM ScenarioId[2];
ACDK_SENSOR_INFO_STRUCT * pInfo[2];
ACDK_SENSOR_CONFIG_STRUCT * pConfig[2];
} ACDK_SENSOR_GETINFO_STRUCT, *PACDK_SENSOR_GETINFO_STRUCT;
typedef struct {
MUINT32 SensorId;
ACDK_SENSOR_INFO2_STRUCT *pInfo;
ACDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution;
} IMAGESENSOR_GETINFO_STRUCT, *PIMAGESENSOR_GETINFO_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
ACDK_SENSOR_FEATURE_ENUM FeatureId;
MUINT8 *pFeaturePara;
MUINT32 *pFeatureParaLen;
} ACDK_SENSOR_FEATURECONTROL_STRUCT, *PACDK_SENSOR_FEATURECONTROL_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
MSDK_SCENARIO_ID_ENUM ScenarioId;
ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow;
ACDK_SENSOR_CONFIG_STRUCT *pSensorConfigData;
} ACDK_SENSOR_CONTROL_STRUCT;
typedef struct {
ACDK_SENSOR_RESOLUTION_INFO_STRUCT *pResolution[2];
} ACDK_SENSOR_PRESOLUTION_STRUCT;
typedef struct regval_list {
MUINT32 reg_addr;
MUINT32 value;
MUINT32 bytes;
} REGVAL_LIST_STRUCT;
#define KDIMGSENSOR_REGVAL_LIST_MAX_NUM 256
typedef struct format_struct {
MUINT8 *desc;
MUINT32 pixelformat;
/* REGVAL_LIST_STRUCT regs[KDIMGSENSOR_REGVAL_LIST_MAX_NUM]; */
int (*pfInitCfg)(void);
} IMGSENSOR_FORMAT_STRUCT;
typedef struct {
IMGSENSOR_FORMAT_STRUCT format;
MUINT32 u4InClk; /* Common part //hard coded */
MUINT32 u4OutClk; /* Common part // */
MUINT32 u4TotalPixelPerLine; /* By modes */
MUINT32 u4TotalLinesPerFrame; /* By modes and frame rate setting */
MUINT32 u4ActualWidth; /* By modes */
MUINT32 u4ActualHeight; /* By modes */
MUINT32 u4Width; /* By modes */
MUINT32 u4Height; /* By modes */
MUINT32 u4FrameTimeInus; /* By modes and frame rate setting */
MUINT32 u4MinFrameTimeInus; /* By modes */
MUINT32 u4LineTimeInus; /* By modes */
MUINT32 u4FinePixCntPerus; /* Common part */
MUINT32 u4MinFineTimeInus; /* By modes */
MUINT32 u4MaxFineTimeInus; /* By modes */
MUINT32 u4XStart;
MUINT32 u4XEnd;
MUINT32 u4YStart;
MUINT32 u4YEnd;
} stImgSensorFormat;
#ifdef CONFIG_COMPAT
/* Redifne structures for compat_ioctl */
typedef struct {
MSDK_SCENARIO_ID_ENUM ScenarioId[2];
compat_uptr_t pInfo[2];
compat_uptr_t pConfig[2];
} COMPAT_ACDK_SENSOR_GETINFO_STRUCT;
typedef struct {
MUINT32 SensorId;
compat_uptr_t pInfo;
compat_uptr_t pSensorResolution;
} COMPAT_IMAGESENSOR_GETINFO_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
ACDK_SENSOR_FEATURE_ENUM FeatureId;
compat_uptr_t pFeaturePara;
compat_uptr_t pFeatureParaLen;
} COMPAT_ACDK_SENSOR_FEATURECONTROL_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
MSDK_SCENARIO_ID_ENUM ScenarioId;
compat_uptr_t pImageWindow;
compat_uptr_t pSensorConfigData;
} COMPAT_ACDK_SENSOR_CONTROL_STRUCT;
typedef struct {
compat_uptr_t pResolution[2];
} COMPAT_ACDK_SENSOR_PRESOLUTION_STRUCT;
#endif
/*******************************************************************************
*
********************************************************************************/
/* */
/* adoption to winmo driver files */
/* */
/* typedef */
/* #define kal_uint8 u8 */
/* #define MSDK_SCENARIO_ID_ENUM ACDK_SCENARIO_ID_ENUM */
#define MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT
#define MSDK_SENSOR_CONFIG_STRUCT ACDK_SENSOR_CONFIG_STRUCT
#define MSDK_SENSOR_FEATURE_ENUM ACDK_SENSOR_FEATURE_ENUM
#define MSDK_SENSOR_REG_INFO_STRUCT ACDK_SENSOR_REG_INFO_STRUCT
#define MSDK_SENSOR_GROUP_INFO_STRUCT ACDK_SENSOR_GROUP_INFO_STRUCT
#define MSDK_SENSOR_ITEM_INFO_STRUCT ACDK_SENSOR_ITEM_INFO_STRUCT
#define MSDK_SENSOR_ENG_INFO_STRUCT ACDK_SENSOR_ENG_INFO_STRUCT
#define MSDK_SENSOR_INFO_STRUCT ACDK_SENSOR_INFO_STRUCT
#define MSDK_SENSOR_RESOLUTION_INFO_STRUCT ACDK_SENSOR_RESOLUTION_INFO_STRUCT
#define MSDK_SENSOR_DBG_IMGSENSOR_INFO_STRUCT ACDK_SENSOR_DBG_IMGSENSOR_STRUCT
/* MSDK_SCENARIO_ID_ENUM => ACDK_SCENARIO_ID_ENUM */
/* #define MSDK_SCENARIO_ID_CAMERA_PREVIEW ACDK_SCENARIO_ID_CAMERA_PREVIEW */
/* #define MSDK_SCENARIO_ID_VIDEO_PREVIEW ACDK_SCENARIO_ID_VIDEO_PREVIEW */
/* #define MSDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG ACDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG */
#define MSDK_SENSOR_OPERATION_MODE_VIDEO ACDK_SENSOR_OPERATION_MODE_VIDEO
/* #define MSDK_SCENARIO_ID_CAMERA_ZSD ACDK_SCENARIO_ID_CAMERA_ZSD */
/* #define MSDK_SCENARIO_ID_CAMERA_3D_PREVIEW ACDK_SCENARIO_ID_CAMERA_3D_PREVIEW */
/* #define MSDK_SCENARIO_ID_CAMERA_3D_CAPTURE ACDK_SCENARIO_ID_CAMERA_3D_CAPTURE */
/* #define MSDK_SCENARIO_ID_CAMERA_3D_VIDEO ACDK_SCENARIO_ID_CAMERA_3D_VIDEO */
/*******************************************************************************
*
********************************************************************************/
/*******************************************************************************
*
********************************************************************************/
/* for new simplifed sensor driver */
typedef struct {
MUINT32(*SensorOpen)(void);
MUINT32(*SensorGetInfo)(MUINT32 *pScenarioId[2], MSDK_SENSOR_INFO_STRUCT * pSensorInfo[2], MSDK_SENSOR_CONFIG_STRUCT * pSensorConfigData[2]);
MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT * pSensorResolution[2]);
MUINT32(*SensorFeatureControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
MUINT32(*SensorControl)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorClose)(void);
} MULTI_SENSOR_FUNCTION_STRUCT, *PMULTI_SENSOR_FUNCTION_STRUCT;
typedef struct {
MUINT32(*SensorOpen)(void);
MUINT32(*SensorGetInfo)(MUINT32 *pScenarioId[2], MSDK_SENSOR_INFO_STRUCT * pSensorInfo[2], MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData[2]);
MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT * pSensorResolution[2]);
MUINT32(*SensorFeatureControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
MUINT32(*SensorControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorClose)(void);
} MULTI_SENSOR_FUNCTION_STRUCT2, *PMULTI_SENSOR_FUNCTION_STRUCT2;
typedef struct {
MUINT32(*SensorOpen)(void);
MUINT32(*SensorGetInfo)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_INFO_STRUCT *pSensorInfo,
MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution);
MUINT32(*SensorFeatureControl)(MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
MUINT32(*SensorControl)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorClose)(void);
#if 1 /* isp suspend resume patch */
MSDK_SCENARIO_ID_ENUM ScenarioId;
MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT imageWindow;
MSDK_SENSOR_CONFIG_STRUCT sensorConfigData;
#endif
} SENSOR_FUNCTION_STRUCT, *PSENSOR_FUNCTION_STRUCT;
typedef struct {
MUINT32 SensorId;
MUINT8 drvname[32];
MUINT32(*SensorInit)(PSENSOR_FUNCTION_STRUCT *pfFunc);
} ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT, *PACDK_KD_SENSOR_INIT_FUNCTION_STRUCT;
#define KDIMGSENSOR_DUAL_SHIFT 16
#define KDIMGSENSOR_DUAL_MASK_MSB 0xFFFF0000
#define KDIMGSENSOR_DUAL_MASK_LSB 0x0000FFFF
#define KDIMGSENSOR_NOSENSOR "non_sensor"
#define KDIMGSENSOR_MAX_INVOKE_DRIVERS (2)
#define KDIMGSENSOR_INVOKE_DRIVER_0 (0)
#define KDIMGSENSOR_INVOKE_DRIVER_1 (1)
/* For sensor synchronize the exposure time / sensor gain and isp gain. */
typedef struct {
MUINT16 u2ISPNewRGain;
MUINT16 u2ISPNewGrGain;
MUINT16 u2ISPNewGbGain;
MUINT16 u2ISPNewBGain;
MUINT16 u2SensorNewExpTime;
MUINT16 u2SensorNewGain;
MUINT8 uSensorExpDelayFrame;
MUINT8 uSensorGainDelayFrame;
MUINT8 uISPGainDelayFrame;
MUINT8 uDummy;
} ACDK_KD_SENSOR_SYNC_STRUCT, *PACDK_KD_SENSOR_SYNC_STRUCT;
typedef struct {
MUINT16 AeRefLV05Shutter; /* Sensor AE Shutter under Lv05 */
MUINT16 AeRefLV13Shutter; /* Sensor AE Shutter under Lv13 */
MUINT16 AeRefLV05Gain; /* Sensor AE Gain under Lv05 */
MUINT16 AeRefLV13Gain; /* Sensor AE Gain under Lv13 */
} SENSOR_AE_REF_STRUCT, *PSENSOR_AE_REF_STRUCT;
typedef struct {
MUINT16 AwbRefD65Rgain; /* Sensor AWB R Gain under D65 */
MUINT16 AwbRefD65Bgain; /* Sensor AWB B Gain under D65 */
MUINT16 AwbRefCWFRgain; /* Sensor AWB R Gain under CWF */
MUINT16 AwbRefCWFBgain; /* Sensor AWB B Gain under CWF */
} SENSOR_AWB_GAIN_REF_STRUCT, *PSENSOR_AWB_GAIN_REF_STRUCT;
typedef struct {
SENSOR_AE_REF_STRUCT SensorAERef; /* AE Ref information for ASD usage */
SENSOR_AWB_GAIN_REF_STRUCT SensorAwbGainRef; /* AWB Gain Ref information for ASD usage */
MUINT32 SensorLV05LV13EVRef; /* EV calculate for ASD usage */
} SENSOR_AE_AWB_REF_STRUCT, *PSENSOR_AE_AWB_REF_STRUCT;
typedef struct {
MUINT16 AeCurShutter; /* Current Sensor AE Shutter */
MUINT16 AeCurGain; /* Current Sensor AE Gain */
} SENSOR_AE_CUR_STRUCT, *PSENSOR_AE_CUR_STRUCT;
typedef struct {
MUINT16 AwbCurRgain; /* Current Sensor AWB R Gain */
MUINT16 AwbCurBgain; /* Current Sensor AWB R Gain */
} SENSOR_AWB_GAIN_CUR_STRUCT, *PSENSOR_AWB_GAIN_CUR_STRUCT;
typedef struct {
SENSOR_AE_CUR_STRUCT SensorAECur; /* AE Current information for ASD usage */
SENSOR_AWB_GAIN_CUR_STRUCT SensorAwbGainCur; /* AWB Gain Current information for ASD usage */
} SENSOR_AE_AWB_CUR_STRUCT, *PSENSOR_AE_AWB_CUR_STRUCT;
typedef struct {
MUINT32 FNumber;
MUINT32 AEISOSpeed;
MUINT32 AWBMode;
MUINT32 CapExposureTime;
MUINT32 FlashLightTimeus;
MUINT32 RealISOValue;
} SENSOR_EXIF_INFO_STRUCT, *PSENSOR_EXIF_INFO_STRUCT;
typedef struct {
MUINT32 InitDelay;
MUINT32 EffectDelay;
MUINT32 AwbDelay;
MUINT32 AFSwitchDelayFrame;
MUINT32 EvDelay;
MUINT32 SatDelay;
MUINT32 BrightDelay;
MUINT32 ContrastDelay;
} SENSOR_DELAY_INFO_STRUCT, *PSENSOR_DELAY_INFO_STRUCT;
typedef struct {
MUINT32 u4Fno;
MUINT32 Exposuretime;
MUINT32 Gain;
MUINT32 GAIN_BASE;
} SENSOR_FLASHLIGHT_AE_INFO_STRUCT, *PSENSOR_FLASHLIGHT_AE_INFO_STRUCT;
/* multisensor driver */
typedef struct {
MUINT32 drvIndex[KDIMGSENSOR_MAX_INVOKE_DRIVERS]; /* max 2 driver sumultaneously */
} SENSOR_DRIVER_INDEX_STRUCT, *PSENSOR_DRIVER_INDEX_STRUCT;
/* hardcode by GPIO module, should be sync with.(cust_gpio_usage.h) */
#define GPIO_CAMERA_INVALID 0xFF
/* */
typedef enum {
IMGSENSOR_SOCKET_POS_NONE = 0xFFFFFFFF,
IMGSENSOR_SOCKET_POS_RIGHT = 0x1,
IMGSENSOR_SOCKET_POS_LEFT = 0x2,
} IMGSENSOR_SOCKET_POSITION_ENUM;
/* */
typedef enum {
IMGSENSOR_SET_I2C_ID_STATE = 0x00,
IMGSENSOR_SET_I2C_ID_FORCE
} IMGSENSOR_SET_I2C_ID_ENUM;
typedef enum {
SENSOR_3A_AE_LOCK = 0,
SENSOR_3A_AE_UNLOCK,
SENSOR_3A_AWB_LOCK,
SENSOR_3A_AWB_UNLOCK,
SENSOR_3A_AE_ON,
SENSOR_3A_AE_OFF,
SENSOR_3A_AWB_ON,
SENSOR_3A_AWB_OFF,
SENSOR_3A_AF_INFINITY,
/* SENSOR_3A_AF_LOCK, */
/* SENSOR_3A_AF_UNLOCK, */
} ACDK_SENSOR_3A_LOCK_ENUM;
typedef struct {
MUINT32 tgtWidth;
MUINT32 tgtHeight;
MUINT32 quality;
} ACDK_SENSOR_JPEG_OUTPUT_PARA;
/* for JPEG Sensor Info */
typedef struct {
MUINT32 u4FileSize; /* For input sensor width */
MUINT32 u4SrcW; /* For input sensor width */
MUINT32 u4SrcH; /* For input sensor height */
} ACDK_SENSOR_JPEG_INFO;
#endif /* _KD_IMGSENSOR_DATA_H */
|