Commit 9417fefe authored by Quentin Schulz's avatar Quentin Schulz Committed by Guenter Roeck

hwmon: (iio_hwmon) defer probe when no channel is found

iio_channel_get_all returns -ENODEV when it cannot find either phandles and
properties in the Device Tree or channels whose consumer_dev_name matches
iio_hwmon in iio_map_list. The iio_map_list is filled in by iio drivers
which might be probed after iio_hwmon.

It is better to defer the probe of iio_hwmon if such error is returned by
iio_channel_get_all in order to let a chance to iio drivers to expose
channels in iio_map_list.
Signed-off-by: default avatarQuentin Schulz <quentin.schulz@free-electrons.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent f9f8b33d
...@@ -73,8 +73,11 @@ static int iio_hwmon_probe(struct platform_device *pdev) ...@@ -73,8 +73,11 @@ static int iio_hwmon_probe(struct platform_device *pdev)
name = dev->of_node->name; name = dev->of_node->name;
channels = iio_channel_get_all(dev); channels = iio_channel_get_all(dev);
if (IS_ERR(channels)) if (IS_ERR(channels)) {
if (PTR_ERR(channels) == -ENODEV)
return -EPROBE_DEFER;
return PTR_ERR(channels); return PTR_ERR(channels);
}
st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL); st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
if (st == NULL) { if (st == NULL) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment