misc: apds9802als: Fix the logic checking timeout in als_wait_for_data_ready()
authorAxel Lin <axel.lin@ingics.com>
Fri, 16 Nov 2012 09:17:50 +0000 (17:17 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Nov 2012 12:53:08 +0000 (04:53 -0800)
In the case of timeout waiting for data ready, the retry variable is -1.
This also fixes a bug: current code returns -ETIMEDOUT if latest retry success
( which means retry is 0 when exiting the while loop ).

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/apds9802als.c

index 0314773f6db382692f509471ab49ea27208d40d8..94923d259910ee16258a6bf6b6dcaf091ccf2244 100644 (file)
@@ -68,7 +68,7 @@ static int als_wait_for_data_ready(struct device *dev)
                ret = i2c_smbus_read_byte_data(client, 0x86);
        } while (!(ret & 0x80) && retry--);
 
-       if (!retry) {
+       if (retry < 0) {
                dev_warn(dev, "timeout waiting for data ready\n");
                return -ETIMEDOUT;
        }