From 97932bdf73063697acd862d3f9fdc706decf0927 Mon Sep 17 00:00:00 2001 From: Zhang Yubing Date: Thu, 20 Mar 2025 10:25:21 +0800 Subject: [PATCH] drm/rockchip: dp_aux_client: parse timing by child node name The child node may be not parsed by the order config in dts, it would be better get child node by name to avoid mismatch. Change-Id: Ibce47f44720f279eb53f063a351d3b859a371fd8 Signed-off-by: Zhang Yubing --- .../gpu/drm/rockchip/rockchip_dp_mst_aux_client.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_dp_mst_aux_client.c b/drivers/gpu/drm/rockchip/rockchip_dp_mst_aux_client.c index 6baf5039fb54..d7bc91adc841 100644 --- a/drivers/gpu/drm/rockchip/rockchip_dp_mst_aux_client.c +++ b/drivers/gpu/drm/rockchip/rockchip_dp_mst_aux_client.c @@ -183,6 +183,7 @@ static int rockchip_dp_aux_client_parse(struct rockchip_dp_aux_client *aux_clien struct drm_display_mode mode_buf, *mode = &mode_buf; int rc, port_num, i; struct edid *edid; + char name[10]; const u8 edid_buf[EDID_LENGTH] = { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x44, 0x6D, @@ -205,13 +206,18 @@ static int rockchip_dp_aux_client_parse(struct rockchip_dp_aux_client *aux_clien if (!ports) return -ENOMEM; - i = 0; - for_each_child_of_node(of_node, node) { + for (i = 0; i < port_num; i++) { struct display_timing dt; struct videomode vm; + snprintf(name, sizeof(name), "mst-dp%d", i); + node = of_get_child_by_name(of_node, name); + if (!node) + return -EINVAL; + edid = kzalloc(sizeof(*edid), GFP_KERNEL); if (!edid) { + of_node_put(node); rc = -ENOMEM; goto fail; } @@ -222,13 +228,13 @@ static int rockchip_dp_aux_client_parse(struct rockchip_dp_aux_client *aux_clien drm_display_mode_from_videomode(&vm, mode); rockchip_dp_sim_update_dtd(edid, mode); } + of_node_put(node); rockchip_dp_sim_update_checksum(edid); memcpy(&ports[i], &output_port, sizeof(*ports)); ports[i].peer_guid[0] = i; ports[i].edid = (u8 *)edid; ports[i].edid_size = sizeof(*edid); - i++; } rc = rockchip_dp_mst_sim_update(aux_client->mst_ctx, port_num, ports);