1
0
Fork 0
alistair23-linux/drivers/i2c
David Brownell 939bc4943d i2c-algo-bit: Read block data bugfix
This fixes a bug in the way i2c-algo-bit handles I2C_M_RECV_LEN,
used to implement i2c_smbus_read_block_data().  Previously, in the
absence of PEC (rarely used!) it would NAK the "length" byte:

	S addr Rd [A] [length] NA

That prevents the subsequent data bytes from being read:

	S addr Rd [A] [length] { A [data] }* NA

The primary fix just reorders two code blocks, so the length used
in the "should I NAK now?" check incorporates the data which it
just read from the slave device.

However, that move also highlighted other fault handling glitches.
This fixes those by abstracting the RX path ack/nak logic, so it
can be used in more than one location.  Also, a few CodingStyle
issues were also resolved.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
2007-09-09 22:29:14 +02:00
..
algos i2c-algo-bit: Read block data bugfix 2007-09-09 22:29:14 +02:00
busses i2c-pxa: Fix adapter number 2007-09-09 22:29:13 +02:00
chips i2c/menelaus: Build fix 2007-08-14 18:37:14 +02:00
Kconfig [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
Makefile i2c: Add i2c_board_info and i2c_new_device() 2007-05-01 23:26:31 +02:00
i2c-boardinfo.c i2c: Add i2c_board_info and i2c_new_device() 2007-05-01 23:26:31 +02:00
i2c-core.c Merge branch 'release' of git://lm-sensors.org/kernel/mhoffman/hwmon-2.6 2007-07-19 14:24:57 -07:00
i2c-core.h i2c: Add i2c_board_info and i2c_new_device() 2007-05-01 23:26:31 +02:00
i2c-dev.c i2c: Fix the i2c_smbus_read_i2c_block_data() prototype 2007-07-12 14:12:29 +02:00