On Mon, Oct 02, 2017 at 02:45:19PM +0200, Pontus Andersson wrote: > Commit b6c159a9cb69 ("i2c: ismt: Don't duplicate the receive length for > block reads") broke I2C block reads. It aimed to fix normal SMBus block > read, but changed the correct behavior of I2C block read in the process. > > According to Documentation/i2c/smbus-protocol, one vital difference > between normal SMBus block read and I2C block read is that there is no > byte count prefixed in the data sent on the wire: > > SMBus Block Read: i2c_smbus_read_block_data() > S Addr Wr [A] Comm [A] > S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P > > I2C Block Read: i2c_smbus_read_i2c_block_data() > S Addr Wr [A] Comm [A] > S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P > > Therefore the two transaction types need to be processed differently in > the driver by copying of the dma_buffer as done previously for the > I2C_SMBUS_I2C_BLOCK_DATA case. > > Fixes: b6c159a9cb69 ("i2c: ismt: Don't duplicate the receive length for block reads") > Signed-off-by: Pontus Andersson <epontan@xxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx Applied to for-current, thanks! Might have been good to CC the patch author of the problematic commit, too.
Attachment:
signature.asc
Description: PGP signature