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:
Algea Cao
2020-11-11 19:24:01 +08:00
committed by Tao Huang
parent 3a99549ccd
commit 5d73d163ad

View File

@@ -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 = {