2 #include <mach/iomux.h>
\r
3 #include <media/soc_camera.h>
\r
4 #include <linux/android_pmem.h>
\r
5 #include <mach/rk30_camera.h>
\r
6 #ifndef PMEM_CAM_SIZE
\r
7 #include "../../../arch/arm/plat-rk/rk_camera.c"
\r
9 /*****************************************************************************************
\r
11 * author: ddl@rock-chips.com
\r
12 *****************************************************************************************/
\r
13 #ifdef CONFIG_VIDEO_RK29
\r
15 static int rk_sensor_iomux(int pin)
\r
17 #if defined(CONFIG_ARCH_RK3066B)
\r
21 case RK30_PIN0_PA1:
\r
38 rk30_mux_api_set(GPIO0C0_FLASHDATA8_NAME,0);
\r
43 rk30_mux_api_set(GPIO0C1_FLASHDATA9_NAME,0);
\r
48 rk30_mux_api_set(GPIO0C2_FLASHDATA10_NAME,0);
\r
53 rk30_mux_api_set(GPIO0C3_FLASHDATA11_NAME,0);
\r
58 rk30_mux_api_set(GPIO0C4_FLASHDATA12_NAME,0);
\r
63 rk30_mux_api_set(GPIO0C5_FLASHDATA13_NAME,0);
\r
68 rk30_mux_api_set(GPIO0C6_FLASHDATA14_NAME,0);
\r
73 rk30_mux_api_set(GPIO0C7_FLASHDATA15_NAME,0);
\r
78 rk30_mux_api_set(GPIO0D0_FLASHDQS_EMMCCLKOUT_NAME,0);
\r
83 rk30_mux_api_set(GPIO0D1_FLASHCSN1_NAME,0);
\r
88 rk30_mux_api_set(GPIO0D2_FLASHCSN2_EMMCCMD_NAME,0);
\r
93 rk30_mux_api_set(GPIO0D3_FLASHCSN3_EMMCRSTNOUT_NAME,0);
\r
98 rk30_mux_api_set(GPIO0D4_SPI1RXD_NAME,0);
\r
101 case RK30_PIN0_PD5:
\r
103 rk30_mux_api_set(GPIO0D5_SPI1TXD_NAME,0);
\r
106 case RK30_PIN0_PD6:
\r
108 rk30_mux_api_set(GPIO0D6_SPI1CLK_NAME,0);
\r
111 case RK30_PIN0_PD7:
\r
113 rk30_mux_api_set(GPIO0D7_SPI1CSN0_NAME,0);
\r
116 case RK30_PIN1_PA0:
\r
118 rk30_mux_api_set(GPIO1A0_UART0SIN_NAME,0);
\r
121 case RK30_PIN1_PA1:
\r
123 rk30_mux_api_set(GPIO1A1_UART0SOUT_NAME,0);
\r
126 case RK30_PIN1_PA2:
\r
128 rk30_mux_api_set(GPIO1A2_UART0CTSN_NAME,0);
\r
131 case RK30_PIN1_PA3:
\r
133 rk30_mux_api_set(GPIO1A3_UART0RTSN_NAME,0);
\r
136 case RK30_PIN1_PA4:
\r
138 rk30_mux_api_set(GPIO1A4_UART1SIN_SPI0RXD_NAME,0);
\r
141 case RK30_PIN1_PA5:
\r
143 rk30_mux_api_set(GPIO1A5_UART1SOUT_SPI0TXD_NAME,0);
\r
146 case RK30_PIN1_PA6:
\r
148 rk30_mux_api_set(GPIO1A6_UART1CTSN_SPI0CLK_NAME,0);
\r
151 case RK30_PIN1_PA7:
\r
153 rk30_mux_api_set(GPIO1A7_UART1RTSN_SPI0CSN0_NAME,0);
\r
156 case RK30_PIN1_PB0:
\r
158 rk30_mux_api_set(GPIO1B0_UART2SIN_JTAGTDI_NAME,0);
\r
161 case RK30_PIN1_PB1:
\r
163 rk30_mux_api_set(GPIO1B1_UART2SOUT_JTAGTDO_NAME,0);
\r
166 case RK30_PIN1_PB2:
\r
168 rk30_mux_api_set(GPIO1B2_UART3SIN_GPSMAG_NAME,0);
\r
171 case RK30_PIN1_PB3:
\r
173 rk30_mux_api_set(GPIO1B3_UART3SOUT_GPSSIG_NAME,0);
\r
176 case RK30_PIN1_PB4:
\r
178 rk30_mux_api_set(GPIO1B4_UART3CTSN_GPSRFCLK_NAME,0);
\r
181 case RK30_PIN1_PB5:
\r
183 rk30_mux_api_set(GPIO1B5_UART3RTSN_NAME,0);
\r
186 case RK30_PIN1_PB6:
\r
188 rk30_mux_api_set(GPIO1B6_SPDIFTX_SPI1CSN1_NAME,0);
\r
191 case RK30_PIN1_PB7:
\r
193 rk30_mux_api_set(GPIO1B7_SPI0CSN1_NAME,0);
\r
196 case RK30_PIN1_PC0:
\r
198 rk30_mux_api_set(GPIO1C0_I2SCLK_NAME,0);
\r
201 case RK30_PIN1_PC1:
\r
203 rk30_mux_api_set(GPIO1C1_I2SSCLK_NAME,0);
\r
206 case RK30_PIN1_PC2:
\r
208 rk30_mux_api_set(GPIO1C2_I2SLRCLKRX_NAME,0);
\r
211 case RK30_PIN1_PC3:
\r
213 rk30_mux_api_set(GPIO1C3_I2SLRCLKTX_NAME,0);
\r
216 case RK30_PIN1_PC4:
\r
218 rk30_mux_api_set(GPIO1C4_I2SSDI_NAME,0);
\r
221 case RK30_PIN1_PC5:
\r
222 case RK30_PIN1_PC6:
\r
223 case RK30_PIN1_PC7:
\r
225 case RK30_PIN1_PD0:
\r
227 rk30_mux_api_set(GPIO1D0_I2C0SDA_NAME,0);
\r
230 case RK30_PIN1_PD1:
\r
232 rk30_mux_api_set(GPIO1D1_I2C0SCL_NAME,0);
\r
235 case RK30_PIN1_PD2:
\r
237 rk30_mux_api_set(GPIO1D2_I2C1SDA_NAME,0);
\r
240 case RK30_PIN1_PD3:
\r
242 rk30_mux_api_set(GPIO1D3_I2C1SCL_NAME,0);
\r
245 case RK30_PIN1_PD4:
\r
247 rk30_mux_api_set(GPIO1D4_I2C2SDA_NAME,0);
\r
250 case RK30_PIN1_PD5:
\r
252 rk30_mux_api_set(GPIO1D5_I2C2SCL_NAME,0);
\r
255 case RK30_PIN1_PD6:
\r
257 rk30_mux_api_set(GPIO1D6_I2C4SDA_NAME,0);
\r
260 case RK30_PIN1_PD7:
\r
262 rk30_mux_api_set(GPIO1D7_I2C4SCL_NAME,0);
\r
265 case RK30_PIN2_PA0:
\r
267 rk30_mux_api_set(GPIO2A0_LCDC1DATA0_SMCDATA0_TRACEDATA0_NAME,0);
\r
270 case RK30_PIN2_PA1:
\r
272 rk30_mux_api_set(GPIO2A1_LCDC1DATA1_SMCDATA1_TRACEDATA1_NAME,0);
\r
275 case RK30_PIN2_PA2:
\r
277 rk30_mux_api_set(GPIO2A2_LCDC1DATA2_SMCDATA2_TRACEDATA2_NAME,0);
\r
280 case RK30_PIN2_PA3:
\r
282 rk30_mux_api_set(GPIO2A3_LCDC1DATA3_SMCDATA3_TRACEDATA3_NAME,0);
\r
285 case RK30_PIN2_PA4:
\r
287 rk30_mux_api_set(GPIO2A4_LCDC1DATA4_SMCDATA4_TRACEDATA4_NAME,0);
\r
290 case RK30_PIN2_PA5:
\r
292 rk30_mux_api_set(GPIO2A5_LCDC1DATA5_SMCDATA5_TRACEDATA5_NAME,0);
\r
295 case RK30_PIN2_PA6:
\r
297 rk30_mux_api_set(GPIO2A6_LCDC1DATA6_SMCDATA6_TRACEDATA6_NAME,0);
\r
300 case RK30_PIN2_PA7:
\r
302 rk30_mux_api_set(GPIO2A7_LCDC1DATA7_SMCDATA7_TRACEDATA7_NAME,0);
\r
305 case RK30_PIN2_PB0:
\r
307 rk30_mux_api_set(GPIO2B0_LCDC1DATA8_SMCDATA8_TRACEDATA8_NAME,0);
\r
310 case RK30_PIN2_PB1:
\r
312 rk30_mux_api_set(GPIO2B1_LCDC1DATA9_SMCDATA9_TRACEDATA9_NAME,0);
\r
315 case RK30_PIN2_PB2:
\r
317 rk30_mux_api_set(GPIO2B2_LCDC1DATA10_SMCDATA10_TRACEDATA10_NAME,0);
\r
320 case RK30_PIN2_PB3:
\r
322 rk30_mux_api_set(GPIO2B3_LCDC1DATA11_SMCDATA11_TRACEDATA11_NAME,0);
\r
325 case RK30_PIN2_PB4:
\r
327 rk30_mux_api_set(GPIO2B4_LCDC1DATA12_SMCDATA12_TRACEDATA12_NAME,0);
\r
330 case RK30_PIN2_PB5:
\r
332 rk30_mux_api_set(GPIO2B5_LCDC1DATA13_SMCDATA13_TRACEDATA13_NAME,0);
\r
335 case RK30_PIN2_PB6:
\r
337 rk30_mux_api_set(GPIO2B6_LCDC1DATA14_SMCDATA14_TRACEDATA14_NAME,0);
\r
340 case RK30_PIN2_PB7:
\r
342 rk30_mux_api_set(GPIO2B7_LCDC1DATA15_SMCDATA15_TRACEDATA15_NAME,0);
\r
345 case RK30_PIN2_PC0:
\r
347 rk30_mux_api_set(GPIO2C0_LCDC1DATA16_SMCADDR0_TRACECLK_NAME,0);
\r
350 case RK30_PIN2_PC1:
\r
352 rk30_mux_api_set(GPIO2C1_LCDC1DATA17_SMCADDR1_TRACECTL_NAME,0);
\r
355 case RK30_PIN2_PC2:
\r
357 rk30_mux_api_set(GPIO2C2_LCDC1DATA18_SMCADDR2_NAME,0);
\r
360 case RK30_PIN2_PC3:
\r
362 rk29_mux_api_set(GPIO2C3_LCDC1DATA19_SMCADDR3_NAME,0);
\r
365 case RK30_PIN2_PC4:
\r
367 rk30_mux_api_set(GPIO2C4_LCDC1DATA20_SMCADDR4_NAME,0);
\r
370 case RK30_PIN2_PC5:
\r
372 rk30_mux_api_set(GPIO2C5_LCDC1DATA21_SMCADDR5_NAME,0);
\r
375 case RK30_PIN2_PC6:
\r
377 rk30_mux_api_set(GPIO2C6_LCDC1DATA22_SMCADDR6_NAME,0);
\r
380 case RK30_PIN2_PC7:
\r
382 rk30_mux_api_set(GPIO2C7_LCDC1DATA23_SMCADDR7_NAME,0);
\r
385 case RK30_PIN2_PD0:
\r
387 rk30_mux_api_set(GPIO2D0_LCDC1DCLK_SMCCSN0_NAME,0);
\r
390 case RK30_PIN2_PD1:
\r
392 rk30_mux_api_set(GPIO2D1_LCDC1DEN_SMCWEN_NAME,0);
\r
395 case RK30_PIN2_PD2:
\r
397 rk30_mux_api_set(GPIO2D2_LCDC1HSYNC_SMCOEN_NAME,0);
\r
400 case RK30_PIN2_PD3:
\r
402 rk30_mux_api_set(GPIO2D3_LCDC1VSYNC_SMCADVN_NAME,0);
\r
405 case RK30_PIN2_PD4:
\r
407 rk30_mux_api_set(GPIO2D4_SMCBLSN0_NAME,0);
\r
410 case RK30_PIN2_PD5:
\r
412 rk30_mux_api_set(GPIO2D5_SMCBLSN1_NAME,0);
\r
415 case RK30_PIN2_PD6:
\r
417 rk30_mux_api_set(GPIO2D6_SMCCSN1_NAME,0);
\r
420 case RK30_PIN2_PD7:
\r
422 rk30_mux_api_set(GPIO2D7_TESTCLOCKOUT_NAME,0);
\r
425 case RK30_PIN3_PA0:
\r
427 rk30_mux_api_set(GPIO3A0_SDMMC0RSTNOUT_NAME,0);
\r
430 case RK30_PIN3_PA1:
\r
432 rk30_mux_api_set(GPIO3A1_SDMMC0PWREN_NAME,0);
\r
435 case RK30_PIN3_PA2:
\r
437 rk30_mux_api_set(GPIO3A2_SDMMC0CLKOUT_NAME,0);
\r
440 case RK30_PIN3_PA3:
\r
442 rk30_mux_api_set(GPIO3A3_SDMMC0CMD_NAME,0);
\r
445 case RK30_PIN3_PA4:
\r
447 rk30_mux_api_set(GPIO3A4_SDMMC0DATA0_NAME,0);
\r
450 case RK30_PIN3_PA5:
\r
452 rk30_mux_api_set(GPIO3A5_SDMMC0DATA1_NAME,0);
\r
455 case RK30_PIN3_PA6:
\r
457 rk30_mux_api_set(GPIO3A6_SDMMC0DATA2_NAME,0);
\r
460 case RK30_PIN3_PA7:
\r
462 rk30_mux_api_set(GPIO3A7_SDMMC0DATA3_NAME,0);
\r
465 case RK30_PIN3_PB0:
\r
467 rk30_mux_api_set(GPIO3B0_SDMMC0DETECTN_NAME,0);
\r
470 case RK30_PIN3_PB1:
\r
472 rk30_mux_api_set(GPIO3B1_SDMMC0WRITEPRT_NAME,0);
\r
475 case RK30_PIN3_PB2:
\r
477 case RK30_PIN3_PB3:
\r
479 rk30_mux_api_set(GPIO3B3_CIFCLKOUT_NAME,0);
\r
482 case RK30_PIN3_PB4:
\r
484 rk30_mux_api_set(GPIO3B4_CIFDATA0_HSADCDATA8_NAME,0);
\r
487 case RK30_PIN3_PB5:
\r
489 rk30_mux_api_set(GPIO3B5_CIFDATA1_HSADCDATA9_NAME,0);
\r
492 case RK30_PIN3_PB6:
\r
494 rk30_mux_api_set(GPIO3B6_CIFDATA10_I2C3SDA_NAME,0);
\r
497 case RK30_PIN3_PB7:
\r
499 rk30_mux_api_set(GPIO3B7_CIFDATA11_I2C3SCL_NAME,0);
\r
502 case RK30_PIN3_PC0:
\r
504 rk30_mux_api_set(GPIO3C0_SDMMC1CMD_RMIITXEN_NAME,0);
\r
507 case RK30_PIN3_PC1:
\r
509 rk30_mux_api_set(GPIO3C1_SDMMC1DATA0_RMIITXD1_NAME,0);
\r
512 case RK30_PIN3_PC2:
\r
514 rk30_mux_api_set(GPIO3C2_SDMMC1DATA1_RMIITXD0_NAME,0);
\r
517 case RK30_PIN3_PC3:
\r
519 rk30_mux_api_set(GPIO3C3_SDMMC1DATA2_RMIIRXD0_NAME,0);
\r
522 case RK30_PIN3_PC4:
\r
524 rk30_mux_api_set(GPIO3C4_SDMMC1DATA3_RMIIRXD1_NAME,0);
\r
527 case RK30_PIN3_PC5:
\r
529 rk30_mux_api_set(GPIO3C5_SDMMC1CLKOUT_RMIICLKOUT_RMIICLKIN_NAME,0);
\r
532 case RK30_PIN3_PC6:
\r
534 rk30_mux_api_set(GPIO3C6_SDMMC1DETECTN_RMIIRXERR_NAME,0);
\r
537 case RK30_PIN3_PC7:
\r
539 rk30_mux_api_set(GPIO3C7_SDMMC1WRITEPRT_RMIICRS_NAME,0);
\r
542 case RK30_PIN3_PD0:
\r
544 rk30_mux_api_set(GPIO3D0_SDMMC1PWREN_MIIMD_NAME,0);
\r
547 case RK30_PIN3_PD1:
\r
549 rk30_mux_api_set(GPIO3D1_SDMMC1BACKENDPWR_MIIMDCLK_NAME,0);
\r
552 case RK30_PIN3_PD2:
\r
554 rk30_mux_api_set(GPIO3D2_SDMMC1INTN_NAME,0);
\r
557 case RK30_PIN3_PD3:
\r
559 rk30_mux_api_set(GPIO3D3_PWM0_NAME,0);
\r
562 case RK30_PIN3_PD4:
\r
564 rk30_mux_api_set(GPIO3D4_PWM1_JTAGTRSTN_NAME,0);
\r
567 case RK30_PIN3_PD5:
\r
569 rk30_mux_api_set(GPIO3D5_PWM2_JTAGTCK_OTGDRVVBUS_NAME,0);
\r
572 case RK30_PIN3_PD6:
\r
574 rk30_mux_api_set(GPIO3D6_PWM3_JTAGTMS_HOSTDRVVBUS_NAME,0);
\r
577 case RK30_PIN3_PD7:
\r
581 printk("Pin=%d isn't RK GPIO, Please init it's iomux yourself!",pin);
\r
586 #elif defined(CONFIG_ARCH_RK30)
\r
589 case RK30_PIN0_PA0:
\r
591 rk30_mux_api_set(GPIO0A0_HDMIHOTPLUGIN_NAME,0);
\r
594 case RK30_PIN0_PA1:
\r
596 rk30_mux_api_set(GPIO0A1_HDMII2CSCL_NAME,0);
\r
599 case RK30_PIN0_PA2:
\r
601 rk30_mux_api_set(GPIO0A2_HDMII2CSDA_NAME,0);
\r
604 case RK30_PIN0_PA3:
\r
606 rk30_mux_api_set(GPIO0A3_PWM0_NAME,0);
\r
609 case RK30_PIN0_PA4:
\r
611 rk30_mux_api_set(GPIO0A4_PWM1_NAME,0);
\r
614 case RK30_PIN0_PA5:
\r
616 rk30_mux_api_set(GPIO0A5_OTGDRVVBUS_NAME,0);
\r
619 case RK30_PIN0_PA6:
\r
621 rk30_mux_api_set(GPIO0A6_HOSTDRVVBUS_NAME,0);
\r
624 case RK30_PIN0_PA7:
\r
626 rk30_mux_api_set(GPIO0A7_I2S8CHSDI_NAME,0);
\r
629 case RK30_PIN0_PB0:
\r
631 rk30_mux_api_set(GPIO0B0_I2S8CHCLK_NAME,0);
\r
634 case RK30_PIN0_PB1:
\r
636 rk30_mux_api_set(GPIO0B1_I2S8CHSCLK_NAME,0);
\r
639 case RK30_PIN0_PB2:
\r
641 rk30_mux_api_set(GPIO0B2_I2S8CHLRCKRX_NAME,0);
\r
644 case RK30_PIN0_PB3:
\r
646 rk30_mux_api_set(GPIO0B3_I2S8CHLRCKTX_NAME,0);
\r
649 case RK30_PIN0_PB4:
\r
651 rk30_mux_api_set(GPIO0B4_I2S8CHSDO0_NAME,0);
\r
654 case RK30_PIN0_PB5:
\r
656 rk30_mux_api_set(GPIO0B5_I2S8CHSDO1_NAME,0);
\r
659 case RK30_PIN0_PB6:
\r
661 rk30_mux_api_set(GPIO0B6_I2S8CHSDO2_NAME,0);
\r
664 case RK30_PIN0_PB7:
\r
666 rk30_mux_api_set(GPIO0B7_I2S8CHSDO3_NAME,0);
\r
669 case RK30_PIN0_PC0:
\r
671 rk30_mux_api_set(GPIO0C0_I2S12CHCLK_NAME,0);
\r
674 case RK30_PIN0_PC1:
\r
676 rk30_mux_api_set(GPIO0C1_I2S12CHSCLK_NAME,0);
\r
679 case RK30_PIN0_PC2:
\r
681 rk30_mux_api_set(GPIO0C2_I2S12CHLRCKRX_NAME,0);
\r
684 case RK30_PIN0_PC3:
\r
686 rk30_mux_api_set(GPIO0C3_I2S12CHLRCKTX_NAME,0);
\r
689 case RK30_PIN0_PC4:
\r
691 rk30_mux_api_set(GPIO0C4_I2S12CHSDI_NAME,0);
\r
694 case RK30_PIN0_PC5:
\r
696 rk30_mux_api_set(GPIO0C5_I2S12CHSDO_NAME,0);
\r
699 case RK30_PIN0_PC6:
\r
701 rk30_mux_api_set(GPIO0C6_TRACECLK_SMCADDR2_NAME,0);
\r
704 case RK30_PIN0_PC7:
\r
706 rk30_mux_api_set(GPIO0C7_TRACECTL_SMCADDR3_NAME,0);
\r
709 case RK30_PIN0_PD0:
\r
711 rk30_mux_api_set(GPIO0D0_I2S22CHCLK_SMCCSN0_NAME,0);
\r
714 case RK30_PIN0_PD1:
\r
716 rk30_mux_api_set(GPIO0D1_I2S22CHSCLK_SMCWEN_NAME,0);
\r
719 case RK30_PIN0_PD2:
\r
721 rk30_mux_api_set(GPIO0D2_I2S22CHLRCKRX_SMCOEN_NAME,0);
\r
724 case RK30_PIN0_PD3:
\r
726 rk30_mux_api_set(GPIO0D3_I2S22CHLRCKTX_SMCADVN_NAME,0);
\r
729 case RK30_PIN0_PD4:
\r
731 rk30_mux_api_set(GPIO0D4_I2S22CHSDI_SMCADDR0_NAME,0);
\r
734 case RK30_PIN0_PD5:
\r
736 rk30_mux_api_set(GPIO0D5_I2S22CHSDO_SMCADDR1_NAME,0);
\r
739 case RK30_PIN0_PD6:
\r
741 rk30_mux_api_set(GPIO0D6_PWM2_NAME,0);
\r
744 case RK30_PIN0_PD7:
\r
746 rk30_mux_api_set(GPIO0D7_PWM3_NAME,0);
\r
749 case RK30_PIN1_PA0:
\r
751 rk30_mux_api_set(GPIO1A0_UART0SIN_NAME,0);
\r
754 case RK30_PIN1_PA1:
\r
756 rk30_mux_api_set(GPIO1A1_UART0SOUT_NAME,0);
\r
759 case RK30_PIN1_PA2:
\r
761 rk30_mux_api_set(GPIO1A2_UART0CTSN_NAME,0);
\r
764 case RK30_PIN1_PA3:
\r
766 rk30_mux_api_set(GPIO1A3_UART0RTSN_NAME,0);
\r
769 case RK30_PIN1_PA4:
\r
771 rk30_mux_api_set(GPIO1A4_UART1SIN_SPI0CSN0_NAME,0);
\r
774 case RK30_PIN1_PA5:
\r
776 rk30_mux_api_set(GPIO1A5_UART1SOUT_SPI0CLK_NAME,0);
\r
779 case RK30_PIN1_PA6:
\r
781 rk30_mux_api_set(GPIO1A6_UART1CTSN_SPI0RXD_NAME,0);
\r
784 case RK30_PIN1_PA7:
\r
786 rk30_mux_api_set(GPIO1A7_UART1RTSN_SPI0TXD_NAME,0);
\r
789 case RK30_PIN1_PB0:
\r
791 rk30_mux_api_set(GPIO1B0_UART2SIN_NAME,0);
\r
794 case RK30_PIN1_PB1:
\r
796 rk30_mux_api_set(GPIO1B1_UART2SOUT_NAME,0);
\r
799 case RK30_PIN1_PB2:
\r
801 rk30_mux_api_set(GPIO1B2_SPDIFTX_NAME,0);
\r
804 case RK30_PIN1_PB3:
\r
806 rk30_mux_api_set(GPIO1B3_CIF0CLKOUT_NAME,0);
\r
809 case RK30_PIN1_PB4:
\r
811 rk30_mux_api_set(GPIO1B4_CIF0DATA0_NAME,0);
\r
814 case RK30_PIN1_PB5:
\r
816 rk30_mux_api_set(GPIO1B5_CIF0DATA1_NAME,0);
\r
819 case RK30_PIN1_PB6:
\r
821 rk30_mux_api_set(GPIO1B6_CIFDATA10_NAME,0);
\r
824 case RK30_PIN1_PB7:
\r
826 rk30_mux_api_set(GPIO1B7_CIFDATA11_NAME,0);
\r
829 case RK30_PIN1_PC0:
\r
831 rk30_mux_api_set(GPIO1C0_CIF1DATA2_RMIICLKOUT_RMIICLKIN_NAME,0);
\r
834 case RK30_PIN1_PC1:
\r
836 rk30_mux_api_set(GPIO1C1_CIFDATA3_RMIITXEN_NAME,0);
\r
839 case RK30_PIN1_PC2:
\r
841 rk30_mux_api_set(GPIO1C2_CIF1DATA4_RMIITXD1_NAME,0);
\r
844 case RK30_PIN1_PC3:
\r
846 rk30_mux_api_set(GPIO1C3_CIFDATA5_RMIITXD0_NAME,0);
\r
849 case RK30_PIN1_PC4:
\r
851 rk30_mux_api_set(GPIO1C4_CIFDATA6_RMIIRXERR_NAME,0);
\r
854 case RK30_PIN1_PC5:
\r
856 rk29_mux_api_set(GPIO1C5_CIFDATA7_RMIICRSDVALID_NAME,0);
\r
859 case RK30_PIN1_PC6:
\r
861 rk30_mux_api_set(GPIO1C6_CIFDATA8_RMIIRXD1_NAME,0);
\r
864 case RK30_PIN1_PC7:
\r
866 rk30_mux_api_set(GPIO1C7_CIFDATA9_RMIIRXD0_NAME,0);
\r
869 case RK30_PIN1_PD0:
\r
871 rk30_mux_api_set(GPIO1D0_CIF1VSYNC_MIIMD_NAME,0);
\r
874 case RK30_PIN1_PD1:
\r
876 rk30_mux_api_set(GPIO1D1_CIF1HREF_MIIMDCLK_NAME,0);
\r
879 case RK30_PIN1_PD2:
\r
881 rk30_mux_api_set(GPIO1D2_CIF1CLKIN_NAME,0);
\r
884 case RK30_PIN1_PD3:
\r
886 rk30_mux_api_set(GPIO1D3_CIF1DATA0_NAME,0);
\r
889 case RK30_PIN1_PD4:
\r
891 rk30_mux_api_set(GPIO1D4_CIF1DATA1_NAME,0);
\r
894 case RK30_PIN1_PD5:
\r
896 rk30_mux_api_set(GPIO1D5_CIF1DATA10_NAME,0);
\r
899 case RK30_PIN1_PD6:
\r
901 rk30_mux_api_set(GPIO1D6_CIF1DATA11_NAME,0);
\r
904 case RK30_PIN1_PD7:
\r
906 rk30_mux_api_set(GPIO1D7_CIF1CLKOUT_NAME,0);
\r
909 case RK30_PIN2_PA0:
\r
911 rk30_mux_api_set(GPIO2A0_LCDC1DATA0_SMCADDR4_NAME,0);
\r
914 case RK30_PIN2_PA1:
\r
916 rk30_mux_api_set(GPIO2A1_LCDC1DATA1_SMCADDR5_NAME,0);
\r
919 case RK30_PIN2_PA2:
\r
921 rk30_mux_api_set(GPIO2A2_LCDCDATA2_SMCADDR6_NAME,0);
\r
924 case RK30_PIN2_PA3:
\r
926 rk30_mux_api_set(GPIO2A3_LCDCDATA3_SMCADDR7_NAME,0);
\r
929 case RK30_PIN2_PA4:
\r
931 rk30_mux_api_set(GPIO2A4_LCDC1DATA4_SMCADDR8_NAME,0);
\r
934 case RK30_PIN2_PA5:
\r
936 rk30_mux_api_set(GPIO2A5_LCDC1DATA5_SMCADDR9_NAME,0);
\r
939 case RK30_PIN2_PA6:
\r
941 rk30_mux_api_set(GPIO2A6_LCDC1DATA6_SMCADDR10_NAME,0);
\r
944 case RK30_PIN2_PA7:
\r
946 rk30_mux_api_set(GPIO2A7_LCDC1DATA7_SMCADDR11_NAME,0);
\r
949 case RK30_PIN2_PB0:
\r
951 rk30_mux_api_set(GPIO2B0_LCDC1DATA8_SMCADDR12_NAME,0);
\r
954 case RK30_PIN2_PB1:
\r
956 rk30_mux_api_set(GPIO2B1_LCDC1DATA9_SMCADDR13_NAME,0);
\r
959 case RK30_PIN2_PB2:
\r
961 rk30_mux_api_set(GPIO2B2_LCDC1DATA10_SMCADDR14_NAME,0);
\r
964 case RK30_PIN2_PB3:
\r
966 rk30_mux_api_set(GPIO2B3_LCDC1DATA11_SMCADDR15_NAME,0);
\r
969 case RK30_PIN2_PB4:
\r
971 rk30_mux_api_set(GPIO2B4_LCDC1DATA12_SMCADDR16_HSADCDATA9_NAME,0);
\r
974 case RK30_PIN2_PB5:
\r
976 rk30_mux_api_set(GPIO2B5_LCDC1DATA13_SMCADDR17_HSADCDATA8_NAME,0);
\r
979 case RK30_PIN2_PB6:
\r
981 rk30_mux_api_set(GPIO2B6_LCDC1DATA14_SMCADDR18_TSSYNC_NAME,0);
\r
984 case RK30_PIN2_PB7:
\r
986 rk30_mux_api_set(GPIO2B7_LCDC1DATA15_SMCADDR19_HSADCDATA7_NAME,0);
\r
989 case RK30_PIN2_PC0:
\r
991 rk30_mux_api_set(GPIO2C0_LCDCDATA16_GPSCLK_HSADCCLKOUT_NAME,0);
\r
994 case RK30_PIN2_PC1:
\r
996 rk30_mux_api_set(GPIO2C1_LCDC1DATA17_SMCBLSN0_HSADCDATA6_NAME,0);
\r
999 case RK30_PIN2_PC2:
\r
1001 rk30_mux_api_set(GPIO2C2_LCDC1DATA18_SMCBLSN1_HSADCDATA5_NAME,0);
\r
1004 case RK30_PIN2_PC3:
\r
1006 rk29_mux_api_set(GPIO2C3_LCDC1DATA19_SPI1CLK_HSADCDATA0_NAME,0);
\r
1009 case RK30_PIN2_PC4:
\r
1011 rk30_mux_api_set(GPIO2C4_LCDC1DATA20_SPI1CSN0_HSADCDATA1_NAME,0);
\r
1014 case RK30_PIN2_PC5:
\r
1016 rk30_mux_api_set(GPIO2C5_LCDC1DATA21_SPI1TXD_HSADCDATA2_NAME,0);
\r
1019 case RK30_PIN2_PC6:
\r
1021 rk30_mux_api_set(GPIO2C6_LCDC1DATA22_SPI1RXD_HSADCDATA3_NAME,0);
\r
1024 case RK30_PIN2_PC7:
\r
1026 rk30_mux_api_set(GPIO2C7_LCDC1DATA23_SPI1CSN1_HSADCDATA4_NAME,0);
\r
1029 case RK30_PIN2_PD0:
\r
1031 rk30_mux_api_set(GPIO2D0_LCDC1DCLK_NAME,0);
\r
1034 case RK30_PIN2_PD1:
\r
1036 rk30_mux_api_set(GPIO2D1_LCDC1DEN_SMCCSN1_NAME,0);
\r
1039 case RK30_PIN2_PD2:
\r
1041 rk30_mux_api_set(GPIO2D2_LCDC1HSYNC_NAME,0);
\r
1044 case RK30_PIN2_PD3:
\r
1046 rk30_mux_api_set(GPIO2D3_LCDC1VSYNC_NAME,0);
\r
1049 case RK30_PIN2_PD4:
\r
1051 rk30_mux_api_set(GPIO2D4_I2C0SDA_NAME,0);
\r
1054 case RK30_PIN2_PD5:
\r
1056 rk30_mux_api_set(GPIO2D5_I2C0SCL_NAME,0);
\r
1059 case RK30_PIN2_PD6:
\r
1061 rk30_mux_api_set(GPIO2D6_I2C1SDA_NAME,0);
\r
1064 case RK30_PIN2_PD7:
\r
1066 rk30_mux_api_set(GPIO2D7_I2C1SCL_NAME,0);
\r
1069 case RK30_PIN3_PA0:
\r
1071 rk30_mux_api_set(GPIO3A0_I2C2SDA_NAME,0);
\r
1074 case RK30_PIN3_PA1:
\r
1076 rk30_mux_api_set(GPIO3A1_I2C2SCL_NAME,0);
\r
1079 case RK30_PIN3_PA2:
\r
1081 rk30_mux_api_set(GPIO3A2_I2C3SDA_NAME,0);
\r
1084 case RK30_PIN3_PA3:
\r
1086 rk30_mux_api_set(GPIO3A3_I2C3SCL_NAME,0);
\r
1089 case RK30_PIN3_PA4:
\r
1091 rk30_mux_api_set(GPIO3A4_I2C4SDA_NAME,0);
\r
1094 case RK30_PIN3_PA5:
\r
1096 rk30_mux_api_set(GPIO3A5_I2C4SCL_NAME,0);
\r
1099 case RK30_PIN3_PA6:
\r
1101 rk30_mux_api_set(GPIO3A6_SDMMC0RSTNOUT_NAME,0);
\r
1104 case RK30_PIN3_PA7:
\r
1106 rk30_mux_api_set(GPIO3A7_SDMMC0PWREN_NAME,0);
\r
1109 case RK30_PIN3_PB0:
\r
1111 rk30_mux_api_set(GPIO3B0_SDMMC0CLKOUT_NAME,0);
\r
1114 case RK30_PIN3_PB1:
\r
1116 rk30_mux_api_set(GPIO3B1_SDMMC0CMD_NAME,0);
\r
1119 case RK30_PIN3_PB2:
\r
1121 rk30_mux_api_set(GPIO3B2_SDMMC0DATA0_NAME,0);
\r
1124 case RK30_PIN3_PB3:
\r
1126 rk30_mux_api_set(GPIO3B3_SDMMC0DATA1_NAME,0);
\r
1129 case RK30_PIN3_PB4:
\r
1131 rk30_mux_api_set(GPIO3B4_SDMMC0DATA2_NAME,0);
\r
1134 case RK30_PIN3_PB5:
\r
1136 rk30_mux_api_set(GPIO3B5_SDMMC0DATA3_NAME,0);
\r
1139 case RK30_PIN3_PB6:
\r
1141 rk30_mux_api_set(GPIO3B6_SDMMC0DETECTN_NAME,0);
\r
1144 case RK30_PIN3_PB7:
\r
1146 rk30_mux_api_set(GPIO3B7_SDMMC0WRITEPRT_NAME,0);
\r
1149 case RK30_PIN3_PC0:
\r
1151 rk30_mux_api_set(GPIO3C0_SMMC1CMD_NAME,0);
\r
1154 case RK30_PIN3_PC1:
\r
1156 rk30_mux_api_set(GPIO3C1_SDMMC1DATA0_NAME,0);
\r
1159 case RK30_PIN3_PC2:
\r
1161 rk30_mux_api_set(GPIO3C2_SDMMC1DATA1_NAME,0);
\r
1164 case RK30_PIN3_PC3:
\r
1166 rk30_mux_api_set(GPIO3C3_SDMMC1DATA2_NAME,0);
\r
1169 case RK30_PIN3_PC4:
\r
1171 rk30_mux_api_set(GPIO3C4_SDMMC1DATA3_NAME,0);
\r
1174 case RK30_PIN3_PC5:
\r
1176 rk30_mux_api_set(GPIO3C5_SDMMC1CLKOUT_NAME,0);
\r
1179 case RK30_PIN3_PC6:
\r
1181 rk30_mux_api_set(GPIO3C6_SDMMC1DETECTN_NAME,0);
\r
1184 case RK30_PIN3_PC7:
\r
1186 rk30_mux_api_set(GPIO3C7_SDMMC1WRITEPRT_NAME,0);
\r
1189 case RK30_PIN3_PD0:
\r
1191 rk30_mux_api_set(GPIO3D0_SDMMC1PWREN_NAME,0);
\r
1194 case RK30_PIN3_PD1:
\r
1196 rk30_mux_api_set(GPIO3D1_SDMMC1BACKENDPWR_NAME,0);
\r
1199 case RK30_PIN3_PD2:
\r
1201 rk30_mux_api_set(GPIO3D2_SDMMC1INTN_NAME,0);
\r
1204 case RK30_PIN3_PD3:
\r
1206 rk30_mux_api_set(GPIO3D3_UART3SIN_NAME,0);
\r
1209 case RK30_PIN3_PD4:
\r
1211 rk30_mux_api_set(GPIO3D4_UART3SOUT_NAME,0);
\r
1214 case RK30_PIN3_PD5:
\r
1216 rk30_mux_api_set(GPIO3D5_UART3CTSN_NAME,0);
\r
1219 case RK30_PIN3_PD6:
\r
1221 rk30_mux_api_set(GPIO3D6_UART3RTSN_NAME,0);
\r
1224 case RK30_PIN3_PD7:
\r
1226 rk30_mux_api_set(GPIO3D7_FLASHDQS_EMMCCLKOUT_NAME,0);
\r
1229 case RK30_PIN4_PA0:
\r
1231 rk30_mux_api_set(GPIO4A0_FLASHDATA8_NAME,0);
\r
1234 case RK30_PIN4_PA1:
\r
1236 rk30_mux_api_set(GPIO4A1_FLASHDATA9_NAME,0);
\r
1239 case RK30_PIN4_PA2:
\r
1241 rk30_mux_api_set(GPIO4A2_FLASHDATA10_NAME,0);
\r
1245 case RK30_PIN4_PA3:
\r
1247 rk30_mux_api_set(GPIO4A3_FLASHDATA11_NAME,0);
\r
1250 case RK30_PIN4_PA4:
\r
1252 rk30_mux_api_set(GPIO4A4_FLASHDATA12_NAME,0);
\r
1255 case RK30_PIN4_PA5:
\r
1257 rk30_mux_api_set(GPIO4A5_FLASHDATA13_NAME,0);
\r
1260 case RK30_PIN4_PA6:
\r
1262 rk30_mux_api_set(GPIO4A6_FLASHDATA14_NAME,0);
\r
1265 case RK30_PIN4_PA7:
\r
1267 rk30_mux_api_set(GPIO4A7_FLASHDATA15_NAME,0);
\r
1270 case RK30_PIN4_PB0:
\r
1272 rk30_mux_api_set(GPIO4B0_FLASHCSN1_NAME,0);
\r
1275 case RK30_PIN4_PB1:
\r
1277 rk30_mux_api_set(GPIO4B1_FLASHCSN2_EMMCCMD_NAME,0);
\r
1280 case RK30_PIN4_PB2:
\r
1282 rk30_mux_api_set(GPIO4B2_FLASHCSN3_EMMCRSTNOUT_NAME,0);
\r
1285 case RK30_PIN4_PB3:
\r
1287 rk30_mux_api_set(GPIO4B3_FLASHCSN4_NAME,0);
\r
1290 case RK30_PIN4_PB4:
\r
1292 rk30_mux_api_set(GPIO4B4_FLASHCSN5_NAME,0);
\r
1295 case RK30_PIN4_PB5:
\r
1297 rk30_mux_api_set(GPIO4B5_FLASHCSN6_NAME,0);
\r
1300 case RK30_PIN4_PB6:
\r
1302 rk30_mux_api_set(GPIO4B6_FLASHCSN7_NAME ,0);
\r
1305 case RK30_PIN4_PB7:
\r
1307 rk30_mux_api_set(GPIO4B7_SPI0CSN1_NAME,0);
\r
1310 case RK30_PIN4_PC0:
\r
1312 rk30_mux_api_set(GPIO4C0_SMCDATA0_TRACEDATA0_NAME,0);
\r
1315 case RK30_PIN4_PC1:
\r
1317 rk30_mux_api_set(GPIO4C1_SMCDATA1_TRACEDATA1_NAME,0);
\r
1320 case RK30_PIN4_PC2:
\r
1322 rk30_mux_api_set(GPIO4C2_SMCDATA2_TRACEDATA2_NAME,0);
\r
1325 case RK30_PIN4_PC3:
\r
1327 rk30_mux_api_set(GPIO4C3_SMCDATA3_TRACEDATA3_NAME,0);
\r
1330 case RK30_PIN4_PC4:
\r
1332 rk30_mux_api_set(GPIO4C4_SMCDATA4_TRACEDATA4_NAME,0);
\r
1335 case RK30_PIN4_PC5:
\r
1337 rk30_mux_api_set(GPIO4C5_SMCDATA5_TRACEDATA5_NAME,0);
\r
1340 case RK30_PIN4_PC6:
\r
1342 rk30_mux_api_set(GPIO4C6_SMCDATA6_TRACEDATA6_NAME,0);
\r
1347 case RK30_PIN4_PC7:
\r
1349 rk30_mux_api_set(GPIO4C7_SMCDATA7_TRACEDATA7_NAME,0);
\r
1352 case RK30_PIN4_PD0:
\r
1354 rk30_mux_api_set(GPIO4D0_SMCDATA8_TRACEDATA8_NAME,0);
\r
1357 case RK30_PIN4_PD1:
\r
1359 rk30_mux_api_set(GPIO4D1_SMCDATA9_TRACEDATA9_NAME,0);
\r
1362 case RK30_PIN4_PD2:
\r
1364 rk30_mux_api_set(GPIO4D2_SMCDATA10_TRACEDATA10_NAME,0);
\r
1367 case RK30_PIN4_PD3:
\r
1369 rk30_mux_api_set(GPIO4D3_SMCDATA11_TRACEDATA11_NAME,0);
\r
1372 case RK30_PIN4_PD4:
\r
1374 rk30_mux_api_set(GPIO4D4_SMCDATA12_TRACEDATA12_NAME,0);
\r
1377 case RK30_PIN4_PD5:
\r
1379 rk30_mux_api_set(GPIO4D5_SMCDATA13_TRACEDATA13_NAME,0);
\r
1382 case RK30_PIN4_PD6:
\r
1384 rk30_mux_api_set(GPIO4D6_SMCDATA14_TRACEDATA14_NAME,0);
\r
1387 case RK30_PIN4_PD7:
\r
1389 rk30_mux_api_set(GPIO4D7_SMCDATA15_TRACEDATA15_NAME,0);
\r
1392 case RK30_PIN6_PA0:
\r
1393 case RK30_PIN6_PA1:
\r
1394 case RK30_PIN6_PA2:
\r
1395 case RK30_PIN6_PA3:
\r
1396 case RK30_PIN6_PA4:
\r
1397 case RK30_PIN6_PA5:
\r
1398 case RK30_PIN6_PA6:
\r
1399 case RK30_PIN6_PA7:
\r
1400 case RK30_PIN6_PB0:
\r
1401 case RK30_PIN6_PB1:
\r
1402 case RK30_PIN6_PB2:
\r
1403 case RK30_PIN6_PB3:
\r
1404 case RK30_PIN6_PB4:
\r
1405 case RK30_PIN6_PB5:
\r
1406 case RK30_PIN6_PB6:
\r
1408 case RK30_PIN6_PB7:
\r
1410 rk30_mux_api_set(GPIO6B7_TESTCLOCKOUT_NAME,0);
\r
1415 printk("Pin=%d isn't RK GPIO, Please init it's iomux yourself!",pin);
\r
1422 #define PMEM_CAM_BASE 0 //just for compile ,no meaning
\r
1423 #include "../../../arch/arm/plat-rk/rk_camera.c"
\r
1427 static u64 rockchip_device_camera_dmamask = 0xffffffffUL;
\r
1428 #if RK_SUPPORT_CIF0
\r
1429 static struct resource rk_camera_resource_host_0[] = {
\r
1431 .start = RK30_CIF0_PHYS,
\r
1432 .end = RK30_CIF0_PHYS + RK30_CIF0_SIZE - 1,
\r
1433 .flags = IORESOURCE_MEM,
\r
1436 .start = IRQ_CIF0,
\r
1438 .flags = IORESOURCE_IRQ,
\r
1442 #if RK_SUPPORT_CIF1
\r
1443 static struct resource rk_camera_resource_host_1[] = {
\r
1445 .start = RK30_CIF1_PHYS,
\r
1446 .end = RK30_CIF1_PHYS + RK30_CIF1_SIZE - 1,
\r
1447 .flags = IORESOURCE_MEM,
\r
1450 .start = IRQ_CIF1,
\r
1452 .flags = IORESOURCE_IRQ,
\r
1457 /*platform_device : */
\r
1458 #if RK_SUPPORT_CIF0
\r
1459 struct platform_device rk_device_camera_host_0 = {
\r
1460 .name = RK29_CAM_DRV_NAME,
\r
1461 .id = RK_CAM_PLATFORM_DEV_ID_0, /* This is used to put cameras on this interface */
\r
1462 .num_resources = ARRAY_SIZE(rk_camera_resource_host_0),
\r
1463 .resource = rk_camera_resource_host_0,
\r
1465 .dma_mask = &rockchip_device_camera_dmamask,
\r
1466 .coherent_dma_mask = 0xffffffffUL,
\r
1467 .platform_data = &rk_camera_platform_data,
\r
1472 #if RK_SUPPORT_CIF1
\r
1473 /*platform_device : */
\r
1474 struct platform_device rk_device_camera_host_1 = {
\r
1475 .name = RK29_CAM_DRV_NAME,
\r
1476 .id = RK_CAM_PLATFORM_DEV_ID_1, /* This is used to put cameras on this interface */
\r
1477 .num_resources = ARRAY_SIZE(rk_camera_resource_host_1),
\r
1478 .resource = rk_camera_resource_host_1,
\r
1480 .dma_mask = &rockchip_device_camera_dmamask,
\r
1481 .coherent_dma_mask = 0xffffffffUL,
\r
1482 .platform_data = &rk_camera_platform_data,
\r
1487 static void rk_init_camera_plateform_data(void)
\r
1492 for (i=0; i<RK_CAM_NUM; i++) {
\r
1493 rk_camera_platform_data.sensor_init_data[i] = &rk_init_data_sensor[i];
\r
1494 if (rk_camera_platform_data.register_dev[i].device_info.name) {
\r
1495 rk_camera_platform_data.register_dev[i].link_info.board_info =
\r
1496 &rk_camera_platform_data.register_dev[i].i2c_cam_info;
\r
1497 rk_camera_platform_data.register_dev[i].device_info.id = dev_idx;
\r
1498 rk_camera_platform_data.register_dev[i].device_info.dev.platform_data =
\r
1499 &rk_camera_platform_data.register_dev[i].link_info;
\r
1505 static void rk30_camera_request_reserve_mem(void)
\r
1507 #ifdef CONFIG_VIDEO_RK29_WORK_IPP
\r
1508 rk_camera_platform_data.meminfo.vbase = rk_camera_platform_data.meminfo_cif1.vbase = NULL;
\r
1509 #if defined(CONFIG_VIDEO_RKCIF_WORK_SIMUL_OFF) || ((RK_SUPPORT_CIF0 && RK_SUPPORT_CIF1) == false)
\r
1510 rk_camera_platform_data.meminfo.name = "camera_ipp_mem";
\r
1511 rk_camera_platform_data.meminfo.start = board_mem_reserve_add("camera_ipp_mem",PMEM_CAMIPP_NECESSARY);
\r
1512 rk_camera_platform_data.meminfo.size= PMEM_CAMIPP_NECESSARY;
\r
1514 memcpy(&rk_camera_platform_data.meminfo_cif1,&rk_camera_platform_data.meminfo,sizeof(struct rk29camera_mem_res));
\r
1516 rk_camera_platform_data.meminfo.name = "camera_ipp_mem_0";
\r
1517 rk_camera_platform_data.meminfo.start = board_mem_reserve_add("camera_ipp_mem_0",PMEM_CAMIPP_NECESSARY_CIF_0);
\r
1518 rk_camera_platform_data.meminfo.size= PMEM_CAMIPP_NECESSARY_CIF_0;
\r
1520 rk_camera_platform_data.meminfo_cif1.name = "camera_ipp_mem_1";
\r
1521 rk_camera_platform_data.meminfo_cif1.start =board_mem_reserve_add("camera_ipp_mem_1",PMEM_CAMIPP_NECESSARY_CIF_1);
\r
1522 rk_camera_platform_data.meminfo_cif1.size= PMEM_CAMIPP_NECESSARY_CIF_1;
\r
1525 #if PMEM_CAM_NECESSARY
\r
1526 android_pmem_cam_pdata.start = board_mem_reserve_add((char*)(android_pmem_cam_pdata.name),PMEM_CAM_NECESSARY);
\r
1527 android_pmem_cam_pdata.size= PMEM_CAM_NECESSARY;
\r
1531 static int rk_register_camera_devices(void)
\r
1534 int host_registered_0,host_registered_1;
\r
1536 rk_init_camera_plateform_data();
\r
1538 host_registered_0 = 0;
\r
1539 host_registered_1 = 0;
\r
1540 for (i=0; i<RK_CAM_NUM; i++) {
\r
1541 if (rk_camera_platform_data.register_dev[i].device_info.name) {
\r
1543 if (rk_camera_platform_data.register_dev[i].link_info.bus_id == RK_CAM_PLATFORM_DEV_ID_0) {
\r
1544 #if RK_SUPPORT_CIF0
\r
1545 if (!host_registered_0) {
\r
1546 platform_device_register(&rk_device_camera_host_0);
\r
1547 host_registered_0 = 1;
\r
1550 printk(KERN_ERR "%s(%d) : This chip isn't support CIF0, Please user check ...\n",__FUNCTION__,__LINE__);
\r
1554 if (rk_camera_platform_data.register_dev[i].link_info.bus_id == RK_CAM_PLATFORM_DEV_ID_1) {
\r
1555 #if RK_SUPPORT_CIF1
\r
1556 if (!host_registered_1) {
\r
1557 platform_device_register(&rk_device_camera_host_1);
\r
1558 host_registered_1 = 1;
\r
1561 printk(KERN_ERR "%s(%d) : This chip isn't support CIF1, Please user check ...\n",__FUNCTION__,__LINE__);
\r
1567 for (i=0; i<RK_CAM_NUM; i++) {
\r
1568 if (rk_camera_platform_data.register_dev[i].device_info.name) {
\r
1569 platform_device_register(&rk_camera_platform_data.register_dev[i].device_info);
\r
1572 #if PMEM_CAM_NECESSARY
\r
1573 platform_device_register(&android_pmem_cam_device);
\r
1578 module_init(rk_register_camera_devices);
\r
1581 #endif //#ifdef CONFIG_VIDEO_RK
\r