On Mon, Mar 03, 2025 at 01:31:45PM +0200, Matti Vaittinen wrote: > There are some use-cases where child nodes with a specific name need to > be parsed. In a few cases the data from the found nodes is added to an > array which is allocated based on the number of found nodes. One example > of such use is the IIO subsystem's ADC channel nodes, where the relevant > nodes are named as channel[@N]. > > Add a helpers for counting device's sub-nodes with certain name instead > of open-coding this in every user. ... > +unsigned int fwnode_get_child_node_count_named(const struct fwnode_handle *fwnode, > + const char *name) > +{ > + struct fwnode_handle *child; > + unsigned int count = 0; > + fwnode_for_each_child_node(fwnode, child) > + if (fwnode_name_eq(child, name)) I would expect this to be a separate macro fwnode_for_each_named_child_node() (and its device variant) that gives us more consistent approach. > + count++; And the above looks like missing {}, which won't be needed with the other suggestion in place. > + return count; > +} > + if (!fwnode) > + return -EINVAL; > + > + if (IS_ERR(fwnode)) > + return PTR_ERR(fwnode); I expect that this will return 0 or number of nodes. Why do we need an error code? If it's really required, it should be in the fwnode API above. Also do we care about secondary fwnodes? > + return fwnode_get_child_node_count_named(fwnode, name); > +} ... > +unsigned int fwnode_get_child_node_count_named(const struct fwnode_handle *fwnode, > + const char *name); To me the following name sounds better: fwnode_get_named_child_node_count(). > +unsigned int device_get_child_node_count_named(const struct device *dev, > + const char *name); In the similar way. -- With Best Regards, Andy Shevchenko