| From 68b356eb3d9f5e38910fb62e22a78e2a18d544ae Mon Sep 17 00:00:00 2001 |
| From: Mark Brown <broonie@kernel.org> |
| Date: Mon, 20 Jun 2016 13:53:34 +0100 |
| Subject: iio:ad7266: Fix probe deferral for vref |
| |
| From: Mark Brown <broonie@kernel.org> |
| |
| commit 68b356eb3d9f5e38910fb62e22a78e2a18d544ae upstream. |
| |
| Currently the ad7266 driver treats any failure to get vref as though the |
| regulator were not present but this means that if probe deferral is |
| triggered the driver will act as though the regulator were not present. |
| Instead only use the internal reference if we explicitly got -ENODEV which |
| is what is returned for absent regulators. |
| |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Jonathan Cameron <jic23@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/iio/adc/ad7266.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/iio/adc/ad7266.c |
| +++ b/drivers/iio/adc/ad7266.c |
| @@ -408,6 +408,9 @@ static int ad7266_probe(struct spi_devic |
| |
| st->vref_mv = ret / 1000; |
| } else { |
| + /* Any other error indicates that the regulator does exist */ |
| + if (PTR_ERR(st->reg) != -ENODEV) |
| + return PTR_ERR(st->reg); |
| /* Use internal reference */ |
| st->vref_mv = 2500; |
| } |