]> Zhao Yanbai Git Server - minix.git/commitdiff
i2c: increase read/write timeout 27/827/4
authorThomas Cort <tcort@minix3.org>
Mon, 16 Sep 2013 23:16:12 +0000 (19:16 -0400)
committerThomas Cort <tcort@minix3.org>
Wed, 18 Sep 2013 12:10:26 +0000 (08:10 -0400)
The sht21 temperature and humidity sensor holds the i2c bus while
an ADC conversion is in progress. For example, a temperature
measurement is requested, a read operation is started, and the
sht21 doesn't respond to the read request until the result of
the measurement is ready. The conversion time isn't constant.
On rare occations (one in hundreds of samples) the timeout in the
i2c driver expires returning an error.

The example code from Sensirion, the sht21's manufacturer, suggests
a bus timeout of 1 second to accommodate the sht21. This commit
increases the bus timeout to 1 second. The timeout is only reached
when chips do not respond normally, so the change doesn't affect the
performance of any other drivers.

Change-Id: I57b0f958a5d0b69b221af380b771fe67401ff604

drivers/i2c/arch/earm/omap_i2c.c

index 300b6d3de258d5398e4a7d4d4fd8768c99d587a2..674a7fe483a953c98996a7efaa0342a987705446 100644 (file)
@@ -319,8 +319,8 @@ omap_i2c_poll(uint16_t mask)
        spin_t spin;
        uint16_t status;
 
-       /* poll for up to 250 ms */
-       spin_init(&spin, 250000);
+       /* poll for up to s */
+       spin_init(&spin, 1000000);
        do {
                status = omap_i2c_read_status();
                if ((status & mask) != 0) {     /* any bits in mask set */