mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
drm: rockchip: dw-hdmi: Introduce HCLK_VOP for RK3566/RK3568
Signed-off-by: Algea Cao <algea.cao@rock-chips.com> Change-Id: Ifcc15490b135692d955500114b59cbf8c326cacd
This commit is contained in:
@@ -78,6 +78,7 @@ struct rockchip_hdmi {
|
||||
struct clk *phyref_clk;
|
||||
struct clk *grf_clk;
|
||||
struct clk *hclk_vio;
|
||||
struct clk *hclk_vop;
|
||||
struct dw_hdmi *hdmi;
|
||||
struct phy *phy;
|
||||
};
|
||||
@@ -236,6 +237,16 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)
|
||||
return PTR_ERR(hdmi->hclk_vio);
|
||||
}
|
||||
|
||||
hdmi->hclk_vop = devm_clk_get(hdmi->dev, "hclk");
|
||||
if (PTR_ERR(hdmi->hclk_vop) == -ENOENT) {
|
||||
hdmi->hclk_vop = NULL;
|
||||
} else if (PTR_ERR(hdmi->hclk_vop) == -EPROBE_DEFER) {
|
||||
return -EPROBE_DEFER;
|
||||
} else if (IS_ERR(hdmi->hclk_vop)) {
|
||||
dev_err(hdmi->dev, "failed to get hclk_vop clock\n");
|
||||
return PTR_ERR(hdmi->hclk_vop);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -612,6 +623,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = clk_prepare_enable(hdmi->hclk_vop);
|
||||
if (ret) {
|
||||
dev_err(hdmi->dev, "Failed to enable HDMI hclk_vop: %d\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
hdmi->phy = devm_phy_optional_get(dev, "hdmi");
|
||||
if (IS_ERR(hdmi->phy)) {
|
||||
ret = PTR_ERR(hdmi->phy);
|
||||
@@ -635,6 +653,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||
ret = PTR_ERR(hdmi->hdmi);
|
||||
drm_encoder_cleanup(encoder);
|
||||
clk_disable_unprepare(hdmi->phyref_clk);
|
||||
clk_disable_unprepare(hdmi->hclk_vop);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -647,6 +666,7 @@ static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *master,
|
||||
|
||||
dw_hdmi_unbind(hdmi->hdmi);
|
||||
clk_disable_unprepare(hdmi->phyref_clk);
|
||||
clk_disable_unprepare(hdmi->hclk_vop);
|
||||
}
|
||||
|
||||
static const struct component_ops dw_hdmi_rockchip_ops = {
|
||||
|
||||
Reference in New Issue
Block a user