|
@@ -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);
|