+
+ int rk616_vif_disable(struct mfd_rk616 *rk616,int id)
+{
+ u32 val = 0;
+ int ret = 0;
+
+ if(id == 0) //video interface 0
+ {
+ val = (VIF0_EN << 16); //disable vif0
+ ret = rk616->write_dev(rk616,VIF0_REG0,&val);
+
+ }
+ else //vide0 interface 1
+ {
+ val = (VIF0_EN << 16); //disabl VIF1
+ ret = rk616->write_dev(rk616,VIF1_REG0,&val);
+
+ }
+
+ msleep(21);
+
+ if(id == 0) //video interface 0
+ {
+ val = VIF0_CLK_GATE | (VIF0_CLK_GATE << 16); //gating vif0
+ ret = rk616->write_dev(rk616,CRU_CLKSEL2_CON,&val);
+
+ }
+ else //vide0 interface 1
+ {
+ val = VIF1_CLK_GATE | (VIF1_CLK_GATE << 16); //gating vif1
+ ret = rk616->write_dev(rk616,CRU_CLKSEL2_CON,&val);
+
+ }
+
+ dev_info(rk616->dev,"rk616 vif%d disable\n",id);
+
+ return 0;
+}
+
+
+int rk616_vif_enable(struct mfd_rk616 *rk616,int id)
+{
+ u32 val = 0;
+ u32 offset = 0;
+ int ret;
+
+
+ if(id == 0)
+ {
+ val = (VIF0_CLK_BYPASS << 16) | (VIF0_CLK_GATE << 16);
+ offset = 0;
+ }
+ else
+ {
+ val = (VIF1_CLK_BYPASS << 16) |(VIF1_CLK_GATE << 16);
+ offset = 0x18;
+ }
+
+ ret = rk616->write_dev(rk616,CRU_CLKSEL2_CON,&val);
+
+ val = 0;
+ val |= (VIF0_DDR_CLK_EN <<16) | (VIF0_DDR_PHASEN_EN << 16) | (VIF0_DDR_MODE_EN << 16)|
+ (VIF0_EN <<16) | VIF0_EN; //disable ddr mode,enable VIF
+ ret = rk616->write_dev(rk616,VIF0_REG0 + offset,&val);
+
+
+ dev_info(rk616->dev,"rk616 vif%d enable\n",id);
+
+ return 0;
+
+}
+static int rk616_vif_bypass(struct mfd_rk616 *rk616,int id)
+{
+ u32 val = 0;
+ int ret;
+
+ if(id == 0)
+ {
+ val = (VIF0_CLK_BYPASS | VIF0_CLK_BYPASS << 16);
+ }
+ else
+ {
+ val = (VIF1_CLK_BYPASS | VIF1_CLK_BYPASS << 16);
+ }
+
+ ret = rk616->write_dev(rk616,CRU_CLKSEL2_CON,&val);
+
+ dev_info(rk616->dev,"rk616 vif%d bypass\n",id);
+ return 0;
+}
+
+static bool pll_sel_mclk12m(struct mfd_rk616 *rk616,int pll_id)
+{
+ if(pll_id == 0) //pll0
+ {
+ if(rk616->route.pll0_clk_sel == PLL0_CLK_SEL(MCLK_12M))
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ if(rk616->route.pll1_clk_sel == PLL1_CLK_SEL(MCLK_12M))
+ return true;
+ else
+ return false;
+ }
+
+ return false;
+}
+
+
+