summaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2012-03-26 21:47:19 +0200
committerJean Delvare <khali@endymion.delvare>2012-03-26 21:47:19 +0200
commit41101a33026c215a09e5d3549aedfcdae9105515 (patch)
treea501dc3b2e6cfaef0b03f0c02533b49263681f7d /drivers/i2c
parent5694f8a888f8f69a562e4cf939eed81ca7a5ecf2 (diff)
downloadlinux-41101a33026c215a09e5d3549aedfcdae9105515.tar.gz
linux-41101a33026c215a09e5d3549aedfcdae9105515.tar.bz2
linux-41101a33026c215a09e5d3549aedfcdae9105515.zip
i2c-algo-bit: Don't resched on clock stretching
Clock stretching is not supposed to last long, so asking to be rescheduled while waiting for the clock line to be released by a slave makes little sense. Odds are that the clock line will long have been released when we run again, so we will have lost time and may even get an SMBus timeout because of this. So just busy-wait in that case. This also participates in the effort to make i2c-algo-bit usable in contexts that can't sleep. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/algos/i2c-algo-bit.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/i2c/algos/i2c-algo-bit.c b/drivers/i2c/algos/i2c-algo-bit.c
index 69902c8e3b1e..7f0b83219744 100644
--- a/drivers/i2c/algos/i2c-algo-bit.c
+++ b/drivers/i2c/algos/i2c-algo-bit.c
@@ -112,7 +112,7 @@ static int sclhi(struct i2c_algo_bit_data *adap)
break;
return -ETIMEDOUT;
}
- cond_resched();
+ cpu_relax();
}
#ifdef DEBUG
if (jiffies != start && i2c_debug >= 3)