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
60 #define dprintk(format, ...) printk(KERN_WARNING format, ## __VA_ARGS__)
\r
62 #define dprintk(format, ...)
\r
65 #define SENSOR_NAME_0 STR(CONFIG_SENSOR_0) /* back camera sensor */
66 #define SENSOR_NAME_1 STR(CONFIG_SENSOR_1) /* front camera sensor */
67 #define SENSOR_DEVICE_NAME_0 STR(CONS(CONFIG_SENSOR_0, _back))
68 #define SENSOR_DEVICE_NAME_1 STR(CONS(CONFIG_SENSOR_1, _front))
70 static int rk29_sensor_io_init(void);
71 static int rk29_sensor_io_deinit(int sensor);
72 static int rk29_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd,int on);
74 static struct rk29camera_platform_data rk29_camera_platform_data = {
\r
75 .io_init = rk29_sensor_io_init,
76 .io_deinit = rk29_sensor_io_deinit,
77 .sensor_ioctrl = rk29_sensor_ioctrl,
80 .gpio_reset = CONFIG_SENSOR_RESET_PIN_0,
81 .gpio_power = CONFIG_SENSOR_POWER_PIN_0,
82 .gpio_powerdown = CONFIG_SENSOR_POWERDN_PIN_0,
83 .gpio_flash = CONFIG_SENSOR_FALSH_PIN_0,
84 .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_0|CONFIG_SENSOR_RESETACTIVE_LEVEL_0|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0|CONFIG_SENSOR_FLASHACTIVE_LEVEL_0),
86 .dev_name = SENSOR_DEVICE_NAME_0,
88 .gpio_reset = CONFIG_SENSOR_RESET_PIN_1,
89 .gpio_power = CONFIG_SENSOR_POWER_PIN_1,
90 .gpio_powerdown = CONFIG_SENSOR_POWERDN_PIN_1,
91 .gpio_flash = CONFIG_SENSOR_FALSH_PIN_1,
92 .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_1|CONFIG_SENSOR_RESETACTIVE_LEVEL_1|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1|CONFIG_SENSOR_FLASHACTIVE_LEVEL_1),
94 .dev_name = SENSOR_DEVICE_NAME_1,
97 #ifdef CONFIG_VIDEO_RK29_WORK_IPP
99 .name = "camera_ipp_mem",
100 .start = MEM_CAMIPP_BASE,
101 .size = MEM_CAMIPP_SIZE,
108 static int sensor_power_default_cb (struct rk29camera_gpio_res *res, int on)
\r
110 int camera_power = res->gpio_power;
\r
111 int camera_ioflag = res->gpio_flag;
\r
112 int camera_io_init = res->gpio_init;
\r
115 if (camera_power != INVALID_GPIO) {
\r
116 if (camera_io_init & RK29_CAM_POWERACTIVE_MASK) {
\r
118 gpio_set_value(camera_power, ((camera_ioflag&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
119 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
122 gpio_set_value(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
\r
123 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
126 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
127 printk("\n%s..%s..PowerPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_power);
\r
130 ret = RK29_CAM_EIO_INVALID;
\r
136 static int sensor_reset_default_cb (struct rk29camera_gpio_res *res, int on)
\r
138 int camera_reset = res->gpio_reset;
\r
139 int camera_ioflag = res->gpio_flag;
\r
140 int camera_io_init = res->gpio_init;
\r
143 if (camera_reset != INVALID_GPIO) {
\r
144 if (camera_io_init & RK29_CAM_RESETACTIVE_MASK) {
\r
146 gpio_set_value(camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
\r
147 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
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
153 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
154 printk("\n%s..%s..ResetPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_reset);
\r
157 ret = RK29_CAM_EIO_INVALID;
\r
163 static int sensor_powerdown_default_cb (struct rk29camera_gpio_res *res, int on)
\r
165 int camera_powerdown = res->gpio_powerdown;
\r
166 int camera_ioflag = res->gpio_flag;
\r
167 int camera_io_init = res->gpio_init;
\r
170 if (camera_powerdown != INVALID_GPIO) {
\r
171 if (camera_io_init & RK29_CAM_POWERDNACTIVE_MASK) {
\r
173 gpio_set_value(camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
\r
174 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
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
180 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
181 dprintk("\n%s..%s..PowerDownPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_powerdown);
\r
184 ret = RK29_CAM_EIO_INVALID;
\r
190 static int sensor_flash_default_cb (struct rk29camera_gpio_res *res, int on)
\r
192 int camera_flash = res->gpio_flash;
\r
193 int camera_ioflag = res->gpio_flag;
\r
194 int camera_io_init = res->gpio_init;
\r
197 if (camera_flash != INVALID_GPIO) {
\r
198 if (camera_io_init & RK29_CAM_FLASHACTIVE_MASK) {
\r
203 gpio_set_value(camera_flash,(((~camera_ioflag)&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
204 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
210 gpio_set_value(camera_flash, ((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
211 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
217 gpio_set_value(camera_flash, ((camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
218 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
224 printk("\n%s..%s..Flash command(%d) is invalidate \n",__FUNCTION__,res->dev_name,on);
\r
229 ret = RK29_CAM_EIO_REQUESTFAIL;
\r
230 printk("\n%s..%s..FlashPin=%d request failed!\n",__FUNCTION__,res->dev_name,camera_flash);
\r
233 ret = RK29_CAM_EIO_INVALID;
\r
239 static int rk29_sensor_io_init(void)
242 unsigned int camera_reset = INVALID_GPIO, camera_power = INVALID_GPIO;
243 unsigned int camera_powerdown = INVALID_GPIO, camera_flash = INVALID_GPIO;
244 unsigned int camera_ioflag;
246 if (sensor_ioctl_cb.sensor_power_cb == NULL)
\r
247 sensor_ioctl_cb.sensor_power_cb = sensor_power_default_cb;
\r
248 if (sensor_ioctl_cb.sensor_reset_cb == NULL)
\r
249 sensor_ioctl_cb.sensor_reset_cb = sensor_reset_default_cb;
\r
250 if (sensor_ioctl_cb.sensor_powerdown_cb == NULL)
\r
251 sensor_ioctl_cb.sensor_powerdown_cb = sensor_powerdown_default_cb;
\r
252 if (sensor_ioctl_cb.sensor_flash_cb == NULL)
\r
253 sensor_ioctl_cb.sensor_flash_cb = sensor_flash_default_cb;
\r
255 for (i=0; i<2; i++) {
256 camera_reset = rk29_camera_platform_data.gpio_res[i].gpio_reset;
257 camera_power = rk29_camera_platform_data.gpio_res[i].gpio_power;
258 camera_powerdown = rk29_camera_platform_data.gpio_res[i].gpio_powerdown;
259 camera_flash = rk29_camera_platform_data.gpio_res[i].gpio_flash;
260 camera_ioflag = rk29_camera_platform_data.gpio_res[i].gpio_flag;
261 rk29_camera_platform_data.gpio_res[i].gpio_init = 0;
263 if (camera_power != INVALID_GPIO) {
264 ret = gpio_request(camera_power, "camera power");
266 goto sensor_io_int_loop_end;
267 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_POWERACTIVE_MASK;
268 gpio_set_value(camera_reset, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
269 gpio_direction_output(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
271 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
275 if (camera_reset != INVALID_GPIO) {
276 ret = gpio_request(camera_reset, "camera reset");
278 goto sensor_io_int_loop_end;
279 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_RESETACTIVE_MASK;
280 gpio_set_value(camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
281 gpio_direction_output(camera_reset, ((camera_ioflag&RK29_CAM_RESETACTIVE_MASK)>>RK29_CAM_RESETACTIVE_BITPOS));
283 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
287 if (camera_powerdown != INVALID_GPIO) {
288 ret = gpio_request(camera_powerdown, "camera powerdown");
290 goto sensor_io_int_loop_end;
291 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_POWERDNACTIVE_MASK;
292 gpio_set_value(camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
293 gpio_direction_output(camera_powerdown, ((camera_ioflag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));
295 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
299 if (camera_flash != INVALID_GPIO) {
300 ret = gpio_request(camera_flash, "camera flash");
302 goto sensor_io_int_loop_end;
303 rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_FLASHACTIVE_MASK;
304 gpio_set_value(camera_flash, ((~camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS)); /* falsh off */
\r
305 gpio_direction_output(camera_flash, ((~camera_ioflag&RK29_CAM_FLASHACTIVE_MASK)>>RK29_CAM_FLASHACTIVE_BITPOS));
\r
307 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
311 sensor_io_int_loop_end:
312 rk29_sensor_io_deinit(i);
319 static int rk29_sensor_io_deinit(int sensor)
321 unsigned int camera_reset = INVALID_GPIO, camera_power = INVALID_GPIO;
322 unsigned int camera_powerdown = INVALID_GPIO, camera_flash = INVALID_GPIO;
324 camera_reset = rk29_camera_platform_data.gpio_res[sensor].gpio_reset;
325 camera_power = rk29_camera_platform_data.gpio_res[sensor].gpio_power;
326 camera_powerdown = rk29_camera_platform_data.gpio_res[sensor].gpio_powerdown;
327 camera_flash = rk29_camera_platform_data.gpio_res[sensor].gpio_flash;
329 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_POWERACTIVE_MASK) {
330 if (camera_power != INVALID_GPIO) {
331 gpio_direction_input(camera_power);
332 gpio_free(camera_power);
336 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_RESETACTIVE_MASK) {
337 if (camera_reset != INVALID_GPIO) {
338 gpio_direction_input(camera_reset);
339 gpio_free(camera_reset);
343 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_POWERDNACTIVE_MASK) {
344 if (camera_powerdown != INVALID_GPIO) {
345 gpio_direction_input(camera_powerdown);
346 gpio_free(camera_powerdown);
350 if (rk29_camera_platform_data.gpio_res[sensor].gpio_init & RK29_CAM_FLASHACTIVE_MASK) {
351 if (camera_flash != INVALID_GPIO) {
352 gpio_direction_input(camera_flash);
353 gpio_free(camera_flash);
357 rk29_camera_platform_data.gpio_res[sensor].gpio_init = 0;
360 static int rk29_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd, int on)
362 struct rk29camera_gpio_res *res;
\r
363 int ret = RK29_CAM_IO_SUCCESS;
365 if(rk29_camera_platform_data.gpio_res[0].dev_name && (strcmp(rk29_camera_platform_data.gpio_res[0].dev_name, dev_name(dev)) == 0)) {
366 res = (struct rk29camera_gpio_res *)&rk29_camera_platform_data.gpio_res[0];
\r
367 } 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)) {
368 res = (struct rk29camera_gpio_res *)&rk29_camera_platform_data.gpio_res[1];
\r
375 if (sensor_ioctl_cb.sensor_power_cb) {
\r
376 ret = sensor_ioctl_cb.sensor_power_cb(res, on);
\r
378 printk(KERN_ERR "sensor_ioctl_cb.sensor_power_cb is NULL");
\r
385 if (sensor_ioctl_cb.sensor_reset_cb) {
\r
386 ret = sensor_ioctl_cb.sensor_reset_cb(res, on);
\r
388 printk(KERN_ERR "sensor_ioctl_cb.sensor_reset_cb is NULL");
\r
396 if (sensor_ioctl_cb.sensor_powerdown_cb) {
\r
397 ret = sensor_ioctl_cb.sensor_powerdown_cb(res, on);
\r
399 printk(KERN_ERR "sensor_ioctl_cb.sensor_powerdown_cb is NULL");
\r
407 if (sensor_ioctl_cb.sensor_flash_cb) {
\r
408 ret = sensor_ioctl_cb.sensor_flash_cb(res, on);
\r
410 printk(KERN_ERR "sensor_ioctl_cb.sensor_flash_cb is NULL!");
\r
418 printk("%s cmd(0x%x) is unknown!\n",__FUNCTION__, cmd);
424 static int rk29_sensor_power(struct device *dev, int on)
426 rk29_sensor_ioctrl(dev,Cam_Power,on);
429 static int rk29_sensor_reset(struct device *dev)
431 rk29_sensor_ioctrl(dev,Cam_Reset,1);
433 rk29_sensor_ioctrl(dev,Cam_Reset,0);
436 static int rk29_sensor_powerdown(struct device *dev, int on)
438 return rk29_sensor_ioctrl(dev,Cam_PowerDown,on);
440 #if (CONFIG_SENSOR_IIC_ADDR_0 != 0x00)
441 static struct i2c_board_info rk29_i2c_cam_info_0[] = {
443 I2C_BOARD_INFO(SENSOR_NAME_0, CONFIG_SENSOR_IIC_ADDR_0>>1)
447 static struct soc_camera_link rk29_iclink_0 = {
448 .bus_id = RK29_CAM_PLATFORM_DEV_ID,
449 .power = rk29_sensor_power,
450 .powerdown = rk29_sensor_powerdown,
451 .board_info = &rk29_i2c_cam_info_0[0],
452 .i2c_adapter_id = CONFIG_SENSOR_IIC_ADAPTER_ID_0,
453 .module_name = SENSOR_NAME_0,
456 /*platform_device : soc-camera need */
457 static struct platform_device rk29_soc_camera_pdrv_0 = {
458 .name = "soc-camera-pdrv",
461 .init_name = SENSOR_DEVICE_NAME_0,
462 .platform_data = &rk29_iclink_0,
466 static struct i2c_board_info rk29_i2c_cam_info_1[] = {
468 I2C_BOARD_INFO(SENSOR_NAME_1, CONFIG_SENSOR_IIC_ADDR_1>>1)
472 static struct soc_camera_link rk29_iclink_1 = {
473 .bus_id = RK29_CAM_PLATFORM_DEV_ID,
474 .power = rk29_sensor_power,
475 .powerdown = rk29_sensor_powerdown,
476 .board_info = &rk29_i2c_cam_info_1[0],
477 .i2c_adapter_id = CONFIG_SENSOR_IIC_ADAPTER_ID_1,
478 .module_name = SENSOR_NAME_1,
481 /*platform_device : soc-camera need */
482 static struct platform_device rk29_soc_camera_pdrv_1 = {
483 .name = "soc-camera-pdrv",
486 .init_name = SENSOR_DEVICE_NAME_1,
487 .platform_data = &rk29_iclink_1,
492 static u64 rockchip_device_camera_dmamask = 0xffffffffUL;
493 static struct resource rk29_camera_resource[] = {
495 .start = RK29_VIP_PHYS,
496 .end = RK29_VIP_PHYS + RK29_VIP_SIZE - 1,
497 .flags = IORESOURCE_MEM,
502 .flags = IORESOURCE_IRQ,
506 /*platform_device : */
507 static struct platform_device rk29_device_camera = {
508 .name = RK29_CAM_DRV_NAME,
509 .id = RK29_CAM_PLATFORM_DEV_ID, /* This is used to put cameras on this interface */
510 .num_resources = ARRAY_SIZE(rk29_camera_resource),
511 .resource = rk29_camera_resource,
513 .dma_mask = &rockchip_device_camera_dmamask,
514 .coherent_dma_mask = 0xffffffffUL,
515 .platform_data = &rk29_camera_platform_data,
519 static struct android_pmem_platform_data android_pmem_cam_pdata = {
521 .start = PMEM_CAM_BASE,
522 .size = PMEM_CAM_SIZE,
527 static struct platform_device android_pmem_cam_device = {
528 .name = "android_pmem",
531 .platform_data = &android_pmem_cam_pdata,
537 #endif //#ifdef CONFIG_VIDEO_RK29