Re: [PATCH 00/14] Align availability checks on fwnode child node enumeration

Andy Shevchenko
2025-09-17T07:07:59Z

+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