camera: close cif_clk_out not denpend on modify clock name.
authoroyyf <oyyf@rock-chips.com>
Thu, 15 Aug 2013 02:51:46 +0000 (10:51 +0800)
committeroyyf <oyyf@rock-chips.com>
Thu, 15 Aug 2013 02:51:46 +0000 (10:51 +0800)
drivers/media/video/rk30_camera_oneframe.c

index 7571cb4eecbb90de1dd6b50a127c8e20c49dc0e0..a7f9b743474cbe8f7df0f5af3087edc654af3344 100755 (executable)
@@ -1441,6 +1441,7 @@ static int rk_camera_mclk_ctrl(int cif_idx, int on, int clk_rate)
 {
     int err = 0,cif;    
     struct rk_cif_clk *clk;
+    struct clk *cif_clk_out_div;
     
     cif = cif_idx - RK29_CAM_PLATFORM_DEV_ID;
     if ((cif<0)||(cif>1)) {
@@ -1474,10 +1475,17 @@ static int rk_camera_mclk_ctrl(int cif_idx, int on, int clk_rate)
        clk_disable(clk->pd_cif);
         clk->on = false;
         if(cif){
-           err = clk_set_parent(clk->cif_clk_out, clk_get(NULL, "cif1_out_div"));
+            cif_clk_out_div =  clk_get(NULL, "cif1_out_div");
+            err = clk_set_parent(clk->cif_clk_out,cif_clk_out_div);
         }else{
-           err = clk_set_parent(clk->cif_clk_out, clk_get(NULL, "cif0_out_div"));
+            cif_clk_out_div =  clk_get(NULL, "cif0_out_div");
+            if(IS_ERR_OR_NULL(cif_clk_out_div)){
+                cif_clk_out_div =  clk_get(NULL, "cif_out_div");
+            }
+            err = clk_set_parent(clk->cif_clk_out, cif_clk_out_div);
         }
+        if(err)
+           RKCAMERA_TR("WARNING %s_%s_%d: camera sensor mclk maybe not close, please check!!!\n", __FILE__, __FUNCTION__, __LINE__); 
     }
     spin_unlock(&clk->lock);
 rk_camera_clk_ctrl_end: