Re: [PATCH v2] media: i2c: thp7312: use fwnode_for_each_child_node()

From: Matti Vaittinen
Date: Tue Apr 08 2025 - 06:48:06 EST


On 08/04/2025 13:36, Sakari Ailus wrote:
Hei Laurent, Matti,

On Tue, Apr 08, 2025 at 01:26:42PM +0300, Matti Vaittinen wrote:
On 08/04/2025 13:12, Laurent Pinchart wrote:
Hi Sakari,

On Tue, Apr 08, 2025 at 08:48:45AM +0000, Sakari Ailus wrote:
On Fri, Mar 21, 2025 at 12:41:00PM +0200, Laurent Pinchart wrote:
On Fri, Mar 21, 2025 at 10:58:27AM +0200, Matti Vaittinen wrote:
When fwnode_for_each_available_child_node() is used on the device-tree
backed systems, it renders to same operation as the
fwnode_for_each_child_node(), because the fwnode_for_each_child_node()
does only iterate through those device-tree nodes which are available.

This makes me wonder why the OF backend implements
fwnode_for_each_child_node() as fwnode_for_each_available_child_node().
Is that on purpose, or is it a bug ?

I discussed this with Rafael and he didn't recall why the original
implementation was like that. The general direction later on has been not
to present unavailable nodes over the fwnode interface.

So I'd say:

Reviewed-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>

We should also change the documentation of the fwnode API accordingly.

Does that also mean that the fwnode_for_each_available_child_node()
function will be dropped ? It's used by few drivers (5 in addition to
the thp7312 driver, plus 3 call sites in drivers/base/core.c), so a
patch series to drop it should be easy.


I assume the fwnode_for_each_available_child_node() still makes sense for
ACPI backed users, no?

Not really (see my earlier explanation in
<Z9mQPJwnKAkPHriT@kekkonen.localdomain>).

I capture that the _named_ available nodes don't have value as ACPI names aren't really what is expected by the _named_ callers. What I didn't pick is that the fwnode_for_each_available_child_node() - which should iterate all available child nodes ignoring the name - wouldn't be useful.

I think all the *available* stuff
should be removed from include/linux/property.h, apart from
fwnode_device_is_availble(), which should be turned to work on struct
device to signal its availability for device nodes only.

I am not saying I have any understanding of the uses of the 'unavailable' nodes. As such I am not arguing over what you say here :)

Yours,
-- Matti