Thread (4 messages) 4 messages, 3 authors, 2017-06-27

[PATCH] drm: exynos: dsi: release DSI_PORT_OUT node right after of_drm_find_bridge()

From: inki.dae@samsung.com (Inki Dae)
Date: 2017-06-27 09:13:12
Also in: dri-devel, linux-samsung-soc, lkml

Hi Andrzej,

2017? 06? 26? 16:02? Andrzej Hajda ?(?) ? ?:
Hi Shuah,


On 24.06.2017 02:56, Shuah Khan wrote:
quoted
Fix to call of_node_put() right after of_drm_find_bridge() instead of
holding on to it until exynos_dsi_remove().
I think the current implementation is OK, node is get in probe and put
in remove.
There could be many bind/unbind during lifetime of the bound driver.
For example, there is possible sequence:
1. probe -
2. bind
3. unbind
4. bind

With this patch on 2nd bind (point 4) driver will call
of_drm_find_bridge on dsi->bridge_node which was put earlier (point 2.).
Right. This is a problem.

How about moving of_drm_find_bridge function call to probe and keeping drm_bridge_attach call in bind for cleanup?
Seems it doesn't need to call of_drm_find_bridge function every time bind callback is called.

Thanks,
Inki Dae
Regards
Andrzej

quoted
Suggested-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Shuah Khan <redacted>
---
 drivers/gpu/drm/exynos/exynos_drm_dsi.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index e337cd2..7513b88 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1689,6 +1689,7 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
 
 	if (dsi->bridge_node) {
 		bridge = of_drm_find_bridge(dsi->bridge_node);
+		of_node_put(dsi->bridge_node);
 		if (bridge)
 			drm_bridge_attach(encoder, bridge, NULL);
 	}
@@ -1807,10 +1808,6 @@ static int exynos_dsi_probe(struct platform_device *pdev)
 
 static int exynos_dsi_remove(struct platform_device *pdev)
 {
-	struct exynos_dsi *dsi = platform_get_drvdata(pdev);
-
-	of_node_put(dsi->bridge_node);
-
 	pm_runtime_disable(&pdev->dev);
 
 	component_del(&pdev->dev, &exynos_dsi_component_ops);

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help