On Tue, Feb 09, 2021 at 10:15:10PM -0600, Kumar Gala wrote: > Treat a node-name and property name at the same level of tree as > a warning > > Signed-off-by: Kumar Gala <kumar.gala@xxxxxxxxxx> > --- > checks.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/checks.c b/checks.c > index 17cb689..7f9e670 100644 > --- a/checks.c > +++ b/checks.c > @@ -330,6 +330,23 @@ static void check_node_name_format(struct check *c, struct dt_info *dti, > } > ERROR(node_name_format, check_node_name_format, NULL, &node_name_chars); > > +static void check_node_name_vs_property_name(struct check *c, > + struct dt_info *dti, > + struct node *node) > +{ > + struct property *prop; > + > + if (!node->parent) > + return; > + > + for_each_property(node->parent, prop) { > + if (streq(node->name, prop->name)) > + FAIL(c, dti, node, "node name and property name conflict"); > + } This seems a somewhat roundabout way of detecting this. Instead of having a check for "sibling" properties of the same name, why not just do: for_each_subnode(...) { if (get_property(node, subnode->name)) FAIL(..., "Has both subnode and property named %s", subnode->name); } > +} > +WARNING(node_name_vs_property_name, check_node_name_vs_property_name, > + NULL, &node_name_chars); > + > static void check_unit_address_vs_reg(struct check *c, struct dt_info *dti, > struct node *node) > { > @@ -1796,7 +1813,7 @@ WARNING(graph_endpoint, check_graph_endpoint, NULL, &graph_nodes); > static struct check *check_table[] = { > &duplicate_node_names, &duplicate_property_names, > &node_name_chars, &node_name_format, &property_name_chars, > - &name_is_string, &name_properties, > + &name_is_string, &name_properties, &node_name_vs_property_name, > > &duplicate_label, > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature