summaryrefslogtreecommitdiffstats
path: root/drivers/iio/dac/ad5770r.c
diff options
context:
space:
mode:
authorJonathan Cameron <Jonathan.Cameron@huawei.com>2024-03-30 18:53:05 +0000
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2024-04-06 11:18:51 +0100
commiteff19f6b9e00f70cd20a3c62779b68b6e820500c (patch)
tree89760c0f9e6957db21d28688396de5184095010b /drivers/iio/dac/ad5770r.c
parent2d766e79ba2bd15e59ceda4b0596e369c9564948 (diff)
downloadlinux-stable-eff19f6b9e00f70cd20a3c62779b68b6e820500c.tar.gz
linux-stable-eff19f6b9e00f70cd20a3c62779b68b6e820500c.tar.bz2
linux-stable-eff19f6b9e00f70cd20a3c62779b68b6e820500c.zip
iio: dac: ad5770r: Use device_for_each_child_node_scoped()
Switching to the _scoped() version removes the need for manual calling of fwnode_handle_put() in the paths where the code exits the loop early. In this case that's all in error paths. Cc: Nuno Sá <nuno.sa@analog.com> Reviewed-by: Nuno Sa <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20240330185305.1319844-9-jic23@kernel.org Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/iio/dac/ad5770r.c')
-rw-r--r--drivers/iio/dac/ad5770r.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/iio/dac/ad5770r.c b/drivers/iio/dac/ad5770r.c
index f66d67402e43..c360ebf5297a 100644
--- a/drivers/iio/dac/ad5770r.c
+++ b/drivers/iio/dac/ad5770r.c
@@ -515,39 +515,32 @@ static int ad5770r_channel_config(struct ad5770r_state *st)
{
int ret, tmp[2], min, max;
unsigned int num;
- struct fwnode_handle *child;
num = device_get_child_node_count(&st->spi->dev);
if (num != AD5770R_MAX_CHANNELS)
return -EINVAL;
- device_for_each_child_node(&st->spi->dev, child) {
+ device_for_each_child_node_scoped(&st->spi->dev, child) {
ret = fwnode_property_read_u32(child, "reg", &num);
if (ret)
- goto err_child_out;
- if (num >= AD5770R_MAX_CHANNELS) {
- ret = -EINVAL;
- goto err_child_out;
- }
+ return ret;
+ if (num >= AD5770R_MAX_CHANNELS)
+ return -EINVAL;
ret = fwnode_property_read_u32_array(child,
"adi,range-microamp",
tmp, 2);
if (ret)
- goto err_child_out;
+ return ret;
min = tmp[0] / 1000;
max = tmp[1] / 1000;
ret = ad5770r_store_output_range(st, min, max, num);
if (ret)
- goto err_child_out;
+ return ret;
}
return 0;
-
-err_child_out:
- fwnode_handle_put(child);
- return ret;
}
static int ad5770r_init(struct ad5770r_state *st)