From 5f0cde7958e8032806d6e6eafadf3170dc15ca2c Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Mon, 8 Feb 2021 10:46:44 +0800 Subject: [PATCH] video/drm: display: add compatible rk356x lvds dts config after this commit, can support parse the following two config: 1. panel { ... display-timings { ... }; port@0 { reg = <0>; panel_in_lvds: endpoint { remote-endpoint = <&lvds_out_panel>; }; }; }; 2. panel { ... display-timings { ... }; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; panel_in_lvds: endpoint { remote-endpoint = <&lvds_out_panel>; }; }; }; }; Signed-off-by: Sandy Huang Change-Id: Idbcc31bbe29d00fe5ceea1f5041543cdfe9bc34e --- drivers/video/drm/rockchip_display.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/video/drm/rockchip_display.c b/drivers/video/drm/rockchip_display.c index 11bf7209cb..e40bd24611 100644 --- a/drivers/video/drm/rockchip_display.c +++ b/drivers/video/drm/rockchip_display.c @@ -1165,7 +1165,7 @@ enum { static struct rockchip_panel *rockchip_of_find_panel(struct udevice *dev) { - ofnode panel_node, ports, port, ep; + ofnode panel_node, ports, port, ep, port_parent_node; struct udevice *panel_dev; int ret; @@ -1193,6 +1193,7 @@ static struct rockchip_panel *rockchip_of_find_panel(struct udevice *dev) ofnode_for_each_subnode(ep, port) { ofnode _ep, _port; uint phandle; + bool is_ports_node = false; if (ofnode_read_u32(ep, "remote-endpoint", &phandle)) continue; @@ -1205,7 +1206,12 @@ static struct rockchip_panel *rockchip_of_find_panel(struct udevice *dev) if (!ofnode_valid(_port)) continue; - panel_node = ofnode_get_parent(_port); + port_parent_node = ofnode_get_parent(_port); + is_ports_node = strstr(port_parent_node.np->full_name, "ports") ? 1 : 0; + if (is_ports_node) + panel_node = ofnode_get_parent(port_parent_node); + else + panel_node = ofnode_get_parent(_port); if (!ofnode_valid(panel_node)) continue;