rk3026: i2s add several attempts to double confirm i2s frac effect
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-rk3026 / board-rk3028a-86v-camera.c
1 #ifdef CONFIG_VIDEO_RK29
2 #include <plat/rk_camera.h>
3 /* Notes:
4
5 Simple camera device registration:
6
7        new_camera_device(sensor_name,\       // sensor name, it is equal to CONFIG_SENSOR_X
8                           face,\              // sensor face information, it can be back or front
9                           pwdn_io,\           // power down gpio configuration, it is equal to CONFIG_SENSOR_POWERDN_PIN_XX
10                           flash_attach,\      // sensor is attach flash or not
11                           mir,\               // sensor image mirror and flip control information
12                           i2c_chl,\           // i2c channel which the sensor attached in hardware, it is equal to CONFIG_SENSOR_IIC_ADAPTER_ID_X
13                           cif_chl)  \         // cif channel which the sensor attached in hardware, it is equal to CONFIG_SENSOR_CIF_INDEX_X
14
15 Comprehensive camera device registration:
16
17       new_camera_device_ex(sensor_name,\
18                              face,\
19                              ori,\            // sensor orientation, it is equal to CONFIG_SENSOR_ORIENTATION_X
20                              pwr_io,\         // sensor power gpio configuration, it is equal to CONFIG_SENSOR_POWER_PIN_XX
21                              pwr_active,\     // sensor power active level, is equal to CONFIG_SENSOR_RESETACTIVE_LEVEL_X
22                              rst_io,\         // sensor reset gpio configuration, it is equal to CONFIG_SENSOR_RESET_PIN_XX
23                              rst_active,\     // sensor reset active level, is equal to CONFIG_SENSOR_RESETACTIVE_LEVEL_X
24                              pwdn_io,\
25                              pwdn_active,\    // sensor power down active level, is equal to CONFIG_SENSOR_POWERDNACTIVE_LEVEL_X
26                              flash_attach,\
27                              res,\            // sensor resolution, this is real resolution or resoltuion after interpolate
28                              mir,\
29                              i2c_chl,\
30                              i2c_spd,\        // i2c speed , 100000 = 100KHz
31                              i2c_addr,\       // the i2c slave device address for sensor
32                              cif_chl,\
33                              mclk)\           // sensor input clock rate, 24 or 48
34                           
35 */
36 static struct rkcamera_platform_data new_camera[] = { 
37     new_camera_device(RK29_CAM_SENSOR_GC2035,
38                         back,
39                         RK30_PIN3_PB3,
40                         0,
41                         0,
42                         1,
43                         0),
44     new_camera_device(RK29_CAM_SENSOR_GC0308,
45                         front,
46                         RK30_PIN3_PD7,
47                         0,
48                         0,
49                         1,
50                         0), 
51     new_camera_device_end
52 };
53 /*---------------- Camera Sensor Macro Define Begin  ------------------------*/
54 /*---------------- Camera Sensor Configuration Macro Begin ------------------------*/
55 #define CONFIG_SENSOR_0 RK29_CAM_SENSOR_GC2035                                          /* back camera sensor */
56 #define CONFIG_SENSOR_IIC_ADDR_0                0x00
57 #define CONFIG_SENSOR_IIC_ADAPTER_ID_0    1
58 #define CONFIG_SENSOR_CIF_INDEX_0                    0
59 #define CONFIG_SENSOR_ORIENTATION_0       90
60 #define CONFIG_SENSOR_POWER_PIN_0                 INVALID_GPIO
61 #define CONFIG_SENSOR_RESET_PIN_0                 INVALID_GPIO
62 #define CONFIG_SENSOR_POWERDN_PIN_0       RK30_PIN3_PB3
63 #define CONFIG_SENSOR_FALSH_PIN_0                 INVALID_GPIO
64 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_0 RK29_CAM_POWERACTIVE_L
65 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_0 RK29_CAM_RESETACTIVE_L
66 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0 RK29_CAM_POWERDNACTIVE_H
67 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_0 RK29_CAM_FLASHACTIVE_H
68
69 #define CONFIG_SENSOR_QCIF_FPS_FIXED_0          15000
70 #define CONFIG_SENSOR_240X160_FPS_FIXED_0   15000
71 #define CONFIG_SENSOR_QVGA_FPS_FIXED_0          15000
72 #define CONFIG_SENSOR_CIF_FPS_FIXED_0           15000
73 #define CONFIG_SENSOR_VGA_FPS_FIXED_0           15000
74 #define CONFIG_SENSOR_480P_FPS_FIXED_0          15000
75 #define CONFIG_SENSOR_SVGA_FPS_FIXED_0          15000
76 #define CONFIG_SENSOR_720P_FPS_FIXED_0          30000
77
78 #define CONFIG_SENSOR_01  RK29_CAM_SENSOR_OV5642                   /* back camera sensor 1 */
79 #define CONFIG_SENSOR_IIC_ADDR_01           0x00
80 #define CONFIG_SENSOR_CIF_INDEX_01                    0
81 #define CONFIG_SENSOR_IIC_ADAPTER_ID_01    4
82 #define CONFIG_SENSOR_ORIENTATION_01       90
83 #define CONFIG_SENSOR_POWER_PIN_01         INVALID_GPIO
84 #define CONFIG_SENSOR_RESET_PIN_01         INVALID_GPIO
85 #define CONFIG_SENSOR_POWERDN_PIN_01       RK2928_PIN3_PB3
86 #define CONFIG_SENSOR_FALSH_PIN_01         INVALID_GPIO
87 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_01 RK29_CAM_POWERACTIVE_L
88 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_01 RK29_CAM_RESETACTIVE_L
89 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_01 RK29_CAM_POWERDNACTIVE_H
90 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_01 RK29_CAM_FLASHACTIVE_L
91
92 #define CONFIG_SENSOR_QCIF_FPS_FIXED_01      15000
93 #define CONFIG_SENSOR_240X160_FPS_FIXED_01   15000
94 #define CONFIG_SENSOR_QVGA_FPS_FIXED_01      15000
95 #define CONFIG_SENSOR_CIF_FPS_FIXED_01       15000
96 #define CONFIG_SENSOR_VGA_FPS_FIXED_01       15000
97 #define CONFIG_SENSOR_480P_FPS_FIXED_01      15000
98 #define CONFIG_SENSOR_SVGA_FPS_FIXED_01      15000
99 #define CONFIG_SENSOR_720P_FPS_FIXED_01     30000
100
101 #define CONFIG_SENSOR_02 RK29_CAM_SENSOR_OV5640                      /* back camera sensor 2 */
102 #define CONFIG_SENSOR_IIC_ADDR_02           0x00
103 #define CONFIG_SENSOR_CIF_INDEX_02                    0
104 #define CONFIG_SENSOR_IIC_ADAPTER_ID_02    4
105 #define CONFIG_SENSOR_ORIENTATION_02       90
106 #define CONFIG_SENSOR_POWER_PIN_02         INVALID_GPIO
107 #define CONFIG_SENSOR_RESET_PIN_02         INVALID_GPIO
108 #define CONFIG_SENSOR_POWERDN_PIN_02       RK2928_PIN3_PB3
109 #define CONFIG_SENSOR_FALSH_PIN_02         INVALID_GPIO
110 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_02 RK29_CAM_POWERACTIVE_L
111 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_02 RK29_CAM_RESETACTIVE_L
112 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_02 RK29_CAM_POWERDNACTIVE_H
113 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_02 RK29_CAM_FLASHACTIVE_L
114
115 #define CONFIG_SENSOR_QCIF_FPS_FIXED_02      15000
116 #define CONFIG_SENSOR_240X160_FPS_FIXED_02   15000
117 #define CONFIG_SENSOR_QVGA_FPS_FIXED_02      15000
118 #define CONFIG_SENSOR_CIF_FPS_FIXED_02       15000
119 #define CONFIG_SENSOR_VGA_FPS_FIXED_02       15000
120 #define CONFIG_SENSOR_480P_FPS_FIXED_02      15000
121 #define CONFIG_SENSOR_SVGA_FPS_FIXED_02      15000
122 #define CONFIG_SENSOR_720P_FPS_FIXED_02      30000
123
124 #define CONFIG_SENSOR_1 RK29_CAM_SENSOR_GC0308                      /* front camera sensor 0 */
125 #define CONFIG_SENSOR_IIC_ADDR_1            0x00
126 #define CONFIG_SENSOR_IIC_ADAPTER_ID_1    1
127 #define CONFIG_SENSOR_CIF_INDEX_1                                 0
128 #define CONFIG_SENSOR_ORIENTATION_1       270
129 #define CONFIG_SENSOR_POWER_PIN_1         INVALID_GPIO
130 #define CONFIG_SENSOR_RESET_PIN_1         INVALID_GPIO
131 #define CONFIG_SENSOR_POWERDN_PIN_1       RK30_PIN3_PD7
132 #define CONFIG_SENSOR_FALSH_PIN_1         INVALID_GPIO
133 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_1 RK29_CAM_POWERACTIVE_L
134 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_1 RK29_CAM_RESETACTIVE_L
135 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1 RK29_CAM_POWERDNACTIVE_H
136 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_1 RK29_CAM_FLASHACTIVE_L
137
138 #define CONFIG_SENSOR_QCIF_FPS_FIXED_1          15000
139 #define CONFIG_SENSOR_240X160_FPS_FIXED_1   15000
140 #define CONFIG_SENSOR_QVGA_FPS_FIXED_1          15000
141 #define CONFIG_SENSOR_CIF_FPS_FIXED_1           15000
142 #define CONFIG_SENSOR_VGA_FPS_FIXED_1           15000
143 #define CONFIG_SENSOR_480P_FPS_FIXED_1          15000
144 #define CONFIG_SENSOR_SVGA_FPS_FIXED_1          15000
145 #define CONFIG_SENSOR_720P_FPS_FIXED_1          30000
146
147 #define CONFIG_SENSOR_11 RK29_CAM_SENSOR_OV2659                      /* front camera sensor 1 */
148 #define CONFIG_SENSOR_IIC_ADDR_11           0x00
149 #define CONFIG_SENSOR_IIC_ADAPTER_ID_11    3
150 #define CONFIG_SENSOR_CIF_INDEX_11                                0
151 #define CONFIG_SENSOR_ORIENTATION_11       270
152 #define CONFIG_SENSOR_POWER_PIN_11         INVALID_GPIO
153 #define CONFIG_SENSOR_RESET_PIN_11         INVALID_GPIO
154 #define CONFIG_SENSOR_POWERDN_PIN_11       INVALID_GPIO
155 #define CONFIG_SENSOR_FALSH_PIN_11         INVALID_GPIO
156 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_11 RK29_CAM_POWERACTIVE_L
157 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_11 RK29_CAM_RESETACTIVE_L
158 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_11 RK29_CAM_POWERDNACTIVE_H
159 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_11 RK29_CAM_FLASHACTIVE_L
160
161 #define CONFIG_SENSOR_QCIF_FPS_FIXED_11      15000
162 #define CONFIG_SENSOR_240X160_FPS_FIXED_11   15000
163 #define CONFIG_SENSOR_QVGA_FPS_FIXED_11      15000
164 #define CONFIG_SENSOR_CIF_FPS_FIXED_11       15000
165 #define CONFIG_SENSOR_VGA_FPS_FIXED_11       15000
166 #define CONFIG_SENSOR_480P_FPS_FIXED_11      15000
167 #define CONFIG_SENSOR_SVGA_FPS_FIXED_11      15000
168 #define CONFIG_SENSOR_720P_FPS_FIXED_11      30000
169
170 #define CONFIG_SENSOR_12 RK29_CAM_SENSOR_OV2659//RK29_CAM_SENSOR_OV2655                      /* front camera sensor 2 */
171 #define CONFIG_SENSOR_IIC_ADDR_12          0x00
172 #define CONFIG_SENSOR_IIC_ADAPTER_ID_12    3
173 #define CONFIG_SENSOR_CIF_INDEX_12                                0
174 #define CONFIG_SENSOR_ORIENTATION_12       270
175 #define CONFIG_SENSOR_POWER_PIN_12         INVALID_GPIO
176 #define CONFIG_SENSOR_RESET_PIN_12         INVALID_GPIO
177 #define CONFIG_SENSOR_POWERDN_PIN_12       INVALID_GPIO
178 #define CONFIG_SENSOR_FALSH_PIN_12         INVALID_GPIO
179 #define CONFIG_SENSOR_POWERACTIVE_LEVEL_12 RK29_CAM_POWERACTIVE_L
180 #define CONFIG_SENSOR_RESETACTIVE_LEVEL_12 RK29_CAM_RESETACTIVE_L
181 #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_12 RK29_CAM_POWERDNACTIVE_H
182 #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_12 RK29_CAM_FLASHACTIVE_L
183
184 #define CONFIG_SENSOR_QCIF_FPS_FIXED_12      15000
185 #define CONFIG_SENSOR_240X160_FPS_FIXED_12   15000
186 #define CONFIG_SENSOR_QVGA_FPS_FIXED_12      15000
187 #define CONFIG_SENSOR_CIF_FPS_FIXED_12       15000
188 #define CONFIG_SENSOR_VGA_FPS_FIXED_12       15000
189 #define CONFIG_SENSOR_480P_FPS_FIXED_12      15000
190 #define CONFIG_SENSOR_SVGA_FPS_FIXED_12      15000
191 #define CONFIG_SENSOR_720P_FPS_FIXED_12      30000
192
193
194 #endif  //#ifdef CONFIG_VIDEO_RK29
195 /*---------------- Camera Sensor Configuration Macro End------------------------*/
196 #include "../../../drivers/media/video/rk2928_camera.c"
197 /*---------------- Camera Sensor Macro Define End  ---------*/
198
199 #define PMEM_CAM_SIZE PMEM_CAM_NECESSARY
200 /*****************************************************************************************
201  * camera  devices
202  * author: ddl@rock-chips.com
203  *****************************************************************************************/
204 #ifdef CONFIG_VIDEO_RK29
205 #define CONFIG_SENSOR_POWER_IOCTL_USR      0 //define this refer to your board layout
206 #define CONFIG_SENSOR_RESET_IOCTL_USR      0
207 #define CONFIG_SENSOR_POWERDOWN_IOCTL_USR          0
208 #define CONFIG_SENSOR_FLASH_IOCTL_USR      0
209
210 static void rk_cif_power(int on)
211 {
212     struct regulator *ldo_18,*ldo_28;
213     #if defined(CONFIG_MACH_RK3028A_86V)||defined(CONFIG_MACH_RK3028A_FAC)
214         ldo_28 = regulator_get(NULL, "ldo7");   // vcc28_cif
215         ldo_18 = regulator_get(NULL, "ldo1");   // vcc18_cif
216     #else
217         ldo_28 = regulator_get(NULL, "vaux1");   // vcc28_cif
218         ldo_18 = regulator_get(NULL, "vdig1");   // vcc18_cif
219     #endif
220         if (ldo_28 == NULL || IS_ERR(ldo_28) || ldo_18 == NULL || IS_ERR(ldo_18)){
221         printk("get cif ldo failed!\n");
222                 return;
223             }
224     if(on == 0){        
225         regulator_disable(ldo_28);
226         regulator_put(ldo_28);
227         regulator_disable(ldo_18);
228         regulator_put(ldo_18);
229         mdelay(500);
230         }
231     else{
232         regulator_set_voltage(ldo_28, 2800000, 2800000);
233         regulator_enable(ldo_28);
234    //   printk("%s set ldo7 vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_28));
235         regulator_put(ldo_28);
236
237         regulator_set_voltage(ldo_18, 1800000, 1800000);
238     //  regulator_set_suspend_voltage(ldo, 1800000);
239         regulator_enable(ldo_18);
240     //  printk("%s set ldo1 vcc18_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_18));
241         regulator_put(ldo_18);
242         }
243 }
244
245 #if CONFIG_SENSOR_POWER_IOCTL_USR
246 static int sensor_power_usr_cb (struct rk29camera_gpio_res *res,int on)
247 {
248             //#error "CONFIG_SENSOR_POWER_IOCTL_USR is 1, sensor_power_usr_cb function must be writed!!";
249         struct regulator *ldo_18,*ldo_28;
250             ldo_28 = regulator_get(NULL, "ldo7");   // vcc28_cif
251             ldo_18 = regulator_get(NULL, "ldo1");   // vcc18_cif
252         if (ldo_28 == NULL || IS_ERR(ldo_28) || ldo_18 == NULL || IS_ERR(ldo_18)){
253             printk("get cif ldo failed!\n");
254             return -1;
255         }
256         if(on == 0){
257             while(regulator_is_enabled(ldo_28)>0)   
258                 regulator_disable(ldo_28);
259             regulator_put(ldo_28);
260             while(regulator_is_enabled(ldo_18)>0)
261                 regulator_disable(ldo_18);
262             regulator_put(ldo_18);
263             mdelay(10);
264         } else {
265             regulator_set_voltage(ldo_28, 2800000, 2800000);
266             regulator_enable(ldo_28);
267             //printk("%s set ldo7 vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_28));
268             regulator_put(ldo_28);
269         
270             regulator_set_voltage(ldo_18, 1800000, 1800000);
271             //regulator_set_suspend_voltage(ldo, 1800000);
272             regulator_enable(ldo_18);
273             //printk("%s set ldo1 vcc18_cif=%dmV end\n", __func__, regulator_get_voltage(ldo_18));
274             regulator_put(ldo_18);
275         }
276         
277         return 0;
278 }
279 #endif
280
281 #if CONFIG_SENSOR_RESET_IOCTL_USR
282 static int sensor_reset_usr_cb (struct rk29camera_gpio_res *res,int on)
283 {
284         #error "CONFIG_SENSOR_RESET_IOCTL_USR is 1, sensor_reset_usr_cb function must be writed!!";
285 }
286 #endif
287
288 #if CONFIG_SENSOR_POWERDOWN_IOCTL_USR
289 static int sensor_powerdown_usr_cb (struct rk29camera_gpio_res *res,int on)
290 {
291         #error "CONFIG_SENSOR_POWERDOWN_IOCTL_USR is 1, sensor_powerdown_usr_cb function must be writed!!";
292 }
293 #endif
294
295 #if CONFIG_SENSOR_FLASH_IOCTL_USR
296 static int sensor_flash_usr_cb (struct rk29camera_gpio_res *res,int on)
297 {
298         #error "CONFIG_SENSOR_FLASH_IOCTL_USR is 1, sensor_flash_usr_cb function must be writed!!";
299 }
300 #endif
301
302 static struct rk29camera_platform_ioctl_cb      sensor_ioctl_cb = {
303         #if CONFIG_SENSOR_POWER_IOCTL_USR
304         .sensor_power_cb = sensor_power_usr_cb,
305         #else
306         .sensor_power_cb = NULL,
307         #endif
308
309         #if CONFIG_SENSOR_RESET_IOCTL_USR
310         .sensor_reset_cb = sensor_reset_usr_cb,
311         #else
312         .sensor_reset_cb = NULL,
313         #endif
314
315         #if CONFIG_SENSOR_POWERDOWN_IOCTL_USR
316         .sensor_powerdown_cb = sensor_powerdown_usr_cb,
317         #else
318         .sensor_powerdown_cb = NULL,
319         #endif
320
321         #if CONFIG_SENSOR_FLASH_IOCTL_USR
322         .sensor_flash_cb = sensor_flash_usr_cb,
323         #else
324         .sensor_flash_cb = NULL,
325         #endif
326 };
327
328 #if CONFIG_SENSOR_IIC_ADDR_0
329 static struct reginfo_t rk_init_data_sensor_reg_0[] =
330 {
331                 {0x0000, 0x00,0,0}
332         };
333 static struct reginfo_t rk_init_data_sensor_winseqreg_0[] ={
334         {0x0000, 0x00,0,0}
335         };
336 #endif
337
338 #if CONFIG_SENSOR_IIC_ADDR_1
339 static struct reginfo_t rk_init_data_sensor_reg_1[] =
340 {
341     {0x0000, 0x00,0,0}
342 };
343 static struct reginfo_t rk_init_data_sensor_winseqreg_1[] =
344 {
345        {0x0000, 0x00,0,0}
346 };
347 #endif
348 #if CONFIG_SENSOR_IIC_ADDR_01
349 static struct reginfo_t rk_init_data_sensor_reg_01[] =
350 {
351     {0x0000, 0x00,0,0}
352 };
353 static struct reginfo_t rk_init_data_sensor_winseqreg_01[] =
354 {
355        {0x0000, 0x00,0,0}
356 };
357 #endif
358 #if CONFIG_SENSOR_IIC_ADDR_02
359 static struct reginfo_t rk_init_data_sensor_reg_02[] =
360 {
361     {0x0000, 0x00,0,0}
362 };
363 static struct reginfo_t rk_init_data_sensor_winseqreg_02[] =
364 {
365        {0x0000, 0x00,0,0}
366 };
367 #endif
368 #if CONFIG_SENSOR_IIC_ADDR_11
369 static struct reginfo_t rk_init_data_sensor_reg_11[] =
370 {
371     {0x0000, 0x00,0,0}
372 };
373 static struct reginfo_t rk_init_data_sensor_winseqreg_11[] =
374 {
375        {0x0000, 0x00,0,0}
376 };
377 #endif
378 #if CONFIG_SENSOR_IIC_ADDR_12
379 static struct reginfo_t rk_init_data_sensor_reg_12[] =
380 {
381     {0x0000, 0x00,0,0}
382 };
383 static struct reginfo_t rk_init_data_sensor_winseqreg_12[] =
384 {
385        {0x0000, 0x00,0,0}
386 };
387 #endif
388 static rk_sensor_user_init_data_s rk_init_data_sensor[RK_CAM_NUM] = 
389 {
390     #if CONFIG_SENSOR_IIC_ADDR_0
391     {
392        .rk_sensor_init_width = INVALID_VALUE,
393        .rk_sensor_init_height = INVALID_VALUE,
394        .rk_sensor_init_bus_param = INVALID_VALUE,
395        .rk_sensor_init_pixelcode = INVALID_VALUE,
396        .rk_sensor_init_data = rk_init_data_sensor_reg_0,
397        .rk_sensor_init_winseq = rk_init_data_sensor_winseqreg_0,
398        .rk_sensor_winseq_size = sizeof(rk_init_data_sensor_winseqreg_0) / sizeof(struct reginfo_t),
399        .rk_sensor_init_data_size = sizeof(rk_init_data_sensor_reg_0) / sizeof(struct reginfo_t),
400     },
401     #else
402     {
403        .rk_sensor_init_width = INVALID_VALUE,
404        .rk_sensor_init_height = INVALID_VALUE,
405        .rk_sensor_init_bus_param = INVALID_VALUE,
406        .rk_sensor_init_pixelcode = INVALID_VALUE,
407        .rk_sensor_init_data = NULL,
408        .rk_sensor_init_winseq = NULL,
409        .rk_sensor_winseq_size = 0,
410        .rk_sensor_init_data_size = 0,
411     },
412     #endif
413     #if CONFIG_SENSOR_IIC_ADDR_1
414     {
415        .rk_sensor_init_width = INVALID_VALUE,
416        .rk_sensor_init_height = INVALID_VALUE,
417        .rk_sensor_init_bus_param = INVALID_VALUE,
418        .rk_sensor_init_pixelcode = INVALID_VALUE,
419        .rk_sensor_init_data = rk_init_data_sensor_reg_1,
420        .rk_sensor_init_winseq = rk_init_data_sensor_winseqreg_1,
421        .rk_sensor_winseq_size = sizeof(rk_init_data_sensor_winseqreg_1) / sizeof(struct reginfo_t),
422        .rk_sensor_init_data_size = sizeof(rk_init_data_sensor_reg_1) / sizeof(struct reginfo_t),
423     },
424     #else
425     {
426        .rk_sensor_init_width = INVALID_VALUE,
427        .rk_sensor_init_height = INVALID_VALUE,
428        .rk_sensor_init_bus_param = INVALID_VALUE,
429        .rk_sensor_init_pixelcode = INVALID_VALUE,
430        .rk_sensor_init_data = NULL,
431        .rk_sensor_init_winseq = NULL,
432        .rk_sensor_winseq_size = 0,
433        .rk_sensor_init_data_size = 0,
434     },
435     #endif
436     #if CONFIG_SENSOR_IIC_ADDR_01
437     {
438        .rk_sensor_init_width = INVALID_VALUE,
439        .rk_sensor_init_height = INVALID_VALUE,
440        .rk_sensor_init_bus_param = INVALID_VALUE,
441        .rk_sensor_init_pixelcode = INVALID_VALUE,
442        .rk_sensor_init_data = rk_init_data_sensor_reg_01,
443        .rk_sensor_init_winseq = rk_init_data_sensor_winseqreg_01,
444        .rk_sensor_winseq_size = sizeof(rk_init_data_sensor_winseqreg_01) / sizeof(struct reginfo_t),
445        .rk_sensor_init_data_size = sizeof(rk_init_data_sensor_reg_01) / sizeof(struct reginfo_t),
446     },
447     #else
448     {
449        .rk_sensor_init_width = INVALID_VALUE,
450        .rk_sensor_init_height = INVALID_VALUE,
451        .rk_sensor_init_bus_param = INVALID_VALUE,
452        .rk_sensor_init_pixelcode = INVALID_VALUE,
453        .rk_sensor_init_data = NULL,
454        .rk_sensor_init_winseq = NULL,
455        .rk_sensor_winseq_size = 0,
456        .rk_sensor_init_data_size = 0,
457     },
458     #endif
459     #if CONFIG_SENSOR_IIC_ADDR_02
460     {
461        .rk_sensor_init_width = INVALID_VALUE,
462        .rk_sensor_init_height = INVALID_VALUE,
463        .rk_sensor_init_bus_param = INVALID_VALUE,
464        .rk_sensor_init_pixelcode = INVALID_VALUE,
465        .rk_sensor_init_data = rk_init_data_sensor_reg_02,
466        .rk_sensor_init_winseq = rk_init_data_sensor_winseqreg_02,
467        .rk_sensor_winseq_size = sizeof(rk_init_data_sensor_winseqreg_02) / sizeof(struct reginfo_t),
468        .rk_sensor_init_data_size = sizeof(rk_init_data_sensor_reg_02) / sizeof(struct reginfo_t),
469     },
470     #else
471     {
472        .rk_sensor_init_width = INVALID_VALUE,
473        .rk_sensor_init_height = INVALID_VALUE,
474        .rk_sensor_init_bus_param = INVALID_VALUE,
475        .rk_sensor_init_pixelcode = INVALID_VALUE,
476        .rk_sensor_init_data = NULL,
477        .rk_sensor_init_winseq = NULL,
478        .rk_sensor_winseq_size = 0,
479        .rk_sensor_init_data_size = 0,
480     },
481     #endif
482     #if CONFIG_SENSOR_IIC_ADDR_11
483     {
484        .rk_sensor_init_width = INVALID_VALUE,
485        .rk_sensor_init_height = INVALID_VALUE,
486        .rk_sensor_init_bus_param = INVALID_VALUE,
487        .rk_sensor_init_pixelcode = INVALID_VALUE,
488        .rk_sensor_init_data = rk_init_data_sensor_reg_11,
489        .rk_sensor_init_winseq = rk_init_data_sensor_winseqreg_11,
490        .rk_sensor_winseq_size = sizeof(rk_init_data_sensor_winseqreg_11) / sizeof(struct reginfo_t),
491        .rk_sensor_init_data_size = sizeof(rk_init_data_sensor_reg_11) / sizeof(struct reginfo_t),
492     },
493     #else
494     {
495        .rk_sensor_init_width = INVALID_VALUE,
496        .rk_sensor_init_height = INVALID_VALUE,
497        .rk_sensor_init_bus_param = INVALID_VALUE,
498        .rk_sensor_init_pixelcode = INVALID_VALUE,
499        .rk_sensor_init_data = NULL,
500        .rk_sensor_init_winseq = NULL,
501        .rk_sensor_winseq_size = 0,
502        .rk_sensor_init_data_size = 0,
503     },
504     #endif
505     #if CONFIG_SENSOR_IIC_ADDR_12
506     {
507        .rk_sensor_init_width = INVALID_VALUE,
508        .rk_sensor_init_height = INVALID_VALUE,
509        .rk_sensor_init_bus_param = INVALID_VALUE,
510        .rk_sensor_init_pixelcode = INVALID_VALUE,
511        .rk_sensor_init_data = rk_init_data_sensor_reg_12,
512        .rk_sensor_init_winseq = rk_init_data_sensor_winseqreg_12,
513        .rk_sensor_winseq_size = sizeof(rk_init_data_sensor_winseqreg_12) / sizeof(struct reginfo_t),
514        .rk_sensor_init_data_size = sizeof(rk_init_data_sensor_reg_12) / sizeof(struct reginfo_t),
515     },
516     #else
517     {
518        .rk_sensor_init_width = INVALID_VALUE,
519        .rk_sensor_init_height = INVALID_VALUE,
520        .rk_sensor_init_bus_param = INVALID_VALUE,
521        .rk_sensor_init_pixelcode = INVALID_VALUE,
522        .rk_sensor_init_data = NULL,
523        .rk_sensor_init_winseq = NULL,
524        .rk_sensor_winseq_size = 0,
525        .rk_sensor_init_data_size = 0,
526     },
527     #endif
528
529  };
530 #include "../../../drivers/media/video/rk2928_camera.c"
531
532 #endif /* CONFIG_VIDEO_RK29 */