This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
Changelog v2: - return -EINVAL if getting a port node failed.
Signed-off-by: Inki Dae inki.dae@samsung.com --- drivers/gpu/drm/exynos/exynos_dp_core.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 94f02a0..0b53045 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1392,7 +1392,7 @@ static const struct component_ops exynos_dp_ops = { static int exynos_dp_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; - struct device_node *panel_node, *bridge_node, *endpoint; + struct device_node *panel_node = NULL, *bridge_node, *endpoint = NULL; struct exynos_dp_device *dp; int ret;
@@ -1403,15 +1403,32 @@ 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); 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; + } + } }
- endpoint = of_graph_get_next_endpoint(dev->of_node, NULL); + panel_node = !endpoint ? NULL : panel_node; + + endpoint = of_graph_get_next_endpoint(dev->of_node, panel_node); if (endpoint) { bridge_node = of_graph_get_remote_port_parent(endpoint); if (bridge_node) {
This patch fixes wrong return type when dt binding of bridge device failed.
If a board has a bridge device then of_graph_get_remote_port_parent function shouldn't be NULL. So this patch will return a proper error type so that the deferred probe isn't triggered.
Changelog v2: - return -EINVAL if getting a port node failed.
Signed-off-by: Inki Dae inki.dae@samsung.com --- drivers/gpu/drm/exynos/exynos_dp_core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 0b53045..c77fb83 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1436,8 +1436,10 @@ static int exynos_dp_probe(struct platform_device *pdev) of_node_put(bridge_node); if (!dp->ptn_bridge) return -EPROBE_DEFER; - } else - return -EPROBE_DEFER; + } else { + DRM_ERROR("no port node for bridge device.\n"); + return -EINVAL; + } }
pm_runtime_enable(dev);
Hello Inki,
On 12/02/2015 08:57 AM, Inki Dae wrote:
This patch fixes wrong return type when dt binding of bridge device failed.
If a board has a bridge device then of_graph_get_remote_port_parent function shouldn't be NULL. So this patch will return a proper error type so that the deferred probe isn't triggered.
Changelog v2:
- return -EINVAL if getting a port node failed.
Signed-off-by: Inki Dae inki.dae@samsung.com
Reviewed-by: Javier Martinez Canillas javier@osg.samsung.com
Best regards
Hello Inki,
On 12/02/2015 08:57 AM, Inki Dae wrote:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
You have to also update the DT binding doc which seems to be outdated already:
Documentation/devicetree/bindings/display/exynos/exynos_dp.txt
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
How did you test this patch?
Best regards,
Hi Javier,
2015년 12월 03일 00:04에 Javier Martinez Canillas 이(가) 쓴 글:
Hello Inki,
On 12/02/2015 08:57 AM, Inki Dae wrote:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
You have to also update the DT binding doc which seems to be outdated already:
Documentation/devicetree/bindings/display/exynos/exynos_dp.txt
Right. It should be updated.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
How did you test this patch?
I thought you will test it and give me tested-by because you commented like below, " Assuming you can make a distinction if the endpoint is a panel or a bridge, then yes, I agree with the idea of the patch. Please feel free to cc me if you post such a patch and I'll gladly test it on my Exynos5800 Peach Pi."
That is why I cced you. I really have no any Exynos5800 Peach Pi board.
Thanks, Inki Dae
Best regards,
Hello Inki,
On 12/02/2015 11:11 PM, Inki Dae wrote:
Hi Javier,
2015년 12월 03일 00:04에 Javier Martinez Canillas 이(가) 쓴 글:
Hello Inki,
On 12/02/2015 08:57 AM, Inki Dae wrote:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
You have to also update the DT binding doc which seems to be outdated already:
Documentation/devicetree/bindings/display/exynos/exynos_dp.txt
Right. It should be updated.
Great, I see you already posted that.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
How did you test this patch?
I thought you will test it and give me tested-by because you commented like below, " Assuming you can make a distinction if the endpoint is a panel or a bridge, then yes, I agree with the idea of the patch. Please feel free to cc me if you post such a patch and I'll gladly test it on my Exynos5800 Peach Pi."
That is why I cced you. I really have no any Exynos5800 Peach Pi board.
Yes, but if you didn't test a patch, then it should be marked with a RFT prefix in the subject line or at least mention that needs testing since you lack the HW to test. I've no way to know if you have another board with a similar design :)
But what I meant is how the patch is supposed to be tested since there ins't a change in the Exynos5800 Peach Pi DTS? We can of course test that doesn't break backward compatibility but we don't have a way to test the actual change.
So I tested with the patch following patch [0] and things are working correctly. Please include that patch in your series.
I've some comments on your patch though but I'll comment on your lastest version.
Thanks, Inki Dae
Best regards,
Best regards,
Hi Javier,
2015-12-03 22:05 GMT+09:00 Javier Martinez Canillas javier@osg.samsung.com:
Hello Inki,
On 12/02/2015 11:11 PM, Inki Dae wrote:
Hi Javier,
2015년 12월 03일 00:04에 Javier Martinez Canillas 이(가) 쓴 글:
Hello Inki,
On 12/02/2015 08:57 AM, Inki Dae wrote:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
You have to also update the DT binding doc which seems to be outdated already:
Documentation/devicetree/bindings/display/exynos/exynos_dp.txt
Right. It should be updated.
Great, I see you already posted that.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
How did you test this patch?
I thought you will test it and give me tested-by because you commented like below, " Assuming you can make a distinction if the endpoint is a panel or a bridge, then yes, I agree with the idea of the patch. Please feel free to cc me if you post such a patch and I'll gladly test it on my Exynos5800 Peach Pi."
That is why I cced you. I really have no any Exynos5800 Peach Pi board.
Yes, but if you didn't test a patch, then it should be marked with a RFT prefix in the subject line or at least mention that needs testing since you lack the HW to test. I've no way to know if you have another board with a similar design :)
But what I meant is how the patch is supposed to be tested since there ins't a change in the Exynos5800 Peach Pi DTS? We can of course test that doesn't break backward compatibility but we don't have a way to test the actual change.
So I tested with the patch following patch [0] and things are working correctly. Please include that patch in your series.
Will pick it up. And I commented on below your patch.
I've some comments on your patch though but I'll comment on your lastest version.
Thanks, Inki Dae
Best regards,
Best regards,
Javier Martinez Canillas Open Source Group Samsung Research America
[0]: From 644bab7949ac17a8d42ca0cf36cd55d61bc88928 Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas javier@osg.samsung.com Date: Thu, 3 Dec 2015 09:32:17 -0300 Subject: [PATCH 1/1] ARM: dts: Use OF graph for DP to panel connection in exynos5800-peach-pi
The DT binding for the Exynos DRM Display Port (DP) driver isn't consistent since it uses a phandle to describe the connection between the DP port and the display panel but uses the OF graph ports and endpoints to describe the connection betwen the DP port, a bridge chip and the panel.
The Exynos DP driver and the DT binding have been changed to allow also to describe the DP port to panel connection using ports / endpoints (OF graph) so this patch changes the Exynos5800 Peach Pi DT to make it consistent with the Exynos5420 Peach Pit that has a eDP to LVDS chip and uses OF graph too.
Signed-off-by: Javier Martinez Canillas javier@osg.samsung.com
arch/arm/boot/dts/exynos5800-peach-pi.dts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/exynos5800-peach-pi.dts b/arch/arm/boot/dts/exynos5800-peach-pi.dts index 7b018e451880..9c6fd7314ee0 100644 --- a/arch/arm/boot/dts/exynos5800-peach-pi.dts +++ b/arch/arm/boot/dts/exynos5800-peach-pi.dts @@ -122,6 +122,12 @@ compatible = "auo,b133htn01"; power-supply = <&tps65090_fet6>; backlight = <&backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&dp_out>;
};
}; }; mmc1_pwrseq: mmc1_pwrseq {
@@ -148,7 +154,14 @@ samsung,link-rate = <0x0a>; samsung,lane-count = <2>; samsung,hpd-gpio = <&gpx2 6 GPIO_ACTIVE_HIGH>;
panel = <&panel>;
ports {
port@0 {
As Rob commented before, I will pick it up removing @0 if you are ok.
Thanks, Inki Dae
dp_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
&fimd {
2.4.3
dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[adding Krzysztof and Kukjin to cc list]
Hello Inki,
On 12/06/2015 01:25 PM, Inki Dae wrote:
Hi Javier,
2015-12-03 22:05 GMT+09:00 Javier Martinez Canillas javier@osg.samsung.com:
Hello Inki,
On 12/02/2015 11:11 PM, Inki Dae wrote:
Hi Javier,
2015년 12월 03일 00:04에 Javier Martinez Canillas 이(가) 쓴 글:
Hello Inki,
On 12/02/2015 08:57 AM, Inki Dae wrote:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
You have to also update the DT binding doc which seems to be outdated already:
Documentation/devicetree/bindings/display/exynos/exynos_dp.txt
Right. It should be updated.
Great, I see you already posted that.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
How did you test this patch?
I thought you will test it and give me tested-by because you commented like below, " Assuming you can make a distinction if the endpoint is a panel or a bridge, then yes, I agree with the idea of the patch. Please feel free to cc me if you post such a patch and I'll gladly test it on my Exynos5800 Peach Pi."
That is why I cced you. I really have no any Exynos5800 Peach Pi board.
Yes, but if you didn't test a patch, then it should be marked with a RFT prefix in the subject line or at least mention that needs testing since you lack the HW to test. I've no way to know if you have another board with a similar design :)
But what I meant is how the patch is supposed to be tested since there ins't a change in the Exynos5800 Peach Pi DTS? We can of course test that doesn't break backward compatibility but we don't have a way to test the actual change.
So I tested with the patch following patch [0] and things are working correctly. Please include that patch in your series.
Will pick it up. And I commented on below your patch.
Ok, you need an ack from Krzysztof / Kukjin before picking the patch though and cc them if you are planning to repost the whole series.
Another option is to wait until your Exynos DRM patches hit mainline and then the DTS change can be posted separately.
I've some comments on your patch though but I'll comment on your lastest version.
Thanks, Inki Dae
Best regards,
Best regards,
Javier Martinez Canillas Open Source Group Samsung Research America
[0]: From 644bab7949ac17a8d42ca0cf36cd55d61bc88928 Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas javier@osg.samsung.com Date: Thu, 3 Dec 2015 09:32:17 -0300 Subject: [PATCH 1/1] ARM: dts: Use OF graph for DP to panel connection in exynos5800-peach-pi
The DT binding for the Exynos DRM Display Port (DP) driver isn't consistent since it uses a phandle to describe the connection between the DP port and the display panel but uses the OF graph ports and endpoints to describe the connection betwen the DP port, a bridge chip and the panel.
The Exynos DP driver and the DT binding have been changed to allow also to describe the DP port to panel connection using ports / endpoints (OF graph) so this patch changes the Exynos5800 Peach Pi DT to make it consistent with the Exynos5420 Peach Pit that has a eDP to LVDS chip and uses OF graph too.
Signed-off-by: Javier Martinez Canillas javier@osg.samsung.com
arch/arm/boot/dts/exynos5800-peach-pi.dts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/exynos5800-peach-pi.dts b/arch/arm/boot/dts/exynos5800-peach-pi.dts index 7b018e451880..9c6fd7314ee0 100644 --- a/arch/arm/boot/dts/exynos5800-peach-pi.dts +++ b/arch/arm/boot/dts/exynos5800-peach-pi.dts @@ -122,6 +122,12 @@ compatible = "auo,b133htn01"; power-supply = <&tps65090_fet6>; backlight = <&backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&dp_out>;
};
}; }; mmc1_pwrseq: mmc1_pwrseq {
@@ -148,7 +154,14 @@ samsung,link-rate = <0x0a>; samsung,lane-count = <2>; samsung,hpd-gpio = <&gpx2 6 GPIO_ACTIVE_HIGH>;
panel = <&panel>;
ports {
port@0 {
As Rob commented before, I will pick it up removing @0 if you are ok.
Ok, it is true that there isn't an #address-cells, #size-cells and reg properties since there is a single port so I guess the @0 is arbitrary here so it doesn't represent a proper unit-address and can be removed.
Thanks, Inki Dae
dp_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
&fimd {
2.4.3
Best regards,
It seems that below patch should be modifed for only one of two outbound nodes - panel and bridge - to be bound because in case of using bridge device, the bridge driver will bind the panel. I will fix and post it again.
Thanks, Inki Dae
2015년 12월 02일 20:57에 Inki Dae 이(가) 쓴 글:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
Changelog v2:
- return -EINVAL if getting a port node failed.
Signed-off-by: Inki Dae inki.dae@samsung.com
drivers/gpu/drm/exynos/exynos_dp_core.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 94f02a0..0b53045 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1392,7 +1392,7 @@ static const struct component_ops exynos_dp_ops = { static int exynos_dp_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev;
- struct device_node *panel_node, *bridge_node, *endpoint;
- struct device_node *panel_node = NULL, *bridge_node, *endpoint = NULL; struct exynos_dp_device *dp; int ret;
@@ -1403,15 +1403,32 @@ 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); 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;
}
}}
- endpoint = of_graph_get_next_endpoint(dev->of_node, NULL);
- panel_node = !endpoint ? NULL : panel_node;
- endpoint = of_graph_get_next_endpoint(dev->of_node, panel_node); if (endpoint) { bridge_node = of_graph_get_remote_port_parent(endpoint); if (bridge_node) {
On Wed, Dec 2, 2015 at 5:57 AM, Inki Dae inki.dae@samsung.com wrote:
This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility.
i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility.
Changelog v2:
- return -EINVAL if getting a port node failed.
Signed-off-by: Inki Dae inki.dae@samsung.com
drivers/gpu/drm/exynos/exynos_dp_core.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 94f02a0..0b53045 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1392,7 +1392,7 @@ static const struct component_ops exynos_dp_ops = { static int exynos_dp_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev;
struct device_node *panel_node, *bridge_node, *endpoint;
struct device_node *panel_node = NULL, *bridge_node, *endpoint = NULL; struct exynos_dp_device *dp; int ret;
@@ -1403,15 +1403,32 @@ 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); 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;
}
}
This should be a fairly common sequence, so please make it one. Only which port is the panel should vary.
Rob
dri-devel@lists.freedesktop.org