rk312x:cif: 1. soft reset cif before setting cif registers
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-rockchip / rk_camera.c
index 8a5e4dcb92a3d5b72405fd4a9de6b45c007dd13e..7d8db65d313accc1380ff5f2eb1a04575d592e43 100644 (file)
@@ -1,10 +1,11 @@
 #include "rk_camera.h"\r
+#include "rk30_camera.h"\r
 #include <linux/gpio.h>\r
 #include <linux/delay.h>\r
 #include <linux/version.h>\r
 #include <linux/moduleparam.h>\r
 #include <linux/of_gpio.h>\r
-//**********yzm***********//\r
+/**********yzm***********/\r
 #include <linux/of.h>\r
 #include <linux/of_irq.h>\r
 #include <linux/kernel.h>\r
 #include <linux/of_platform.h>\r
 #include <linux/of_fdt.h>\r
 #include <linux/module.h>\r
-//**********yzm***********//\r
+/**********yzm***********/\r
 \r
-#define PMEM_CAM_NECESSARY      0x00000000    //yzm\r
+//#define PMEM_CAM_NECESSARY    0x00000000    /*yzm*/\r
 \r
-static int camio_version = KERNEL_VERSION(0,1,9);//yzm camio_version\r
+static int camio_version = KERNEL_VERSION(0,1,9);/*yzm camio_version*/ \r
 module_param(camio_version, int, S_IRUGO);\r
 \r
-static int camera_debug = 0;//yzm camera_debug\r
+static int camera_debug = 0;/*yzm*/ \r
 module_param(camera_debug, int, S_IRUGO|S_IWUSR);    \r
 \r
 #undef  CAMMODULE_NAME\r
@@ -38,9 +39,17 @@ static int rk_sensor_io_deinit(int sensor);
 static int rk_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd, int on);\r
 static int rk_sensor_power(struct device *dev, int on);\r
 static int rk_sensor_register(void);\r
-//static int rk_sensor_reset(struct device *dev);\r
+/*static int rk_sensor_reset(struct device *dev);*/\r
+\r
+static int rk_dts_sensor_probe(struct platform_device *pdev);\r
+static int rk_dts_sensor_remove(struct platform_device *pdev);\r
+static int rk_dts_cif_probe(struct platform_device *pdev);\r
+static int rk_dts_cif_remove(struct platform_device *pdev);\r
+\r
 static int rk_sensor_powerdown(struct device *dev, int on);\r
 \r
+static struct rkcamera_platform_data *new_camera_head; \r
+\r
 static struct rk29camera_platform_data rk_camera_platform_data = {\r
     .io_init = rk_sensor_io_init,\r
     .io_deinit = rk_sensor_io_deinit,\r
@@ -49,6 +58,14 @@ static struct rk29camera_platform_data rk_camera_platform_data = {
 \r
 };\r
 \r
+struct rk29camera_platform_ioctl_cb    sensor_ioctl_cb = {\r
+       .sensor_power_cb = NULL,\r
+       .sensor_reset_cb = NULL,\r
+       .sensor_powerdown_cb = NULL,\r
+       .sensor_flash_cb = NULL,\r
+       .sensor_af_cb = NULL,\r
+};\r
+\r
 \r
 static u64 rockchip_device_camera_dmamask = 0xffffffffUL;\r
 #if RK_SUPPORT_CIF0\r
@@ -61,9 +78,9 @@ static struct resource rk_camera_resource_host_1[2] = {};
 #if RK_SUPPORT_CIF0\r
  struct platform_device rk_device_camera_host_0 = {\r
        .name             = RK29_CAM_DRV_NAME,\r
-       .id       = RK_CAM_PLATFORM_DEV_ID_0,                           // This is used to put cameras on this interface \r
+       .id       = RK_CAM_PLATFORM_DEV_ID_0,                           /* This is used to put cameras on this interface*/ \r
        .num_resources= 2,\r
-       .resource         = rk_camera_resource_host_0,//yzm\r
+       .resource         = rk_camera_resource_host_0,/*yzm*/\r
        .dev                    = {\r
                .dma_mask = &rockchip_device_camera_dmamask,\r
                .coherent_dma_mask = 0xffffffffUL,\r
@@ -75,9 +92,9 @@ static struct resource rk_camera_resource_host_1[2] = {};
 #if RK_SUPPORT_CIF1\r
  struct platform_device rk_device_camera_host_1 = {\r
        .name             = RK29_CAM_DRV_NAME,\r
-       .id       = RK_CAM_PLATFORM_DEV_ID_1,                           // This is used to put cameras on this interface \r
+       .id       = RK_CAM_PLATFORM_DEV_ID_1,                           /* This is used to put cameras on this interface */\r
        .num_resources    = ARRAY_SIZE(rk_camera_resource_host_1),\r
-       .resource         = rk_camera_resource_host_1,//yzm\r
+       .resource         = rk_camera_resource_host_1,/*yzm*/\r
        .dev                    = {\r
                .dma_mask = &rockchip_device_camera_dmamask,\r
                .coherent_dma_mask = 0xffffffffUL,\r
@@ -120,7 +137,6 @@ static struct platform_driver rk_sensor_driver =
     .remove            = rk_dts_sensor_remove,\r
 };\r
 \r
-//************yzm***************\r
 \r
 static int rk_dts_sensor_remove(struct platform_device *pdev)\r
 {\r
@@ -133,11 +149,12 @@ static int        rk_dts_sensor_probe(struct platform_device *pdev)
        struct device *dev = &pdev->dev;\r
        struct rkcamera_platform_data *new_camera_list;\r
        \r
+\r
        debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE__, __LINE__,__FUNCTION__);\r
+       \r
        np = dev->of_node;\r
        if (!np)\r
                return -ENODEV;\r
-       \r
        for_each_child_of_node(np, cp) {\r
                u32 flash_attach,mir,i2c_rata,i2c_chl,i2c_add,cif_chl,mclk_rate,is_front;\r
                u32 resolution,pwdn_info,powerup_sequence;\r
@@ -207,9 +224,9 @@ static int  rk_dts_sensor_probe(struct platform_device *pdev)
 \r
                strcpy(new_camera->dev.i2c_cam_info.type, cp->name);\r
                new_camera->dev.i2c_cam_info.addr = i2c_add>>1;\r
-               new_camera->dev.desc_info.host_desc.bus_id = RK29_CAM_PLATFORM_DEV_ID+cif_chl;//yzm\r
-               new_camera->dev.desc_info.host_desc.i2c_adapter_id = i2c_chl;//yzm\r
-               new_camera->dev.desc_info.host_desc.module_name = cp->name;//const\r
+               new_camera->dev.desc_info.host_desc.bus_id = RK29_CAM_PLATFORM_DEV_ID+cif_chl;/*yzm*/\r
+               new_camera->dev.desc_info.host_desc.i2c_adapter_id = i2c_chl;/*yzm*/\r
+               new_camera->dev.desc_info.host_desc.module_name = cp->name;/*const*/\r
                new_camera->dev.device_info.name = "soc-camera-pdrv";\r
                if(is_front)\r
                        sprintf(new_camera->dev_name,"%s_%s",cp->name,"front");\r
@@ -232,10 +249,6 @@ static int rk_dts_sensor_probe(struct platform_device *pdev)
                new_camera->mclk_rate = mclk_rate;\r
                new_camera->of_node = cp;\r
                        \r
-               //      device = container_of(&(new_camera[sensor_num].dev.desc_info),rk_camera_device_register_info_t,desc_info);\r
-               //      debug_printk( "sensor num %d ,desc_info point %p +++++++\n",sensor_num,&(new_camera.dev.desc_info));\r
-               //      debug_printk( "sensor num %d ,dev %p +++++++\n",sensor_num,&(new_camera.dev));\r
-               //      debug_printk( "sensor num %d ,device point %p +++++++\n",sensor_num,device);\r
                    debug_printk( "******************* /n power = %x\n", power);\r
                        debug_printk( "******************* /n powerdown = %x\n", powerdown);\r
                        debug_printk( "******************* /n i2c_add = %x\n", new_camera->dev.i2c_cam_info.addr << 1);\r
@@ -253,7 +266,7 @@ static int rk_dts_cif_remove(struct platform_device *pdev)
         return 0;\r
 }\r
        \r
-static int rk_dts_cif_probe(struct platform_device *pdev) //yzm\r
+static int rk_dts_cif_probe(struct platform_device *pdev) /*yzm*/\r
 {\r
        int irq,err;\r
        struct device *dev = &pdev->dev;\r
@@ -268,7 +281,7 @@ static int rk_dts_cif_probe(struct platform_device *pdev) //yzm
                return -ENODEV;\r
        }\r
        rk_camera_resource_host_0[0].flags = IORESOURCE_MEM;\r
-       //map irqs\r
+       /*map irqs*/\r
        irq = irq_of_parse_and_map(dev->of_node, 0);\r
        if (irq < 0) {\r
                printk(KERN_EMERG "Get irq resource from %s platform device failed!",pdev->name);\r
@@ -277,8 +290,6 @@ static int rk_dts_cif_probe(struct platform_device *pdev) //yzm
        rk_camera_resource_host_0[1].start = irq;\r
        rk_camera_resource_host_0[1].end   = irq;\r
        rk_camera_resource_host_0[1].flags = IORESOURCE_IRQ;\r
-       //debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n res = [%x--%x] \n",rk_camera_resource_host_0[0].start , rk_camera_resource_host_0[0].end);\r
-       //debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n irq_num = %d\n",irq);\r
        return 0;\r
 }\r
        \r
@@ -292,7 +303,8 @@ static int rk_cif_sensor_init(void)
 \r
        return 0;\r
 }\r
-       \r
+\r
+/************yzm**************end*/\r
 \r
 static int sensor_power_default_cb (struct rk29camera_gpio_res *res, int on)\r
 {\r
@@ -307,12 +319,12 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE
     if (camera_power != INVALID_GPIO)  {\r
                if (camera_io_init & RK29_CAM_POWERACTIVE_MASK) {\r
             if (on) {\r
-               //gpio_set_value(camera_power, ((camera_ioflag&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));\r
+               /*gpio_set_value(camera_power, ((camera_ioflag&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));*/\r
                                gpio_direction_output(camera_power,1);\r
                                dprintk("%s PowerPin=%d ..PinLevel = %x",res->dev_name, camera_power, ((camera_ioflag&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));\r
                        msleep(10);\r
                } else {\r
-                       //gpio_set_value(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));\r
+                       /*gpio_set_value(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));*/\r
                                gpio_direction_output(camera_power,0);\r
                                dprintk("%s PowerPin=%d ..PinLevel = %x",res->dev_name, camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));\r
                }\r
@@ -453,171 +465,6 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE
        return ret;\r
 }\r
 \r
-/*\r
-static void rk29_sensor_fps_get(int idx, unsigned int *val, int w, int h)\r
-{\r
-\r
-debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE__, __LINE__,__FUNCTION__);\r
-\r
-\r
-    switch (idx)\r
-    {\r
-        #ifdef CONFIG_SENSOR_0\r
-        case 0:\r
-        {\r
-            if ((w==176) && (h==144)) {\r
-                *val = CONFIG_SENSOR_QCIF_FPS_FIXED_0;\r
-            #ifdef CONFIG_SENSOR_240X160_FPS_FIXED_0\r
-            } else if ((w==240) && (h==160)) {\r
-                *val = CONFIG_SENSOR_240X160_FPS_FIXED_0;\r
-            #endif\r
-            } else if ((w==320) && (h==240)) {\r
-                *val = CONFIG_SENSOR_QVGA_FPS_FIXED_0;\r
-            } else if ((w==352) && (h==288)) {\r
-                *val = CONFIG_SENSOR_CIF_FPS_FIXED_0;\r
-            } else if ((w==640) && (h==480)) {\r
-                *val = CONFIG_SENSOR_VGA_FPS_FIXED_0;\r
-            } else if ((w==720) && (h==480)) {\r
-                *val = CONFIG_SENSOR_480P_FPS_FIXED_0;\r
-            } else if ((w==800) && (h==600)) {\r
-                *val = CONFIG_SENSOR_SVGA_FPS_FIXED_0;\r
-            } else if ((w==1280) && (h==720)) {\r
-                *val = CONFIG_SENSOR_720P_FPS_FIXED_0;\r
-            }\r
-            break;\r
-        }\r
-        #endif\r
-        #ifdef CONFIG_SENSOR_1\r
-        case 1:\r
-        {\r
-            if ((w==176) && (h==144)) {\r
-                *val = CONFIG_SENSOR_QCIF_FPS_FIXED_1;\r
-            #ifdef CONFIG_SENSOR_240X160_FPS_FIXED_1\r
-            } else if ((w==240) && (h==160)) {\r
-                *val = CONFIG_SENSOR_240X160_FPS_FIXED_1;\r
-            #endif\r
-            } else if ((w==320) && (h==240)) {\r
-                *val = CONFIG_SENSOR_QVGA_FPS_FIXED_1;\r
-            } else if ((w==352) && (h==288)) {\r
-                *val = CONFIG_SENSOR_CIF_FPS_FIXED_1;\r
-            } else if ((w==640) && (h==480)) {\r
-                *val = CONFIG_SENSOR_VGA_FPS_FIXED_1;\r
-            } else if ((w==720) && (h==480)) {\r
-                *val = CONFIG_SENSOR_480P_FPS_FIXED_1;\r
-            } else if ((w==800) && (h==600)) {\r
-                *val = CONFIG_SENSOR_SVGA_FPS_FIXED_1;\r
-            } else if ((w==1280) && (h==720)) {\r
-                *val = CONFIG_SENSOR_720P_FPS_FIXED_1;\r
-            }\r
-            break;\r
-        }\r
-        #endif\r
-        #ifdef CONFIG_SENSOR_01\r
-        case 2:\r
-        {\r
-            if ((w==176) && (h==144)) {\r
-                *val = CONFIG_SENSOR_QCIF_FPS_FIXED_01;\r
-            #ifdef CONFIG_SENSOR_240X160_FPS_FIXED_01\r
-            } else if ((w==240) && (h==160)) {\r
-                *val = CONFIG_SENSOR_240X160_FPS_FIXED_01;\r
-            #endif\r
-            } else if ((w==320) && (h==240)) {\r
-                *val = CONFIG_SENSOR_QVGA_FPS_FIXED_01;\r
-            } else if ((w==352) && (h==288)) {\r
-                *val = CONFIG_SENSOR_CIF_FPS_FIXED_01;\r
-            } else if ((w==640) && (h==480)) {\r
-                *val = CONFIG_SENSOR_VGA_FPS_FIXED_01;\r
-            } else if ((w==720) && (h==480)) {\r
-                *val = CONFIG_SENSOR_480P_FPS_FIXED_01;\r
-            } else if ((w==800) && (h==600)) {\r
-                *val = CONFIG_SENSOR_SVGA_FPS_FIXED_01;\r
-            } else if ((w==1280) && (h==720)) {\r
-                *val = CONFIG_SENSOR_720P_FPS_FIXED_01;\r
-            }\r
-            break;\r
-        }\r
-        #endif\r
-        #ifdef CONFIG_SENSOR_02\r
-        case 3:\r
-        {\r
-            if ((w==176) && (h==144)) {\r
-                *val = CONFIG_SENSOR_QCIF_FPS_FIXED_02;\r
-            #ifdef CONFIG_SENSOR_240X160_FPS_FIXED_02\r
-            } else if ((w==240) && (h==160)) {\r
-                *val = CONFIG_SENSOR_240X160_FPS_FIXED_02;\r
-            #endif\r
-            } else if ((w==320) && (h==240)) {\r
-                *val = CONFIG_SENSOR_QVGA_FPS_FIXED_02;\r
-            } else if ((w==352) && (h==288)) {\r
-                *val = CONFIG_SENSOR_CIF_FPS_FIXED_02;\r
-            } else if ((w==640) && (h==480)) {\r
-                *val = CONFIG_SENSOR_VGA_FPS_FIXED_02;\r
-            } else if ((w==720) && (h==480)) {\r
-                *val = CONFIG_SENSOR_480P_FPS_FIXED_02;\r
-            } else if ((w==800) && (h==600)) {\r
-                *val = CONFIG_SENSOR_SVGA_FPS_FIXED_02;\r
-            } else if ((w==1280) && (h==720)) {\r
-                *val = CONFIG_SENSOR_720P_FPS_FIXED_02;\r
-            }\r
-            break;\r
-        }\r
-        #endif\r
-        \r
-        #ifdef CONFIG_SENSOR_11\r
-        case 4:\r
-        {\r
-            if ((w==176) && (h==144)) {\r
-                *val = CONFIG_SENSOR_QCIF_FPS_FIXED_11;\r
-            #ifdef CONFIG_SENSOR_240X160_FPS_FIXED_11\r
-            } else if ((w==240) && (h==160)) {\r
-                *val = CONFIG_SENSOR_240X160_FPS_FIXED_11;\r
-            #endif\r
-            } else if ((w==320) && (h==240)) {\r
-                *val = CONFIG_SENSOR_QVGA_FPS_FIXED_11;\r
-            } else if ((w==352) && (h==288)) {\r
-                *val = CONFIG_SENSOR_CIF_FPS_FIXED_11;\r
-            } else if ((w==640) && (h==480)) {\r
-                *val = CONFIG_SENSOR_VGA_FPS_FIXED_11;\r
-            } else if ((w==720) && (h==480)) {\r
-                *val = CONFIG_SENSOR_480P_FPS_FIXED_11;\r
-            } else if ((w==800) && (h==600)) {\r
-                *val = CONFIG_SENSOR_SVGA_FPS_FIXED_11;\r
-            } else if ((w==1280) && (h==720)) {\r
-                *val = CONFIG_SENSOR_720P_FPS_FIXED_11;\r
-            }\r
-            break;\r
-        }\r
-        #endif\r
-        #ifdef CONFIG_SENSOR_12\r
-        case 5:\r
-        {\r
-            if ((w==176) && (h==144)) {\r
-                *val = CONFIG_SENSOR_QCIF_FPS_FIXED_12;\r
-            #ifdef CONFIG_SENSOR_240X160_FPS_FIXED_12\r
-            } else if ((w==240) && (h==160)) {\r
-                *val = CONFIG_SENSOR_240X160_FPS_FIXED_12;\r
-            #endif\r
-            } else if ((w==320) && (h==240)) {\r
-                *val = CONFIG_SENSOR_QVGA_FPS_FIXED_12;\r
-            } else if ((w==352) && (h==288)) {\r
-                *val = CONFIG_SENSOR_CIF_FPS_FIXED_12;\r
-            } else if ((w==640) && (h==480)) {\r
-                *val = CONFIG_SENSOR_VGA_FPS_FIXED_12;\r
-            } else if ((w==720) && (h==480)) {\r
-                *val = CONFIG_SENSOR_480P_FPS_FIXED_12;\r
-            } else if ((w==800) && (h==600)) {\r
-                *val = CONFIG_SENSOR_SVGA_FPS_FIXED_12;\r
-            } else if ((w==1280) && (h==720)) {\r
-                *val = CONFIG_SENSOR_720P_FPS_FIXED_12;\r
-            }\r
-            break;\r
-        }\r
-        #endif\r
-        default:\r
-            eprintk(" sensor-%d have not been define in board file!",idx);\r
-    }\r
-}\r
-*/\r
 static int _rk_sensor_io_init_(struct rk29camera_gpio_res *gpio_res,struct device_node *of_node)\r
 {\r
     int ret = 0;\r
@@ -628,8 +475,7 @@ static int _rk_sensor_io_init_(struct rk29camera_gpio_res *gpio_res,struct devic
     bool io_requested_in_camera;\r
        enum of_gpio_flags flags;\r
        \r
-       struct rkcamera_platform_data *new_camera;//yzm\r
-       //struct device_node *parent_node;\r
+       struct rkcamera_platform_data *new_camera;/*yzm*/\r
        debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE__, __LINE__,__FUNCTION__);\r
 \r
 \r
@@ -644,14 +490,12 @@ static int _rk_sensor_io_init_(struct rk29camera_gpio_res *gpio_res,struct devic
     if (camera_power != INVALID_GPIO) {\r
                debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$/ camera_power  = %x\n", camera_power );\r
 \r
-               camera_power = of_get_named_gpio_flags(of_node,"rockchip,power",0,&flags);//yzm\r
-               gpio_res->gpio_power = camera_power;//yzm,½«ioµÄÍêÕûÐÅÏ¢´«»ØÈ¥¡£\r
+               camera_power = of_get_named_gpio_flags(of_node,"rockchip,power",0,&flags);/*yzm*/\r
+               gpio_res->gpio_power = camera_power;/*yzm information back to the IO*/\r
 \r
-               \r
-               //dev->of_node = parent_node;//½«dev->of_node»¹Ô­\r
                debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$/ camera_power  = %x\n", camera_power );  \r
 \r
-               ret = gpio_request(camera_power, "camera power");    //ÉêÇëÃûΪ"camera power"µÄio¹Ü½Å\r
+               ret = gpio_request(camera_power, "camera power"); \r
         if (ret) {\r
                        \r
             io_requested_in_camera = false;\r
@@ -735,8 +579,8 @@ static int _rk_sensor_io_init_(struct rk29camera_gpio_res *gpio_res,struct devic
        if (camera_powerdown != INVALID_GPIO) {\r
                debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$/ camera_powerdown  = %x\n", camera_powerdown );\r
 \r
-               camera_powerdown = of_get_named_gpio_flags(of_node,"rockchip,powerdown",0,&flags);//yzm\r
-               gpio_res->gpio_powerdown = camera_powerdown;//yzm,½«ioµÄÍêÕûÐÅÏ¢´«»ØÈ¥¡£\r
+               camera_powerdown = of_get_named_gpio_flags(of_node,"rockchip,powerdown",0,&flags);/*yzm*/\r
+               gpio_res->gpio_powerdown = camera_powerdown;/*yzm information back to the IO*/\r
 \r
                debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$/ camera_powerdown  = %x\n", camera_powerdown );  \r
                ret = gpio_request(camera_powerdown, "camera powerdown");\r
@@ -914,7 +758,7 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE
        }\r
        if (gpio_res->gpio_init & RK29_CAM_AFACTIVE_MASK) {\r
            if (camera_af != INVALID_GPIO)  {\r
-              // gpio_direction_input(camera_af);\r
+              /* gpio_direction_input(camera_af);*/\r
                gpio_free(camera_af);\r
            }\r
        }       \r
@@ -979,10 +823,9 @@ static int rk_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd, i
     struct rkcamera_platform_data *new_cam_dev = NULL;\r
        struct rk29camera_platform_data* plat_data = &rk_camera_platform_data;\r
     int ret = RK29_CAM_IO_SUCCESS,i = 0;\r
-    //struct soc_camera_link *dev_icl = NULL;//yzm\r
-       struct soc_camera_desc *dev_icl = NULL;//yzm\r
+       struct soc_camera_desc *dev_icl = NULL;/*yzm*/\r
        struct rkcamera_platform_data *new_camera;\r
-debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE__, __LINE__,__FUNCTION__);\r
+       debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE__, __LINE__,__FUNCTION__);\r
 \r
     if (res == NULL) {\r
                new_camera = new_camera_head;\r
@@ -991,8 +834,7 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE
             if (strcmp(new_camera->dev_name, dev_name(dev)) == 0) {\r
                 res = (struct rk29camera_gpio_res *)&new_camera->io; \r
                 new_cam_dev = &new_camera[i];\r
-                //dev_icl = &new_camera[i].dev.link_info;\r
-                                dev_icl = &new_camera->dev.desc_info;//yzm\r
+                                dev_icl = &new_camera->dev.desc_info;/*yzm*/\r
                 break;\r
             }\r
             new_camera = new_camera->next_camera;;\r
@@ -1069,8 +911,7 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()/n", __FILE
         case Cam_Mclk:\r
         {\r
             if (plat_data->sensor_mclk && dev_icl) {\r
-                //plat_data->sensor_mclk(dev_icl->bus_id,(on!=0)?1:0,on);\r
-                               plat_data->sensor_mclk(dev_icl->host_desc.bus_id,(on!=0)?1:0,on);//yzm\r
+                               plat_data->sensor_mclk(dev_icl->host_desc.bus_id,(on!=0)?1:0,on);/*yzm*/\r
             } else { \r
                 eprintk( "%s(%d): sensor_mclk(%p) or dev_icl(%p) is NULL",\r
                     __FUNCTION__,__LINE__,plat_data->sensor_mclk,dev_icl);\r
@@ -1168,7 +1009,7 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE
     return ret;\r
 }\r
 \r
-static int rk_sensor_power(struct device *dev, int on)   //icd->pdev\r
+static int rk_sensor_power(struct device *dev, int on)   /*icd->pdev*/\r
 {\r
     int powerup_sequence,mclk_rate;\r
     \r
@@ -1180,37 +1021,35 @@ static int rk_sensor_power(struct device *dev, int on)   //icd->pdev
 \r
 debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE__, __LINE__,__FUNCTION__);\r
 \r
-    new_camera = plat_data->register_dev_new;    //new_camera[]\r
+    new_camera = plat_data->register_dev_new;    /*new_camera[]*/\r
     \r
-       while (new_camera != NULL) {//yzm\r
-    //while (strstr(new_camera->dev_name,"end")==NULL) {\r
+       while (new_camera != NULL) {\r
 \r
-        if (new_camera->io.gpio_powerdown != INVALID_GPIO) {           //true\r
+        if (new_camera->io.gpio_powerdown != INVALID_GPIO) {           \r
             gpio_direction_output(new_camera->io.gpio_powerdown,\r
                 ((new_camera->io.gpio_flag&RK29_CAM_POWERDNACTIVE_MASK)>>RK29_CAM_POWERDNACTIVE_BITPOS));            \r
         }\r
 \r
-               debug_printk( "new_camera->dev_name= %s \n", new_camera->dev_name);     //yzm\r
-               debug_printk( "dev_name(dev)= %s \n", dev_name(dev));    //yzm\r
+               debug_printk( "new_camera->dev_name= %s \n", new_camera->dev_name);     /*yzm*/\r
+               debug_printk( "dev_name(dev)= %s \n", dev_name(dev));    /*yzm*/\r
                \r
-        if (strcmp(new_camera->dev_name,dev_name(dev))) {              //µ±²»ÊÇ´ò¿ªµÄsensorʱΪTRUE\r
-                       debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);//yzm\r
+        if (strcmp(new_camera->dev_name,dev_name(dev))) {              \r
+                       debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);\r
             if (sensor_ioctl_cb.sensor_powerdown_cb && on)\r
                {\r
-                       debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);//yzm\r
+                       debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);\r
                        sensor_ioctl_cb.sensor_powerdown_cb(&new_camera->io,1);\r
                }\r
         } else {\r
             new_device = new_camera;\r
             dev_io = &new_camera->io;\r
-            debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);//yzm\r
+            debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);/*yzm*/\r
             if (!Sensor_Support_DirectResume(new_camera->pwdn_info))\r
                 real_pwroff = true;                    \r
             else\r
                 real_pwroff = false;\r
         }\r
-        //new_camera++;\r
-        new_camera = new_camera->next_camera;//yzm\r
+        new_camera = new_camera->next_camera;\r
     }\r
 \r
     if (new_device != NULL) {\r
@@ -1225,23 +1064,21 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE
     }\r
         \r
     if (on) {\r
-               debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);//yzm\r
+               debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i\n", __FILE__, __LINE__);\r
         rk_sensor_pwrseq(dev, powerup_sequence, on,mclk_rate);  \r
     } else {\r
         if (real_pwroff) {\r
             if (rk_sensor_pwrseq(dev, powerup_sequence, on,mclk_rate)<0)    /* ddl@rock-chips.com: v0.1.5 */\r
                 goto PowerDown;\r
             \r
-            /*ddl@rock-chips.com: all power down switch to Hi-Z after power off*/  //¸ß×è̬\r
+            /*ddl@rock-chips.com: all power down switch to Hi-Z after power off*/\r
             new_camera = plat_data->register_dev_new;\r
-                       while (new_camera != NULL) {//yzm\r
-            //while (strstr(new_camera->dev_name,"end")==NULL) {\r
+                       while (new_camera != NULL) {\r
                 if (new_camera->io.gpio_powerdown != INVALID_GPIO) {\r
                     gpio_direction_input(new_camera->io.gpio_powerdown);            \r
                 }\r
                 new_camera->pwdn_info |= 0x01;\r
-                //new_camera++;\r
-                new_camera = new_camera->next_camera;//yzm\r
+                new_camera = new_camera->next_camera;\r
             }\r
         } else {  \r
 PowerDown:\r
@@ -1287,7 +1124,7 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE
 \r
        new_camera = new_camera_head;\r
        \r
-       while (new_camera != NULL) {//yzm       \r
+       while (new_camera != NULL) {    \r
         if (new_camera->dev.i2c_cam_info.addr == INVALID_VALUE) {\r
             WARN(1, \r
                 KERN_ERR "%s(%d): new_camera[%d] i2c addr is invalidate!",\r
@@ -1295,9 +1132,9 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE
             continue;\r
         }\r
         sprintf(new_camera->dev_name,"%s_%d",new_camera->dev.device_info.dev.init_name,i+3);\r
-        new_camera->dev.device_info.dev.init_name =(const char*)&new_camera->dev_name[0];//ת»»³ÉÖ¸Õë\r
+        new_camera->dev.device_info.dev.init_name =(const char*)&new_camera->dev_name[0];\r
         new_camera->io.dev_name =(const char*)&new_camera->dev_name[0];\r
-        if (new_camera->orientation == INVALID_VALUE) {        //¹ØÓÚÇ°ºó·½Ïò\r
+        if (new_camera->orientation == INVALID_VALUE) {\r
             if (strstr(new_camera->dev_name,"back")) {                    \r
                 new_camera->orientation = 90;\r
             } else {\r
@@ -1311,22 +1148,23 @@ debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE
         if ((new_camera->fov_v <= 0) || (new_camera->fov_v>360))\r
             new_camera->fov_v = 100;        \r
 \r
-               new_camera->dev.desc_info.subdev_desc.power = rk_sensor_power;//yzm\r
-               new_camera->dev.desc_info.subdev_desc.powerdown = rk_sensor_powerdown;//yzm\r
-               new_camera->dev.desc_info.host_desc.board_info =&new_camera->dev.i2c_cam_info; //yzm\r
+               new_camera->dev.desc_info.subdev_desc.power = rk_sensor_power;\r
+               new_camera->dev.desc_info.subdev_desc.powerdown = rk_sensor_powerdown;\r
+               new_camera->dev.desc_info.host_desc.board_info =&new_camera->dev.i2c_cam_info; \r
 \r
-        new_camera->dev.device_info.id = i+6;//?? platform_device.id\r
-               new_camera->dev.device_info.dev.platform_data = &new_camera->dev.desc_info;//yzm\r
+        new_camera->dev.device_info.id = i+6;\r
+               new_camera->dev.device_info.dev.platform_data = &new_camera->dev.desc_info;\r
                debug_printk("platform_data(desc_info) %p +++++++++++++\n",new_camera->dev.device_info.dev.platform_data);\r
-               new_camera->dev.desc_info.subdev_desc.drv_priv = &rk_camera_platform_data;//yzm\r
+               new_camera->dev.desc_info.subdev_desc.drv_priv = &rk_camera_platform_data;\r
 \r
         platform_device_register(&(new_camera->dev.device_info));\r
-debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE__, __LINE__,__FUNCTION__);  \r
-debug_printk("new_camera = %p +++++++++++++\n",new_camera);\r
-debug_printk("new_camera->next_camera = %p +++++++++++++\n",new_camera->next_camera);\r
+               debug_printk( "/$$$$$$$$$$$$$$$$$$$$$$//n Here I am: %s:%i-------%s()\n", __FILE__, __LINE__,__FUNCTION__);  \r
+               debug_printk("new_camera = %p +++++++++++++\n",new_camera);\r
+               debug_printk("new_camera->next_camera = %p +++++++++++++\n",new_camera->next_camera);\r
 \r
         new_camera = new_camera->next_camera;\r
     }\r
        \r
                return 0;\r
 }\r
+#include "../../../drivers/media/video/rk30_camera.c"\r