rockchip,grf = <&grf>;
reg = <0x0 0xff968000 0x0 0x4000>, <0x0 0xff9600a0 0x0 0x20>;
reg-names = "mipi_lvds_phy", "mipi_lvds_ctl";
- clocks = <&clk_gates22 10>, <&clk_gates17 3>;
- clock-names = "pclk_lvds", "pclk_lvds_ctl";
+ clocks = <&clk_gates22 10>, <&clk_gates17 3>, <&pd_lvds>;
+ clock-names = "pclk_lvds", "pclk_lvds_ctl", "pd_lvds";
status = "disabled";
};
dev_err(lvds->dev, "get ctrl hclk failed\n");
return PTR_ERR(lvds->ctrl_hclk);
}
- }
+ } else {
+ lvds->pd = devm_clk_get(lvds->dev, "pd_lvds");
+ if (IS_ERR(lvds->pd)) {
+ dev_err(lvds->dev, "get pd_lvds failed\n");
+ return PTR_ERR(lvds->pd);
+ }
+ }
return 0;
}
clk_prepare_enable(lvds->ctrl_pclk);
if (lvds->data->soc_type == LVDS_SOC_RK312X)
clk_prepare_enable(lvds->ctrl_hclk);
+ else
+ clk_prepare_enable(lvds->pd);
lvds->clk_on = true;
}
clk_disable_unprepare(lvds->pclk);
if (lvds->data->soc_type == LVDS_SOC_RK312X)
clk_disable_unprepare(lvds->ctrl_hclk);
+ else
+ clk_disable_unprepare(lvds->pd);
clk_disable_unprepare(lvds->ctrl_pclk);
lvds->clk_on = false;
}
void __iomem *regbase;
void __iomem *ctrl_reg;
struct regmap *grf_lvds_base;
+ struct clk *pd; /*power domain*/
struct clk *pclk; /*phb clk*/
struct clk *ctrl_pclk; /* mipi ctrl pclk*/
struct clk *ctrl_hclk; /* mipi ctrl hclk*/