On Mon, Feb 24, 2025 at 12:33 PM Matti Vaittinen <mazziesaccount@xxxxxxxxx> 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 helper for counting device's sub-nodes with certain name instead > of open-coding this in every user. > > Suggested-by: Jonathan Cameron <jic23@xxxxxxxxxx> > Signed-off-by: Matti Vaittinen <mazziesaccount@xxxxxxxxx> > --- > Revision history: > v3 => v4: > - New patch as suggested by Jonathan, see discussion in: > https://lore.kernel.org/lkml/20250223161338.5c896280@jic23-huawei/ > --- > drivers/base/property.c | 28 ++++++++++++++++++++++++++++ > include/linux/property.h | 2 ++ > 2 files changed, 30 insertions(+) > > diff --git a/drivers/base/property.c b/drivers/base/property.c > index c1392743df9c..3f85818183cd 100644 > --- a/drivers/base/property.c > +++ b/drivers/base/property.c > @@ -945,6 +945,34 @@ unsigned int device_get_child_node_count(const struct device *dev) > } > EXPORT_SYMBOL_GPL(device_get_child_node_count); > > +/** > + * device_get_child_node_count_named - number of child nodes with given name > + * > + * Scan device's child nodes and find all the nodes with a specific name and > + * return the number of found nodes. Potential '@number' -ending for scanned > + * names is ignored. Eg, > + * device_get_child_node_count(dev, "channel"); > + * would match all the nodes: > + * channel { }, channel@0 {}, channel@0xabba {}... > + * > + * @dev: Device to count the child nodes for > + * > + * Return: the number of child nodes with a matching name for a given device. > + */ > +unsigned int device_get_child_node_count_named(const struct device *dev, > + const char *name) I think this should be implemented as fwnode_get_child_node_count_named() with the device variant being just a wrapper. Rob