i2cdump: don't read block data in non-block modes
authorBartosz Golaszewski <bartekgola@gmail.com>
Tue, 27 Oct 2015 16:15:02 +0000 (17:15 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 1 Nov 2015 19:55:09 +0000 (20:55 +0100)
We currently read data twice in byte mode. Add a check to avoid calling
i2c_smbus_read_i2c_block_data() if we're not in I2C or SMBus block mode.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/i2c_tools.c

index 907d738fdeea70e6f045148d6bcdac59599c1ef5..094bf9e38736144de2d2beaec35b36e231fc717e 100644 (file)
@@ -971,7 +971,8 @@ int i2cdump_main(int argc UNUSED_PARAM, char **argv)
 
        /* All but word data. */
        if (mode != I2C_SMBUS_WORD_DATA || even) {
-               blen = read_block_data(fd, mode, block);
+               if (mode == I2C_SMBUS_BLOCK_DATA || mode == I2C_SMBUS_I2C_BLOCK_DATA)
+                       blen = read_block_data(fd, mode, block);
 
                if (mode == I2C_SMBUS_BYTE) {
                        res = i2c_smbus_write_byte(fd, first);