iio:ad7266: Fix probe deferral for vref
authorMark Brown <broonie@kernel.org>
Mon, 20 Jun 2016 12:53:34 +0000 (13:53 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sun, 26 Jun 2016 16:39:26 +0000 (17:39 +0100)
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>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/adc/ad7266.c

index 655b36b4e9cb68af11bd2025840a5e1a1c7bdd5d..2123f0ac2e2a47b608eedc6095f1681802edfcd9 100644 (file)
@@ -408,6 +408,9 @@ static int ad7266_probe(struct spi_device *spi)
 
                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;
        }