hwmon/ams: Fix I2C read retry logic
Stelian Pop [Tue, 8 May 2007 15:22:02 +0000 (17:22 +0200)]
Fix sleep and retry logic in ams-i2c.

Signed-off-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Jean Delvare <khali@linux-fr.org>

drivers/hwmon/ams/ams-i2c.c

index 485d333..5c70f2e 100644 (file)
@@ -85,17 +85,17 @@ static int ams_i2c_write(u8 reg, u8 value)
 static int ams_i2c_cmd(enum ams_i2c_cmd cmd)
 {
        s32 result;
-       int remaining = HZ / 20;
+       int count = 3;
 
        ams_i2c_write(AMS_COMMAND, cmd);
-       mdelay(5);
+       msleep(5);
 
-       while (remaining) {
+       while (count--) {
                result = ams_i2c_read(AMS_COMMAND);
                if (result == 0 || result & 0x80)
                        return 0;
 
-               remaining = schedule_timeout(remaining);
+               schedule_timeout_uninterruptible(HZ / 20);
        }
 
        return -1;