]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
i2c-i801: Don't use the block buffer for I2C block writes
authorJean Delvare <khali@linux-fr.org>
Sat, 13 Mar 2010 19:56:53 +0000 (20:56 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 26 May 2010 21:27:08 +0000 (14:27 -0700)
commit c074c39d62306efa5ba7c69c1a1531bc7333d252 upstream.

Experience has shown that the block buffer can only be used for SMBus
(not I2C) block transactions, even though the datasheet doesn't
mention this limitation.

Reported-by: Felix Rubinstein <felixru@gmail.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Oleg Ryjkov <oryjkov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/i2c/busses/i2c-i801.c

index dc7ea32b69a8f64c3a09725cd54748fb8c95b9c8..177346e093e2069f82f606189dc47a31770f3def 100644 (file)
@@ -413,9 +413,11 @@ static int i801_block_transaction(union i2c_smbus_data *data, char read_write,
                data->block[0] = 32;    /* max for SMBus block reads */
        }
 
+       /* Experience has shown that the block buffer can only be used for
+          SMBus (not I2C) block transactions, even though the datasheet
+          doesn't mention this limitation. */
        if ((i801_features & FEATURE_BLOCK_BUFFER)
-        && !(command == I2C_SMBUS_I2C_BLOCK_DATA
-             && read_write == I2C_SMBUS_READ)
+        && command != I2C_SMBUS_I2C_BLOCK_DATA
         && i801_set_block_buffer_mode() == 0)
                result = i801_block_transaction_by_block(data, read_write,
                                                         hwpec);