|
@@ -1686,7 +1686,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
|
|
|
|
|
ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
|
|
|
if (ddc_node) {
|
|
|
- hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
|
|
|
+ hdmi->ddc = of_get_i2c_adapter_by_node(ddc_node);
|
|
|
of_node_put(ddc_node);
|
|
|
if (!hdmi->ddc) {
|
|
|
dev_dbg(hdmi->dev, "failed to read ddc node\n");
|
|
@@ -1698,20 +1698,22 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
|
|
}
|
|
|
|
|
|
hdmi->regs = devm_ioremap_resource(dev, iores);
|
|
|
- if (IS_ERR(hdmi->regs))
|
|
|
- return PTR_ERR(hdmi->regs);
|
|
|
+ if (IS_ERR(hdmi->regs)) {
|
|
|
+ ret = PTR_ERR(hdmi->regs);
|
|
|
+ goto err_res;
|
|
|
+ }
|
|
|
|
|
|
hdmi->isfr_clk = devm_clk_get(hdmi->dev, "isfr");
|
|
|
if (IS_ERR(hdmi->isfr_clk)) {
|
|
|
ret = PTR_ERR(hdmi->isfr_clk);
|
|
|
dev_err(hdmi->dev, "Unable to get HDMI isfr clk: %d\n", ret);
|
|
|
- return ret;
|
|
|
+ goto err_res;
|
|
|
}
|
|
|
|
|
|
ret = clk_prepare_enable(hdmi->isfr_clk);
|
|
|
if (ret) {
|
|
|
dev_err(hdmi->dev, "Cannot enable HDMI isfr clock: %d\n", ret);
|
|
|
- return ret;
|
|
|
+ goto err_res;
|
|
|
}
|
|
|
|
|
|
hdmi->iahb_clk = devm_clk_get(hdmi->dev, "iahb");
|
|
@@ -1797,6 +1799,8 @@ err_iahb:
|
|
|
clk_disable_unprepare(hdmi->iahb_clk);
|
|
|
err_isfr:
|
|
|
clk_disable_unprepare(hdmi->isfr_clk);
|
|
|
+err_res:
|
|
|
+ i2c_put_adapter(hdmi->ddc);
|
|
|
|
|
|
return ret;
|
|
|
}
|