1 #include <mach/rk29_camera.h>
\r
3 #ifdef CONFIG_VIDEO_RK29
\r
5 #ifndef PMEM_CAM_SIZE
\r
7 /*---------------- Camera Sensor Fixed Macro Begin ------------------------*/
\r
8 // Below Macro is fixed, programer don't change it!!!!!!
9 #define _CONS(a,b) a##b
10 #define CONS(a,b) _CONS(a,b)
\r
13 #define _STR(x) __STR(x)
14 #define STR(x) _STR(x)
\r
16 #if (CONFIG_SENSOR_IIC_ADDR_0 != 0x00)
17 #define PMEM_SENSOR_FULL_RESOLUTION_0 CONS(CONFIG_SENSOR_0,_FULL_RESOLUTION)
18 #if !(PMEM_SENSOR_FULL_RESOLUTION_0)
19 #undef PMEM_SENSOR_FULL_RESOLUTION_0
20 #define PMEM_SENSOR_FULL_RESOLUTION_0 0x500000
23 #define PMEM_SENSOR_FULL_RESOLUTION_0 0x00
26 #if (CONFIG_SENSOR_IIC_ADDR_1 != 0x00)
27 #define PMEM_SENSOR_FULL_RESOLUTION_1 CONS(CONFIG_SENSOR_1,_FULL_RESOLUTION)
28 #if !(PMEM_SENSOR_FULL_RESOLUTION_1)
29 #undef PMEM_SENSOR_FULL_RESOLUTION_1
30 #define PMEM_SENSOR_FULL_RESOLUTION_1 0x500000
33 #define PMEM_SENSOR_FULL_RESOLUTION_1 0x00
36 #if (PMEM_SENSOR_FULL_RESOLUTION_0 > PMEM_SENSOR_FULL_RESOLUTION_1)
37 #define PMEM_CAM_FULL_RESOLUTION PMEM_SENSOR_FULL_RESOLUTION_0
39 #define PMEM_CAM_FULL_RESOLUTION PMEM_SENSOR_FULL_RESOLUTION_1
42 #if (PMEM_CAM_FULL_RESOLUTION == 0x500000)
43 #define PMEM_CAM_NECESSARY 0x1200000 /* 1280*720*1.5*4(preview) + 7.5M(capture raw) + 4M(jpeg encode output) */
\r
44 #elif (PMEM_CAM_FULL_RESOLUTION == 0x300000)
45 #define PMEM_CAM_NECESSARY 0xe00000 /* 1280*720*1.5*4(preview) + 4.5M(capture raw) + 3M(jpeg encode output) */
\r
46 #elif (PMEM_CAM_FULL_RESOLUTION == 0x200000) /* 1280*720*1.5*4(preview) + 3M(capture raw) + 3M(jpeg encode output) */
\r
47 #define PMEM_CAM_NECESSARY 0xc00000
\r
48 #elif ((PMEM_CAM_FULL_RESOLUTION == 0x100000) || (PMEM_CAM_FULL_RESOLUTION == 0x130000))
49 #define PMEM_CAM_NECESSARY 0x800000 /* 800*600*1.5*4(preview) + 2M(capture raw) + 2M(jpeg encode output) */
\r
51 /*---------------- Camera Sensor Fixed Macro End ------------------------*/
\r
53 #else // #ifdef PMEM_CAM_SIZE
\r
55 /*****************************************************************************************
57 * author: ddl@rock-chips.com
58 *****************************************************************************************/
\r
59 static int camera_debug;
\r
60 module_param(camera_debug, int, S_IRUGO|S_IWUSR);
\r
62 #define ddprintk(level, fmt, arg...) do { \
\r
63 if (camera_debug >= level) \
\r
64 printk(KERN_WARNING"rk29_cam_io: " fmt , ## arg); } while (0)
\r
66 #define dprintk(format, ...) ddprintk(1, format, ## __VA_ARGS__)
\r
68 #define SENSOR_NAME_0 STR(CONFIG_SENSOR_0) /* back camera sensor */
69 #define SENSOR_NAME_1 STR(CONFIG_SENSOR_1) /* front camera sensor */
70 #define SENSOR_DEVICE_NAME_0 STR(CONS(CONFIG_SENSOR_0, _back))
71 #define SENSOR_DEVICE_NAME_1 STR(CONS(CONFIG_SENSOR_1, _front))
73 static int rk29_sensor_io_init(void);
74 static int rk29_sensor_io_deinit(int sensor);
75 static int rk29_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd,int on);
77 static struct rk29camera_platform_data rk29_camera_platform_data = {
\r
78 .io_init = rk29_sensor_io_init,
79 .io_deinit = rk29_sensor_io_deinit,
80 .sensor_ioctrl = rk29_sensor_ioctrl,
83 .gpio_reset = CONFIG_SENSOR_RESET_PIN_0,
84 .gpio_power = CONFIG_SENSOR_POWER_PIN_0,
85 .gpio_powerdown = CONFIG_SENSOR_POWERDN_PIN_0,
86 .gpio_flash = CONFIG_SENSOR_FALSH_PIN_0,
87 .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_0|CONFIG_SENSOR_RESETACTIVE_LEVEL_0|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0|CONFIG_SENSOR_FLASHACTIVE_LEVEL_0),
89 .dev_name = SENSOR_DEVICE_NAME_0,
91 .gpio_reset = CONFIG_SENSOR_RESET_PIN_1,
92 .gpio_power = CONFIG_SENSOR_POWER_PIN_1,
93 .gpio_powerdown = CONFIG_SENSOR_POWERDN_PIN_1,
94 .gpio_flash = CONFIG_SENSOR_FALSH_PIN_1,
95 .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_1|CONFIG_SENSOR_RESETACTIVE_LEVEL_1|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1|CONFIG_SENSOR_FLASHACTIVE_LEVEL_1),
97 .dev_name = SENSOR_DEVICE_NAME_1,
100 #ifdef CONFIG_VIDEO_RK29_WORK_IPP
102 .name = "camera_ipp_mem",
103 .start = MEM_CAMIPP_BASE,
104 .size = MEM_CAMIPP_SIZE,
111 static int sensor_power_default_cb (struct rk29camera_gpio_res *res, int on)
\r
113 int camera_power = res->gpio_power;
\r
114 int camera_ioflag = res->gpio_flag;
\r
115 int camera_io_init = res->gpio_init;
\r
118 if (camera_power != INVALID_GPIO) {
\r
119 if (camera_io_init & RK29_CAM_POWERACTIVE_MASK) {
\r
121 gpio_set_value(camera_power, ((camera_ioflag&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
122 dprintk("\n%s..%s..PowerPin=%d ..PinLevel = %x \n",__FUNCTION__,res->dev_name, camera_power, ((camera_ioflag&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
125 gpio_set_value(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
126 dprintk("\n%s..%s..PowerPin=%d ..PinLevel = %x \n",__FUNCTION__,res->dev_name, camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
129 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
130 printk("\n%s..%s..PowerPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_power);
\r
133 ret = RK29_CAM_EIO_INVALID;
\r
139 static int sensor_reset_default_cb (struct rk29camera_gpio_res *res, int on)
\r
141 int camera_reset = res->gpio_reset;
\r
142 int camera_ioflag = res->gpio_flag;
\r
143 int camera_io_init = res->gpio_init;
\r
146 if (camera_reset != INVALID_GPIO) {
\r
147 if (camera_io_init & RK29_CAM_RESETACTIVE_MASK) {
\r
149 gpio_set_value(camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
\r
150 dprintk("\n%s..%s..ResetPin=%d ..PinLevel = %x \n",__FUNCTION__,res->dev_name,camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
\r
152 gpio_set_value(camera_reset,(((~camera_ioflag)&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
\r
153 dprintk("\n%s..%s..ResetPin= %d..PinLevel = %x \n",__FUNCTION__,res->dev_name, camera_reset, (((~camera_ioflag)&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
\r
156 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
157 printk("\n%s..%s..ResetPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_reset);
\r
160 ret = RK29_CAM_EIO_INVALID;
\r
166 static int sensor_powerdown_default_cb (struct rk29camera_gpio_res *res, int on)
\r
168 int camera_powerdown = res->gpio_powerdown;
\r
169 int camera_ioflag = res->gpio_flag;
\r
170 int camera_io_init = res->gpio_init;
\r
173 if (camera_powerdown != INVALID_GPIO) {
\r
174 if (camera_io_init & RK29_CAM_POWERDNACTIVE_MASK) {
\r
176 gpio_set_value(camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
\r
177 dprintk("\n%s..%s..PowerDownPin=%d ..PinLevel = %x \n",__FUNCTION__,res->dev_name,camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
\r
179 gpio_set_value(camera_powerdown,(((~camera_ioflag)&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
\r
180 dprintk("\n%s..%s..PowerDownPin= %d..PinLevel = %x \n",__FUNCTION__,res->dev_name, camera_powerdown, (((~camera_ioflag)&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
\r
183 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
184 dprintk("\n%s..%s..PowerDownPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_powerdown);
\r
187 ret = RK29_CAM_EIO_INVALID;
\r
193 static int sensor_flash_default_cb (struct rk29camera_gpio_res *res, int on)
\r
195 int camera_flash = res->gpio_flash;
\r
196 int camera_ioflag = res->gpio_flag;
\r
197 int camera_io_init = res->gpio_init;
\r
200 if (camera_flash != INVALID_GPIO) {
\r
201 if (camera_io_init & RK29_CAM_FLASHACTIVE_MASK) {
\r
206 gpio_set_value(camera_flash,(((~camera_ioflag)&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
207 dprintk("\n%s..%s..FlashPin= %d..PinLevel = %x \n",__FUNCTION__,res->dev_name, camera_flash, (((~camera_ioflag)&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
213 gpio_set_value(camera_flash, ((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
214 dprintk("\n%s..%s..FlashPin=%d ..PinLevel = %x \n",__FUNCTION__,res->dev_name,camera_flash, ((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
220 gpio_set_value(camera_flash, ((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
221 dprintk("\n%s..%s..FlashPin=%d ..PinLevel = %x \n",__FUNCTION__,res->dev_name,camera_flash, ((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
227 printk("\n%s..%s..Flash command(%d) is invalidate \n",__FUNCTION__,res->dev_name,on);
\r
232 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
233 printk("\n%s..%s..FlashPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_flash);
\r
236 ret = RK29_CAM_EIO_INVALID;
\r
242 static int rk29_sensor_io_init(void)
245 unsigned int camera_reset = INVALID_GPIO, camera_power = INVALID_GPIO;
246 unsigned int camera_powerdown = INVALID_GPIO, camera_flash = INVALID_GPIO;
247 unsigned int camera_ioflag;
249 if (sensor_ioctl_cb.sensor_power_cb == NULL)
\r
250 sensor_ioctl_cb.sensor_power_cb = sensor_power_default_cb;
\r
251 if (sensor_ioctl_cb.sensor_reset_cb == NULL)
\r
252 sensor_ioctl_cb.sensor_reset_cb = sensor_reset_default_cb;
\r
253 if (sensor_ioctl_cb.sensor_powerdown_cb == NULL)
\r
254 sensor_ioctl_cb.sensor_powerdown_cb = sensor_powerdown_default_cb;
\r
255 if (sensor_ioctl_cb.sensor_flash_cb == NULL)
\r
256 sensor_ioctl_cb.sensor_flash_cb = sensor_flash_default_cb;
\r
258 for (i=0; i<2; i++) {
259 camera_reset = rk29_camera_platform_data.gpio_res[i].gpio_reset;
260 camera_power = rk29_camera_platform_data.gpio_res[i].gpio_power;
261 camera_powerdown = rk29_camera_platform_data.gpio_res[i].gpio_powerdown;
262 camera_flash = rk29_camera_platform_data.gpio_res[i].gpio_flash;
263 camera_ioflag = rk29_camera_platform_data.gpio_res[i].gpio_flag;
264 rk29_camera_platform_data.gpio_res[i].gpio_init = 0;
266 if (camera_power != INVALID_GPIO) {
267 ret = gpio_request(camera_power, "camera power");
269 goto sensor_io_int_loop_end;
270 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_POWERACTIVE_MASK;
271 gpio_set_value(camera_reset, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
272 gpio_direction_output(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
274 dprintk("\n%s....power pin(%d) init success(0x%x) \n",__FUNCTION__,camera_power,(((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
278 if (camera_reset != INVALID_GPIO) {
279 ret = gpio_request(camera_reset, "camera reset");
281 goto sensor_io_int_loop_end;
282 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_RESETACTIVE_MASK;
283 gpio_set_value(camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
284 gpio_direction_output(camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
286 dprintk("\n%s....reset pin(%d) init success(0x%x)\n",__FUNCTION__,camera_reset,((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
\r
290 if (camera_powerdown != INVALID_GPIO) {
291 ret = gpio_request(camera_powerdown, "camera powerdown");
293 goto sensor_io_int_loop_end;
294 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_POWERDNACTIVE_MASK;
295 gpio_set_value(camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
296 gpio_direction_output(camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
298 dprintk("\n%s....powerdown pin(%d) init success(0x%x) \n",__FUNCTION__,camera_powerdown,((camera_ioflag&RK29_CAM_POWERDNACTIVE_BITPOS)>>RK29_CAM_POWERDNACTIVE_BITPOS));
\r
302 if (camera_flash != INVALID_GPIO) {
303 ret = gpio_request(camera_flash, "camera flash");
305 goto sensor_io_int_loop_end;
306 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_FLASHACTIVE_MASK;
307 gpio_set_value(camera_flash, ((~camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS)); /* falsh off */
\r
308 gpio_direction_output(camera_flash, ((~camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
310 dprintk("\n%s....flash pin(%d) init success(0x%x) \n",__FUNCTION__,camera_flash,((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
314 sensor_io_int_loop_end:
315 rk29_sensor_io_deinit(i);
322 static int rk29_sensor_io_deinit(int sensor)
324 unsigned int camera_reset = INVALID_GPIO, camera_power = INVALID_GPIO;
325 unsigned int camera_powerdown = INVALID_GPIO, camera_flash = INVALID_GPIO;
327 camera_reset = rk29_camera_platform_data.gpio_res[sensor].gpio_reset;
328 camera_power = rk29_camera_platform_data.gpio_res[sensor].gpio_power;
329 camera_powerdown = rk29_camera_platform_data.gpio_res[sensor].gpio_powerdown;
330 camera_flash = rk29_camera_platform_data.gpio_res[sensor].gpio_flash;
332 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_POWERACTIVE_MASK) {
333 if (camera_power != INVALID_GPIO) {
334 gpio_direction_input(camera_power);
335 gpio_free(camera_power);
339 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_RESETACTIVE_MASK) {
340 if (camera_reset != INVALID_GPIO) {
341 gpio_direction_input(camera_reset);
342 gpio_free(camera_reset);
346 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_POWERDNACTIVE_MASK) {
347 if (camera_powerdown != INVALID_GPIO) {
348 gpio_direction_input(camera_powerdown);
349 gpio_free(camera_powerdown);
353 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_FLASHACTIVE_MASK) {
354 if (camera_flash != INVALID_GPIO) {
355 gpio_direction_input(camera_flash);
356 gpio_free(camera_flash);
360 rk29_camera_platform_data.gpio_res[sensor].gpio_init = 0;
363 static int rk29_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd, int on)
365 struct rk29camera_gpio_res *res;
\r
366 int ret = RK29_CAM_IO_SUCCESS;
368 if(rk29_camera_platform_data.gpio_res[0].dev_name && (strcmp(rk29_camera_platform_data.gpio_res[0].dev_name, dev_name(dev)) == 0)) {
369 res = (struct rk29camera_gpio_res *)&rk29_camera_platform_data.gpio_res[0];
\r
370 } else if (rk29_camera_platform_data.gpio_res[1].dev_name && (strcmp(rk29_camera_platform_data.gpio_res[1].dev_name, dev_name(dev)) == 0)) {
371 res = (struct rk29camera_gpio_res *)&rk29_camera_platform_data.gpio_res[1];
\r
378 if (sensor_ioctl_cb.sensor_power_cb) {
\r
379 ret = sensor_ioctl_cb.sensor_power_cb(res, on);
\r
381 printk(KERN_ERR "sensor_ioctl_cb.sensor_power_cb is NULL");
\r
388 if (sensor_ioctl_cb.sensor_reset_cb) {
\r
389 ret = sensor_ioctl_cb.sensor_reset_cb(res, on);
\r
391 printk(KERN_ERR "sensor_ioctl_cb.sensor_reset_cb is NULL");
\r
399 if (sensor_ioctl_cb.sensor_powerdown_cb) {
\r
400 ret = sensor_ioctl_cb.sensor_powerdown_cb(res, on);
\r
402 printk(KERN_ERR "sensor_ioctl_cb.sensor_powerdown_cb is NULL");
\r
410 if (sensor_ioctl_cb.sensor_flash_cb) {
\r
411 ret = sensor_ioctl_cb.sensor_flash_cb(res, on);
\r
413 printk(KERN_ERR "sensor_ioctl_cb.sensor_flash_cb is NULL!");
\r
421 printk("%s cmd(0x%x) is unknown!\n",__FUNCTION__, cmd);
427 static int rk29_sensor_power(struct device *dev, int on)
429 rk29_sensor_ioctrl(dev,Cam_Power,on);
432 static int rk29_sensor_reset(struct device *dev)
434 rk29_sensor_ioctrl(dev,Cam_Reset,1);
436 rk29_sensor_ioctrl(dev,Cam_Reset,0);
439 static int rk29_sensor_powerdown(struct device *dev, int on)
441 return rk29_sensor_ioctrl(dev,Cam_PowerDown,on);
443 #if (CONFIG_SENSOR_IIC_ADDR_0 != 0x00)
444 static struct i2c_board_info rk29_i2c_cam_info_0[] = {
446 I2C_BOARD_INFO(SENSOR_NAME_0, CONFIG_SENSOR_IIC_ADDR_0>>1)
450 static struct soc_camera_link rk29_iclink_0 = {
451 .bus_id = RK29_CAM_PLATFORM_DEV_ID,
452 .power = rk29_sensor_power,
453 .powerdown = rk29_sensor_powerdown,
454 .board_info = &rk29_i2c_cam_info_0[0],
455 .i2c_adapter_id = CONFIG_SENSOR_IIC_ADAPTER_ID_0,
456 .module_name = SENSOR_NAME_0,
459 /*platform_device : soc-camera need */
460 static struct platform_device rk29_soc_camera_pdrv_0 = {
461 .name = "soc-camera-pdrv",
464 .init_name = SENSOR_DEVICE_NAME_0,
465 .platform_data = &rk29_iclink_0,
469 static struct i2c_board_info rk29_i2c_cam_info_1[] = {
471 I2C_BOARD_INFO(SENSOR_NAME_1, CONFIG_SENSOR_IIC_ADDR_1>>1)
475 static struct soc_camera_link rk29_iclink_1 = {
476 .bus_id = RK29_CAM_PLATFORM_DEV_ID,
477 .power = rk29_sensor_power,
478 .powerdown = rk29_sensor_powerdown,
479 .board_info = &rk29_i2c_cam_info_1[0],
480 .i2c_adapter_id = CONFIG_SENSOR_IIC_ADAPTER_ID_1,
481 .module_name = SENSOR_NAME_1,
484 /*platform_device : soc-camera need */
485 static struct platform_device rk29_soc_camera_pdrv_1 = {
486 .name = "soc-camera-pdrv",
489 .init_name = SENSOR_DEVICE_NAME_1,
490 .platform_data = &rk29_iclink_1,
495 static u64 rockchip_device_camera_dmamask = 0xffffffffUL;
496 static struct resource rk29_camera_resource[] = {
498 .start = RK29_VIP_PHYS,
499 .end = RK29_VIP_PHYS + RK29_VIP_SIZE - 1,
500 .flags = IORESOURCE_MEM,
505 .flags = IORESOURCE_IRQ,
509 /*platform_device : */
510 static struct platform_device rk29_device_camera = {
511 .name = RK29_CAM_DRV_NAME,
512 .id = RK29_CAM_PLATFORM_DEV_ID, /* This is used to put cameras on this interface */
513 .num_resources = ARRAY_SIZE(rk29_camera_resource),
514 .resource = rk29_camera_resource,
516 .dma_mask = &rockchip_device_camera_dmamask,
517 .coherent_dma_mask = 0xffffffffUL,
518 .platform_data = &rk29_camera_platform_data,
522 static struct android_pmem_platform_data android_pmem_cam_pdata = {
524 .start = PMEM_CAM_BASE,
525 .size = PMEM_CAM_SIZE,
530 static struct platform_device android_pmem_cam_device = {
531 .name = "android_pmem",
534 .platform_data = &android_pmem_cam_pdata,
540 #endif //#ifdef CONFIG_VIDEO_RK29