mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
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>
This commit is contained in:
parent
2d766e79ba
commit
eff19f6b9e
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user