From 9cabae6b0351dff7eb634ebcdcabf06a276c1222 Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Wed, 9 Jul 2025 15:24:52 +0100 Subject: [PATCH] checks: Fix detection of 'i2c-bus' node If an I2C controller has a 'i2c-bus' child node, then the function check_i2c_bus_bridge() does not detect this as expected and warnings such as the following are observed: Warning (i2c_bus_bridge): /example-0/i2c@7000c000: \ incorrect #address-cells for I2C bus Warning (i2c_bus_bridge): /example-0/i2c@7000c000: \ incorrect #size-cells for I2C bus These warnings occur because the '#address-cells' and '#size-cells' are not directly present under the I2C controller node but the 'i2c-bus' child node. The function check_i2c_bus_bridge() does not detect this because it is using the parent node's 'basenamelen' and not the child node's 'basenamelen' when comparing the child node name with 'i2c-bus'. The parent node's 'basenamelen' is shorter ('i2c') than 'i2c-bus' and so the strprefixeq() test fails. Fix this by using the child node 'basenamelen' when comparing the child node name. Fixes: 53a1bd546905 ("checks: add I2C bus checks") Signed-off-by: Jon Hunter Message-ID: <20250709142452.249492-1-jonathanh@nvidia.com> Signed-off-by: David Gibson --- checks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checks.c b/checks.c index 123f2eb..7e3fed5 100644 --- a/checks.c +++ b/checks.c @@ -1024,7 +1024,7 @@ static void check_i2c_bus_bridge(struct check *c, struct dt_info *dti, struct no } else if (strprefixeq(node->name, node->basenamelen, "i2c")) { struct node *child; for_each_child(node, child) { - if (strprefixeq(child->name, node->basenamelen, "i2c-bus")) + if (strprefixeq(child->name, child->basenamelen, "i2c-bus")) return; } node->bus = &i2c_bus;