|
@@ -477,13 +477,15 @@ int sun8i_hdmi_phy_probe(struct sun8i_dw_hdmi *hdmi, struct device_node *node)
|
|
|
dev_err(dev, "Couldn't create the PHY clock\n");
|
|
|
goto err_put_clk_pll0;
|
|
|
}
|
|
|
+
|
|
|
+ clk_prepare_enable(phy->clk_phy);
|
|
|
}
|
|
|
|
|
|
phy->rst_phy = of_reset_control_get_shared(node, "phy");
|
|
|
if (IS_ERR(phy->rst_phy)) {
|
|
|
dev_err(dev, "Could not get phy reset control\n");
|
|
|
ret = PTR_ERR(phy->rst_phy);
|
|
|
- goto err_put_clk_pll0;
|
|
|
+ goto err_disable_clk_phy;
|
|
|
}
|
|
|
|
|
|
ret = reset_control_deassert(phy->rst_phy);
|
|
@@ -514,6 +516,8 @@ err_deassert_rst_phy:
|
|
|
reset_control_assert(phy->rst_phy);
|
|
|
err_put_rst_phy:
|
|
|
reset_control_put(phy->rst_phy);
|
|
|
+err_disable_clk_phy:
|
|
|
+ clk_disable_unprepare(phy->clk_phy);
|
|
|
err_put_clk_pll0:
|
|
|
if (phy->variant->has_phy_clk)
|
|
|
clk_put(phy->clk_pll0);
|
|
@@ -531,6 +535,7 @@ void sun8i_hdmi_phy_remove(struct sun8i_dw_hdmi *hdmi)
|
|
|
|
|
|
clk_disable_unprepare(phy->clk_mod);
|
|
|
clk_disable_unprepare(phy->clk_bus);
|
|
|
+ clk_disable_unprepare(phy->clk_phy);
|
|
|
|
|
|
reset_control_assert(phy->rst_phy);
|
|
|
|