[PATCH 03/10] drm: exynos_hdmi: use of_get_i2c_adapter_by_node interface
Vladimir Zapolskiy
vladimir_zapolskiy at mentor.com
Wed Jul 8 05:59:34 PDT 2015
This change is needed to properly lock I2C bus driver, which serves DDC.
On release of_get_i2c_adapter_by_node() requires i2c_put_adapter() call,
which replaces put_device(). By the way added of_node_put(ddc_node) to
eliminate memory leak, if OF_DYNAMIC is enabled.
Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy at mentor.com>
---
drivers/gpu/drm/exynos/exynos_hdmi.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 99e2864..399eff9 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -2407,7 +2407,8 @@ static int hdmi_probe(struct platform_device *pdev)
}
out_get_ddc_adpt:
- hdata->ddc_adpt = of_find_i2c_adapter_by_node(ddc_node);
+ hdata->ddc_adpt = of_get_i2c_adapter_by_node(ddc_node);
+ of_node_put(ddc_node);
if (!hdata->ddc_adpt) {
DRM_ERROR("Failed to get ddc i2c adapter by node\n");
return -EPROBE_DEFER;
@@ -2485,7 +2486,7 @@ err_hdmiphy:
if (hdata->hdmiphy_port)
put_device(&hdata->hdmiphy_port->dev);
err_ddc:
- put_device(&hdata->ddc_adpt->dev);
+ i2c_put_adapter(hdata->ddc_adpt);
return ret;
}
@@ -2501,7 +2502,7 @@ static int hdmi_remove(struct platform_device *pdev)
if (hdata->hdmiphy_port)
put_device(&hdata->hdmiphy_port->dev);
- put_device(&hdata->ddc_adpt->dev);
+ i2c_put_adapter(hdata->ddc_adpt);
pm_runtime_disable(&pdev->dev);
component_del(&pdev->dev, &hdmi_component_ops);
--
2.1.4
More information about the linux-arm-kernel
mailing list