]> git.hungrycats.org Git - linux/commitdiff
iio:ad7266: Fix probe deferral for vref
authorMark Brown <broonie@kernel.org>
Mon, 20 Jun 2016 12:53:34 +0000 (13:53 +0100)
committerSasha Levin <alexander.levin@verizon.com>
Sat, 20 Aug 2016 03:08:44 +0000 (23:08 -0400)
[ Upstream commit 68b356eb3d9f5e38910fb62e22a78e2a18d544ae ]

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>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
drivers/iio/adc/ad7266.c

index 2bd08eea94f1a6ac7821350d0c51f2538329ffac..8e2b9e70511d19fe19d4a1e15b94ddd6a600b1bf 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;
        }