In device tree overlays, the following patterns occur frequently: board.dts: /dts-v1/; / { display-controller { ports { #address-cells = <1>; #size-cells = <0>; vp0: port@0 { reg = <0>; vp0_out: endpoint { }; }; vp1: port@1 { reg = <1>; }; }; }; }; overlay-endpoint.dtso: /dts-v1/; /plugin/; &{/} { hdmi-tx-connector { port { hdmi_tx_in: endpoint { remote-endpoint = <&vp0_out>; }; }; }; }; &vp0_out { remote-endpoint = <&hdmi_tx_in>; }; In this case, dtc expects that the node referenced by &vp0_out is named "endpoint", but the name cannot be inferred. Also, dtc complains about the connections between the endpoints not being bidirectional. Similarly, for a different overlay overlay-port.dtso: /dts-v1/; /plugin/; &{/} { panel { port { panel_in: endpoint { remote-endpoint = <&vp1_out>; }; }; }; }; &vp1 { vp1_out: endpoint { remote-endpoint = <&panel_in>; }; }; dtc expects that the node referenced by &vp1 is named "port", but the name cannot be inferred. Relax the corresponding checks and skip the parts that are not reasonable for device tree overlays. Cc: Heiko Stuebner <heiko@xxxxxxxxx> Signed-off-by: Michael Riesch <michael.riesch@xxxxxxxxxxxxxx> --- Habidere, This patch fixes several warnings - Warning (graph_port): /fragment@3: graph port node name should be 'port' - Warning (graph_endpoint): /fragment@3/__overlay__: graph endpoint node name should be 'endpoint' - Warning (graph_endpoint): /fragment@3/__overlay__: graph connection to node '/fragment@2/__overlay__/.../port/endpoint' is not bidirectional that appear when compiling device tree overlays. This first warning popped up e.g., in the scope of [1], [2]. The latter two warnings appear regularly when compiling our downstream overlays. As we plan to submit them to mainline soon, we'll hit that blocker sooner or later. Looking forward to your comments! Link: https://lore.kernel.org/lkml/20240412-feature-wolfvision-pf5-display-v1-1-f032f32dba1a@xxxxxxxxxxxxxx/ [1] Link: https://lore.kernel.org/lkml/20240423082941.2626102-1-heiko@xxxxxxxxx/T/ [2] --- checks.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/checks.c b/checks.c index 2fb7ee5..2ea5913 100644 --- a/checks.c +++ b/checks.c @@ -1822,10 +1822,14 @@ static void check_graph_port(struct check *c, struct dt_info *dti, if (node->bus != &graph_port_bus) return; + check_graph_reg(c, dti, node); + + /* skip checks below for overlays */ + if (dti->dtsflags & DTSF_PLUGIN) + return; + if (!strprefixeq(node->name, node->basenamelen, "port")) FAIL(c, dti, node, "graph port node name should be 'port'"); - - check_graph_reg(c, dti, node); } WARNING(graph_port, check_graph_port, NULL, &graph_nodes); @@ -1860,11 +1864,15 @@ static void check_graph_endpoint(struct check *c, struct dt_info *dti, if (!node->parent || node->parent->bus != &graph_port_bus) return; + check_graph_reg(c, dti, node); + + /* skip checks below for overlays */ + if (dti->dtsflags & DTSF_PLUGIN) + return; + if (!strprefixeq(node->name, node->basenamelen, "endpoint")) FAIL(c, dti, node, "graph endpoint node name should be 'endpoint'"); - check_graph_reg(c, dti, node); - remote_node = get_remote_endpoint(c, dti, node); if (!remote_node) return; --- base-commit: ae26223a056e040b2d812202283d47c6e034d063 change-id: 20240522-bugfix-relax-checks-for-overlays-e72b11df44a1 Best regards, -- Michael Riesch <michael.riesch@xxxxxxxxxxxxxx>