Thread (53 messages) 53 messages, 7 authors, 2025-03-04

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

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2025-02-25 10:39:54
Also in: linux-acpi, linux-devicetree, linux-iio, linux-renesas-soc, linux-sunxi, lkml

On Tue, Feb 25, 2025 at 12:29:31PM +0200, Matti Vaittinen wrote:
On 25/02/2025 12:21, Andy Shevchenko wrote:
quoted
On Tue, Feb 25, 2025 at 11:40:16AM +0200, Heikki Krogerus wrote:
quoted
quoted
+/**
+ * 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.
quoted
quoted
+ * 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/ ?
quoted
+			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


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help