Re: [PATCH v5 02/10] property: Add functions to count named child nodes
From: Andy Shevchenko
Date: Mon Mar 03 2025 - 07:05:11 EST
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