public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/14] Align availability checks on fwnode child node enumeration
@ 2025-09-16 16:01 Sakari Ailus
  2025-09-16 16:01 ` [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only Sakari Ailus
                   ` (14 more replies)
  0 siblings, 15 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

Hello everyone,

Historically the fwnode property API has enumerated only available device
nodes on OF whereas on ACPI, also nodes that haven't been present in the
system have been provided. Both OF and ACPI have similar concepts of node
availbility, on OF it's the "status" property present on device nodes and
on ACPI the _STA object evaluates to device present, enabled and
functional bits, of which the present and functional bits are currently
being used to determine whether to enumerate a device.

Two additional functions, fwnode_get_next_available_child_node() and
fwnode_for_each_available_child_node(), have been provided to enumerate
the available nodes only on ACPI, whereas on OF the implementation has
been the same on the non-available variants. The motivation for providing
these has very likely been to provide fwnode variants of the similarly
named functions but the difference isn't justifiable from API consistency
viewpoint.

This set switches the users away from the "available" fwnode API functions
and later on removes them, aligning the functionality on all fwnode
backends.

I'm posting this to linux-acpi and a small set of reviewers for now and
once we're happy with the ACPI / fwnode changes, to the full list.

Sakari Ailus (14):
  ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint()
    only
  ACPI: property: Make acpi_get_next_subnode() static
  ACPI: property: Return present device nodes only on fwnode interface
  property: Drop DEVICE_DISABLED flag in
    fwnode_graph_get_endpoint_by_id()
  property: Drop DEVICE_DISABLED flag in
    fwnode_graph_get_endpoint_count()
  property: Document that fwnode API returns available nodes
  driver core: Use fwnode_for_each_child_node() instead
  net: lan966x: Use fwnode_for_each_child_node() instead
  Input: touch-overlay - Use fwnode_for_each_child_node() instead
  media: thp7312: Use fwnode_for_each_child_node() instead
  leds: Use fwnode_for_each_child_node() instead
  leds: Use fwnode_get_next_child_node() instead
  property: Drop functions operating on "available" child nodes
  spi: cadence: Remove explicit device node availability check

 drivers/acpi/property.c                       | 34 ++++++++---
 drivers/base/core.c                           | 10 ++--
 drivers/base/property.c                       | 56 +++----------------
 drivers/input/touch-overlay.c                 |  2 +-
 drivers/leds/flash/leds-rt4505.c              |  2 +-
 drivers/leds/flash/leds-rt8515.c              |  2 +-
 drivers/leds/flash/leds-sgm3140.c             |  3 +-
 drivers/leds/flash/leds-tps6131x.c            |  2 +-
 drivers/leds/leds-max5970.c                   |  2 +-
 drivers/leds/leds-max77705.c                  |  2 +-
 drivers/leds/rgb/leds-ktd202x.c               |  4 +-
 drivers/leds/rgb/leds-ncp5623.c               |  2 +-
 drivers/media/i2c/thp7312.c                   |  2 +-
 .../ethernet/microchip/lan966x/lan966x_main.c |  2 +-
 drivers/spi/spi-cadence-xspi.c                |  3 -
 include/linux/acpi.h                          | 10 ----
 include/linux/property.h                      | 14 +----
 17 files changed, 54 insertions(+), 98 deletions(-)

-- 
2.47.3


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-17  7:17   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 02/14] ACPI: property: Make acpi_get_next_subnode() static Sakari Ailus
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

Calling fwnode_get_next_child_node() in ACPI implementation of the fwnode
property API is somewhat problematic as the latter is used in the
impelementation of the former. Instead of using
fwnode_get_next_child_node() in acpi_graph_get_next_endpoint(), call
acpi_get_next_subnode() directly instead.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/acpi/property.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index 436019d96027..8d9a9876748f 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -1380,7 +1380,7 @@ static struct fwnode_handle *acpi_graph_get_next_endpoint(
 
 	if (!prev) {
 		do {
-			port = fwnode_get_next_child_node(fwnode, port);
+			port = acpi_get_next_subnode(fwnode, port);
 			/*
 			 * The names of the port nodes begin with "port@"
 			 * followed by the number of the port node and they also
@@ -1398,13 +1398,13 @@ static struct fwnode_handle *acpi_graph_get_next_endpoint(
 	if (!port)
 		return NULL;
 
-	endpoint = fwnode_get_next_child_node(port, prev);
+	endpoint = acpi_get_next_subnode(port, prev);
 	while (!endpoint) {
-		port = fwnode_get_next_child_node(fwnode, port);
+		port = acpi_get_next_subnode(fwnode, port);
 		if (!port)
 			break;
 		if (is_acpi_graph_node(port, "port"))
-			endpoint = fwnode_get_next_child_node(port, NULL);
+			endpoint = acpi_get_next_subnode(port, NULL);
 	}
 
 	/*
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 02/14] ACPI: property: Make acpi_get_next_subnode() static
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
  2025-09-16 16:01 ` [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-17  7:18   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 03/14] ACPI: property: Return present device nodes only on fwnode interface Sakari Ailus
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

acpi_get_next_subnode() is only used in drivers/acpi/property.c. Remove
its prototype from include/linux/acpi.h and make it static.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/acpi/property.c |  5 +++--
 include/linux/acpi.h    | 10 ----------
 2 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index 8d9a9876748f..3e85900080ac 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -1264,8 +1264,9 @@ static int stop_on_next(struct acpi_device *adev, void *data)
  * @fwnode: Firmware node to find the next child node for.
  * @child: Handle to one of the device's child nodes or a null handle.
  */
-struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
-					    struct fwnode_handle *child)
+static struct fwnode_handle *
+acpi_get_next_subnode(const struct fwnode_handle *fwnode,
+		      struct fwnode_handle *child)
 {
 	struct acpi_device *adev = to_acpi_device_node(fwnode);
 
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 5ff5d99f6ead..703323b9fe0c 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -1349,9 +1349,6 @@ acpi_data_add_props(struct acpi_device_data *data, const guid_t *guid,
 int acpi_node_prop_get(const struct fwnode_handle *fwnode, const char *propname,
 		       void **valptr);
 
-struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
-					    struct fwnode_handle *child);
-
 struct acpi_probe_entry;
 typedef bool (*acpi_probe_entry_validate_subtbl)(struct acpi_subtable_header *,
 						 struct acpi_probe_entry *);
@@ -1450,13 +1447,6 @@ static inline int acpi_node_prop_get(const struct fwnode_handle *fwnode,
 	return -ENXIO;
 }
 
-static inline struct fwnode_handle *
-acpi_get_next_subnode(const struct fwnode_handle *fwnode,
-		      struct fwnode_handle *child)
-{
-	return NULL;
-}
-
 static inline struct fwnode_handle *
 acpi_graph_get_next_endpoint(const struct fwnode_handle *fwnode,
 			     struct fwnode_handle *prev)
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 03/14] ACPI: property: Return present device nodes only on fwnode interface
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
  2025-09-16 16:01 ` [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only Sakari Ailus
  2025-09-16 16:01 ` [PATCH 02/14] ACPI: property: Make acpi_get_next_subnode() static Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-17  7:58   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id() Sakari Ailus
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_graph_get_next_subnode() may return fwnode backed by ACPI device
nodes and there has been no check these devices are present in the system,
unlike there has been on fwnode OF backend. In order to provide consistent
behaviour towards callers, add a check for device presence by introducing
a new function acpi_get_next_present_subnode(), used as the
get_next_child_node() fwnode operation that also checks device node
presence.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/acpi/property.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index 3e85900080ac..f7461592b5f6 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -1319,6 +1319,25 @@ acpi_get_next_subnode(const struct fwnode_handle *fwnode,
 	return NULL;
 }
 
+/**
+ * acpi_get_next_present_subnode - Return the next present child node handle for a fwnode
+ * @fwnode: Firmware node to find the next child node for.
+ * @child: Handle to one of the device's child nodes or a null handle.
+ * Like acpi_get_next_subnode, but the device nodes returned by
+ * acpi_get_next_present_subnode() are guaranteed to be present.
+ */
+static struct fwnode_handle *
+acpi_get_next_present_subnode(const struct fwnode_handle *fwnode,
+			      struct fwnode_handle *child)
+{
+	do {
+		child = acpi_get_next_subnode(fwnode, child);
+	} while (is_acpi_device_node(child) &&
+		 !acpi_device_is_present(to_acpi_device_node(child)));
+
+	return child;
+}
+
 /**
  * acpi_node_get_parent - Return parent fwnode of this fwnode
  * @fwnode: Firmware node whose parent to get
@@ -1663,7 +1682,7 @@ static int acpi_fwnode_irq_get(const struct fwnode_handle *fwnode,
 		.property_read_string_array =				\
 			acpi_fwnode_property_read_string_array,		\
 		.get_parent = acpi_node_get_parent,			\
-		.get_next_child_node = acpi_get_next_subnode,		\
+		.get_next_child_node = acpi_get_next_present_subnode,	\
 		.get_named_child_node = acpi_fwnode_get_named_child_node, \
 		.get_name = acpi_fwnode_get_name,			\
 		.get_name_prefix = acpi_fwnode_get_name_prefix,		\
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id()
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (2 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 03/14] ACPI: property: Return present device nodes only on fwnode interface Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-17  8:39   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 05/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count() Sakari Ailus
                   ` (10 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

No caller uses FWNODE_GRAPH_DEVICE_DISABLED flag when calling
fwnode_graph_get_endpoint_by_id(). Drop support for the flag entirely and
remove it from the documentation.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/property.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index f626d5bbe806..b48ef81ae43e 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1241,9 +1241,6 @@ static bool fwnode_graph_remote_available(struct fwnode_handle *ep)
  * If FWNODE_GRAPH_ENDPOINT_NEXT is passed in @flags and the specified endpoint
  * has not been found, look for the closest endpoint ID greater than the
  * specified one and return the endpoint that corresponds to it, if present.
- *
- * Does not return endpoints that belong to disabled devices or endpoints that
- * are unconnected, unless FWNODE_GRAPH_DEVICE_DISABLED is passed in @flags.
  */
 struct fwnode_handle *
 fwnode_graph_get_endpoint_by_id(const struct fwnode_handle *fwnode,
@@ -1252,13 +1249,12 @@ fwnode_graph_get_endpoint_by_id(const struct fwnode_handle *fwnode,
 	struct fwnode_handle *ep, *best_ep = NULL;
 	unsigned int best_ep_id = 0;
 	bool endpoint_next = flags & FWNODE_GRAPH_ENDPOINT_NEXT;
-	bool enabled_only = !(flags & FWNODE_GRAPH_DEVICE_DISABLED);
 
 	fwnode_graph_for_each_endpoint(fwnode, ep) {
 		struct fwnode_endpoint fwnode_ep = { 0 };
 		int ret;
 
-		if (enabled_only && !fwnode_graph_remote_available(ep))
+		if (!fwnode_graph_remote_available(ep))
 			continue;
 
 		ret = fwnode_graph_parse_endpoint(ep, &fwnode_ep);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 05/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count()
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (3 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id() Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-18 19:23   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 06/14] property: Document that fwnode API returns available nodes Sakari Ailus
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

FWNODE_GRAPH_DEVICE_DISABLED flag isn't used anywhere, drop the flag and
support for it in fwnode_graph_get_endpoint_count().

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/property.c  | 10 ++--------
 include/linux/property.h |  8 +-------
 2 files changed, 3 insertions(+), 15 deletions(-)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index b48ef81ae43e..2e0ff0232b27 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1291,21 +1291,15 @@ EXPORT_SYMBOL_GPL(fwnode_graph_get_endpoint_by_id);
 /**
  * fwnode_graph_get_endpoint_count - Count endpoints on a device node
  * @fwnode: The node related to a device
- * @flags: fwnode lookup flags
  * Count endpoints in a device node.
- *
- * If FWNODE_GRAPH_DEVICE_DISABLED flag is specified, also unconnected endpoints
- * and endpoints connected to disabled devices are counted.
  */
-unsigned int fwnode_graph_get_endpoint_count(const struct fwnode_handle *fwnode,
-					     unsigned long flags)
+unsigned int fwnode_graph_get_endpoint_count(const struct fwnode_handle *fwnode)
 {
 	struct fwnode_handle *ep;
 	unsigned int count = 0;
 
 	fwnode_graph_for_each_endpoint(fwnode, ep) {
-		if (flags & FWNODE_GRAPH_DEVICE_DISABLED ||
-		    fwnode_graph_remote_available(ep))
+		if (fwnode_graph_remote_available(ep))
 			count++;
 	}
 
diff --git a/include/linux/property.h b/include/linux/property.h
index d1e80b3c9918..8b8bbbe6b5b7 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -503,19 +503,13 @@ static inline bool fwnode_graph_is_endpoint(const struct fwnode_handle *fwnode)
  * @FWNODE_GRAPH_ENDPOINT_NEXT: In the case of no exact match, look for the
  *				closest endpoint ID greater than the specified
  *				one.
- * @FWNODE_GRAPH_DEVICE_DISABLED: That the device to which the remote
- *				  endpoint of the given endpoint belongs to,
- *				  may be disabled, or that the endpoint is not
- *				  connected.
  */
 #define FWNODE_GRAPH_ENDPOINT_NEXT	BIT(0)
-#define FWNODE_GRAPH_DEVICE_DISABLED	BIT(1)
 
 struct fwnode_handle *
 fwnode_graph_get_endpoint_by_id(const struct fwnode_handle *fwnode,
 				u32 port, u32 endpoint, unsigned long flags);
-unsigned int fwnode_graph_get_endpoint_count(const struct fwnode_handle *fwnode,
-					     unsigned long flags);
+unsigned int fwnode_graph_get_endpoint_count(const struct fwnode_handle *fwnode);
 
 #define fwnode_graph_for_each_endpoint(fwnode, child)				\
 	for (child = fwnode_graph_get_next_endpoint(fwnode, NULL); child;	\
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 06/14] property: Document that fwnode API returns available nodes
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (4 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 05/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count() Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-22  8:03   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 07/14] driver core: Use fwnode_for_each_child_node() instead Sakari Ailus
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

The fwnode API has historically provided two functions to iterate over a
fwnode's child nodes, fwnode_get_next_child_node() and
fwnode_get_next_available_child_node() whereas all of the fwnode API has
always worked on available nodes, apart unavailable ACPI child device
nodes could have been returned by fwnode_get_next_child_node().

Now that the availability check has been added to ACPI side as well,
document that the functions in the fwnode API return available nodes.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/property.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index 2e0ff0232b27..a25040925bf8 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -785,7 +785,7 @@ struct fwnode_handle *fwnode_get_nth_parent(struct fwnode_handle *fwnode,
 EXPORT_SYMBOL_GPL(fwnode_get_nth_parent);
 
 /**
- * fwnode_get_next_child_node - Return the next child node handle for a node
+ * fwnode_get_next_child_node - Return the next available child node handle
  * @fwnode: Firmware node to find the next child node for.
  * @child: Handle to one of the node's child nodes or a %NULL handle.
  *
@@ -830,7 +830,7 @@ fwnode_get_next_available_child_node(const struct fwnode_handle *fwnode,
 EXPORT_SYMBOL_GPL(fwnode_get_next_available_child_node);
 
 /**
- * device_get_next_child_node - Return the next child node handle for a device
+ * device_get_next_child_node - Return the next available child node handle for a device
  * @dev: Device to find the next child node for.
  * @child: Handle to one of the device's child nodes or a %NULL handle.
  *
@@ -858,7 +858,7 @@ struct fwnode_handle *device_get_next_child_node(const struct device *dev,
 EXPORT_SYMBOL_GPL(device_get_next_child_node);
 
 /**
- * fwnode_get_named_child_node - Return first matching named child node handle
+ * fwnode_get_named_child_node - Return first available matching named child node handle
  * @fwnode: Firmware node to find the named child node for.
  * @childname: String to match child node name against.
  *
@@ -874,7 +874,7 @@ fwnode_get_named_child_node(const struct fwnode_handle *fwnode,
 EXPORT_SYMBOL_GPL(fwnode_get_named_child_node);
 
 /**
- * device_get_named_child_node - Return first matching named child node handle
+ * device_get_named_child_node - Return first available matching named child node handle for a device
  * @dev: Device to find the named child node for.
  * @childname: String to match child node name against.
  *
@@ -928,7 +928,7 @@ bool fwnode_device_is_available(const struct fwnode_handle *fwnode)
 EXPORT_SYMBOL_GPL(fwnode_device_is_available);
 
 /**
- * fwnode_get_child_node_count - return the number of child nodes for a given firmware node
+ * fwnode_get_child_node_count - Return the number of available child nodes for a given firmware node
  * @fwnode: Pointer to the parent firmware node
  *
  * Return: the number of child nodes for a given firmware node.
@@ -946,7 +946,7 @@ unsigned int fwnode_get_child_node_count(const struct fwnode_handle *fwnode)
 EXPORT_SYMBOL_GPL(fwnode_get_child_node_count);
 
 /**
- * fwnode_get_named_child_node_count - number of child nodes with given name
+ * fwnode_get_named_child_node_count - Return the number of available child nodes with given name
  * @fwnode: Node which child nodes are counted.
  * @name: String to match child node name against.
  *
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 07/14] driver core: Use fwnode_for_each_child_node() instead
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (5 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 06/14] property: Document that fwnode API returns available nodes Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-23  5:43   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 08/14] net: lan966x: " Sakari Ailus
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_for_each_child_node() is now the same as
fwnode_for_each_available_child_node() on all backends (OF, ACPI and
swnode). In order to remove the available variants, switch the uses to
non-available variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/core.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index d22d6b23e758..4bffd347e2f9 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -185,7 +185,7 @@ void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode)
 	fwnode->flags |= FWNODE_FLAG_NOT_DEVICE;
 	fwnode_links_purge_consumers(fwnode);
 
-	fwnode_for_each_available_child_node(fwnode, child)
+	fwnode_for_each_child_node(fwnode, child)
 		fw_devlink_purge_absent_suppliers(child);
 }
 EXPORT_SYMBOL_GPL(fw_devlink_purge_absent_suppliers);
@@ -231,7 +231,7 @@ static void __fw_devlink_pickup_dangling_consumers(struct fwnode_handle *fwnode,
 	fwnode->flags |= FWNODE_FLAG_NOT_DEVICE;
 	__fwnode_links_move_consumers(fwnode, new_sup);
 
-	fwnode_for_each_available_child_node(fwnode, child)
+	fwnode_for_each_child_node(fwnode, child)
 		__fw_devlink_pickup_dangling_consumers(child, new_sup);
 }
 
@@ -1318,7 +1318,7 @@ void device_links_driver_bound(struct device *dev)
 
 		guard(mutex)(&fwnode_link_lock);
 
-		fwnode_for_each_available_child_node(dev->fwnode, child)
+		fwnode_for_each_child_node(dev->fwnode, child)
 			__fw_devlink_pickup_dangling_consumers(child,
 							       dev->fwnode);
 		__fw_devlink_link_to_consumers(dev);
@@ -1736,7 +1736,7 @@ static void fw_devlink_parse_fwtree(struct fwnode_handle *fwnode)
 
 	fw_devlink_parse_fwnode(fwnode);
 
-	while ((child = fwnode_get_next_available_child_node(fwnode, child)))
+	while ((child = fwnode_get_next_child_node(fwnode, child)))
 		fw_devlink_parse_fwtree(child);
 }
 
@@ -2309,7 +2309,7 @@ static void __fw_devlink_link_to_suppliers(struct device *dev,
 	 * case where the supplier is added before the consumer's parent device
 	 * (@dev).
 	 */
-	while ((child = fwnode_get_next_available_child_node(fwnode, child)))
+	while ((child = fwnode_get_next_child_node(fwnode, child)))
 		__fw_devlink_link_to_suppliers(dev, child);
 }
 
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 08/14] net: lan966x: Use fwnode_for_each_child_node() instead
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (6 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 07/14] driver core: Use fwnode_for_each_child_node() instead Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-16 16:01 ` [PATCH 09/14] Input: touch-overlay - " Sakari Ailus
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_for_each_child_node() is now the same as
fwnode_for_each_available_child_node() on all backends (OF, ACPI and
swnode). In order to remove the available variants, switch the uses to
non-available variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
index 7001584f1b7a..e8f9bf96a63b 100644
--- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
+++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c
@@ -1190,7 +1190,7 @@ static int lan966x_probe(struct platform_device *pdev)
 	lan966x_stats_init(lan966x);
 
 	/* go over the child nodes */
-	fwnode_for_each_available_child_node(ports, portnp) {
+	fwnode_for_each_child_node(ports, portnp) {
 		phy_interface_t phy_mode;
 		struct phy *serdes;
 		u32 p;
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 09/14] Input: touch-overlay - Use fwnode_for_each_child_node() instead
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (7 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 08/14] net: lan966x: " Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-16 16:01 ` [PATCH 10/14] media: thp7312: " Sakari Ailus
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_for_each_child_node() is now the same as
fwnode_for_each_available_child_node() on all backends (OF, ACPI and
swnode). In order to remove the available variants, switch the uses to
non-available variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/input/touch-overlay.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/touch-overlay.c b/drivers/input/touch-overlay.c
index b9fd82c4829d..7eaaaef1bd82 100644
--- a/drivers/input/touch-overlay.c
+++ b/drivers/input/touch-overlay.c
@@ -82,7 +82,7 @@ int touch_overlay_map(struct list_head *list, struct input_dev *input)
 	if (!overlay)
 		return 0;
 
-	fwnode_for_each_available_child_node(overlay, fw_segment) {
+	fwnode_for_each_child_node(overlay, fw_segment) {
 		segment = devm_kzalloc(dev, sizeof(*segment), GFP_KERNEL);
 		if (!segment) {
 			fwnode_handle_put(fw_segment);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 10/14] media: thp7312: Use fwnode_for_each_child_node() instead
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (8 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 09/14] Input: touch-overlay - " Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-16 16:01 ` [PATCH 11/14] leds: " Sakari Ailus
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_for_each_child_node() is now the same as
fwnode_for_each_available_child_node() on all backends (OF, ACPI and
swnode). In order to remove the available variants, switch the uses to
non-available variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/thp7312.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/i2c/thp7312.c b/drivers/media/i2c/thp7312.c
index 775cfba188d8..86208a47f472 100644
--- a/drivers/media/i2c/thp7312.c
+++ b/drivers/media/i2c/thp7312.c
@@ -2064,7 +2064,7 @@ static int thp7312_parse_dt(struct thp7312_device *thp7312)
 		return -EINVAL;
 	}
 
-	fwnode_for_each_available_child_node(sensors, node) {
+	fwnode_for_each_child_node(sensors, node) {
 		if (fwnode_name_eq(node, "sensor")) {
 			if (!thp7312_sensor_parse_dt(thp7312, node))
 				num_sensors++;
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 11/14] leds: Use fwnode_for_each_child_node() instead
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (9 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 10/14] media: thp7312: " Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-16 16:01 ` [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead Sakari Ailus
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_for_each_child_node() is now the same as
fwnode_for_each_available_child_node() on all backends (OF, ACPI and
swnode). In order to remove the available variants, switch the uses to
non-available variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/leds/leds-max5970.c     | 2 +-
 drivers/leds/leds-max77705.c    | 2 +-
 drivers/leds/rgb/leds-ktd202x.c | 4 ++--
 drivers/leds/rgb/leds-ncp5623.c | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/leds/leds-max5970.c b/drivers/leds/leds-max5970.c
index 285074c53b23..a1e91a06249c 100644
--- a/drivers/leds/leds-max5970.c
+++ b/drivers/leds/leds-max5970.c
@@ -60,7 +60,7 @@ static int max5970_led_probe(struct platform_device *pdev)
 	if (!led_node)
 		return -ENODEV;
 
-	fwnode_for_each_available_child_node(led_node, child) {
+	fwnode_for_each_child_node(led_node, child) {
 		u32 reg;
 
 		if (fwnode_property_read_u32(child, "reg", &reg))
diff --git a/drivers/leds/leds-max77705.c b/drivers/leds/leds-max77705.c
index b7403b3fcf5e..1e2054c1bf80 100644
--- a/drivers/leds/leds-max77705.c
+++ b/drivers/leds/leds-max77705.c
@@ -191,7 +191,7 @@ static int max77705_add_led(struct device *dev, struct regmap *regmap, struct fw
 		cdev->brightness_set_blocking = max77705_led_brightness_set_multi;
 		cdev->blink_set = max77705_rgb_blink;
 
-		fwnode_for_each_available_child_node(np, child) {
+		fwnode_for_each_child_node(np, child) {
 			ret = max77705_parse_subled(dev, child, &info[i]);
 			if (ret < 0)
 				return ret;
diff --git a/drivers/leds/rgb/leds-ktd202x.c b/drivers/leds/rgb/leds-ktd202x.c
index 04e62faa3a00..e4f0f25a5e45 100644
--- a/drivers/leds/rgb/leds-ktd202x.c
+++ b/drivers/leds/rgb/leds-ktd202x.c
@@ -391,7 +391,7 @@ static int ktd202x_setup_led_rgb(struct ktd202x *chip, struct fwnode_handle *fwn
 	int i = 0;
 
 	num_channels = 0;
-	fwnode_for_each_available_child_node(fwnode, child)
+	fwnode_for_each_child_node(fwnode, child)
 		num_channels++;
 
 	if (!num_channels || num_channels > chip->num_leds)
@@ -401,7 +401,7 @@ static int ktd202x_setup_led_rgb(struct ktd202x *chip, struct fwnode_handle *fwn
 	if (!info)
 		return -ENOMEM;
 
-	fwnode_for_each_available_child_node(fwnode, child) {
+	fwnode_for_each_child_node(fwnode, child) {
 		u32 mono_color;
 		u32 reg;
 		int ret;
diff --git a/drivers/leds/rgb/leds-ncp5623.c b/drivers/leds/rgb/leds-ncp5623.c
index 7c7d44623a9e..85d6be6fff2b 100644
--- a/drivers/leds/rgb/leds-ncp5623.c
+++ b/drivers/leds/rgb/leds-ncp5623.c
@@ -180,7 +180,7 @@ static int ncp5623_probe(struct i2c_client *client)
 		goto release_mc_node;
 	}
 
-	fwnode_for_each_available_child_node(mc_node, led_node) {
+	fwnode_for_each_child_node(mc_node, led_node) {
 		ret = fwnode_property_read_u32(led_node, "color", &color_index);
 		if (ret)
 			goto release_led_node;
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (10 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 11/14] leds: " Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-23  5:46   ` Andy Shevchenko
  2025-09-16 16:01 ` [PATCH 13/14] property: Drop functions operating on "available" child nodes Sakari Ailus
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_get_next_child_node() is now the same as
fwnode_get_next_available_child_node() on all backends (OF, ACPI and
swnode). In order to remove the available variants, switch the uses to
non-available variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/leds/flash/leds-rt4505.c   | 2 +-
 drivers/leds/flash/leds-rt8515.c   | 2 +-
 drivers/leds/flash/leds-sgm3140.c  | 3 +--
 drivers/leds/flash/leds-tps6131x.c | 2 +-
 4 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/leds/flash/leds-rt4505.c b/drivers/leds/flash/leds-rt4505.c
index f16358b8dfc1..d3b1c5ca77ca 100644
--- a/drivers/leds/flash/leds-rt4505.c
+++ b/drivers/leds/flash/leds-rt4505.c
@@ -365,7 +365,7 @@ static int rt4505_probe(struct i2c_client *client)
 		return ret;
 	}
 
-	child = fwnode_get_next_available_child_node(client->dev.fwnode, NULL);
+	child = fwnode_get_next_child_node(client->dev.fwnode, NULL);
 	if (!child) {
 		dev_err(priv->dev, "Failed to get child node\n");
 		return -EINVAL;
diff --git a/drivers/leds/flash/leds-rt8515.c b/drivers/leds/flash/leds-rt8515.c
index 6af0d2c7fc56..c2187a282dd9 100644
--- a/drivers/leds/flash/leds-rt8515.c
+++ b/drivers/leds/flash/leds-rt8515.c
@@ -304,7 +304,7 @@ static int rt8515_probe(struct platform_device *pdev)
 		return dev_err_probe(dev, PTR_ERR(rt->enable_torch),
 				     "cannot get ENT (enable torch) GPIO\n");
 
-	child = fwnode_get_next_available_child_node(dev->fwnode, NULL);
+	child = fwnode_get_next_child_node(dev->fwnode, NULL);
 	if (!child) {
 		dev_err(dev,
 			"No fwnode child node found for connected LED.\n");
diff --git a/drivers/leds/flash/leds-sgm3140.c b/drivers/leds/flash/leds-sgm3140.c
index 3e83200675f2..1008a819fa7e 100644
--- a/drivers/leds/flash/leds-sgm3140.c
+++ b/drivers/leds/flash/leds-sgm3140.c
@@ -214,8 +214,7 @@ static int sgm3140_probe(struct platform_device *pdev)
 		return dev_err_probe(&pdev->dev, ret,
 				     "Failed to request regulator\n");
 
-	child_node = fwnode_get_next_available_child_node(pdev->dev.fwnode,
-							  NULL);
+	child_node = fwnode_get_next_child_node(pdev->dev.fwnode, NULL);
 	if (!child_node) {
 		dev_err(&pdev->dev,
 			"No fwnode child node found for connected LED.\n");
diff --git a/drivers/leds/flash/leds-tps6131x.c b/drivers/leds/flash/leds-tps6131x.c
index 6f4d4fd55361..12f957a76e34 100644
--- a/drivers/leds/flash/leds-tps6131x.c
+++ b/drivers/leds/flash/leds-tps6131x.c
@@ -544,7 +544,7 @@ static int tps6131x_parse_node(struct tps6131x *tps6131x)
 
 	tps6131x->valley_current_limit = device_property_read_bool(dev, "ti,valley-current-limit");
 
-	tps6131x->led_node = fwnode_get_next_available_child_node(dev->fwnode, NULL);
+	tps6131x->led_node = fwnode_get_next_child_node(dev->fwnode, NULL);
 	if (!tps6131x->led_node) {
 		dev_err(dev, "Missing LED node\n");
 		return -EINVAL;
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 13/14] property: Drop functions operating on "available" child nodes
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (11 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-16 16:01 ` [PATCH 14/14] spi: cadence: Remove explicit device node availability check Sakari Ailus
  2025-09-17  7:07 ` [PATCH 00/14] Align availability checks on fwnode child node enumeration Andy Shevchenko
  14 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

fwnode_get_next_available_child_node() and later
fwnode_for_each_available_child_node() were introduced to mirror the OF
interface operating on OF nodes. Now that these two are functionally the
same as the variants without "_available" part, drop the "_available"
variants.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/property.c  | 30 +-----------------------------
 include/linux/property.h |  6 ------
 2 files changed, 1 insertion(+), 35 deletions(-)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index a25040925bf8..04a1256275ce 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -802,35 +802,7 @@ fwnode_get_next_child_node(const struct fwnode_handle *fwnode,
 EXPORT_SYMBOL_GPL(fwnode_get_next_child_node);
 
 /**
- * fwnode_get_next_available_child_node - Return the next available child node handle for a node
- * @fwnode: Firmware node to find the next child node for.
- * @child: Handle to one of the node's child nodes or a %NULL handle.
- *
- * The caller is responsible for calling fwnode_handle_put() on the returned
- * fwnode pointer. Note that this function also puts a reference to @child
- * unconditionally.
- */
-struct fwnode_handle *
-fwnode_get_next_available_child_node(const struct fwnode_handle *fwnode,
-				     struct fwnode_handle *child)
-{
-	struct fwnode_handle *next_child = child;
-
-	if (IS_ERR_OR_NULL(fwnode))
-		return NULL;
-
-	do {
-		next_child = fwnode_get_next_child_node(fwnode, next_child);
-		if (!next_child)
-			return NULL;
-	} while (!fwnode_device_is_available(next_child));
-
-	return next_child;
-}
-EXPORT_SYMBOL_GPL(fwnode_get_next_available_child_node);
-
-/**
- * device_get_next_child_node - Return the next available child node handle for a device
+ * device_get_next_child_node - Return the next available child node handle
  * @dev: Device to find the next child node for.
  * @child: Handle to one of the device's child nodes or a %NULL handle.
  *
diff --git a/include/linux/property.h b/include/linux/property.h
index 8b8bbbe6b5b7..da6202053862 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -161,8 +161,6 @@ struct fwnode_handle *fwnode_get_nth_parent(struct fwnode_handle *fwn,
 					    unsigned int depth);
 struct fwnode_handle *fwnode_get_next_child_node(
 	const struct fwnode_handle *fwnode, struct fwnode_handle *child);
-struct fwnode_handle *fwnode_get_next_available_child_node(
-	const struct fwnode_handle *fwnode, struct fwnode_handle *child);
 
 #define fwnode_for_each_child_node(fwnode, child)			\
 	for (child = fwnode_get_next_child_node(fwnode, NULL); child;	\
@@ -172,10 +170,6 @@ struct fwnode_handle *fwnode_get_next_available_child_node(
 	fwnode_for_each_child_node(fwnode, child)			\
 		for_each_if(fwnode_name_eq(child, name))
 
-#define fwnode_for_each_available_child_node(fwnode, child)		       \
-	for (child = fwnode_get_next_available_child_node(fwnode, NULL); child;\
-	     child = fwnode_get_next_available_child_node(fwnode, child))
-
 struct fwnode_handle *device_get_next_child_node(const struct device *dev,
 						 struct fwnode_handle *child);
 
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 14/14] spi: cadence: Remove explicit device node availability check
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (12 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 13/14] property: Drop functions operating on "available" child nodes Sakari Ailus
@ 2025-09-16 16:01 ` Sakari Ailus
  2025-09-17  7:07 ` [PATCH 00/14] Align availability checks on fwnode child node enumeration Andy Shevchenko
  14 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-16 16:01 UTC (permalink / raw)
  To: linux-acpi
  Cc: Rafael J. Wysocki, Len Brown, Andy Shevchenko, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

Don't check the availability of child device nodes explicitly as this is
now embedded in device_for_each_child_node().

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/spi/spi-cadence-xspi.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/spi/spi-cadence-xspi.c b/drivers/spi/spi-cadence-xspi.c
index 6dcba0e0ddaa..23e426ef9b9c 100644
--- a/drivers/spi/spi-cadence-xspi.c
+++ b/drivers/spi/spi-cadence-xspi.c
@@ -908,9 +908,6 @@ static int cdns_xspi_of_get_plat_data(struct platform_device *pdev)
 	unsigned int cs;
 
 	device_for_each_child_node(&pdev->dev, fwnode_child) {
-		if (!fwnode_device_is_available(fwnode_child))
-			continue;
-
 		if (fwnode_property_read_u32(fwnode_child, "reg", &cs)) {
 			dev_err(&pdev->dev, "Couldn't get memory chip select\n");
 			fwnode_handle_put(fwnode_child);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH 00/14] Align availability checks on fwnode child node enumeration
  2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
                   ` (13 preceding siblings ...)
  2025-09-16 16:01 ` [PATCH 14/14] spi: cadence: Remove explicit device node availability check Sakari Ailus
@ 2025-09-17  7:07 ` Andy Shevchenko
  14 siblings, 0 replies; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-17  7:07 UTC (permalink / raw)
  To: Sakari Ailus, Andrew Lunn
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

+Cc: Andrew
(as I know he is familiar with fwnode concept and related pieces in the net
 subsystem, he might be interested to see this series earlier).

On Tue, Sep 16, 2025 at 07:01:15PM +0300, Sakari Ailus wrote:
> Hello everyone,
> 
> Historically the fwnode property API has enumerated only available device
> nodes on OF whereas on ACPI, also nodes that haven't been present in the
> system have been provided. Both OF and ACPI have similar concepts of node
> availbility, on OF it's the "status" property present on device nodes and
> on ACPI the _STA object evaluates to device present, enabled and
> functional bits, of which the present and functional bits are currently
> being used to determine whether to enumerate a device.
> 
> Two additional functions, fwnode_get_next_available_child_node() and
> fwnode_for_each_available_child_node(), have been provided to enumerate
> the available nodes only on ACPI, whereas on OF the implementation has
> been the same on the non-available variants. The motivation for providing
> these has very likely been to provide fwnode variants of the similarly
> named functions but the difference isn't justifiable from API consistency
> viewpoint.
> 
> This set switches the users away from the "available" fwnode API functions
> and later on removes them, aligning the functionality on all fwnode
> backends.
> 
> I'm posting this to linux-acpi and a small set of reviewers for now and
> once we're happy with the ACPI / fwnode changes, to the full list.
> 
> Sakari Ailus (14):
>   ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint()
>     only
>   ACPI: property: Make acpi_get_next_subnode() static
>   ACPI: property: Return present device nodes only on fwnode interface
>   property: Drop DEVICE_DISABLED flag in
>     fwnode_graph_get_endpoint_by_id()
>   property: Drop DEVICE_DISABLED flag in
>     fwnode_graph_get_endpoint_count()
>   property: Document that fwnode API returns available nodes
>   driver core: Use fwnode_for_each_child_node() instead
>   net: lan966x: Use fwnode_for_each_child_node() instead
>   Input: touch-overlay - Use fwnode_for_each_child_node() instead
>   media: thp7312: Use fwnode_for_each_child_node() instead
>   leds: Use fwnode_for_each_child_node() instead
>   leds: Use fwnode_get_next_child_node() instead
>   property: Drop functions operating on "available" child nodes
>   spi: cadence: Remove explicit device node availability check

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only
  2025-09-16 16:01 ` [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only Sakari Ailus
@ 2025-09-17  7:17   ` Andy Shevchenko
  2025-09-17 11:50     ` Sakari Ailus
  0 siblings, 1 reply; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-17  7:17 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:16PM +0300, Sakari Ailus wrote:
> Calling fwnode_get_next_child_node() in ACPI implementation of the fwnode
> property API is somewhat problematic as the latter is used in the
> impelementation of the former. Instead of using
> fwnode_get_next_child_node() in acpi_graph_get_next_endpoint(), call
> acpi_get_next_subnode() directly instead.

...

> -	endpoint = fwnode_get_next_child_node(port, prev);
> +	endpoint = acpi_get_next_subnode(port, prev);
>  	while (!endpoint) {
> -		port = fwnode_get_next_child_node(fwnode, port);
> +		port = acpi_get_next_subnode(fwnode, port);
>  		if (!port)
>  			break;
>  		if (is_acpi_graph_node(port, "port"))
> -			endpoint = fwnode_get_next_child_node(port, NULL);
> +			endpoint = acpi_get_next_subnode(port, NULL);
>  	}

Can this be refactored to

	do {
		endpoint = acpi_get_next_subnode(port, prev);
		if (endpoint)
			break;

		port = acpi_get_next_subnode(fwnode, port);
		if (is_acpi_graph_node(port, "port"))
			prev = NULL;
	} while (port);

(but it might be a material for further cleanups)?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 02/14] ACPI: property: Make acpi_get_next_subnode() static
  2025-09-16 16:01 ` [PATCH 02/14] ACPI: property: Make acpi_get_next_subnode() static Sakari Ailus
@ 2025-09-17  7:18   ` Andy Shevchenko
  0 siblings, 0 replies; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-17  7:18 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:17PM +0300, Sakari Ailus wrote:
> acpi_get_next_subnode() is only used in drivers/acpi/property.c. Remove
> its prototype from include/linux/acpi.h and make it static.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 03/14] ACPI: property: Return present device nodes only on fwnode interface
  2025-09-16 16:01 ` [PATCH 03/14] ACPI: property: Return present device nodes only on fwnode interface Sakari Ailus
@ 2025-09-17  7:58   ` Andy Shevchenko
  0 siblings, 0 replies; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-17  7:58 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:18PM +0300, Sakari Ailus wrote:
> fwnode_graph_get_next_subnode() may return fwnode backed by ACPI device
> nodes and there has been no check these devices are present in the system,
> unlike there has been on fwnode OF backend. In order to provide consistent
> behaviour towards callers, add a check for device presence by introducing
> a new function acpi_get_next_present_subnode(), used as the
> get_next_child_node() fwnode operation that also checks device node
> presence.

...

> +/**
> + * acpi_get_next_present_subnode - Return the next present child node handle for a fwnode
> + * @fwnode: Firmware node to find the next child node for.
> + * @child: Handle to one of the device's child nodes or a null handle.
> + * Like acpi_get_next_subnode, but the device nodes returned by

acpi_get_next_subnode()

> + * acpi_get_next_present_subnode() are guaranteed to be present.
> + */

Kernel-doc validator is not happy: Missing Return section.

> +static struct fwnode_handle *
> +acpi_get_next_present_subnode(const struct fwnode_handle *fwnode,
> +			      struct fwnode_handle *child)
> +{
> +	do {
> +		child = acpi_get_next_subnode(fwnode, child);
> +	} while (is_acpi_device_node(child) &&
> +		 !acpi_device_is_present(to_acpi_device_node(child)));
> +
> +	return child;
> +}

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id()
  2025-09-16 16:01 ` [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id() Sakari Ailus
@ 2025-09-17  8:39   ` Andy Shevchenko
  2025-09-17 12:19     ` Sakari Ailus
  0 siblings, 1 reply; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-17  8:39 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:19PM +0300, Sakari Ailus wrote:
> No caller uses FWNODE_GRAPH_DEVICE_DISABLED flag when calling
> fwnode_graph_get_endpoint_by_id(). Drop support for the flag entirely and
> remove it from the documentation.

...

> --- a/drivers/base/property.c
> +++ b/drivers/base/property.c

>   * If FWNODE_GRAPH_ENDPOINT_NEXT is passed in @flags and the specified endpoint
>   * has not been found, look for the closest endpoint ID greater than the
>   * specified one and return the endpoint that corresponds to it, if present.
> - *
> - * Does not return endpoints that belong to disabled devices or endpoints that
> - * are unconnected, unless FWNODE_GRAPH_DEVICE_DISABLED is passed in @flags.
>   */

Since you are touching a few kernel-doc descriptions, can you make sure that
they have Return sections where appropriate?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only
  2025-09-17  7:17   ` Andy Shevchenko
@ 2025-09-17 11:50     ` Sakari Ailus
  0 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-17 11:50 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

Hi Andy,

Thank you for the review.

On Wed, Sep 17, 2025 at 10:17:42AM +0300, Andy Shevchenko wrote:
> On Tue, Sep 16, 2025 at 07:01:16PM +0300, Sakari Ailus wrote:
> > Calling fwnode_get_next_child_node() in ACPI implementation of the fwnode
> > property API is somewhat problematic as the latter is used in the
> > impelementation of the former. Instead of using
> > fwnode_get_next_child_node() in acpi_graph_get_next_endpoint(), call
> > acpi_get_next_subnode() directly instead.
> 
> ...
> 
> > -	endpoint = fwnode_get_next_child_node(port, prev);
> > +	endpoint = acpi_get_next_subnode(port, prev);
> >  	while (!endpoint) {
> > -		port = fwnode_get_next_child_node(fwnode, port);
> > +		port = acpi_get_next_subnode(fwnode, port);
> >  		if (!port)
> >  			break;
> >  		if (is_acpi_graph_node(port, "port"))
> > -			endpoint = fwnode_get_next_child_node(port, NULL);
> > +			endpoint = acpi_get_next_subnode(port, NULL);
> >  	}
> 
> Can this be refactored to
> 
> 	do {
> 		endpoint = acpi_get_next_subnode(port, prev);
> 		if (endpoint)
> 			break;
> 
> 		port = acpi_get_next_subnode(fwnode, port);
> 		if (is_acpi_graph_node(port, "port"))
> 			prev = NULL;
> 	} while (port);
> 
> (but it might be a material for further cleanups)?

I think the above should work. I'd also do the change after this set.

-- 
Kind regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id()
  2025-09-17  8:39   ` Andy Shevchenko
@ 2025-09-17 12:19     ` Sakari Ailus
  0 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-17 12:19 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

Hi Andy,

On Wed, Sep 17, 2025 at 11:39:29AM +0300, Andy Shevchenko wrote:
> On Tue, Sep 16, 2025 at 07:01:19PM +0300, Sakari Ailus wrote:
> > No caller uses FWNODE_GRAPH_DEVICE_DISABLED flag when calling
> > fwnode_graph_get_endpoint_by_id(). Drop support for the flag entirely and
> > remove it from the documentation.
> 
> ...
> 
> > --- a/drivers/base/property.c
> > +++ b/drivers/base/property.c
> 
> >   * If FWNODE_GRAPH_ENDPOINT_NEXT is passed in @flags and the specified endpoint
> >   * has not been found, look for the closest endpoint ID greater than the
> >   * specified one and return the endpoint that corresponds to it, if present.
> > - *
> > - * Does not return endpoints that belong to disabled devices or endpoints that
> > - * are unconnected, unless FWNODE_GRAPH_DEVICE_DISABLED is passed in @flags.
> >   */
> 
> Since you are touching a few kernel-doc descriptions, can you make sure that
> they have Return sections where appropriate?

This one does but it's not at the end of the description. I'll move it
there in a separate patch.

-- 
Sakari Ailus

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 05/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count()
  2025-09-16 16:01 ` [PATCH 05/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count() Sakari Ailus
@ 2025-09-18 19:23   ` Andy Shevchenko
  0 siblings, 0 replies; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-18 19:23 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:20PM +0300, Sakari Ailus wrote:
> FWNODE_GRAPH_DEVICE_DISABLED flag isn't used anywhere, drop the flag and
> support for it in fwnode_graph_get_endpoint_count().

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 06/14] property: Document that fwnode API returns available nodes
  2025-09-16 16:01 ` [PATCH 06/14] property: Document that fwnode API returns available nodes Sakari Ailus
@ 2025-09-22  8:03   ` Andy Shevchenko
  0 siblings, 0 replies; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-22  8:03 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:21PM +0300, Sakari Ailus wrote:
> The fwnode API has historically provided two functions to iterate over a
> fwnode's child nodes, fwnode_get_next_child_node() and
> fwnode_get_next_available_child_node() whereas all of the fwnode API has
> always worked on available nodes, apart unavailable ACPI child device
> nodes could have been returned by fwnode_get_next_child_node().
> 
> Now that the availability check has been added to ACPI side as well,
> document that the functions in the fwnode API return available nodes.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 07/14] driver core: Use fwnode_for_each_child_node() instead
  2025-09-16 16:01 ` [PATCH 07/14] driver core: Use fwnode_for_each_child_node() instead Sakari Ailus
@ 2025-09-23  5:43   ` Andy Shevchenko
  0 siblings, 0 replies; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-23  5:43 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:22PM +0300, Sakari Ailus wrote:
> fwnode_for_each_child_node() is now the same as
> fwnode_for_each_available_child_node() on all backends (OF, ACPI and
> swnode). In order to remove the available variants, switch the uses to
> non-available variants.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead
  2025-09-16 16:01 ` [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead Sakari Ailus
@ 2025-09-23  5:46   ` Andy Shevchenko
  2025-09-23  8:29     ` Sakari Ailus
  0 siblings, 1 reply; 27+ messages in thread
From: Andy Shevchenko @ 2025-09-23  5:46 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

On Tue, Sep 16, 2025 at 07:01:27PM +0300, Sakari Ailus wrote:
> fwnode_get_next_child_node() is now the same as
> fwnode_get_next_available_child_node() on all backends (OF, ACPI and
> swnode). In order to remove the available variants, switch the uses to
> non-available variants.

...

> --- a/drivers/leds/flash/leds-rt4505.c
> +++ b/drivers/leds/flash/leds-rt4505.c

> -	child = fwnode_get_next_available_child_node(client->dev.fwnode, NULL);
> +	child = fwnode_get_next_child_node(client->dev.fwnode, NULL);

Can we move to device_get_next_child_node() instead?

...

> --- a/drivers/leds/flash/leds-rt8515.c
> +++ b/drivers/leds/flash/leds-rt8515.c

> -	child = fwnode_get_next_available_child_node(dev->fwnode, NULL);
> +	child = fwnode_get_next_child_node(dev->fwnode, NULL);

Ditto.

...

> --- a/drivers/leds/flash/leds-sgm3140.c
> +++ b/drivers/leds/flash/leds-sgm3140.c

> -	child_node = fwnode_get_next_available_child_node(pdev->dev.fwnode,
> -							  NULL);
> +	child_node = fwnode_get_next_child_node(pdev->dev.fwnode, NULL);

Ditto.

...

> --- a/drivers/leds/flash/leds-tps6131x.c
> +++ b/drivers/leds/flash/leds-tps6131x.c

> -	tps6131x->led_node = fwnode_get_next_available_child_node(dev->fwnode, NULL);
> +	tps6131x->led_node = fwnode_get_next_child_node(dev->fwnode, NULL);

Ditto.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead
  2025-09-23  5:46   ` Andy Shevchenko
@ 2025-09-23  8:29     ` Sakari Ailus
  0 siblings, 0 replies; 27+ messages in thread
From: Sakari Ailus @ 2025-09-23  8:29 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-acpi, Rafael J. Wysocki, Len Brown, Daniel Scally,
	Heikki Krogerus, Danilo Krummrich

Hi Andy,

Thanks for the review.

On Tue, Sep 23, 2025 at 08:46:38AM +0300, Andy Shevchenko wrote:
> On Tue, Sep 16, 2025 at 07:01:27PM +0300, Sakari Ailus wrote:
> > fwnode_get_next_child_node() is now the same as
> > fwnode_get_next_available_child_node() on all backends (OF, ACPI and
> > swnode). In order to remove the available variants, switch the uses to
> > non-available variants.
> 
> ...
> 
> > --- a/drivers/leds/flash/leds-rt4505.c
> > +++ b/drivers/leds/flash/leds-rt4505.c
> 
> > -	child = fwnode_get_next_available_child_node(client->dev.fwnode, NULL);
> > +	child = fwnode_get_next_child_node(client->dev.fwnode, NULL);
> 
> Can we move to device_get_next_child_node() instead?
> 
> ...
> 
> > --- a/drivers/leds/flash/leds-rt8515.c
> > +++ b/drivers/leds/flash/leds-rt8515.c
> 
> > -	child = fwnode_get_next_available_child_node(dev->fwnode, NULL);
> > +	child = fwnode_get_next_child_node(dev->fwnode, NULL);
> 
> Ditto.
> 
> ...
> 
> > --- a/drivers/leds/flash/leds-sgm3140.c
> > +++ b/drivers/leds/flash/leds-sgm3140.c
> 
> > -	child_node = fwnode_get_next_available_child_node(pdev->dev.fwnode,
> > -							  NULL);
> > +	child_node = fwnode_get_next_child_node(pdev->dev.fwnode, NULL);
> 
> Ditto.
> 
> ...
> 
> > --- a/drivers/leds/flash/leds-tps6131x.c
> > +++ b/drivers/leds/flash/leds-tps6131x.c
> 
> > -	tps6131x->led_node = fwnode_get_next_available_child_node(dev->fwnode, NULL);
> > +	tps6131x->led_node = fwnode_get_next_child_node(dev->fwnode, NULL);
> 
> Ditto.

I'll fix these for v2.

-- 
Regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2025-09-23  8:29 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-16 16:01 [PATCH 00/14] Align availability checks on fwnode child node enumeration Sakari Ailus
2025-09-16 16:01 ` [PATCH 01/14] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only Sakari Ailus
2025-09-17  7:17   ` Andy Shevchenko
2025-09-17 11:50     ` Sakari Ailus
2025-09-16 16:01 ` [PATCH 02/14] ACPI: property: Make acpi_get_next_subnode() static Sakari Ailus
2025-09-17  7:18   ` Andy Shevchenko
2025-09-16 16:01 ` [PATCH 03/14] ACPI: property: Return present device nodes only on fwnode interface Sakari Ailus
2025-09-17  7:58   ` Andy Shevchenko
2025-09-16 16:01 ` [PATCH 04/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id() Sakari Ailus
2025-09-17  8:39   ` Andy Shevchenko
2025-09-17 12:19     ` Sakari Ailus
2025-09-16 16:01 ` [PATCH 05/14] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count() Sakari Ailus
2025-09-18 19:23   ` Andy Shevchenko
2025-09-16 16:01 ` [PATCH 06/14] property: Document that fwnode API returns available nodes Sakari Ailus
2025-09-22  8:03   ` Andy Shevchenko
2025-09-16 16:01 ` [PATCH 07/14] driver core: Use fwnode_for_each_child_node() instead Sakari Ailus
2025-09-23  5:43   ` Andy Shevchenko
2025-09-16 16:01 ` [PATCH 08/14] net: lan966x: " Sakari Ailus
2025-09-16 16:01 ` [PATCH 09/14] Input: touch-overlay - " Sakari Ailus
2025-09-16 16:01 ` [PATCH 10/14] media: thp7312: " Sakari Ailus
2025-09-16 16:01 ` [PATCH 11/14] leds: " Sakari Ailus
2025-09-16 16:01 ` [PATCH 12/14] leds: Use fwnode_get_next_child_node() instead Sakari Ailus
2025-09-23  5:46   ` Andy Shevchenko
2025-09-23  8:29     ` Sakari Ailus
2025-09-16 16:01 ` [PATCH 13/14] property: Drop functions operating on "available" child nodes Sakari Ailus
2025-09-16 16:01 ` [PATCH 14/14] spi: cadence: Remove explicit device node availability check Sakari Ailus
2025-09-17  7:07 ` [PATCH 00/14] Align availability checks on fwnode child node enumeration Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox