diff mbox series

[v3,2/4] leds: pca995x: use device_for_each_child_node() to access device child nodes

Message ID 20240805-device_for_each_child_node-available-v3-2-48243a4aa5c0@gmail.com
State New
Headers show
Series use device_for_each_child_node() to access device child nodes | expand

Commit Message

Javier Carrasco Aug. 5, 2024, 2:49 p.m. UTC
The iterated nodes are direct children of the device node, and the
`device_for_each_child_node()` macro accounts for child node
availability.

`fwnode_for_each_available_child_node()` is meant to access the child
nodes of an fwnode, and therefore not direct child nodes of the device
node.

Use `device_for_each_child_node()` to indicate device's direct child
nodes.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
 drivers/leds/leds-pca995x.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

Comments

Lee Jones Aug. 5, 2024, 4:01 p.m. UTC | #1
On Mon, 05 Aug 2024, Lee Jones wrote:

> On Mon, 05 Aug 2024 16:49:45 +0200, Javier Carrasco wrote:
> > The iterated nodes are direct children of the device node, and the
> > `device_for_each_child_node()` macro accounts for child node
> > availability.
> > 
> > `fwnode_for_each_available_child_node()` is meant to access the child
> > nodes of an fwnode, and therefore not direct child nodes of the device
> > node.
> > 
> > [...]
> 
> Applied, thanks!
> 
> [2/4] leds: pca995x: use device_for_each_child_node() to access device child nodes
>       commit: 6eefd65ba6ae29ab801f6461e59c10f93dd496f8

I'm not sure what you rebased onto, but it wasn't LEDs or -next.

Anyway, I fixed-up the conflicts and pushed.

The patch should be in -next by tomorrow.

Please check it to ensure I didn't make any mistakes.
Javier Carrasco Aug. 6, 2024, 8:45 p.m. UTC | #2
On 05/08/2024 18:01, Lee Jones wrote:
> On Mon, 05 Aug 2024, Lee Jones wrote:
> 
>> On Mon, 05 Aug 2024 16:49:45 +0200, Javier Carrasco wrote:
>>> The iterated nodes are direct children of the device node, and the
>>> `device_for_each_child_node()` macro accounts for child node
>>> availability.
>>>
>>> `fwnode_for_each_available_child_node()` is meant to access the child
>>> nodes of an fwnode, and therefore not direct child nodes of the device
>>> node.
>>>
>>> [...]
>>
>> Applied, thanks!
>>
>> [2/4] leds: pca995x: use device_for_each_child_node() to access device child nodes
>>       commit: 6eefd65ba6ae29ab801f6461e59c10f93dd496f8
> 
> I'm not sure what you rebased onto, but it wasn't LEDs or -next.
> 
> Anyway, I fixed-up the conflicts and pushed.
> 
> The patch should be in -next by tomorrow.
> 
> Please check it to ensure I didn't make any mistakes.
> 

Hi, I rebased onto next-20240805, and its commit ID matches the
base-commit provided in the cover letter (generated by b4). I wonder why
it did not work on your side, but thanks for fixing the conflicts and
applying (I checked it and it looks fine).

Best regards,
Javier Carrasco
diff mbox series

Patch

diff --git a/drivers/leds/leds-pca995x.c b/drivers/leds/leds-pca995x.c
index 686b77772cce..83bc9669544c 100644
--- a/drivers/leds/leds-pca995x.c
+++ b/drivers/leds/leds-pca995x.c
@@ -120,7 +120,7 @@  static const struct regmap_config pca995x_regmap = {
 static int pca995x_probe(struct i2c_client *client)
 {
 	struct fwnode_handle *led_fwnodes[PCA995X_MAX_OUTPUTS] = { 0 };
-	struct fwnode_handle *np, *child;
+	struct fwnode_handle *child;
 	struct device *dev = &client->dev;
 	const struct pca995x_chipdef *chipdef;
 	struct pca995x_chip *chip;
@@ -129,8 +129,7 @@  static int pca995x_probe(struct i2c_client *client)
 
 	chipdef = device_get_match_data(&client->dev);
 
-	np = dev_fwnode(dev);
-	if (!np)
+	if (!dev_fwnode(dev))
 		return -ENODEV;
 
 	chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
@@ -144,17 +143,13 @@  static int pca995x_probe(struct i2c_client *client)
 
 	i2c_set_clientdata(client, chip);
 
-	fwnode_for_each_available_child_node(np, child) {
+	device_for_each_child_node(dev, child) {
 		ret = fwnode_property_read_u32(child, "reg", &reg);
-		if (ret) {
-			fwnode_handle_put(child);
+		if (ret)
 			return ret;
-		}
 
-		if (reg < 0 || reg >= PCA995X_MAX_OUTPUTS || led_fwnodes[reg]) {
-			fwnode_handle_put(child);
+		if (reg < 0 || reg >= PCA995X_MAX_OUTPUTS || led_fwnodes[reg])
 			return -EINVAL;
-		}
 
 		led = &chip->leds[reg];
 		led_fwnodes[reg] = child;