mfd:rk616:scaler:disable it before cfg finish
authoryxj <yxj@rock-chips.com>
Mon, 27 May 2013 10:17:46 +0000 (18:17 +0800)
committeryxj <yxj@rock-chips.com>
Mon, 27 May 2013 10:18:15 +0000 (18:18 +0800)
drivers/mfd/rk616-vif.c

index 877c6b761c1a3abf16c787565fe4c966615f3931..31016d8a4999fc023852b9c6f24d0b23e818e0d9 100644 (file)
@@ -237,8 +237,10 @@ static int rk616_scaler_disable(struct mfd_rk616 *rk616)
        val &= (~SCL_EN);       //disable scaler
        val |= (SCL_EN<<16);
        ret = rk616->write_dev(rk616,SCL_REG0,&val);
+       dev_info(rk616->dev,"rk616 scaler disable\n");
        return 0;
 }
+
 int rk616_scaler_cfg(struct mfd_rk616 *rk616,rk_screen *screen)
 {
        u32 scl_hor_mode,scl_ver_mode;
@@ -294,6 +296,8 @@ int rk616_scaler_cfg(struct mfd_rk616 *rk616,rk_screen *screen)
                pll_id = 0;
        else
                pll_id = 1;
+
+       rk616_scaler_disable(rk616);
        rk616_pll_set_rate(rk616,pll_id,dst->pll_cfg_val,dst->frac);
        dst_frame_vst = dst->scl_vst;
        dst_frame_hst = dst->scl_hst;
@@ -402,9 +406,7 @@ int rk616_scaler_cfg(struct mfd_rk616 *rk616,rk_screen *screen)
        scl_reg7_value = dsp_hbor_end<<16 | dsp_hbor_st ;
        //vbor      register8
        scl_reg8_value = dsp_vbor_end<<16 | dsp_vbor_st ;
-
-    
-       rk616->write_dev(rk616,SCL_REG0,&scl_reg0_value);  
        rk616->write_dev(rk616,SCL_REG1,&scl_reg1_value);  
        rk616->write_dev(rk616,SCL_REG2,&scl_reg2_value);  
        rk616->write_dev(rk616,SCL_REG3,&scl_reg3_value);  
@@ -412,7 +414,10 @@ int rk616_scaler_cfg(struct mfd_rk616 *rk616,rk_screen *screen)
        rk616->write_dev(rk616,SCL_REG5,&scl_reg5_value);  
        rk616->write_dev(rk616,SCL_REG6,&scl_reg6_value);  
        rk616->write_dev(rk616,SCL_REG7,&scl_reg7_value);  
-       rk616->write_dev(rk616,SCL_REG8,&scl_reg8_value);  
+       rk616->write_dev(rk616,SCL_REG8,&scl_reg8_value);
+       rk616->write_dev(rk616,SCL_REG0,&scl_reg0_value); 
+
+       dev_info(rk616->dev,"rk616 scaler enable\n");
 #endif
        return 0;