PM / devfreq: rk3399_dmc: rename driver and internals to rockchip
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / gc0308.c
1 \r
2 #include "generic_sensor.h"\r
3 /*
4 *      Driver Version Note\r
5 *v0.0.1: this driver is compatible with generic_sensor\r
6 *v0.0.3:\r
7 *        add sensor_focus_af_const_pause_usr_cb;\r
8 */\r
9 static int version = KERNEL_VERSION(0,0,3);\r
10 module_param(version, int, S_IRUGO);\r
11 \r
12 \r
13 \r
14 static int debug;\r
15 module_param(debug, int, S_IRUGO|S_IWUSR);\r
16 \r
17 #define dprintk(level, fmt, arg...) do {                        \\r
18         if (debug >= level)                                     \\r
19         printk(KERN_WARNING fmt , ## arg); } while (0)\r
20 \r
21 /* Sensor Driver Configuration Begin */\r
22 #define SENSOR_NAME RK29_CAM_SENSOR_GC0308\r
23 #define SENSOR_V4L2_IDENT V4L2_IDENT_GC0308\r
24 #define SENSOR_ID 0x9b\r
25 #define SENSOR_BUS_PARAM                     (V4L2_MBUS_MASTER |\\r
26                                                                                                          V4L2_MBUS_PCLK_SAMPLE_RISING|V4L2_MBUS_HSYNC_ACTIVE_HIGH| V4L2_MBUS_VSYNC_ACTIVE_LOW|\\r
27                                                                                                          V4L2_MBUS_DATA_ACTIVE_HIGH  |SOCAM_MCLK_24MHZ)\r
28 #define SENSOR_PREVIEW_W                                         640\r
29 #define SENSOR_PREVIEW_H                                         480\r
30 #define SENSOR_PREVIEW_FPS                                       15000     // 15fps \r
31 #define SENSOR_FULLRES_L_FPS                             7500      // 7.5fps\r
32 #define SENSOR_FULLRES_H_FPS                             7500      // 7.5fps\r
33 #define SENSOR_720P_FPS                                          0\r
34 #define SENSOR_1080P_FPS                                         0\r
35 \r
36 #define SENSOR_REGISTER_LEN                              1                 // sensor register address bytes\r
37 #define SENSOR_VALUE_LEN                                         1                 // sensor register value bytes\r
38                                                                         \r
39 static unsigned int SensorConfiguration = (CFG_WhiteBalance|CFG_Effect|CFG_Scene);\r
40 static unsigned int SensorChipID[] = {SENSOR_ID};\r
41 /* Sensor Driver Configuration End */\r
42 \r
43 \r
44 #define SENSOR_NAME_STRING(a) STR(CONS(SENSOR_NAME, a))\r
45 #define SENSOR_NAME_VARFUN(a) CONS(SENSOR_NAME, a)\r
46 \r
47 #define SensorRegVal(a,b) CONS4(SensorReg,SENSOR_REGISTER_LEN,Val,SENSOR_VALUE_LEN)(a,b)\r
48 #define sensor_write(client,reg,v) CONS4(sensor_write_reg,SENSOR_REGISTER_LEN,val,SENSOR_VALUE_LEN)(client,(reg),(v))\r
49 #define sensor_read(client,reg,v) CONS4(sensor_read_reg,SENSOR_REGISTER_LEN,val,SENSOR_VALUE_LEN)(client,(reg),(v))\r
50 #define sensor_write_array generic_sensor_write_array\r
51 \r
52 struct sensor_parameter\r
53 {\r
54         unsigned int PreviewDummyPixels;\r
55         unsigned int CaptureDummyPixels;\r
56         unsigned int preview_exposure;\r
57         unsigned short int preview_line_width;\r
58         unsigned short int preview_gain;\r
59 \r
60         unsigned short int PreviewPclk;\r
61         unsigned short int CapturePclk;\r
62         char awb[6];\r
63 };\r
64 \r
65 struct specific_sensor{\r
66         struct generic_sensor common_sensor;\r
67         //define user data below\r
68         struct sensor_parameter parameter;\r
69 \r
70 };\r
71 \r
72 /*\r
73 *  The follow setting need been filled.\r
74 *  \r
75 *  Must Filled:\r
76 *  sensor_init_data :                           Sensor initial setting;\r
77 *  sensor_fullres_lowfps_data :         Sensor full resolution setting with best auality, recommand for video;\r
78 *  sensor_preview_data :                        Sensor preview resolution setting, recommand it is vga or svga;\r
79 *  sensor_softreset_data :                      Sensor software reset register;\r
80 *  sensor_check_id_data :                       Sensir chip id register;\r
81 *\r
82 *  Optional filled:\r
83 *  sensor_fullres_highfps_data:         Sensor full resolution setting with high framerate, recommand for video;\r
84 *  sensor_720p:                                         Sensor 720p setting, it is for video;\r
85 *  sensor_1080p:                                        Sensor 1080p setting, it is for video;\r
86 *\r
87 *  :::::WARNING:::::\r
88 *  The SensorEnd which is the setting end flag must be filled int the last of each setting;\r
89 */\r
90 \r
91 /* Sensor initial setting */\r
92 static struct rk_sensor_reg sensor_init_data[] ={\r
93                 {0xfe , 0x80},          \r
94                         \r
95                 {0xfe , 0x00},   // set page0\r
96                 \r
97                 {0xd2 , 0x10},   // close AEC\r
98                 {0x22 , 0x55},   // close AWB\r
99         \r
100                 {0x03 , 0x01},                                                                  \r
101                 {0x04 , 0x2c},                                                                  \r
102                 {0x5a , 0x56},\r
103                 {0x5b , 0x40},\r
104                 {0x5c , 0x4a},                  \r
105         \r
106                 {0x22 , 0x57},   // Open AWB\r
107         \r
108                 {0x01 , 0xfa},                                                                    \r
109                 {0x02 , 0x70},                                                                  \r
110                 {0x0f , 0x01},                                                                  \r
111                                                                                                                                            \r
112                                                                                                                                            \r
113                 {0xe2 , 0x00},   //anti-flicker step [11:8]     \r
114                 {0xe3 , 0x64},   //anti-flicker step [7:0]              \r
115                                                                                                                                                    \r
116                 {0xe4 , 0x02},   //exp level 1  16.67fps                \r
117                 {0xe5 , 0x58},                                                                  \r
118                 {0xe6 , 0x03},   //exp level 2  12.5fps                 \r
119                 {0xe7 , 0x20},                                                                  \r
120                 {0xe8 , 0x04},   //exp level 3  8.33fps                 \r
121                 {0xe9 , 0xb0},                                                                  \r
122                 {0xea , 0x09},   //exp level 4  4.00fps                 \r
123                 {0xeb , 0xc4},                                                                  \r
124         \r
125                 //{0xec , 0x20},\r
126                    \r
127                 {0x05 , 0x00},                                                                  \r
128                 {0x06 , 0x00},                                                                  \r
129                 {0x07 , 0x00},                                                                  \r
130                 {0x08 , 0x00},                                                                  \r
131                 {0x09 , 0x01},                                                                  \r
132                 {0x0a , 0xe8},                                                                  \r
133                 {0x0b , 0x02},                                                                  \r
134                 {0x0c , 0x88},                                                                  \r
135                 {0x0d , 0x02},                                                                  \r
136                 {0x0e , 0x02},                                                                  \r
137                 {0x10 , 0x22},                                                                  \r
138                 {0x11 , 0xfd},                                                                  \r
139                 {0x12 , 0x2a},                                                                  \r
140                 {0x13 , 0x00},                                                                  \r
141                 {0x14 , 0x10},  //0x10\r
142                 //-------------H_V_Switch(4)---------------//\r
143                 /*      1:      // normal\r
144                                         {0x14 , 0x10},                  \r
145                         2:      // IMAGE_H_MIRROR\r
146                                         {0x14 , 0x11},\r
147                                         \r
148                         3:      // IMAGE_V_MIRROR\r
149                                         {0x14 , 0x12},\r
150                                         \r
151                         4:      // IMAGE_HV_MIRROR\r
152                                         {0x14 , 0x13},*/                                                                                \r
153                 {0x15 , 0x0a},                                                                  \r
154                 {0x16 , 0x05},                                                                  \r
155                 {0x17 , 0x01},                                                                  \r
156                 {0x18 , 0x44},                                                                  \r
157                 {0x19 , 0x44},                                                                  \r
158                 {0x1a , 0x1e},                                                                  \r
159                 {0x1b , 0x00},                                                                  \r
160                 {0x1c , 0xc1},                                                                  \r
161                 {0x1d , 0x08},                                                                  \r
162                 {0x1e , 0x60},                                                                  \r
163                 {0x1f , 0x17},                                                                  \r
164                                                                                                                                            \r
165                                                                                                                                                  \r
166                 {0x20 , 0xff},                                                                  \r
167                 {0x21 , 0xf8},                                                                  \r
168                 {0x22 , 0x57},                                                                  \r
169                 {0x24 , 0xa2},                                                                  \r
170                 {0x25 , 0x0f},                                                                  \r
171                                                                                                                                                  \r
172                 //output sync_mode                                                                                               \r
173                 {0x26 , 0x02},   //0x03  20101016 zhj                                                             \r
174                 {0x2f , 0x01},                                                                  \r
175                 {0x30 , 0xf7},                                                                  \r
176                 {0x31 , 0x50},\r
177                 {0x32 , 0x00},\r
178                 {0x39 , 0x04},\r
179                 {0x3a , 0x18},\r
180                 {0x3b , 0x20},                                                                  \r
181                 {0x3c , 0x00},                                                                  \r
182                 {0x3d , 0x00},                                                                  \r
183                 {0x3e , 0x00},                                                                  \r
184                 {0x3f , 0x00},                                                                  \r
185                 {0x50 , 0x10},                                                                  \r
186                 {0x53 , 0x82},                                                                  \r
187                 {0x54 , 0x80},                                                                  \r
188                 {0x55 , 0x80},                                                                  \r
189                 {0x56 , 0x82},                                                                  \r
190                 {0x8b , 0x40},                                                                  \r
191                 {0x8c , 0x40},                                                                  \r
192                 {0x8d , 0x40},                                                                  \r
193                 {0x8e , 0x2e},                                                                  \r
194                 {0x8f , 0x2e},                                                                  \r
195                 {0x90 , 0x2e},                                                                  \r
196                 {0x91 , 0x3c},                                                                  \r
197                 {0x92 , 0x50},                                                                  \r
198                 {0x5d , 0x12},                                                                  \r
199                 {0x5e , 0x1a},                                                                  \r
200                 {0x5f , 0x24},                                                                  \r
201                 {0x60 , 0x07},                                                                  \r
202                 {0x61 , 0x15},                                                                  \r
203                 {0x62 , 0x08},                                                                  \r
204                 {0x64 , 0x03},                                                                  \r
205                 {0x66 , 0xe8},                                                                  \r
206                 {0x67 , 0x86},                                                                  \r
207                 {0x68 , 0xa2},                                                                  \r
208                 {0x69 , 0x18},                                                                  \r
209                 {0x6a , 0x0f},                                                                  \r
210                 {0x6b , 0x00},                                                                  \r
211                 {0x6c , 0x5f},                                                                  \r
212                 {0x6d , 0x8f},                                                                  \r
213                 {0x6e , 0x55},                                                                  \r
214                 {0x6f , 0x38},                                                                  \r
215                 {0x70 , 0x15},                                                                  \r
216                 {0x71 , 0x33},                                                                  \r
217                 {0x72 , 0xdc},                                                                  \r
218                 {0x73 , 0x80},                                                                  \r
219                 {0x74 , 0x02},                                                                  \r
220                 {0x75 , 0x3f},                                                                  \r
221                 {0x76 , 0x02},                                                                  \r
222                 {0x77 , 0x36},                                                                  \r
223                 {0x78 , 0x88},                                                                  \r
224                 {0x79 , 0x81},                                                                  \r
225                 {0x7a , 0x81},                                                                  \r
226                 {0x7b , 0x22},                                                                  \r
227                 {0x7c , 0xff},                                                                  \r
228                 {0x93 , 0x48},                                                                  \r
229                 {0x94 , 0x00},                                                                  \r
230                 {0x95 , 0x05},                                                                  \r
231                 {0x96 , 0xe8},                                                                  \r
232                 {0x97 , 0x40},                                                                  \r
233                 {0x98 , 0xf0},                                                                  \r
234                 {0xb1 , 0x38},                                                                  \r
235                 {0xb2 , 0x38},                                                                  \r
236                 {0xbd , 0x38},                                                                  \r
237                 {0xbe , 0x36},                                                                  \r
238                 {0xd0 , 0xc9},                                                                  \r
239                 {0xd1 , 0x10},                                                                  \r
240                 //{0xd2 , 0x90},                                                                \r
241                 {0xd3 , 0x80},                                                                  \r
242                 {0xd5 , 0xf2},                                                                  \r
243                 {0xd6 , 0x16},                                                                  \r
244                 {0xdb , 0x92},                                                                  \r
245                 {0xdc , 0xa5},                                                                  \r
246                 {0xdf , 0x23},                                                                  \r
247                 {0xd9 , 0x00},                                                                  \r
248                 {0xda , 0x00},                                                                  \r
249                 {0xe0 , 0x09},                                                                  \r
250                                                                    \r
251                 {0xed , 0x04},                                                                  \r
252                 {0xee , 0xa0},                                                                  \r
253                 {0xef , 0x40},                                                                  \r
254                 {0x80 , 0x03},                                                                  \r
255                 {0x80 , 0x03},                                                                  \r
256                 {0x9F , 0x10},                                                                  \r
257                 {0xA0 , 0x20},                                                                  \r
258                 {0xA1 , 0x38},                                                                  \r
259                 {0xA2 , 0x4E},                                                                  \r
260                 {0xA3 , 0x63},                                                                  \r
261                 {0xA4 , 0x76},                                                                  \r
262                 {0xA5 , 0x87},                                                                  \r
263                 {0xA6 , 0xA2},                                                                  \r
264                 {0xA7 , 0xB8},                                                                  \r
265                 {0xA8 , 0xCA},                                                                  \r
266                 {0xA9 , 0xD8},                                                                  \r
267                 {0xAA , 0xE3},                                                                  \r
268                 {0xAB , 0xEB},                                                                  \r
269                 {0xAC , 0xF0},                                                                  \r
270                 {0xAD , 0xF8},                                                                  \r
271                 {0xAE , 0xFD},                                                                  \r
272                 {0xAF , 0xFF},                                                                  \r
273                  /*GC0308_GAMMA_Select,\r
274                         1:                                                                                         //smallest gamma curve\r
275                                 {0x9F , 0x0B},\r
276                                 {0xA0 , 0x16},\r
277                                 {0xA1 , 0x29},\r
278                                 {0xA2 , 0x3C},\r
279                                 {0xA3 , 0x4F},\r
280                                 {0xA4 , 0x5F},\r
281                                 {0xA5 , 0x6F},\r
282                                 {0xA6 , 0x8A},\r
283                                 {0xA7 , 0x9F},\r
284                                 {0xA8 , 0xB4}, \r
285                                 {0xA9 , 0xC6},\r
286                                 {0xAA , 0xD3},\r
287                                 {0xAB , 0xDD},\r
288                                 {0xAC , 0xE5},\r
289                                 {0xAD , 0xF1},\r
290                                 {0xAE , 0xFA},\r
291                                 {0xAF , 0xFF},  \r
292                                 \r
293                         2:                      \r
294                                 {0x9F , 0x0E},\r
295                                 {0xA0 , 0x1C},\r
296                                 {0xA1 , 0x34},\r
297                                 {0xA2 , 0x48},\r
298                                 {0xA3 , 0x5A},\r
299                                 {0xA4 , 0x6B},\r
300                                 {0xA5 , 0x7B},\r
301                                 {0xA6 , 0x95},\r
302                                 {0xA7 , 0xAB},\r
303                                 {0xA8 , 0xBF},\r
304                                 {0xA9 , 0xCE},\r
305                                 {0xAA , 0xD9},\r
306                                 {0xAB , 0xE4},\r
307                                 {0xAC , 0xEC},\r
308                                 {0xAD , 0xF7},\r
309                                 {0xAE , 0xFD},\r
310                                 {0xAF , 0xFF},\r
311                                 \r
312                         3:\r
313                                 {0x9F , 0x10},\r
314                                 {0xA0 , 0x20},\r
315                                 {0xA1 , 0x38},\r
316                                 {0xA2 , 0x4E},\r
317                                 {0xA3 , 0x63},\r
318                                 {0xA4 , 0x76},\r
319                                 {0xA5 , 0x87},\r
320                                 {0xA6 , 0xA2},\r
321                                 {0xA7 , 0xB8},\r
322                                 {0xA8 , 0xCA},\r
323                                 {0xA9 , 0xD8},\r
324                                 {0xAA , 0xE3},\r
325                                 {0xAB , 0xEB},\r
326                                 {0xAC , 0xF0},\r
327                                 {0xAD , 0xF8},\r
328                                 {0xAE , 0xFD},\r
329                                 {0xAF , 0xFF},\r
330         \r
331                         4:\r
332                                 {0x9F , 0x14},\r
333                                 {0xA0 , 0x28},\r
334                                 {0xA1 , 0x44},\r
335                                 {0xA2 , 0x5D},\r
336                                 {0xA3 , 0x72},\r
337                                 {0xA4 , 0x86},\r
338                                 {0xA5 , 0x95},\r
339                                 {0xA6 , 0xB1},\r
340                                 {0xA7 , 0xC6},\r
341                                 {0xA8 , 0xD5},\r
342                                 {0xA9 , 0xE1},\r
343                                 {0xAA , 0xEA},\r
344                                 {0xAB , 0xF1},\r
345                                 {0xAC , 0xF5},\r
346                                 {0xAD , 0xFB},\r
347                                 {0xAE , 0xFE},\r
348                                 {0xAF , 0xFF},\r
349                                 \r
350                         5:                                                              //largest gamma curve\r
351                                 {0x9F , 0x15},\r
352                                 {0xA0 , 0x2A},\r
353                                 {0xA1 , 0x4A},\r
354                                 {0xA2 , 0x67},\r
355                                 {0xA3 , 0x79},\r
356                                 {0xA4 , 0x8C},\r
357                                 {0xA5 , 0x9A},\r
358                                 {0xA6 , 0xB3},\r
359                                 {0xA7 , 0xC5},\r
360                                 {0xA8 , 0xD5},\r
361                                 {0xA9 , 0xDF},\r
362                                 {0xAA , 0xE8},\r
363                                 {0xAB , 0xEE},\r
364                                 {0xAC , 0xF3},\r
365                                 {0xAD , 0xFA},\r
366                                 {0xAE , 0xFD},\r
367                                 {0xAF , 0xFF}, */\r
368                 //-----------GAMMA Select End--------------//\r
369                                                                         \r
370                 {0xc0 , 0x00},                                                                  \r
371                 {0xc1 , 0x10},                                                                  \r
372                 {0xc2 , 0x1C},                                                                  \r
373                 {0xc3 , 0x30},                                                                  \r
374                 {0xc4 , 0x43},                                                                  \r
375                 {0xc5 , 0x54},                                                                  \r
376                 {0xc6 , 0x65},                                                                  \r
377                 {0xc7 , 0x75},                                                                  \r
378                 {0xc8 , 0x93},                                                                  \r
379                 {0xc9 , 0xB0},                                                                  \r
380                 {0xca , 0xCB},                                                                  \r
381                 {0xcb , 0xE6},                                                                  \r
382                 {0xcc , 0xFF},                                                                  \r
383                 {0xf0 , 0x02},                                                                  \r
384                 {0xf1 , 0x01},                                                                  \r
385                 {0xf2 , 0x01},                                                                  \r
386                 {0xf3 , 0x30},                                                                  \r
387                 {0xf9 , 0x9f},                                                                  \r
388                 {0xfa , 0x78},                                                                  \r
389                                                                                                                                            \r
390                 //---------------------------------------------------------------\r
391                 {0xfe , 0x01},// set page1                                                                                        \r
392                                                                                                                                            \r
393                 {0x00 , 0xf5},                                                                  \r
394                 {0x02 , 0x1a},                                                                  \r
395                 {0x0a , 0xa0},                                                                  \r
396                 {0x0b , 0x60},                                                                  \r
397                 {0x0c , 0x08},                                                                  \r
398                 {0x0e , 0x4c},                                                                  \r
399                 {0x0f , 0x39},                                                                  \r
400                 {0x11 , 0x3f},                                                                  \r
401                 {0x12 , 0x72},                                                                  \r
402                 {0x13 , 0x13},                                                                  \r
403                 {0x14 , 0x42},                                                                  \r
404                 {0x15 , 0x43},                                                                  \r
405                 {0x16 , 0xc2},                                                                  \r
406                 {0x17 , 0xa8},                                                                  \r
407                 {0x18 , 0x18},                                                                  \r
408                 {0x19 , 0x40},                                                                  \r
409                 {0x1a , 0xd0},                                                                  \r
410                 {0x1b , 0xf5},                                                                  \r
411                 {0x70 , 0x40},                                                                  \r
412                 {0x71 , 0x58},                                                                  \r
413                 {0x72 , 0x30},                                                                  \r
414                 {0x73 , 0x48},                                                                  \r
415                 {0x74 , 0x20},                                                                  \r
416                 {0x75 , 0x60},                                                                  \r
417                 {0x77 , 0x20},                                                                  \r
418                 {0x78 , 0x32},                                                                  \r
419                 {0x30 , 0x03},                                                                  \r
420                 {0x31 , 0x40},                                                                  \r
421                 {0x32 , 0xe0},                                                                  \r
422                 {0x33 , 0xe0},                                                                  \r
423                 {0x34 , 0xe0},                                                                  \r
424                 {0x35 , 0xb0},                                                                  \r
425                 {0x36 , 0xc0},                                                                  \r
426                 {0x37 , 0xc0},                                                                  \r
427                 {0x38 , 0x04},                                                                  \r
428                 {0x39 , 0x09},                                                                  \r
429                 {0x3a , 0x12},                                                                  \r
430                 {0x3b , 0x1C},                                                                  \r
431                 {0x3c , 0x28},                                                                  \r
432                 {0x3d , 0x31},                                                                  \r
433                 {0x3e , 0x44},                                                                  \r
434                 {0x3f , 0x57},                                                                  \r
435                 {0x40 , 0x6C},                                                                  \r
436                 {0x41 , 0x81},                                                                  \r
437                 {0x42 , 0x94},                                                                  \r
438                 {0x43 , 0xA7},                                                                  \r
439                 {0x44 , 0xB8},                                                                  \r
440                 {0x45 , 0xD6},                                                                  \r
441                 {0x46 , 0xEE},                                                                  \r
442                 {0x47 , 0x0d},                                                                  \r
443                 {0xfe , 0x00}, // set page0\r
444                  \r
445                 //-----------Update the registers 2010/07/06-------------//\r
446                 //Registers of Page0\r
447                 {0xfe , 0x00}, // set page0\r
448                 {0x10 , 0x26},                                                             \r
449                 {0x11 , 0x0d},  // fd,modified by mormo 2010/07/06                                                               \r
450                 {0x1a , 0x2a},  // 1e,modified by mormo 2010/07/06                                                                      \r
451         \r
452                 {0x1c , 0x49}, // c1,modified by mormo 2010/07/06                                                                 \r
453                 {0x1d , 0x9a}, // 08,modified by mormo 2010/07/06                                                                 \r
454                 {0x1e , 0x61}, // 60,modified by mormo 2010/07/06                                                                 \r
455         \r
456                 {0x3a , 0x20},\r
457         \r
458                 {0x50 , 0x14},  // 10,modified by mormo 2010/07/06                                                               \r
459                 {0x53 , 0x80},                                                                  \r
460                 {0x56 , 0x80},\r
461                 \r
462                 {0x8b , 0x20}, //LSC                                                             \r
463                 {0x8c , 0x20},                                                                  \r
464                 {0x8d , 0x20},                                                                  \r
465                 {0x8e , 0x14},                                                                  \r
466                 {0x8f , 0x10},                                                                  \r
467                 {0x90 , 0x14},                                                                  \r
468         \r
469                 {0x94 , 0x02},                                                                  \r
470                 {0x95 , 0x07},                                                                  \r
471                 {0x96 , 0xe0},                                                                  \r
472         \r
473                 {0xb1 , 0x40}, // YCPT                                                             \r
474                 {0xb2 , 0x40},                                                                  \r
475                 {0xb3 , 0x40},\r
476                 {0xb6 , 0xe0},\r
477         \r
478                 {0xd0 , 0xcb}, // AECT  c9,modifed by mormo 2010/07/06                                                            \r
479                 {0xd3 , 0x48}, // 80,modified by mormor 2010/07/06                                                       \r
480         \r
481                 {0xf2 , 0x02},                                                                  \r
482                 {0xf7 , 0x12},\r
483                 {0xf8 , 0x0a},\r
484         \r
485                 //Registers of Page1\r
486                 {0xfe , 0x01},// set page1        \r
487                 {0x02 , 0x20},\r
488                 {0x04 , 0x10},\r
489                 {0x05 , 0x08},\r
490                 {0x06 , 0x20},\r
491                 {0x08 , 0x0a},\r
492         \r
493                 {0x0e , 0x44},                                                                  \r
494                 {0x0f , 0x32},\r
495                 {0x10 , 0x41},                                                                  \r
496                 {0x11 , 0x37},                                                                  \r
497                 {0x12 , 0x22},                                                                  \r
498                 {0x13 , 0x19},                                                                  \r
499                 {0x14 , 0x44},                                                                  \r
500                 {0x15 , 0x44},  \r
501                 \r
502                 {0x19 , 0x50},                                                                  \r
503                 {0x1a , 0xd8}, \r
504                 \r
505                 {0x32 , 0x10}, \r
506                 \r
507                 {0x35 , 0x00},                                                                  \r
508                 {0x36 , 0x80},                                                                  \r
509                 {0x37 , 0x00}, \r
510                 //-----------Update the registers end---------//\r
511         \r
512         \r
513                 {0xfe , 0x00}, // set page0\r
514                 {0xd2 , 0x90},  \r
515         SensorEnd\r
516 };\r
517 /* Senor full resolution setting: recommand for capture */\r
518 static struct rk_sensor_reg sensor_fullres_lowfps_data[] ={\r
519         SensorEnd\r
520 \r
521 };\r
522 \r
523 /* Senor full resolution setting: recommand for video */\r
524 static struct rk_sensor_reg sensor_fullres_highfps_data[] ={\r
525         SensorEnd\r
526 };\r
527 /* Preview resolution setting*/\r
528 static struct rk_sensor_reg sensor_preview_data[] =\r
529 {\r
530 \r
531         SensorEnd\r
532 };\r
533 /* 1280x720 */\r
534 static struct rk_sensor_reg sensor_720p[]={\r
535         SensorEnd\r
536 };\r
537 \r
538 /* 1920x1080 */\r
539 static struct rk_sensor_reg sensor_1080p[]={\r
540         SensorEnd\r
541 };\r
542 \r
543 \r
544 static struct rk_sensor_reg sensor_softreset_data[]={\r
545         SensorEnd\r
546 };\r
547 \r
548 static struct rk_sensor_reg sensor_check_id_data[]={\r
549         SensorRegVal(0x00,0),\r
550         SensorEnd\r
551 };\r
552 /*\r
553 *  The following setting must been filled, if the function is turn on by CONFIG_SENSOR_xxxx\r
554 */\r
555 static struct rk_sensor_reg sensor_WhiteB_Auto[]=\r
556 {\r
557         {0x5a, 0x4c}, \r
558         {0x5b, 0x40},\r
559         {0x5c, 0x4a},\r
560         {0x22, 0x57},\r
561         SensorEnd\r
562 };\r
563 /* Cloudy Colour Temperature : 6500K - 8000K  */\r
564 static  struct rk_sensor_reg sensor_WhiteB_Cloudy[]=\r
565 {\r
566         {0x22, 0x55},   // Disable AWB \r
567         {0x5a, 0x5a},\r
568         {0x5b, 0x42},\r
569         {0x5c, 0x40},\r
570         SensorEnd\r
571 };\r
572 /* ClearDay Colour Temperature : 5000K - 6500K  */\r
573 static  struct rk_sensor_reg sensor_WhiteB_ClearDay[]=\r
574 {\r
575         //Sunny\r
576         {0x22, 0x55},   // Disable AWB \r
577         {0x5a, 0x50},\r
578         {0x5b, 0x45},\r
579         {0x5c, 0x40},\r
580         SensorEnd\r
581 };\r
582 /* Office Colour Temperature : 3500K - 5000K  */\r
583 static  struct rk_sensor_reg sensor_WhiteB_TungstenLamp1[]=\r
584 {\r
585         //Office\r
586         {0x22, 0x55},    // Disable AWB \r
587         {0x5a, 0x48},\r
588         {0x5b, 0x40},\r
589         {0x5c, 0x5c},\r
590         SensorEnd\r
591 \r
592 };\r
593 /* Home Colour Temperature : 2500K - 3500K      */\r
594 static  struct rk_sensor_reg sensor_WhiteB_TungstenLamp2[]=\r
595 {\r
596         //Home\r
597         {0x22, 0x55},   // Disable AWB \r
598         {0x5a, 0x40},\r
599         {0x5b, 0x42}, \r
600         {0x5c, 0x50},\r
601         SensorEnd\r
602 };\r
603 static struct rk_sensor_reg *sensor_WhiteBalanceSeqe[] = {sensor_WhiteB_Auto, sensor_WhiteB_TungstenLamp1,sensor_WhiteB_TungstenLamp2,\r
604         sensor_WhiteB_ClearDay, sensor_WhiteB_Cloudy,NULL,\r
605 };\r
606 \r
607 static  struct rk_sensor_reg sensor_Brightness0[]=\r
608 {\r
609         // Brightness -2\r
610         {0xb5, 0xe0},\r
611         SensorEnd\r
612 };\r
613 \r
614 static  struct rk_sensor_reg sensor_Brightness1[]=\r
615 {\r
616         // Brightness -1\r
617         {0xb5, 0xf0},\r
618 \r
619         SensorEnd\r
620 };\r
621 \r
622 static  struct rk_sensor_reg sensor_Brightness2[]=\r
623 {\r
624         //      Brightness 0\r
625         {0xb5, 0x00},\r
626 \r
627         SensorEnd\r
628 };\r
629 \r
630 static  struct rk_sensor_reg sensor_Brightness3[]=\r
631 {\r
632         // Brightness +1\r
633         {0xb5, 0x20},\r
634 \r
635         SensorEnd\r
636 };\r
637 \r
638 static  struct rk_sensor_reg sensor_Brightness4[]=\r
639 {\r
640         //      Brightness +2\r
641         {0xb5, 0x30},\r
642 \r
643         SensorEnd\r
644 };\r
645 \r
646 static  struct rk_sensor_reg sensor_Brightness5[]=\r
647 {\r
648         //      Brightness +3\r
649         {0xb5, 0x40},\r
650 \r
651         SensorEnd\r
652 };\r
653 static struct rk_sensor_reg *sensor_BrightnessSeqe[] = {sensor_Brightness0, sensor_Brightness1, sensor_Brightness2, sensor_Brightness3,\r
654         sensor_Brightness4, sensor_Brightness5,NULL,\r
655 };\r
656 \r
657 static  struct rk_sensor_reg sensor_Effect_Normal[] =\r
658 {\r
659         {0x23,0x00}, \r
660         {0x2d,0x0a}, \r
661         {0x20,0x7f}, \r
662         {0xd2,0x90}, \r
663         {0x73,0x00}, \r
664         {0x77,0x38},\r
665         {0xb3,0x40}, \r
666         {0xb4,0x80}, \r
667         {0xba,0x00}, \r
668         {0xbb,0x00},\r
669         SensorEnd\r
670 };\r
671 \r
672 static  struct rk_sensor_reg sensor_Effect_WandB[] =\r
673 {\r
674         {0x23,0x02}, \r
675         {0x2d,0x0a}, \r
676         {0x20,0x7f}, \r
677         {0xd2,0x90}, \r
678         {0x73,0x00}, \r
679         {0xb3,0x40},\r
680         {0xb4,0x80}, \r
681         {0xba,0x00}, \r
682         {0xbb,0x00}, \r
683         SensorEnd\r
684 };\r
685 \r
686 static  struct rk_sensor_reg sensor_Effect_Sepia[] =\r
687 {\r
688         {0x23,0x02},\r
689         {0x2d,0x0a},\r
690         {0x20,0x7f},\r
691         {0xd2,0x90},\r
692         {0x73,0x00},\r
693         {0xb3,0x40},\r
694         {0xb4,0x80},\r
695         {0xba,0xd2},\r
696         {0xbb,0x28},\r
697         SensorEnd\r
698 };\r
699 \r
700 static  struct rk_sensor_reg sensor_Effect_Negative[] =\r
701 {\r
702         //Negative\r
703         {0x23,0x01},\r
704         {0x2d,0x0a},\r
705         {0x20,0x7f},\r
706         {0xd2,0x90},\r
707         {0x73,0x00},\r
708         {0xb3,0x40},\r
709         {0xb4,0x80},\r
710         {0xba,0x00},\r
711         {0xbb,0x00},\r
712         SensorEnd\r
713 };\r
714 static  struct rk_sensor_reg sensor_Effect_Bluish[] =\r
715 {\r
716         // Bluish\r
717         {0x23,0x02},\r
718         {0x2d,0x0a},\r
719         {0x20,0x7f},\r
720         {0xd2,0x90},\r
721         {0x73,0x00},\r
722         {0xb3,0x40},\r
723         {0xb4,0x80},\r
724         {0xba,0x50},\r
725         {0xbb,0xe0},\r
726         SensorEnd\r
727 };\r
728 \r
729 static  struct rk_sensor_reg sensor_Effect_Green[] =\r
730 {\r
731         //      Greenish\r
732         {0x23,0x02},\r
733         {0x2d,0x0a},\r
734         {0x20,0x7f},\r
735         {0xd2,0x90},\r
736         {0x77,0x88},\r
737         {0xb3,0x40},\r
738         {0xb4,0x80},\r
739         {0xba,0xc0},\r
740         {0xbb,0xc0},\r
741         SensorEnd\r
742 };\r
743 static struct rk_sensor_reg *sensor_EffectSeqe[] = {sensor_Effect_Normal, sensor_Effect_WandB, sensor_Effect_Negative,sensor_Effect_Sepia,\r
744         sensor_Effect_Bluish, sensor_Effect_Green,NULL,\r
745 };\r
746 \r
747 static  struct rk_sensor_reg sensor_Exposure0[]=\r
748 {\r
749         {0xd3, 0x30},\r
750 \r
751         SensorEnd\r
752 };\r
753 \r
754 static  struct rk_sensor_reg sensor_Exposure1[]=\r
755 {\r
756         {0xd3, 0x38},\r
757         SensorEnd\r
758 };\r
759 \r
760 static  struct rk_sensor_reg sensor_Exposure2[]=\r
761 {\r
762         {0xd3, 0x40},\r
763         SensorEnd\r
764 };\r
765 \r
766 static  struct rk_sensor_reg sensor_Exposure3[]=\r
767 {\r
768         {0xd3, 0x48},\r
769         SensorEnd\r
770 };\r
771 \r
772 static  struct rk_sensor_reg sensor_Exposure4[]=\r
773 {\r
774         {0xd3, 0x50},\r
775         SensorEnd\r
776 };\r
777 \r
778 static  struct rk_sensor_reg sensor_Exposure5[]=\r
779 {\r
780         {0xd3, 0x58},\r
781 \r
782         SensorEnd\r
783 };\r
784 \r
785 static  struct rk_sensor_reg sensor_Exposure6[]=\r
786 {\r
787         {0xd3, 0x60},\r
788         SensorEnd\r
789 };\r
790 \r
791 static struct rk_sensor_reg *sensor_ExposureSeqe[] = {sensor_Exposure0, sensor_Exposure1, sensor_Exposure2, sensor_Exposure3,\r
792         sensor_Exposure4, sensor_Exposure5,sensor_Exposure6,NULL,\r
793 };\r
794 \r
795 static  struct rk_sensor_reg sensor_Saturation0[]=\r
796 {\r
797         SensorEnd\r
798 };\r
799 \r
800 static  struct rk_sensor_reg sensor_Saturation1[]=\r
801 {\r
802         SensorEnd\r
803 };\r
804 \r
805 static  struct rk_sensor_reg sensor_Saturation2[]=\r
806 {\r
807         SensorEnd\r
808 };\r
809 static struct rk_sensor_reg *sensor_SaturationSeqe[] = {sensor_Saturation0, sensor_Saturation1, sensor_Saturation2, NULL,};\r
810 \r
811 static  struct rk_sensor_reg sensor_Contrast0[]=\r
812 {\r
813         {0xb3,0x34},\r
814 \r
815         SensorEnd\r
816 };\r
817 \r
818 static  struct rk_sensor_reg sensor_Contrast1[]=\r
819 {\r
820         {0xb3,0x38},\r
821 \r
822         SensorEnd\r
823 };\r
824 \r
825 static  struct rk_sensor_reg sensor_Contrast2[]=\r
826 {\r
827         {0xb3,0x3d},\r
828 \r
829         SensorEnd\r
830 };\r
831 \r
832 static  struct rk_sensor_reg sensor_Contrast3[]=\r
833 {\r
834         {0xb3,0x40},\r
835 \r
836         SensorEnd\r
837 };\r
838 \r
839 static  struct rk_sensor_reg sensor_Contrast4[]=\r
840 {\r
841         {0xb3,0x44},\r
842 \r
843         SensorEnd\r
844 };\r
845 \r
846 \r
847 static  struct rk_sensor_reg sensor_Contrast5[]=\r
848 {\r
849         {0xb3,0x48},\r
850 \r
851         SensorEnd\r
852 };\r
853 \r
854 static  struct rk_sensor_reg sensor_Contrast6[]=\r
855 {\r
856         {0xb3,0x50},\r
857 \r
858         SensorEnd\r
859 };\r
860 static struct rk_sensor_reg *sensor_ContrastSeqe[] = {sensor_Contrast0, sensor_Contrast1, sensor_Contrast2, sensor_Contrast3,\r
861         sensor_Contrast4, sensor_Contrast5, sensor_Contrast6, NULL,\r
862 };\r
863 static  struct rk_sensor_reg sensor_SceneAuto[] =\r
864 {\r
865         {0xec, 0x00},\r
866         SensorEnd\r
867 };\r
868 \r
869 static  struct rk_sensor_reg sensor_SceneNight[] =\r
870 {\r
871         {0xec, 0x30},\r
872         SensorEnd\r
873 };\r
874 static struct rk_sensor_reg *sensor_SceneSeqe[] = {sensor_SceneAuto, sensor_SceneNight,NULL,};\r
875 \r
876 static struct rk_sensor_reg sensor_Zoom0[] =\r
877 {\r
878         SensorEnd\r
879 };\r
880 \r
881 static struct rk_sensor_reg sensor_Zoom1[] =\r
882 {\r
883         SensorEnd\r
884 };\r
885 \r
886 static struct rk_sensor_reg sensor_Zoom2[] =\r
887 {\r
888         SensorEnd\r
889 };\r
890 \r
891 \r
892 static struct rk_sensor_reg sensor_Zoom3[] =\r
893 {\r
894         SensorEnd\r
895 };\r
896 static struct rk_sensor_reg *sensor_ZoomSeqe[] = {sensor_Zoom0, sensor_Zoom1, sensor_Zoom2, sensor_Zoom3, NULL,};\r
897 \r
898 /*\r
899 * User could be add v4l2_querymenu in sensor_controls by new_usr_v4l2menu\r
900 */\r
901 static struct v4l2_querymenu sensor_menus[] =\r
902 {\r
903 };\r
904 /*\r
905 * User could be add v4l2_queryctrl in sensor_controls by new_user_v4l2ctrl\r
906 */\r
907 static struct sensor_v4l2ctrl_usr_s sensor_controls[] =\r
908 {\r
909 };\r
910 \r
911 //MUST define the current used format as the first item   \r
912 static struct rk_sensor_datafmt sensor_colour_fmts[] = {\r
913         {V4L2_MBUS_FMT_YUYV8_2X8, V4L2_COLORSPACE_JPEG} \r
914 };\r
915 /*static struct soc_camera_ops sensor_ops;*/\r
916 \r
917 \r
918 /*\r
919 **********************************************************\r
920 * Following is local code:\r
921\r
922 * Please codeing your program here \r
923 **********************************************************\r
924 */\r
925 /*\r
926 **********************************************************\r
927 * Following is callback\r
928 * If necessary, you could coding these callback\r
929 **********************************************************\r
930 */\r
931 /*\r
932 * the function is called in open sensor  \r
933 */\r
934 static int sensor_activate_cb(struct i2c_client *client)\r
935 {\r
936         \r
937         return 0;\r
938 }\r
939 /*\r
940 * the function is called in close sensor\r
941 */\r
942 static int sensor_deactivate_cb(struct i2c_client *client)\r
943 {\r
944         \r
945         return 0;\r
946 }\r
947 /*\r
948 * the function is called before sensor register setting in VIDIOC_S_FMT  \r
949 */\r
950 static int sensor_s_fmt_cb_th(struct i2c_client *client,struct v4l2_mbus_framefmt *mf, bool capture)\r
951 {\r
952 \r
953         return 0;\r
954 }\r
955 /*\r
956 * the function is called after sensor register setting finished in VIDIOC_S_FMT  \r
957 */\r
958 static int sensor_s_fmt_cb_bh (struct i2c_client *client,struct v4l2_mbus_framefmt *mf, bool capture)\r
959 {\r
960         return 0;\r
961 }\r
962 static int sensor_try_fmt_cb_th(struct i2c_client *client,struct v4l2_mbus_framefmt *mf)\r
963 {\r
964         return 0;\r
965 }\r
966 \r
967 static int sensor_softrest_usr_cb(struct i2c_client *client,struct rk_sensor_reg *series)\r
968 {\r
969         \r
970         return 0;\r
971 }\r
972 static int sensor_check_id_usr_cb(struct i2c_client *client,struct rk_sensor_reg *series)\r
973 {\r
974         return 0;\r
975 }\r
976 static int sensor_suspend(struct soc_camera_device *icd, pm_message_t pm_msg)\r
977 {\r
978         //struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));\r
979                 \r
980         if (pm_msg.event == PM_EVENT_SUSPEND) {\r
981                 SENSOR_DG("Suspend");\r
982                 \r
983         } else {\r
984                 SENSOR_TR("pm_msg.event(0x%x) != PM_EVENT_SUSPEND\n",pm_msg.event);\r
985                 return -EINVAL;\r
986         }\r
987         return 0;\r
988 }\r
989 \r
990 static int sensor_resume(struct soc_camera_device *icd)\r
991 {\r
992 \r
993         SENSOR_DG("Resume");\r
994 \r
995         return 0;\r
996 \r
997 }\r
998 static int sensor_mirror_cb (struct i2c_client *client, int mirror)\r
999 {\r
1000         char val;\r
1001         int err = 0;\r
1002         \r
1003         SENSOR_DG("mirror: %d",mirror);\r
1004         if (mirror) {\r
1005                 \r
1006                 //{0xfe , 0x00}, // set page0\r
1007                 \r
1008                 //{0x14 , 0x13},        //0x10\r
1009                 //-------------H_V_Switch(4)---------------//\r
1010                 /*      1:      // normal\r
1011                                         {0x14 , 0x10},                  \r
1012                         2:      // IMAGE_H_MIRROR\r
1013                                         {0x14 , 0x11},\r
1014                                         \r
1015                         3:      // IMAGE_V_MIRROR\r
1016                                         {0x14 , 0x12},\r
1017                                         \r
1018                         4:      // IMAGE_HV_MIRROR\r
1019                                         {0x14 , 0x13},*/                                                                                \r
1020                 sensor_write(client, 0xfe, 0);\r
1021                 err = sensor_read(client, 0x14, &val);\r
1022                 if (err == 0) {\r
1023                         if((val & 0x1) == 0)\r
1024                                 err = sensor_write(client, 0x14, (val |0x1));\r
1025                         else \r
1026                                 err = sensor_write(client, 0x14, (val & 0xfe));\r
1027                 }\r
1028         } else {\r
1029                 //do nothing\r
1030         }\r
1031 \r
1032         return err;    \r
1033 }\r
1034 /*\r
1035 * the function is v4l2 control V4L2_CID_HFLIP callback  \r
1036 */\r
1037 static int sensor_v4l2ctrl_mirror_cb(struct soc_camera_device *icd, struct sensor_v4l2ctrl_info_s *ctrl_info, \r
1038                                                                                                          struct v4l2_ext_control *ext_ctrl)\r
1039 {\r
1040         struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));\r
1041 \r
1042         if (sensor_mirror_cb(client,ext_ctrl->value) != 0)\r
1043                 SENSOR_TR("sensor_mirror failed, value:0x%x",ext_ctrl->value);\r
1044         \r
1045         SENSOR_DG("sensor_mirror success, value:0x%x",ext_ctrl->value);\r
1046         return 0;\r
1047 }\r
1048 \r
1049 static int sensor_flip_cb(struct i2c_client *client, int flip)\r
1050 {\r
1051         char val;\r
1052         int err = 0;    \r
1053 \r
1054         SENSOR_DG("flip: %d",flip);\r
1055         if (flip) {\r
1056                 \r
1057                 //{0xfe , 0x00}, // set page0\r
1058                 \r
1059                 //{0x14 , 0x13},        //0x10\r
1060                 //-------------H_V_Switch(4)---------------//\r
1061                 /*      1:      // normal\r
1062                                         {0x14 , 0x10},                  \r
1063                         2:      // IMAGE_H_MIRROR\r
1064                                         {0x14 , 0x11},\r
1065                                         \r
1066                         3:      // IMAGE_V_MIRROR\r
1067                                         {0x14 , 0x12},\r
1068                                         \r
1069                         4:      // IMAGE_HV_MIRROR\r
1070                                         {0x14 , 0x13},*/        \r
1071                 sensor_write(client, 0xfe, 0);\r
1072                 err = sensor_read(client, 0x14, &val);\r
1073                 if (err == 0) {\r
1074                         if((val & 0x2) == 0)\r
1075                                 err = sensor_write(client, 0x14, (val |0x2));\r
1076                         else \r
1077                                 err = sensor_write(client, 0x14, (val & 0xfc));\r
1078                 }\r
1079         } else {\r
1080                 //do nothing\r
1081         }\r
1082 \r
1083         return err;    \r
1084 }\r
1085 /*\r
1086 * the function is v4l2 control V4L2_CID_VFLIP callback  \r
1087 */\r
1088 static int sensor_v4l2ctrl_flip_cb(struct soc_camera_device *icd, struct sensor_v4l2ctrl_info_s *ctrl_info, \r
1089                                                                                                          struct v4l2_ext_control *ext_ctrl)\r
1090 {\r
1091         struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));\r
1092 \r
1093         if (sensor_flip_cb(client,ext_ctrl->value) != 0)\r
1094                 SENSOR_TR("sensor_flip failed, value:0x%x",ext_ctrl->value);\r
1095         \r
1096         SENSOR_DG("sensor_flip success, value:0x%x",ext_ctrl->value);\r
1097         return 0;\r
1098 }\r
1099 /*\r
1100 * the functions are focus callbacks\r
1101 */\r
1102 static int sensor_focus_init_usr_cb(struct i2c_client *client){\r
1103         return 0;\r
1104 }\r
1105 \r
1106 static int sensor_focus_af_single_usr_cb(struct i2c_client *client){\r
1107         return 0;\r
1108 }\r
1109 \r
1110 static int sensor_focus_af_near_usr_cb(struct i2c_client *client){\r
1111         return 0;\r
1112 }\r
1113 \r
1114 static int sensor_focus_af_far_usr_cb(struct i2c_client *client){\r
1115         return 0;\r
1116 }\r
1117 \r
1118 static int sensor_focus_af_specialpos_usr_cb(struct i2c_client *client,int pos){\r
1119         return 0;\r
1120 }\r
1121 \r
1122 static int sensor_focus_af_const_usr_cb(struct i2c_client *client){\r
1123         return 0;\r
1124 }\r
1125 static int sensor_focus_af_const_pause_usr_cb(struct i2c_client *client)
1126 {
1127     return 0;
1128 }\r
1129 static int sensor_focus_af_close_usr_cb(struct i2c_client *client){\r
1130         return 0;\r
1131 }\r
1132 \r
1133 static int sensor_focus_af_zoneupdate_usr_cb(struct i2c_client *client, int *zone_tm_pos)\r
1134 {\r
1135     return 0;\r
1136 }\r
1137 \r
1138 /*\r
1139 face defect call back\r
1140 */\r
1141 static int      sensor_face_detect_usr_cb(struct i2c_client *client,int on){\r
1142         return 0;\r
1143 }\r
1144 \r
1145 /*\r
1146 *       The function can been run in sensor_init_parametres which run in sensor_probe, so user can do some\r
1147 * initialization in the function. \r
1148 */\r
1149 static void sensor_init_parameters_user(struct specific_sensor* spsensor,struct soc_camera_device *icd)\r
1150 {\r
1151         return;\r
1152 }\r
1153 \r
1154 /*\r
1155 * :::::WARNING:::::\r
1156 * It is not allowed to modify the following code\r
1157 */\r
1158 \r
1159 sensor_init_parameters_default_code();\r
1160 \r
1161 sensor_v4l2_struct_initialization();\r
1162 \r
1163 sensor_probe_default_code();\r
1164 \r
1165 sensor_remove_default_code();\r
1166 \r
1167 sensor_driver_default_module_code();\r
1168 \r
1169 \r
1170 \r