mfd: Use the value of the final spin when reading the AUXADC
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 1 Mar 2009 19:11:58 +0000 (20:11 +0100)
committerSamuel Ortiz <samuel@sortiz.org>
Sat, 4 Apr 2009 22:32:24 +0000 (00:32 +0200)
Reverse the order of the tests for loop exit so we use a valid value
before we time out.  Vanishingly unlikely to happen since we retry for
several times the expected conversion time.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@openedhand.com>
drivers/mfd/wm8350-core.c

index a285cc0cc704840da473b967e559a62a9ca6fb8a..c2be3088e2e1dd0c2e9936e020fc42e1d7209586 100644 (file)
@@ -1111,7 +1111,7 @@ int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale, int vref)
        do {
                schedule_timeout_interruptible(1);
                reg = wm8350_reg_read(wm8350, WM8350_DIGITISER_CONTROL_1);
-       } while (--tries && (reg & WM8350_AUXADC_POLL));
+       } while ((reg & WM8350_AUXADC_POLL) && --tries);
 
        if (!tries)
                dev_err(wm8350->dev, "adc chn %d read timeout\n", channel);