[PATCH] iio: handle -EPROBE_DEFER in of_iio_channel_get_by_name

Heiko Stübner
2014-08-28T22:11:05Z

Till now of_iio_channel_get_by_name always tried to find the channel without
evaluating the return code from of_iio_channel_get. This might include
-EPROBE_DEFER in which case the channel is present but its driver simply not
probed yet. Therefore simply return on -EPROBE_DEFER so that the driver
requesting the channel can also defer.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
---
drivers/iio/inkern.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
index c749700..f084610 100644
--- a/drivers/iio/inkern.c
+++ b/drivers/iio/inkern.c
@@ -178,7 +178,7 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
index = of_property_match_string(np, "io-channel-names",
name);
chan = of_iio_channel_get(np, index);
- if (!IS_ERR(chan))
+ if (!IS_ERR(chan) || PTR_ERR(chan) == -EPROBE_DEFER)
break;
else if (name && index >= 0) {
pr_err("ERROR: could not get IIO channel %s:%s(%i)\n",
--
2.0.1