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.
While I looked at it, it seems that a
'device_for_each_named_child_node()' -construct would have a few users.
Yours,
-- Matti