linux-leds.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] use device_for_each_child_node() to access device child nodes
@ 2024-07-06 15:23 Javier Carrasco
  2024-07-06 15:23 ` [PATCH 1/6] device property: document device_for_each_child_node macro Javier Carrasco
                   ` (5 more replies)
  0 siblings, 6 replies; 21+ messages in thread
From: Javier Carrasco @ 2024-07-06 15:23 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rafael J. Wysocki, Andy Shevchenko,
	Jonathan Cameron, Rob Herring, Daniel Scally, Heikki Krogerus,
	Sakari Ailus, Jean Delvare, Guenter Roeck, Pavel Machek,
	Lee Jones, Marcin Wojtas, Russell King, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: linux-acpi, linux-kernel, linux-hwmon, linux-leds, netdev,
	Javier Carrasco

This series aims to clarify the use cases of:

- device_for_each_child_node[_scoped]()
- fwnode_for_each_available_child_node[_scoped]()

to access firmware nodes.

There have been multiple discussions [1][2] about what the first macro
implies in the sense of availability, and a number of users have opted
for the second macro in cases where the first one should have been
preferred.

The second macro is intended to be used over child nodes of a firmware
node, not direct child nodes of the device node. Instead, those users
retrieve the fwnode member from the device struct just to have access to
a macro that explicitly indicates node availability.

That workaround is not necessary because `device_for_each_child_node()`
implies availability for the existing backends (ACPI, DT, swnode).

This series does not cover other points discussed in [2] like addressing
uses of `fwnode_for_each_child_node()` where `device_*` should have been
used, using the `_avaialble_` variant of the fwnode loop whenever
possible, or adding new `_scoped` macros. Such points will be covered by
subsequent series to keep focus on the "availability" issue.

The conversion has been validated with an LTC2992 hwmon sensor, which is
one of the affected drivers. The rest of the drivers could only be
compiled and checked with static-analysis tools.

Link: https://lore.kernel.org/all/20211205190101.26de4a57@jic23-huawei/ [1]
Link: https://lore.kernel.org/all/20240523-fwnode_for_each_available_child_node_scoped-v2-0-701f3a03f2fb@gmail.com/ [2]

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
Javier Carrasco (6):
      device property: document device_for_each_child_node macro
      hwmon: (ltc2992) use device_for_each_child_node_scoped() to access child nodes
      leds: bd2606mvv: use device_for_each_child_node() to access device child nodes
      leds: is31fl319x: use device_for_each_child_node_scoped() to access child nodes
      leds: pca995x: use device_for_each_child_node() to access device child nodes
      net: mvpp2: use device_for_each_child_node() to access device child nodes

 drivers/hwmon/ltc2992.c                         | 19 ++++----------
 drivers/leds/leds-bd2606mvv.c                   |  7 +++--
 drivers/leds/leds-is31fl319x.c                  | 34 ++++++++-----------------
 drivers/leds/leds-pca995x.c                     | 15 ++++-------
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 13 +++-------
 include/linux/property.h                        | 10 ++++++++
 6 files changed, 38 insertions(+), 60 deletions(-)
---
base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
change-id: 20240701-device_for_each_child_node-available-1c1eca4b6495

Best regards,
-- 
Javier Carrasco <javier.carrasco.cruz@gmail.com>


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

end of thread, other threads:[~2024-07-29 13:01 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-06 15:23 [PATCH 0/6] use device_for_each_child_node() to access device child nodes Javier Carrasco
2024-07-06 15:23 ` [PATCH 1/6] device property: document device_for_each_child_node macro Javier Carrasco
2024-07-07 16:53   ` Jonathan Cameron
2024-07-06 15:23 ` [PATCH 2/6] hwmon: (ltc2992) use device_for_each_child_node_scoped() to access child nodes Javier Carrasco
2024-07-07 16:55   ` Jonathan Cameron
2024-07-06 15:23 ` [PATCH 3/6] leds: bd2606mvv: use device_for_each_child_node() to access device " Javier Carrasco
2024-07-07 16:57   ` Jonathan Cameron
2024-07-08  8:14     ` Javier Carrasco
2024-07-08  8:28       ` Jonathan Cameron
2024-07-08 15:45       ` Javier Carrasco
2024-07-12 21:06         ` Andreas Kemnade
2024-07-13 21:37           ` Javier Carrasco
2024-07-06 15:23 ` [PATCH 4/6] leds: is31fl319x: use device_for_each_child_node_scoped() to access " Javier Carrasco
2024-07-07 16:58   ` Jonathan Cameron
2024-07-06 15:23 ` [PATCH 5/6] leds: pca995x: use device_for_each_child_node() to access device " Javier Carrasco
2024-07-07 16:59   ` Jonathan Cameron
2024-07-06 15:23 ` [PATCH 6/6] net: mvpp2: " Javier Carrasco
2024-07-07 17:01   ` Jonathan Cameron
2024-07-29  8:23   ` Russell King (Oracle)
2024-07-29  9:23     ` Javier Carrasco
2024-07-29 13:00       ` Russell King (Oracle)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).