Use OF graph as a main bridge/panel source, preserving
backwards compatibility with phandle implementation.

Signed-off-by: Svyatoslav Ryhel <clamo...@gmail.com>
---
 drivers/video/tegra20/tegra-dc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/video/tegra20/tegra-dc.c b/drivers/video/tegra20/tegra-dc.c
index 6b8275ef9fa..775043bb1fe 100644
--- a/drivers/video/tegra20/tegra-dc.c
+++ b/drivers/video/tegra20/tegra-dc.c
@@ -8,6 +8,7 @@
 #include <cpu_func.h>
 #include <clk.h>
 #include <dm.h>
+#include <dm/ofnode_graph.h>
 #include <fdtdec.h>
 #include <log.h>
 #include <panel.h>
@@ -443,6 +444,18 @@ static int tegra_lcd_configure_rgb(struct udevice *dev, 
ofnode rgb)
        ofnode remote;
        int ret;
 
+       /* DC can have only 1 port */
+       remote = ofnode_graph_get_remote_node(rgb, -1, -1);
+
+       ret = uclass_get_device_by_ofnode(UCLASS_PANEL, remote, &priv->panel);
+       if (!ret)
+               return 0;
+
+       ret = uclass_get_device_by_ofnode(UCLASS_VIDEO_BRIDGE, remote, 
&priv->bridge);
+       if (!ret)
+               return 0;
+
+       /* Try legacy method if graph did not work */
        remote = ofnode_parse_phandle(rgb, "nvidia,panel", 0);
        if (!ofnode_valid(remote))
                return -EINVAL;
-- 
2.43.0

Reply via email to