Re: [PATCH v4 02/10] property: Add device_get_child_node_count_named()

Andy Shevchenko
2025-02-25T10:39:54Z

On Tue, Feb 25, 2025 at 12:29:31PM +0200, Matti Vaittinen wrote:
> On 25/02/2025 12:21, Andy Shevchenko wrote:
> > On Tue, Feb 25, 2025 at 11:40:16AM +0200, Heikki Krogerus wrote:
> > > > +/**
> > > > + * 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
> >
> > This has an inconsistent kernel doc structure in comparison to the rest in this
> > file.
> >
> > > > + * 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)
> > > > +{
> > > > + struct fwnode_handle *child;
> > > > + unsigned int count = 0;
> > > > +
> > > > + device_for_each_child_node(dev, child)
> > > > + if (fwnode_name_eq(child, "channel"))
> > >
> > > s/"channel"/name/ ?
> > >
> > > > + count++;
> > > > +
> > > > + return count;
> > > > +}
> > > > +EXPORT_SYMBOL_GPL(device_get_child_node_count_named);
> > >
> > > I did not check how many users are you proposing for this, but if
> > > there's only one, then IMO this should not be a global function yet.
> > > It just feels to special case to me. But let's see what the others
> > > think.
> >
> > The problem is that if somebody hides it, we might potentially see
> > a duplication in the future. So I _slightly_ prefer to publish and
> > then drop that after a few cycles if no users appear.
>
> After taking a very quick grep I spotted one other existing place where we
> might be able to do direct conversion to use this function.
>
> drivers/net/ethernet/freescale/gianfar.c
>
> That'd be 2 users.

I haven't checked myself, I believe your judgement, but can you add a (rfc?)
patch at the end of this series to show that? With the luckily event of acking
by the network people we may have it already done.

> While I looked at it, it seems that a 'device_for_each_named_child_node()'
> -construct would have a few users.

--
With Best Regards,
Andy Shevchenko