mirror of
https://github.com/dgibson/dtc.git
synced 2025-10-13 16:27:39 -04:00
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: 53a1bd5469
("checks: add I2C bus checks")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Message-ID: <20250709142452.249492-1-jonathanh@nvidia.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
605dc044c3
commit
9cabae6b03
1 changed files with 1 additions and 1 deletions
2
checks.c
2
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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue