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>
static int ams_i2c_cmd(enum ams_i2c_cmd cmd)
{
s32 result;
static int ams_i2c_cmd(enum ams_i2c_cmd cmd)
{
s32 result;
- int remaining = HZ / 20;
ams_i2c_write(AMS_COMMAND, cmd);
ams_i2c_write(AMS_COMMAND, cmd);
result = ams_i2c_read(AMS_COMMAND);
if (result == 0 || result & 0x80)
return 0;
result = ams_i2c_read(AMS_COMMAND);
if (result == 0 || result & 0x80)
return 0;
- remaining = schedule_timeout(remaining);
+ schedule_timeout_uninterruptible(HZ / 20);