camera: add v4l2_subdev_core_ops ioctl function in sensor driver, and all sensor...
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / rk29_camera_oneframe.c
index ede825058ae80a3eb6f12258e31b4d5662642e33..4593b8e5ffe42fa2d93b33ea9d2185a684b498c7 100644 (file)
 
 //Configure Macro
 #define CONFIG_RK29CAMERA_TR      1
-#define CONFIG_RK29CAMERA_DEBUG          0
+#define CONFIG_RK29CAMERA_DEBUG          1
 #if (CONFIG_RK29CAMERA_TR)
        #define RK29CAMERA_TR(format, ...)      printk(format, ## __VA_ARGS__)
        #if (CONFIG_RK29CAMERA_DEBUG)
@@ -500,8 +500,8 @@ static int rk29_camera_activate(struct rk29_camera_dev *pcdev, struct soc_camera
 
        //write_grf_reg(GRF_SOC_CON0_Reg, read_grf_reg(GRF_SOC_CON0_Reg)|VIP_AHBMASTER);  //VIP Config to AHB
        write_grf_reg(GRF_SOC_CON0_Reg, read_grf_reg(GRF_SOC_CON0_Reg)&(~VIP_AHBMASTER));  //VIP Config to AXI
-       write_grf_reg(GRF_OS_REG0, read_grf_reg(GRF_OS_REG0)&(~VIP_ACLK_DIV_HCLK_2));   //aclk:hclk = 1:1
-       //write_grf_reg(GRF_OS_REG0, read_grf_reg(GRF_OS_REG0)|VIP_ACLK_DIV_HCLK_2);   //aclk:hclk = 2:1
+       //write_grf_reg(GRF_OS_REG0, read_grf_reg(GRF_OS_REG0)&(~VIP_ACLK_DIV_HCLK_2));   //aclk:hclk = 1:1
+    write_grf_reg(GRF_OS_REG0, read_grf_reg(GRF_OS_REG0)|VIP_ACLK_DIV_HCLK_2);   //aclk:hclk = 2:1
 
     write_vip_reg(RK29_VIP_RESET, 0x76543210);  /* ddl@rock-chips.com : vip software reset */
     udelay(10);
@@ -580,12 +580,14 @@ static void rk29_camera_remove_device(struct soc_camera_device *icd)
 {
     struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent);
     struct rk29_camera_dev *pcdev = ici->priv;
+       struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
 
     BUG_ON(icd != pcdev->icd);
 
     dev_info(&icd->dev, "RK29 Camera driver detached from camera %d\n",
              icd->devnum);
 
+    v4l2_subdev_call(sd, core, ioctl, RK29_CAM_SUBDEV_DEACTIVATE,NULL);
        rk29_camera_deactivate(pcdev);
 
        /* ddl@rock-chips.com: Call videobuf_mmap_free here for free the struct video_buffer which malloc in videobuf_alloc */