Re: fwnode_for_each_child_node() and OF backend discrepancy

From: Krzysztof Kozlowski
Date: Mon Jun 27 2022 - 09:10:00 EST


On 27/06/2022 14:49, Michael Walle wrote:
> Hi,
>
> I tired to iterate over all child nodes, regardless if they are
> available
> or not. Now there is that handy fwnode_for_each_child_node() (and the
> fwnode_for_each_available_child_node()). The only thing is the OF
> backend
> already skips disabled nodes [1], making fwnode_for_each_child_node()
> and
> fwnode_for_each_available_child_node() behave the same with the OF
> backend.
>
> Doesn't seem to be noticed by anyone for now. I'm not sure how to fix
> that
> one. fwnode_for_each_child_node() and also fwnode_get_next_child_node()
> are
> used by a handful of drivers. I've looked at some, but couldn't decide
> whether they really want to iterate over all child nodes or just the
> enabled
> ones.

If I get it correctly, this was introduced by 8a0662d9ed29 ("Driver
core: Unified interface for firmware node properties")
.

The question to Rafael - what was your intention when you added
device_get_next_child_node() looking only for available nodes?

My understanding is that this implementation should be consistent with
OF implementation, so fwnode_get_next_child_node=get any child.

However maybe ACPI treats it somehow differently?

Best regards,
Krzysztof