leds: pca995x: Use device_for_each_child_node() to access device child nodes
[ Upstream commit6eefd65ba6] 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. Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/20240805-device_for_each_child_node-available-v3-2-48243a4aa5c0@gmail.com Signed-off-by: Lee Jones <lee@kernel.org> Stable-dep-of:82c5ada1f9("leds: pca995x: Fix device child node usage in pca995x_probe()") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
93214e827c
commit
affb3e4545
@@ -102,7 +102,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;
|
||||
struct pca995x_chip *chip;
|
||||
struct pca995x_led *led;
|
||||
@@ -110,8 +110,7 @@ static int pca995x_probe(struct i2c_client *client)
|
||||
|
||||
btype = (unsigned long)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);
|
||||
@@ -125,17 +124,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", ®);
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user