hwmon/ams: Fix I2C read retry logic
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>
This commit is contained in:
parent
2d8dd65fc1
commit
63232dcd55
|
@ -85,17 +85,17 @@ static int ams_i2c_write(u8 reg, u8 value)
|
||||||
static int ams_i2c_cmd(enum ams_i2c_cmd cmd)
|
static int ams_i2c_cmd(enum ams_i2c_cmd cmd)
|
||||||
{
|
{
|
||||||
s32 result;
|
s32 result;
|
||||||
int remaining = HZ / 20;
|
int count = 3;
|
||||||
|
|
||||||
ams_i2c_write(AMS_COMMAND, cmd);
|
ams_i2c_write(AMS_COMMAND, cmd);
|
||||||
mdelay(5);
|
msleep(5);
|
||||||
|
|
||||||
while (remaining) {
|
while (count--) {
|
||||||
result = ams_i2c_read(AMS_COMMAND);
|
result = ams_i2c_read(AMS_COMMAND);
|
||||||
if (result == 0 || result & 0x80)
|
if (result == 0 || result & 0x80)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
remaining = schedule_timeout(remaining);
|
schedule_timeout_uninterruptible(HZ / 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue