From: Javier Martinez Canillas <hidden> Date: 2016-01-29 15:09:50
Commit a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support
for panel") made the Exynos DP DT binding more consistent since the OF
graph could be used to lookup either a panel or a bridge device node.
Before that commit, a panel would be looked up using a phandle and a
bridge using the OF graph which made the DT binding not consistent.
But the patch broke the later case since not finding a panel dev node
would cause the driver's to do a probe deferral instead of attempting
to lookup a bridge device node associated with the remote endpoint.
So instead of returning a -EPROBE_DEFER if a panel is not found, check
if there's a bridge and only do a probe deferral if both aren't found.
Fixes: a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support for panel")
Signed-off-by: Javier Martinez Canillas <redacted>
---
drivers/gpu/drm/exynos/exynos_dp_core.c | 55 +++++++++++++++------------------
1 file changed, 25 insertions(+), 30 deletions(-)
@@ -1404,41 +1404,36 @@ static int exynos_dp_probe(struct platform_device *pdev)platform_set_drvdata(pdev,dp);/* This is for the backward compatibility. */-panel_node=of_parse_phandle(dev->of_node,"panel",0);-if(panel_node){-dp->panel=of_drm_find_panel(panel_node);-of_node_put(panel_node);+np=of_parse_phandle(dev->of_node,"panel",0);+if(np){+dp->panel=of_drm_find_panel(np);+of_node_put(np);if(!dp->panel)return-EPROBE_DEFER;-}else{-endpoint=of_graph_get_next_endpoint(dev->of_node,NULL);-if(endpoint){-panel_node=of_graph_get_remote_port_parent(endpoint);-if(panel_node){-dp->panel=of_drm_find_panel(panel_node);-of_node_put(panel_node);-if(!dp->panel)-return-EPROBE_DEFER;-}else{-DRM_ERROR("no port node for panel device.\n");-return-EINVAL;-}-}-}--if(endpoint)gotoout;+}endpoint=of_graph_get_next_endpoint(dev->of_node,NULL);if(endpoint){-bridge_node=of_graph_get_remote_port_parent(endpoint);-if(bridge_node){-dp->ptn_bridge=of_drm_find_bridge(bridge_node);-of_node_put(bridge_node);-if(!dp->ptn_bridge)-return-EPROBE_DEFER;-}else-return-EPROBE_DEFER;+np=of_graph_get_remote_port_parent(endpoint);+if(np){+/* The remote port can be either a panel or a bridge */+dp->panel=of_drm_find_panel(np);+if(!dp->panel){+dp->ptn_bridge=of_drm_find_bridge(np);+if(!dp->ptn_bridge){+of_node_put(np);+return-EPROBE_DEFER;+}+}+of_node_put(np);+}else{+DRM_ERROR("no remote endpoint device node found.\n");+return-EINVAL;+}+}else{+DRM_ERROR("no port endpoint subnode found.\n");+return-EINVAL;}out:
From: Javier Martinez Canillas <hidden> Date: 2016-02-08 12:03:54
Hello Inki,
On 01/29/2016 12:09 PM, Javier Martinez Canillas wrote:
Commit a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support
for panel") made the Exynos DP DT binding more consistent since the OF
graph could be used to lookup either a panel or a bridge device node.
Before that commit, a panel would be looked up using a phandle and a
bridge using the OF graph which made the DT binding not consistent.
But the patch broke the later case since not finding a panel dev node
would cause the driver's to do a probe deferral instead of attempting
to lookup a bridge device node associated with the remote endpoint.
So instead of returning a -EPROBE_DEFER if a panel is not found, check
if there's a bridge and only do a probe deferral if both aren't found.
Fixes: a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support for panel")
Signed-off-by: Javier Martinez Canillas <redacted>
Any comments about this patch? It is needed to have display working on
machines with a bridge chip again so it should be pushed to -rc ASAP.
Best regards,
--
Javier Martinez Canillas
Open Source Group
Samsung Research America
From: Marek Szyprowski <m.szyprowski@samsung.com> Date: 2016-02-08 12:38:17
Hi Javier,
On 2016-02-08 13:03, Javier Martinez Canillas wrote:
Hello Inki,
On 01/29/2016 12:09 PM, Javier Martinez Canillas wrote:
quoted
Commit a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support
for panel") made the Exynos DP DT binding more consistent since the OF
graph could be used to lookup either a panel or a bridge device node.
Before that commit, a panel would be looked up using a phandle and a
bridge using the OF graph which made the DT binding not consistent.
But the patch broke the later case since not finding a panel dev node
would cause the driver's to do a probe deferral instead of attempting
to lookup a bridge device node associated with the remote endpoint.
So instead of returning a -EPROBE_DEFER if a panel is not found, check
if there's a bridge and only do a probe deferral if both aren't found.
Fixes: a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support
for panel")
Signed-off-by: Javier Martinez Canillas <redacted>
Any comments about this patch? It is needed to have display working on
machines with a bridge chip again so it should be pushed to -rc ASAP.
Please check v4.5-rc3, this patch is already merged there.
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
From: Javier Martinez Canillas <hidden> Date: 2016-02-08 12:44:48
Hello Marek,
On 02/08/2016 09:38 AM, Marek Szyprowski wrote:
Hi Javier,
On 2016-02-08 13:03, Javier Martinez Canillas wrote:
quoted
Hello Inki,
On 01/29/2016 12:09 PM, Javier Martinez Canillas wrote:
quoted
Commit a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support
for panel") made the Exynos DP DT binding more consistent since the OF
graph could be used to lookup either a panel or a bridge device node.
Before that commit, a panel would be looked up using a phandle and a
bridge using the OF graph which made the DT binding not consistent.
But the patch broke the later case since not finding a panel dev node
would cause the driver's to do a probe deferral instead of attempting
to lookup a bridge device node associated with the remote endpoint.
So instead of returning a -EPROBE_DEFER if a panel is not found, check
if there's a bridge and only do a probe deferral if both aren't found.
Fixes: a9fa852886fd ("drm/exynos: dp: add of_graph dt binding support for panel")
Signed-off-by: Javier Martinez Canillas <redacted>
Any comments about this patch? It is needed to have display working on
machines with a bridge chip again so it should be pushed to -rc ASAP.
Please check v4.5-rc3, this patch is already merged there.
My bad, I was looking at v4.5-rc2 and Inki used to answer to patches
when he picks them so I thought he didn't have time to look at it yet.
Anyways, thanks a lot for pointing it out.
Best regards
Best regards,
--
Javier Martinez Canillas
Open Source Group
Samsung Research America