import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / imgsensor / src / mt8127 / s5k5e2ya_mipi_raw / s5k5e2yamipiraw_Sensor.h
1 /*******************************************************************************************/
2
3
4 /*******************************************************************************************/
5
6 /* SENSOR FULL SIZE */
7 #ifndef __SENSOR_H
8 #define __SENSOR_H
9
10 //#define CAPTURE_USE_VIDEO_SETTING
11 #define FULL_SIZE_30_FPS
12 //#define USE_MIPI_2_LANES //undefine this macro will use mipi 4 lanes
13
14 typedef enum group_enum {
15 PRE_GAIN=0,
16 CMMCLK_CURRENT,
17 FRAME_RATE_LIMITATION,
18 REGISTER_EDITOR,
19 GROUP_TOTAL_NUMS
20 } FACTORY_GROUP_ENUM;
21
22
23 #define ENGINEER_START_ADDR 10
24 #define FACTORY_START_ADDR 0
25
26 typedef enum engineer_index
27 {
28 CMMCLK_CURRENT_INDEX=ENGINEER_START_ADDR,
29 ENGINEER_END
30 } FACTORY_ENGINEER_INDEX;
31
32 typedef enum register_index
33 {
34 SENSOR_BASEGAIN=FACTORY_START_ADDR,
35 PRE_GAIN_R_INDEX,
36 PRE_GAIN_Gr_INDEX,
37 PRE_GAIN_Gb_INDEX,
38 PRE_GAIN_B_INDEX,
39 FACTORY_END_ADDR
40 } FACTORY_REGISTER_INDEX;
41
42 typedef struct
43 {
44 SENSOR_REG_STRUCT Reg[ENGINEER_END];
45 SENSOR_REG_STRUCT CCT[FACTORY_END_ADDR];
46 } SENSOR_DATA_STRUCT, *PSENSOR_DATA_STRUCT;
47
48 typedef enum {
49 SENSOR_MODE_INIT = 0,
50 SENSOR_MODE_PREVIEW,
51 SENSOR_MODE_VIDEO,
52 SENSOR_MODE_VIDEO_NIGHT,
53 SENSOR_MODE_SMALL_SIZE_END=SENSOR_MODE_VIDEO_NIGHT,
54 SENSOR_MODE_ZSD_PREVIEW,
55 SENSOR_MODE_CAPTURE,
56 SENSOR_MODE_FULL_SIZE_END=SENSOR_MODE_CAPTURE
57 } S5K5E2YA_SENSOR_MODE;
58
59 typedef struct
60 {
61 kal_uint32 DummyPixels;
62 kal_uint32 DummyLines;
63
64 kal_uint32 pvShutter;
65 kal_uint32 pvGain;
66
67 kal_uint32 pvPclk; // x10 480 for 48MHZ
68 kal_uint32 capPclk; // x10
69 kal_uint32 m_vidPclk;
70
71 kal_uint32 shutter;
72 kal_uint32 maxExposureLines;
73 kal_uint16 sensorGain;
74 kal_uint16 sensorBaseGain;
75 kal_int16 imgMirror;
76
77 S5K5E2YA_SENSOR_MODE sensorMode;
78
79 kal_bool S5K5E2YAAutoFlickerMode;
80 kal_bool S5K5E2YAVideoMode;
81 kal_uint32 FixedFrameLength;
82
83 }S5K5E2YA_PARA_STRUCT,*PS5K5E2YA_PARA_STRUCT;
84
85 //*************** +Sensor Framelength & Linelength ***************//
86 //Preview
87 #define S5K5E2YA_PV_PERIOD_PIXEL_NUMS (2950)
88 #define S5K5E2YA_PV_PERIOD_LINE_NUMS (2000)
89
90 //Video
91 #define S5K5E2YA_VIDEO_PERIOD_PIXEL_NUMS (2950)
92 #define S5K5E2YA_VIDEO_PERIOD_LINE_NUMS (2000)
93
94 //Capture
95 #define S5K5E2YA_FULL_PERIOD_PIXEL_NUMS (2950)
96 #define S5K5E2YA_FULL_PERIOD_LINE_NUMS (2025)
97
98 //ZSD
99 #define S5K5E2YA_ZSD_PERIOD_PIXEL_NUMS S5K5E2YA_FULL_PERIOD_PIXEL_NUMS
100 #define S5K5E2YA_ZSD_PERIOD_LINE_NUMS S5K5E2YA_FULL_PERIOD_LINE_NUMS
101 //*************** -Sensor Framelength & Linelength ***************//
102
103 //*************** +Sensor Output Size ***************//
104 #define S5K5E2YA_IMAGE_SENSOR_PV_WIDTH (1280)
105 #define S5K5E2YA_IMAGE_SENSOR_PV_HEIGHT (960)
106
107 #define S5K5E2YA_IMAGE_SENSOR_VIDEO_WIDTH (2560)
108 #define S5K5E2YA_IMAGE_SENSOR_VIDEO_HEIGHT (1440)
109
110
111 #define S5K5E2YA_IMAGE_SENSOR_FULL_WIDTH (2560)
112 #define S5K5E2YA_IMAGE_SENSOR_FULL_HEIGHT (1920)
113
114
115 #define S5K5E2YA_IMAGE_SENSOR_ZSD_WIDTH S5K5E2YA_IMAGE_SENSOR_FULL_WIDTH
116 #define S5K5E2YA_IMAGE_SENSOR_ZSD_HEIGHT S5K5E2YA_IMAGE_SENSOR_FULL_HEIGHT
117 //*************** -Sensor Output Size ***************//
118
119
120 /* SENSOR START/EDE POSITION */
121 #define S5K5E2YA_FULL_X_START (0)
122 #define S5K5E2YA_FULL_Y_START (0)
123
124
125 #define S5K5E2YA_PV_X_START (0)
126 #define S5K5E2YA_PV_Y_START (0)
127
128
129 #define S5K5E2YA_VIDEO_X_START (0)
130 #define S5K5E2YA_VIDEO_Y_START (0)
131
132
133
134 #define S5K5E2YA_MAX_ANALOG_GAIN (16)
135 #define S5K5E2YA_MIN_ANALOG_GAIN (1)
136
137 #define S5K5E2YA_MIN_LINE_LENGTH (0x0E68) //2724
138 #define S5K5E2YA_MIN_FRAME_LENGTH (0x0A0F) //532
139
140 #define S5K5E2YA_MAX_LINE_LENGTH 0xCCCC
141 #define S5K5E2YA_MAX_FRAME_LENGTH 0xFFFF
142
143 /* DUMMY NEEDS TO BE INSERTED */
144 /* SETUP TIME NEED TO BE INSERTED */
145 #define S5K5E2YA_IMAGE_SENSOR_PV_INSERTED_PIXELS 2 // Sync, Nosync=2
146 #define S5K5E2YA_IMAGE_SENSOR_PV_INSERTED_LINES 2
147
148 #define S5K5E2YA_IMAGE_SENSOR_FULL_INSERTED_PIXELS 4
149 #define S5K5E2YA_IMAGE_SENSOR_FULL_INSERTED_LINES 4
150
151
152 #define S5K5E2YAMIPI_WRITE_ID (0x20)
153 #define S5K5E2YAMIPI_READ_ID (0x21)
154
155 #define SENSOR_PCLK_PREVIEW (179200000)
156 #define SENSOR_PCLK_VIDEO SENSOR_PCLK_PREVIEW
157 #define SENSOR_PCLK_CAPTURE SENSOR_PCLK_PREVIEW
158 #define SENSOR_PCLK_ZSD SENSOR_PCLK_CAPTURE
159
160
161 #define S5K5E2YAMIPI_SENSOR_ID S5K5E2YA_SENSOR_ID
162
163
164 struct S5K5E2YA_MIPI_otp_struct
165 {
166 kal_uint16 customer_id;
167 kal_uint16 module_integrator_id;
168 kal_uint16 lens_id;
169 kal_uint16 rg_ratio;
170 kal_uint16 bg_ratio;
171 kal_uint16 user_data[5];
172 kal_uint16 R_to_G;
173 kal_uint16 B_to_G;
174 kal_uint16 G_to_G;
175 kal_uint16 R_Gain;
176 kal_uint16 G_Gain;
177 kal_uint16 B_Gain;
178 };
179
180
181
182 //export functions
183 UINT32 S5K5E2YAMIPIOpen(void);
184 UINT32 S5K5E2YAMIPIGetResolution(MSDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution);
185 UINT32 S5K5E2YAMIPIGetInfo(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_INFO_STRUCT *pSensorInfo, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
186 UINT32 S5K5E2YAMIPIControl(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
187 UINT32 S5K5E2YAMIPIFeatureControl(MSDK_SENSOR_FEATURE_ENUM FeatureId, UINT8 *pFeaturePara,UINT32 *pFeatureParaLen);
188 UINT32 S5K5E2YAMIPIClose(void);
189
190
191 #endif /* __SENSOR_H */
192