diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-03-13 20:56:53 +0100 |
---|---|---|
committer | Jean Delvare <khali@linux-fr.org> | 2010-03-13 20:56:53 +0100 |
commit | c074c39d62306efa5ba7c69c1a1531bc7333d252 (patch) | |
tree | 7d17d240821deada26d2221ca51fb1b3f1bb533d /drivers/i2c | |
parent | 8e4b980c28c91cfe9d0ce0431bc0af56e146b49e (diff) | |
download | kernel_samsung_smdk4412-c074c39d62306efa5ba7c69c1a1531bc7333d252.zip kernel_samsung_smdk4412-c074c39d62306efa5ba7c69c1a1531bc7333d252.tar.gz kernel_samsung_smdk4412-c074c39d62306efa5ba7c69c1a1531bc7333d252.tar.bz2 |
i2c-i801: Don't use the block buffer for I2C block writes
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>
Cc: stable@kernel.org
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-i801.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 9da5b05..299b918 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -416,9 +416,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); |