camsys_drv : v0.9.0
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / icatch7002 / icatch7002_mi1040.c
1
2 #include "icatch7002_common.h"
3 /*
4 *      Driver Version Note
5 *v0.0.1: this driver is compatible with generic_sensor
6 *v0.0.3:
7 *        add sensor_focus_af_const_pause_usr_cb;
8 */
9 static int version = KERNEL_VERSION(0,0,3);
10 module_param(version, int, S_IRUGO);
11
12
13
14 static int debug;
15 module_param(debug, int, S_IRUGO|S_IWUSR);
16
17 #define dprintk(level, fmt, arg...) do {                        \
18         if (debug >= level)                                     \
19         printk(KERN_WARNING fmt , ## arg); } while (0)
20
21 /* Sensor Driver Configuration Begin */
22 #define SENSOR_NAME RK29_CAM_ISP_ICATCH7002_MI1040
23 #define SENSOR_V4L2_IDENT V4L2_IDENT_ICATCH7002_MI1040
24 #define SENSOR_ID 0x2481
25 #define SENSOR_BUS_PARAM  (SOCAM_MASTER | SOCAM_PCLK_SAMPLE_RISING|\
26                                                   SOCAM_HSYNC_ACTIVE_HIGH| SOCAM_VSYNC_ACTIVE_HIGH|\
27                                                   SOCAM_DATA_ACTIVE_HIGH|SOCAM_DATAWIDTH_8      |SOCAM_MCLK_24MHZ)
28 #define SENSOR_PREVIEW_W                                         1280
29 #define SENSOR_PREVIEW_H                                         960
30 #define SENSOR_PREVIEW_FPS                                       30000     // 15fps 
31 #define SENSOR_FULLRES_L_FPS                             15000     // 7.5fps
32 #define SENSOR_FULLRES_H_FPS                             15000     // 7.5fps
33 #define SENSOR_720P_FPS                                          0
34 #define SENSOR_1080P_FPS                                         0
35
36                                                                         
37 static unsigned int SensorConfiguration = 0;
38 static unsigned int SensorChipID[] = {SENSOR_ID};
39 /* Sensor Driver Configuration End */
40
41
42 #define SENSOR_NAME_STRING(a) STR(CONS(SENSOR_NAME, a))
43 //#define SENSOR_NAME_VARFUN(a) CONS(SENSOR_NAME, a)
44
45 //#define SensorRegVal(a,b) CONS4(SensorReg,SENSOR_REGISTER_LEN,Val,SENSOR_VALUE_LEN)(a,b)
46 //#define sensor_write(client,reg,v) CONS4(sensor_write_reg,SENSOR_REGISTER_LEN,val,SENSOR_VALUE_LEN)(client,(reg),(v))
47 //#define sensor_read(client,reg,v) CONS4(sensor_read_reg,SENSOR_REGISTER_LEN,val,SENSOR_VALUE_LEN)(client,(reg),(v))
48 //#define sensor_write_array generic_sensor_write_array
49
50
51
52 /*
53 *  The follow setting need been filled.
54 *  
55 *  Must Filled:
56 *  sensor_init_data :                           Sensor initial setting;
57 *  sensor_fullres_lowfps_data :         Sensor full resolution setting with best auality, recommand for video;
58 *  sensor_preview_data :                        Sensor preview resolution setting, recommand it is vga or svga;
59 *  sensor_softreset_data :                      Sensor software reset register;
60 *  sensor_check_id_data :                       Sensir chip id register;
61 *
62 *  Optional filled:
63 *  sensor_fullres_highfps_data:         Sensor full resolution setting with high framerate, recommand for video;
64 *  sensor_720p:                                         Sensor 720p setting, it is for video;
65 *  sensor_1080p:                                        Sensor 1080p setting, it is for video;
66 *
67 *  :::::WARNING:::::
68 *  The SensorEnd which is the setting end flag must be filled int the last of each setting;
69 */
70
71 /* Sensor initial setting */
72 static struct rk_sensor_reg sensor_init_data[] ={
73     SensorStreamChk,
74         SensorEnd
75 };
76 /* Senor full resolution setting: recommand for capture */
77 static struct rk_sensor_reg sensor_fullres_lowfps_data[] ={
78         SensorEnd
79
80 };
81
82 /* Senor full resolution setting: recommand for video */
83 static struct rk_sensor_reg sensor_fullres_highfps_data[] ={
84         SensorEnd
85 };
86 /* Preview resolution setting*/
87 static struct rk_sensor_reg sensor_preview_data[] =
88 {
89     SensorStreamChk,
90         SensorEnd
91 };
92 /* 1280x720 */
93 static struct rk_sensor_reg sensor_720p[]={
94         SensorEnd
95 };
96
97 /* 1920x1080 */
98 static struct rk_sensor_reg sensor_1080p[]={
99         SensorEnd
100 };
101
102
103 static struct rk_sensor_reg sensor_softreset_data[]={
104         SensorEnd
105 };
106
107 static struct rk_sensor_reg sensor_check_id_data[]={
108         SensorEnd
109 };
110 /*
111 *  The following setting must been filled, if the function is turn on by CONFIG_SENSOR_xxxx
112 */
113 static struct rk_sensor_reg sensor_WhiteB_Auto[]=
114 {
115         SensorEnd
116 };
117 /* Cloudy Colour Temperature : 6500K - 8000K  */
118 static  struct rk_sensor_reg sensor_WhiteB_Cloudy[]=
119 {
120         SensorEnd
121 };
122 /* ClearDay Colour Temperature : 5000K - 6500K  */
123 static  struct rk_sensor_reg sensor_WhiteB_ClearDay[]=
124 {
125         //Sunny
126         SensorEnd
127 };
128 /* Office Colour Temperature : 3500K - 5000K  */
129 static  struct rk_sensor_reg sensor_WhiteB_TungstenLamp1[]=
130 {
131         //Office
132         SensorEnd
133
134 };
135 /* Home Colour Temperature : 2500K - 3500K      */
136 static  struct rk_sensor_reg sensor_WhiteB_TungstenLamp2[]=
137 {
138         //Home
139         SensorEnd
140 };
141 static struct rk_sensor_reg *sensor_WhiteBalanceSeqe[] = {sensor_WhiteB_Auto, sensor_WhiteB_TungstenLamp1,sensor_WhiteB_TungstenLamp2,
142         sensor_WhiteB_ClearDay, sensor_WhiteB_Cloudy,NULL,
143 };
144
145 static  struct rk_sensor_reg sensor_Brightness0[]=
146 {
147         // Brightness -2
148         SensorEnd
149 };
150
151 static  struct rk_sensor_reg sensor_Brightness1[]=
152 {
153         // Brightness -1
154
155         SensorEnd
156 };
157
158 static  struct rk_sensor_reg sensor_Brightness2[]=
159 {
160         //      Brightness 0
161
162         SensorEnd
163 };
164
165 static  struct rk_sensor_reg sensor_Brightness3[]=
166 {
167         // Brightness +1
168
169         SensorEnd
170 };
171
172 static  struct rk_sensor_reg sensor_Brightness4[]=
173 {
174         //      Brightness +2
175
176         SensorEnd
177 };
178
179 static  struct rk_sensor_reg sensor_Brightness5[]=
180 {
181         //      Brightness +3
182
183         SensorEnd
184 };
185 static struct rk_sensor_reg *sensor_BrightnessSeqe[] = {sensor_Brightness0, sensor_Brightness1, sensor_Brightness2, sensor_Brightness3,
186         sensor_Brightness4, sensor_Brightness5,NULL,
187 };
188
189 static  struct rk_sensor_reg sensor_Effect_Normal[] =
190 {
191         SensorEnd
192 };
193
194 static  struct rk_sensor_reg sensor_Effect_WandB[] =
195 {
196         SensorEnd
197 };
198
199 static  struct rk_sensor_reg sensor_Effect_Sepia[] =
200 {
201         SensorEnd
202 };
203
204 static  struct rk_sensor_reg sensor_Effect_Negative[] =
205 {
206         //Negative
207         SensorEnd
208 };
209 static  struct rk_sensor_reg sensor_Effect_Bluish[] =
210 {
211         // Bluish
212         SensorEnd
213 };
214
215 static  struct rk_sensor_reg sensor_Effect_Green[] =
216 {
217         //      Greenish
218         SensorEnd
219 };
220 static struct rk_sensor_reg *sensor_EffectSeqe[] = {sensor_Effect_Normal, sensor_Effect_WandB, sensor_Effect_Negative,sensor_Effect_Sepia,
221         sensor_Effect_Bluish, sensor_Effect_Green,NULL,
222 };
223
224 static  struct rk_sensor_reg sensor_Exposure0[]=
225 {
226
227         SensorEnd
228 };
229
230 static  struct rk_sensor_reg sensor_Exposure1[]=
231 {
232         SensorEnd
233 };
234
235 static  struct rk_sensor_reg sensor_Exposure2[]=
236 {
237         SensorEnd
238 };
239
240 static  struct rk_sensor_reg sensor_Exposure3[]=
241 {
242         SensorEnd
243 };
244
245 static  struct rk_sensor_reg sensor_Exposure4[]=
246 {
247         SensorEnd
248 };
249
250 static  struct rk_sensor_reg sensor_Exposure5[]=
251 {
252         SensorEnd
253 };
254
255 static  struct rk_sensor_reg sensor_Exposure6[]=
256 {
257         SensorEnd
258 };
259
260 static struct rk_sensor_reg *sensor_ExposureSeqe[] = {sensor_Exposure0, sensor_Exposure1, sensor_Exposure2, sensor_Exposure3,
261         sensor_Exposure4, sensor_Exposure5,sensor_Exposure6,NULL,
262 };
263
264 static  struct rk_sensor_reg sensor_Saturation0[]=
265 {
266         SensorEnd
267 };
268
269 static  struct rk_sensor_reg sensor_Saturation1[]=
270 {
271         SensorEnd
272 };
273
274 static  struct rk_sensor_reg sensor_Saturation2[]=
275 {
276         SensorEnd
277 };
278 static struct rk_sensor_reg *sensor_SaturationSeqe[] = {sensor_Saturation0, sensor_Saturation1, sensor_Saturation2, NULL,};
279
280 static  struct rk_sensor_reg sensor_Contrast0[]=
281 {
282
283         SensorEnd
284 };
285
286 static  struct rk_sensor_reg sensor_Contrast1[]=
287 {
288
289         SensorEnd
290 };
291
292 static  struct rk_sensor_reg sensor_Contrast2[]=
293 {
294
295         SensorEnd
296 };
297
298 static  struct rk_sensor_reg sensor_Contrast3[]=
299 {
300
301         SensorEnd
302 };
303
304 static  struct rk_sensor_reg sensor_Contrast4[]=
305 {
306
307         SensorEnd
308 };
309
310
311 static  struct rk_sensor_reg sensor_Contrast5[]=
312 {
313
314         SensorEnd
315 };
316
317 static  struct rk_sensor_reg sensor_Contrast6[]=
318 {
319
320         SensorEnd
321 };
322 static struct rk_sensor_reg *sensor_ContrastSeqe[] = {sensor_Contrast0, sensor_Contrast1, sensor_Contrast2, sensor_Contrast3,
323         sensor_Contrast4, sensor_Contrast5, sensor_Contrast6, NULL,
324 };
325 static  struct rk_sensor_reg sensor_SceneAuto[] =
326 {
327         SensorEnd
328 };
329
330 static  struct rk_sensor_reg sensor_SceneNight[] =
331 {
332         SensorEnd
333 };
334 static struct rk_sensor_reg *sensor_SceneSeqe[] = {sensor_SceneAuto, sensor_SceneNight,NULL,};
335
336 static struct rk_sensor_reg sensor_Zoom0[] =
337 {
338         SensorEnd
339 };
340
341 static struct rk_sensor_reg sensor_Zoom1[] =
342 {
343         SensorEnd
344 };
345
346 static struct rk_sensor_reg sensor_Zoom2[] =
347 {
348         SensorEnd
349 };
350
351
352 static struct rk_sensor_reg sensor_Zoom3[] =
353 {
354         SensorEnd
355 };
356 static struct rk_sensor_reg *sensor_ZoomSeqe[] = {sensor_Zoom0, sensor_Zoom1, sensor_Zoom2, sensor_Zoom3, NULL,};
357
358 /*
359 * User could be add v4l2_querymenu in sensor_controls by new_usr_v4l2menu
360 */
361 static struct v4l2_querymenu sensor_menus[] =
362 {
363         //white balance
364         new_usr_v4l2menu(V4L2_CID_DO_WHITE_BALANCE,0,"auto",0),
365         new_usr_v4l2menu(V4L2_CID_DO_WHITE_BALANCE,1,"incandescent",0),
366         new_usr_v4l2menu(V4L2_CID_DO_WHITE_BALANCE,2,"fluorescent",0),
367         new_usr_v4l2menu(V4L2_CID_DO_WHITE_BALANCE,3,"daylight",0),
368         new_usr_v4l2menu(V4L2_CID_DO_WHITE_BALANCE,4,"cloudy-daylight",0),
369
370         //speical effect
371         new_usr_v4l2menu(V4L2_CID_EFFECT,0,"normal",0),
372         new_usr_v4l2menu(V4L2_CID_EFFECT,1,"aqua",0),
373         new_usr_v4l2menu(V4L2_CID_EFFECT,2,"negative",0),
374         new_usr_v4l2menu(V4L2_CID_EFFECT,3,"sepia",0),
375         new_usr_v4l2menu(V4L2_CID_EFFECT,4,"mono",0),
376         new_usr_v4l2menu(V4L2_CID_EFFECT,5,"none",0),
377         new_usr_v4l2menu(V4L2_CID_EFFECT,6,"aura",0),
378         new_usr_v4l2menu(V4L2_CID_EFFECT,7,"vintage",0),
379         new_usr_v4l2menu(V4L2_CID_EFFECT,8,"vintage2",0),
380         new_usr_v4l2menu(V4L2_CID_EFFECT,9,"lomo",0),
381         new_usr_v4l2menu(V4L2_CID_EFFECT,10,"red",0),
382         new_usr_v4l2menu(V4L2_CID_EFFECT,11,"blue",0),
383         new_usr_v4l2menu(V4L2_CID_EFFECT,12,"green",0),
384
385     //scence
386         new_usr_v4l2menu(V4L2_CID_SCENE,0,"normal",0),
387         new_usr_v4l2menu(V4L2_CID_SCENE,1,"auto",0),
388         new_usr_v4l2menu(V4L2_CID_SCENE,2,"landscape",0),
389         new_usr_v4l2menu(V4L2_CID_SCENE,3,"night",0),
390         new_usr_v4l2menu(V4L2_CID_SCENE,4,"night_portrait",0),
391         new_usr_v4l2menu(V4L2_CID_SCENE,5,"snow",0),
392         new_usr_v4l2menu(V4L2_CID_SCENE,6,"sports",0),
393         new_usr_v4l2menu(V4L2_CID_SCENE,7,"candlelight",0),
394
395         //antibanding
396         new_usr_v4l2menu(V4L2_CID_ANTIBANDING,0,"50hz",0),
397         new_usr_v4l2menu(V4L2_CID_ANTIBANDING,1,"60hz",0),
398
399         //ISO
400         new_usr_v4l2menu(V4L2_CID_ISO,0,"auto",0),
401         new_usr_v4l2menu(V4L2_CID_ISO,1,"50",0),
402         new_usr_v4l2menu(V4L2_CID_ISO,2,"100",0),
403         new_usr_v4l2menu(V4L2_CID_ISO,3,"200",0),
404         new_usr_v4l2menu(V4L2_CID_ISO,4,"400",0),
405         new_usr_v4l2menu(V4L2_CID_ISO,5,"800",0),
406         new_usr_v4l2menu(V4L2_CID_ISO,6,"1600",0),
407 };
408 /*
409 * User could be add v4l2_queryctrl in sensor_controls by new_user_v4l2ctrl
410 */
411 static struct sensor_v4l2ctrl_usr_s sensor_controls[] =
412 {
413         new_user_v4l2ctrl(V4L2_CID_DO_WHITE_BALANCE,V4L2_CTRL_TYPE_MENU,"White Balance Control", 0, 4, 1, 0,sensor_set_get_control_cb, NULL),
414 //      new_user_v4l2ctrl(V4L2_CID_BRIGHTNESS,V4L2_CTRL_TYPE_INTEGER,"Brightness Control", -3, 2, 1, 0,sensor_set_get_control_cb, NULL),
415         new_user_v4l2ctrl(V4L2_CID_EXPOSURE,V4L2_CTRL_TYPE_INTEGER,"Exposure Control", -3, 3, 1, 0,sensor_set_get_control_cb, NULL),
416         new_user_v4l2ctrl(V4L2_CID_EFFECT,V4L2_CTRL_TYPE_MENU,"Effect Control", 0, 12, 1, 5,sensor_set_get_control_cb, NULL),
417 //      new_user_v4l2ctrl(V4L2_CID_CONTRAST,V4L2_CTRL_TYPE_INTEGER,"Contrast Control", -4, 4, 1, 0,sensor_set_get_control_cb, NULL),
418         new_user_v4l2ctrl(V4L2_CID_SCENE,V4L2_CTRL_TYPE_MENU,"Scene Control", 0, 7, 1, 1,sensor_set_get_control_cb, NULL),
419         new_user_v4l2ctrl(V4L2_CID_ANTIBANDING,V4L2_CTRL_TYPE_MENU,"Antibanding Control", 0, 1, 1, 0,sensor_set_get_control_cb, NULL),
420         new_user_v4l2ctrl(V4L2_CID_WHITEBALANCE_LOCK,V4L2_CTRL_TYPE_BOOLEAN,"WhiteBalanceLock Control", 0, 1, 1, 0,sensor_set_get_control_cb, NULL),
421         new_user_v4l2ctrl(V4L2_CID_EXPOSURE_LOCK,V4L2_CTRL_TYPE_BOOLEAN,"ExposureLock Control", 0, 1, 1, 0,sensor_set_get_control_cb, NULL),
422         new_user_v4l2ctrl(V4L2_CID_METERING_AREAS,V4L2_CTRL_TYPE_INTEGER,"MeteringAreas Control", 0, 1, 1, 1,sensor_set_get_control_cb, NULL),
423         new_user_v4l2ctrl(V4L2_CID_WDR,V4L2_CTRL_TYPE_BOOLEAN,"WDR Control", 0, 1, 1, 0,sensor_set_get_control_cb, NULL),
424         new_user_v4l2ctrl(V4L2_CID_EDGE,V4L2_CTRL_TYPE_BOOLEAN,"EDGE Control", 0, 1, 1, 1,sensor_set_get_control_cb, NULL),
425         new_user_v4l2ctrl(V4L2_CID_JPEG_EXIF,V4L2_CTRL_TYPE_BOOLEAN,"Exif Control", 0, 1, 1, 0,sensor_set_get_control_cb, NULL),
426         new_user_v4l2ctrl(V4L2_CID_ISO,V4L2_CTRL_TYPE_MENU,"Exif Control", 0, 6, 1, 0,sensor_set_get_control_cb, NULL),
427 };
428
429 //MUST define the current used format as the first item   
430 static struct rk_sensor_datafmt sensor_colour_fmts[] = {
431         {V4L2_MBUS_FMT_UYVY8_2X8, V4L2_COLORSPACE_JPEG} 
432 };
433
434
435 /*
436 **********************************************************
437 * Following is local code:
438
439 * Please codeing your program here 
440 **********************************************************
441 */
442 /*
443 **********************************************************
444 * Following is callback
445 * If necessary, you could coding these callback
446 **********************************************************
447 */
448 /*
449 * the function is called in open sensor  
450 */
451 static int sensor_activate_cb(struct i2c_client *client)
452 {
453     return  icatch_sensor_init(client);
454 }
455 /*
456 * the function is called in close sensor
457 */
458 static int sensor_deactivate_cb(struct i2c_client *client)
459 {
460         
461         return 0;
462 }
463 /*
464 * the function is called before sensor register setting in VIDIOC_S_FMT  
465 */
466 static int sensor_s_fmt_cb_th(struct i2c_client *client,struct v4l2_mbus_framefmt *mf, bool capture)
467 {
468     return icatch_s_fmt(client, mf,capture);
469 }
470 /*
471 * the function is called after sensor register setting finished in VIDIOC_S_FMT  
472 */
473 static int sensor_s_fmt_cb_bh (struct i2c_client *client,struct v4l2_mbus_framefmt *mf, bool capture)
474 {
475         return 0;
476 }
477 static int sensor_try_fmt_cb_th(struct i2c_client *client,struct v4l2_mbus_framefmt *mf)
478 {
479         return 0;
480 }
481
482 static int sensor_softrest_usr_cb(struct i2c_client *client,struct rk_sensor_reg *series)
483 {
484         
485         return 0;
486 }
487 static int sensor_check_id_usr_cb(struct i2c_client *client,struct rk_sensor_reg *series)
488 {
489         struct generic_sensor *sensor = to_generic_sensor(client);
490         return sensor->info_priv.chip_id[0];
491 }
492 static int sensor_suspend(struct soc_camera_device *icd, pm_message_t pm_msg)
493 {
494         //struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
495                 
496         if (pm_msg.event == PM_EVENT_SUSPEND) {
497                 SENSOR_DG("Suspend");
498                 
499         } else {
500                 SENSOR_TR("pm_msg.event(0x%x) != PM_EVENT_SUSPEND\n",pm_msg.event);
501                 return -EINVAL;
502         }
503         return 0;
504 }
505
506 static int sensor_resume(struct soc_camera_device *icd)
507 {
508
509         SENSOR_DG("Resume");
510
511         return 0;
512
513 }
514 /*
515 * the function is v4l2 control V4L2_CID_HFLIP callback  
516 */
517 static int sensor_v4l2ctrl_mirror_cb(struct soc_camera_device *icd, struct sensor_v4l2ctrl_info_s *ctrl_info, 
518                                                                                                          struct v4l2_ext_control *ext_ctrl)
519 {
520         return 0;
521 }
522
523 /*
524 * the function is v4l2 control V4L2_CID_VFLIP callback  
525 */
526 static int sensor_v4l2ctrl_flip_cb(struct soc_camera_device *icd, struct sensor_v4l2ctrl_info_s *ctrl_info, 
527                                                                                                          struct v4l2_ext_control *ext_ctrl)
528 {
529         return 0;
530 }
531 /*
532 * the function is v4l2 control V4L2_CID_HFLIP callback 
533 */
534
535 static int sensor_flip_cb(struct i2c_client *client, int flip)
536 {
537     int err = 0;    
538
539     return err;    
540 }
541 static int sensor_mirror_cb(struct i2c_client *client, int flip)
542 {
543     int err = 0;    
544
545     return err;    
546 }
547
548 /*
549 * the functions are focus callbacks
550 */
551 static int sensor_focus_init_usr_cb(struct i2c_client *client){
552         return 0;
553 }
554
555 static int sensor_focus_af_single_usr_cb(struct i2c_client *client){
556         return 0;
557 }
558
559 static int sensor_focus_af_near_usr_cb(struct i2c_client *client){
560         return 0;
561 }
562
563 static int sensor_focus_af_far_usr_cb(struct i2c_client *client){
564         return 0;
565 }
566
567 static int sensor_focus_af_specialpos_usr_cb(struct i2c_client *client,int pos){
568         return 0;
569 }
570
571 static int sensor_focus_af_const_usr_cb(struct i2c_client *client){
572
573         return 0;
574 }
575 static int sensor_focus_af_const_pause_usr_cb(struct i2c_client *client)
576 {
577     return 0;
578 }
579 static int sensor_focus_af_close_usr_cb(struct i2c_client *client){
580         return 0;
581 }
582
583 static int sensor_focus_af_zoneupdate_usr_cb(struct i2c_client *client, int *zone_tm_pos)
584 {
585         return 0;
586 }
587
588 /*
589 face defect call back
590 */
591 static int      sensor_face_detect_usr_cb(struct i2c_client *client,int on){
592         return 0;
593 }
594
595 /*
596 *       The function can been run in sensor_init_parametres which run in sensor_probe, so user can do some
597 * initialization in the function. 
598 */
599 static void sensor_init_parameters_user(struct specific_sensor* spsensor,struct soc_camera_device *icd)
600 {
601         spsensor->common_sensor.sensor_cb.sensor_s_stream_cb = icatch_s_stream;
602     spsensor->common_sensor.sensor_cb.sensor_enum_framesizes = icatch_enum_framesizes;
603
604         spsensor->isp_priv_info.outputSize =OUTPUT_QUADVGA;
605         spsensor->isp_priv_info.supportedSizeNum = 1;
606         spsensor->isp_priv_info.supportedSize[0] = OUTPUT_QUADVGA;
607
608
609         return;
610 }
611
612 /*
613 * :::::WARNING:::::
614 * It is not allowed to modify the following code
615 */
616
617 sensor_init_parameters_default_code();
618
619 sensor_v4l2_struct_initialization();
620
621 sensor_probe_default_code();
622
623 sensor_remove_default_code();
624
625 sensor_driver_default_module_code();
626
627
628
629