Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | #include <linux/videodev2.h> |
2 | #include <linux/i2c.h> | |
3 | #include <linux/platform_device.h> | |
4 | #include <linux/delay.h> | |
5 | #include <linux/cdev.h> | |
6 | #include <linux/uaccess.h> | |
7 | #include <linux/fs.h> | |
8 | #include <asm/atomic.h> | |
9 | #include <linux/xlog.h> | |
10 | ||
11 | #include "kd_camera_hw.h" | |
12 | ||
13 | #include "kd_imgsensor.h" | |
14 | #include "kd_imgsensor_define.h" | |
15 | #include "kd_camera_feature.h" | |
16 | ||
17 | /****************************************************************************** | |
18 | * Debug configuration | |
19 | ******************************************************************************/ | |
20 | #define PFX "[kd_camera_hw]" | |
21 | #define PK_DBG_NONE(fmt, arg...) do {} while (0) | |
22 | #define PK_DBG_FUNC(fmt, arg...) xlog_printk(ANDROID_LOG_INFO, PFX , fmt, ##arg) | |
23 | ||
24 | #define DEBUG_CAMERA_HW_K | |
25 | #ifdef DEBUG_CAMERA_HW_K | |
26 | #define PK_DBG PK_DBG_FUNC | |
27 | #define PK_ERR(fmt, arg...) xlog_printk(ANDROID_LOG_ERR, PFX , fmt, ##arg) | |
28 | #define PK_XLOG_INFO(fmt, args...) \ | |
29 | do { \ | |
30 | xlog_printk(ANDROID_LOG_INFO, PFX , fmt, ##arg); \ | |
31 | } while(0) | |
32 | #else | |
33 | #define PK_DBG(a,...) | |
34 | #define PK_ERR(a,...) | |
35 | #define PK_XLOG_INFO(fmt, args...) | |
36 | #endif | |
37 | ||
38 | ||
39 | int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name) | |
40 | { | |
41 | #if !defined (MTK_ALPS_BOX_SUPPORT) | |
42 | ||
43 | u32 pinSetIdx = 0;//default main sensor | |
44 | u32 pinSetIdxTmp = 0; | |
45 | ||
46 | #define IDX_PS_CMRST 0 | |
47 | #define IDX_PS_CMPDN 4 | |
48 | ||
49 | #define IDX_PS_MODE 1 | |
50 | #define IDX_PS_ON 2 | |
51 | #define IDX_PS_OFF 3 | |
52 | ||
6fa3eb70 S |
53 | |
54 | u32 pinSet[2][8] = | |
55 | { | |
56 | //for main sensor | |
57 | { | |
58 | GPIO_CAMERA_CMRST_PIN, | |
59 | GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */ | |
60 | GPIO_OUT_ONE, /* ON state */ | |
61 | GPIO_OUT_ZERO, /* OFF state */ | |
62 | GPIO_CAMERA_CMPDN_PIN, | |
63 | GPIO_CAMERA_CMPDN_PIN_M_GPIO, | |
64 | GPIO_OUT_ONE, | |
65 | GPIO_OUT_ZERO, | |
66 | }, | |
67 | //for sub sensor | |
68 | { | |
69 | GPIO_CAMERA_CMRST_PIN, | |
70 | GPIO_CAMERA_CMRST_PIN_M_GPIO, | |
71 | GPIO_OUT_ONE, | |
72 | GPIO_OUT_ZERO, | |
73 | GPIO_CAMERA_CMPDN1_PIN, | |
74 | GPIO_CAMERA_CMPDN1_PIN_M_GPIO, | |
75 | GPIO_OUT_ONE, | |
76 | GPIO_OUT_ZERO, | |
77 | }, | |
78 | }; | |
79 | ||
80 | if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx) | |
81 | { | |
82 | pinSetIdx = 0; | |
83 | } | |
84 | else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) | |
85 | { | |
86 | pinSetIdx = 1; | |
87 | } | |
88 | ||
89 | ||
90 | //power ON | |
91 | if (On) | |
92 | { | |
93 | ||
94 | PK_DBG("kdCISModulePowerOn -on:currSensorName=%s;\n",currSensorName); | |
95 | PK_DBG("kdCISModulePowerOn -on:pinSetIdx=%d\n",pinSetIdx); | |
96 | ||
97 | if ((pinSetIdx == 1) && currSensorName && (0 == strcmp(SENSOR_DRVNAME_HI708_YUV,currSensorName))) | |
98 | { | |
99 | PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---GC2145_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); | |
100 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) //IO | |
101 | { | |
102 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
103 | //return -EIO; | |
104 | goto _kdCISModulePowerOn_exit_; | |
105 | } | |
106 | ||
107 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) //AVDD | |
108 | { | |
109 | PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); | |
110 | //return -EIO; | |
111 | goto _kdCISModulePowerOn_exit_; | |
112 | } | |
113 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) //DVDD no use | |
114 | { | |
115 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
116 | //return -EIO; | |
117 | goto _kdCISModulePowerOn_exit_; | |
118 | } | |
119 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])) | |
120 | { | |
121 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
122 | } | |
123 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
124 | { | |
125 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
126 | } | |
127 | ||
128 | //PDN/STBY pin | |
129 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) | |
130 | { | |
131 | ||
132 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])) | |
133 | { | |
134 | PK_DBG("[CAMERA LENS] set gpio mode failed!! \n"); | |
135 | } | |
136 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)) | |
137 | { | |
138 | PK_DBG("[CAMERA LENS] set gpio dir failed!! \n"); | |
139 | } | |
140 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])) | |
141 | { | |
142 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
143 | } | |
144 | ||
145 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])) | |
146 | { | |
147 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
148 | } | |
149 | msleep(3); | |
150 | ||
151 | ||
152 | //RST pin | |
153 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) | |
154 | { | |
155 | PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); | |
156 | } | |
157 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) | |
158 | { | |
159 | PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); | |
160 | } | |
161 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
162 | { | |
163 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
164 | } | |
165 | msleep(3); | |
166 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])) | |
167 | { | |
168 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
169 | } | |
170 | msleep(3); | |
171 | } | |
172 | ||
173 | //disable inactive sensor | |
174 | if(pinSetIdx == 0) //disable sub | |
175 | { | |
176 | pinSetIdxTmp = 1; | |
177 | } | |
178 | else | |
179 | { | |
180 | pinSetIdxTmp = 0; | |
181 | } | |
182 | #if 1 | |
183 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdxTmp][IDX_PS_CMRST]) | |
184 | { | |
185 | if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_MODE])) | |
186 | { | |
187 | PK_DBG("[CAMERA LENS] set gpio mode failed!! \n"); | |
188 | } | |
189 | ||
190 | if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],GPIO_DIR_OUT)) | |
191 | { | |
192 | PK_DBG("[CAMERA LENS] set gpio dir failed!! \n"); | |
193 | } | |
194 | ||
195 | if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_OFF])) | |
196 | { | |
197 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); //high == power down lens module | |
198 | } | |
199 | //RST pin | |
200 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) | |
201 | { | |
202 | PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); | |
203 | } | |
204 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) | |
205 | { | |
206 | PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); | |
207 | } | |
208 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
209 | { | |
210 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
211 | } | |
212 | msleep(3); | |
213 | } | |
214 | #endif | |
215 | //while(1); | |
216 | } | |
217 | else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV2680_RAW ,currSensorName))) { | |
218 | //OV5648 Power UP | |
219 | //First Power Pin low and Reset Pin Low | |
220 | ||
6fa3eb70 S |
221 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800, mode_name)) |
222 | { | |
223 | PK_DBG("[CAMERA SENSOR] Fail to enable IO power\n"); | |
224 | goto _kdCISModulePowerOn_exit_; | |
225 | } | |
226 | { | |
227 | //PDN pin | |
228 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} | |
229 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN], GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} | |
230 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} | |
231 | mdelay(10); | |
232 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} | |
233 | mdelay(5); | |
234 | ||
235 | //RST pin | |
236 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} | |
237 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST], GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} | |
238 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} | |
239 | mdelay(10); | |
240 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} | |
241 | mdelay(5); | |
242 | } | |
243 | ||
244 | msleep(20); | |
245 | ||
246 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800, mode_name)) | |
247 | { | |
248 | PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); | |
249 | goto _kdCISModulePowerOn_exit_; | |
250 | } | |
251 | ||
252 | //if(TRUE != hwPowerOn(PMIC_APP_MAIN_CAMERA_POWER_D, VOL_1500,mode_name)) | |
253 | // { | |
254 | // PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
255 | // goto _kdCISModulePowerOn_exit_; | |
256 | // } | |
257 | ||
258 | ||
259 | // wait power to be stable | |
260 | mdelay(25); | |
4b9e9796 S |
261 | |
262 | ||
263 | ; | |
6fa3eb70 S |
264 | } |
265 | else if ((pinSetIdx == 0) && currSensorName && (0 == strcmp(SENSOR_DRVNAME_S5K5E2YA_MIPI_RAW,currSensorName))) | |
266 | { | |
267 | PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---GC2145_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); | |
268 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) //IO | |
269 | { | |
270 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
271 | //return -EIO; | |
272 | goto _kdCISModulePowerOn_exit_; | |
273 | } | |
274 | ||
275 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) //AVDD | |
276 | { | |
277 | PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); | |
278 | //return -EIO; | |
279 | goto _kdCISModulePowerOn_exit_; | |
280 | } | |
281 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1200,mode_name)) //DVDD no use | |
282 | { | |
283 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
284 | //return -EIO; | |
285 | goto _kdCISModulePowerOn_exit_; | |
286 | } | |
287 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])) | |
288 | { | |
289 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
290 | } | |
291 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
292 | { | |
293 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
294 | } | |
295 | ||
296 | //PDN/STBY pin | |
297 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) | |
298 | { | |
299 | ||
300 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])) | |
301 | { | |
302 | PK_DBG("[CAMERA LENS] set gpio mode failed!! \n"); | |
303 | } | |
304 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)) | |
305 | { | |
306 | PK_DBG("[CAMERA LENS] set gpio dir failed!! \n"); | |
307 | } | |
308 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])) | |
309 | { | |
310 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
311 | } | |
312 | msleep(3); | |
313 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])) | |
314 | { | |
315 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
316 | } | |
317 | msleep(3); | |
318 | ||
319 | ||
320 | //RST pin | |
321 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) | |
322 | { | |
323 | PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); | |
324 | } | |
325 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) | |
326 | { | |
327 | PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); | |
328 | } | |
329 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
330 | { | |
331 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
332 | } | |
333 | msleep(3); | |
334 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])) | |
335 | { | |
336 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
337 | } | |
338 | msleep(3); | |
339 | } | |
340 | ||
341 | //disable inactive sensor | |
342 | if(pinSetIdx == 0) //disable sub | |
343 | { | |
344 | pinSetIdxTmp = 1; | |
345 | } | |
346 | else | |
347 | { | |
348 | pinSetIdxTmp = 0; | |
349 | } | |
350 | #if 1 | |
351 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdxTmp][IDX_PS_CMRST]) | |
352 | { | |
353 | if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_MODE])) | |
354 | { | |
355 | PK_DBG("[CAMERA LENS] set gpio mode failed!! \n"); | |
356 | } | |
357 | ||
358 | if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],GPIO_DIR_OUT)) | |
359 | { | |
360 | PK_DBG("[CAMERA LENS] set gpio dir failed!! \n"); | |
361 | } | |
362 | ||
363 | if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_OFF])) | |
364 | { | |
365 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); //high == power down lens module | |
366 | } | |
367 | //RST pin | |
368 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) | |
369 | { | |
370 | PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); | |
371 | } | |
372 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) | |
373 | { | |
374 | PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); | |
375 | } | |
376 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
377 | { | |
378 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
379 | } | |
380 | msleep(3); | |
381 | } | |
382 | #endif | |
383 | //while(1); | |
384 | } | |
385 | else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC2355_RAW,currSensorName))) | |
386 | { | |
387 | PK_DBG("[CAMERA SENSOR] kdCISModulePowerOn get in---GC2145_YUV sensorIdx:%d; pinSetIdx=%d\n",SensorIdx, pinSetIdx); | |
388 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800/*VOL_2800*/,mode_name)) //IO | |
389 | { | |
390 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
391 | //return -EIO; | |
392 | goto _kdCISModulePowerOn_exit_; | |
393 | } | |
394 | ||
395 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name)) //AVDD | |
396 | { | |
397 | PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); | |
398 | //return -EIO; | |
399 | goto _kdCISModulePowerOn_exit_; | |
400 | } | |
401 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name)) //DVDD no use | |
402 | { | |
403 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
404 | //return -EIO; | |
405 | goto _kdCISModulePowerOn_exit_; | |
406 | } | |
407 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])) | |
408 | { | |
409 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
410 | } | |
411 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
412 | { | |
413 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
414 | } | |
415 | ||
416 | //PDN/STBY pin | |
417 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) | |
418 | { | |
419 | ||
420 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])) | |
421 | { | |
422 | PK_DBG("[CAMERA LENS] set gpio mode failed!! \n"); | |
423 | } | |
424 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)) | |
425 | { | |
426 | PK_DBG("[CAMERA LENS] set gpio dir failed!! \n"); | |
427 | } | |
428 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])) | |
429 | { | |
430 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
431 | } | |
432 | msleep(3); | |
433 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])) | |
434 | { | |
435 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); | |
436 | } | |
437 | msleep(3); | |
438 | ||
439 | ||
440 | //RST pin | |
441 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) | |
442 | { | |
443 | PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); | |
444 | } | |
445 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) | |
446 | { | |
447 | PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); | |
448 | } | |
449 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
450 | { | |
451 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
452 | } | |
453 | msleep(3); | |
454 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])) | |
455 | { | |
456 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
457 | } | |
458 | msleep(3); | |
459 | } | |
460 | ||
461 | //disable inactive sensor | |
462 | if(pinSetIdx == 0) //disable sub | |
463 | { | |
464 | pinSetIdxTmp = 1; | |
465 | } | |
466 | else | |
467 | { | |
468 | pinSetIdxTmp = 0; | |
469 | } | |
470 | #if 1 | |
471 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdxTmp][IDX_PS_CMRST]) | |
472 | { | |
473 | if(mt_set_gpio_mode(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_MODE])) | |
474 | { | |
475 | PK_DBG("[CAMERA LENS] set gpio mode failed!! \n"); | |
476 | } | |
477 | ||
478 | if(mt_set_gpio_dir(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],GPIO_DIR_OUT)) | |
479 | { | |
480 | PK_DBG("[CAMERA LENS] set gpio dir failed!! \n"); | |
481 | } | |
482 | ||
483 | if(mt_set_gpio_out(pinSet[pinSetIdxTmp][IDX_PS_CMPDN],pinSet[pinSetIdxTmp][IDX_PS_CMPDN+IDX_PS_ON])) | |
484 | { | |
485 | PK_DBG("[CAMERA LENS] set gpio failed!! \n"); //high == power down lens module | |
486 | } | |
487 | //RST pin | |
488 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])) | |
489 | { | |
490 | PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n"); | |
491 | } | |
492 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)) | |
493 | { | |
494 | PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n"); | |
495 | } | |
496 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])) | |
497 | { | |
498 | PK_DBG("[CAMERA SENSOR] set gpio failed!! \n"); | |
499 | } | |
500 | msleep(3); | |
501 | } | |
502 | #endif | |
503 | //while(1); | |
504 | } | |
505 | else{ | |
506 | if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { | |
507 | PK_DBG("[CAMERA SENSOR] Fail to OFF analog power\n"); | |
508 | //return -EIO; | |
509 | //goto _kdCISModulePowerOn_exit_; | |
510 | } | |
511 | if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)) | |
512 | { | |
513 | PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); | |
514 | //return -EIO; | |
515 | //goto _kdCISModulePowerOn_exit_; | |
516 | } | |
517 | mdelay(5); | |
518 | ||
519 | //DVDD | |
520 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name)) | |
521 | { | |
522 | PK_DBG("[CAMERA SENSOR] Fail to enable digital power\n"); | |
523 | //return -EIO; | |
524 | //goto _kdCISModulePowerOn_exit_; | |
525 | } | |
526 | mdelay(5); | |
527 | ||
528 | #if 0 | |
529 | // AF_VCC | |
530 | if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name)) | |
531 | { | |
532 | PK_DBG("[CAMERA SENSOR] Fail to enable analog power\n"); | |
533 | //return -EIO; | |
534 | goto _kdCISModulePowerOn_exit_; | |
535 | } | |
536 | #endif | |
537 | ||
538 | //enable active sensor | |
539 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { | |
540 | //RST pin | |
541 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} | |
542 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} | |
543 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} | |
544 | mdelay(5); | |
545 | ||
546 | //PDN pin | |
547 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} | |
548 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} | |
549 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} | |
550 | mdelay(5); | |
551 | } | |
552 | ||
553 | ||
554 | //disable inactive sensor | |
555 | if(pinSetIdx == 0 || pinSetIdx == 2) {//disable sub | |
556 | if (GPIO_CAMERA_INVALID != pinSet[1][IDX_PS_CMRST]) { | |
557 | if(mt_set_gpio_mode(pinSet[1][IDX_PS_CMRST],pinSet[1][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} | |
558 | if(mt_set_gpio_mode(pinSet[1][IDX_PS_CMPDN],pinSet[1][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} | |
559 | if(mt_set_gpio_dir(pinSet[1][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} | |
560 | if(mt_set_gpio_dir(pinSet[1][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} | |
561 | if(mt_set_gpio_out(pinSet[1][IDX_PS_CMRST],pinSet[1][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor | |
562 | if(mt_set_gpio_out(pinSet[1][IDX_PS_CMPDN],pinSet[1][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module | |
563 | } | |
564 | } | |
565 | else { | |
566 | if (GPIO_CAMERA_INVALID != pinSet[0][IDX_PS_CMRST]) { | |
567 | if(mt_set_gpio_mode(pinSet[0][IDX_PS_CMRST],pinSet[0][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} | |
568 | if(mt_set_gpio_mode(pinSet[0][IDX_PS_CMPDN],pinSet[0][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} | |
569 | if(mt_set_gpio_dir(pinSet[0][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} | |
570 | if(mt_set_gpio_dir(pinSet[0][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} | |
571 | if(mt_set_gpio_out(pinSet[0][IDX_PS_CMRST],pinSet[0][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor | |
572 | if(mt_set_gpio_out(pinSet[0][IDX_PS_CMPDN],pinSet[0][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module | |
573 | } | |
574 | } | |
575 | ||
576 | ||
577 | } | |
578 | } | |
579 | else {//power OFF | |
580 | ||
581 | //PK_DBG("[OFF]sensorIdx:%d \n",SensorIdx); | |
582 | if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) { | |
583 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG("[CAMERA SENSOR] set gpio mode failed!! \n");} | |
584 | if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG("[CAMERA LENS] set gpio mode failed!! \n");} | |
585 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG("[CAMERA SENSOR] set gpio dir failed!! \n");} | |
586 | if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG("[CAMERA LENS] set gpio dir failed!! \n");} | |
587 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG("[CAMERA SENSOR] set gpio failed!! \n");} //low == reset sensor | |
4b9e9796 | 588 | if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG("[CAMERA LENS] set gpio failed!! \n");} //high == power down lens module |
6fa3eb70 | 589 | } |
4b9e9796 | 590 | |
6fa3eb70 S |
591 | if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) { |
592 | PK_DBG("[CAMERA SENSOR] Fail to OFF a power\n"); | |
593 | } | |
594 | if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name)){ | |
595 | PK_DBG("[CAMERA SENSOR] Fail to OFF a2 power\n"); | |
596 | } | |
597 | if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) { | |
598 | PK_DBG("[CAMERA SENSOR] Fail to OFF d digital power\n"); | |
599 | } | |
600 | if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name)) | |
601 | { | |
602 | PK_DBG("[CAMERA SENSOR] Fail to OFF d2 digital power\n"); | |
603 | } | |
604 | }// | |
605 | ||
606 | #endif /* end of defined MTK_ALPS_BOX_SUPPORT */ | |
607 | ||
608 | return 0; | |
609 | ||
610 | _kdCISModulePowerOn_exit_: | |
611 | return -EIO; | |
612 | } | |
4b9e9796 | 613 | |
6fa3eb70 S |
614 | EXPORT_SYMBOL(kdCISModulePowerOn); |
615 | ||
616 | ||
617 | //!-- | |
618 | // | |
619 | ||
620 | ||
621 | ||
622 |