linux/drivers/i2c
Daniel Kurtz d3ff6ce400 i2c-i801: Enable IRQ for byte_by_byte transactions
Byte-by-byte transactions are used primarily for accessing I2C devices
with an SMBus controller.  For these transactions, for each byte that is
read or written, the SMBus controller generates a BYTE_DONE IRQ.  The isr
reads/writes the next byte, and clears the IRQ flag to start the next byte.
On the penultimate IRQ, the isr also sets the LAST_BYTE flag.

There is no locking around the cmd/len/count/data variables, since the
I2C adapter lock ensures there is never multiple simultaneous transactions
for the same device, and the driver thread never accesses these variables
while interrupts might be occurring.

The end result is faster I2C block read and write transactions.

Note: This patch has only been tested and verified by doing I2C read and
write block transfers on Cougar Point 6 Series PCH, as well as I2C read
block transfers on ICH5.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
2012-07-24 14:13:59 +02:00
..
algos i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
busses i2c-i801: Enable IRQ for byte_by_byte transactions 2012-07-24 14:13:59 +02:00
muxes i2c: Update Guenter Roeck's e-mail address 2012-07-24 14:13:56 +02:00
i2c-boardinfo.c i2c: Update the FSF address 2012-03-26 21:47:19 +02:00
i2c-core.c i2c: implement i2c_verify_adapter 2012-05-12 14:28:16 +02:00
i2c-core.h i2c: Update the FSF address 2012-03-26 21:47:19 +02:00
i2c-dev.c i2c-dev: Add support for I2C_M_RECV_LEN 2012-05-30 10:55:34 +02:00
i2c-mux.c i2c/of: Automatically populate i2c mux busses from device tree data. 2012-05-12 14:28:16 +02:00
i2c-smbus.c i2c-smbus: Use module_i2c_driver() 2012-07-24 14:13:57 +02:00
Kconfig i2c: muxes are not EXPERIMENTAL anymore 2012-05-12 14:28:16 +02:00
Makefile i2c: Deprecate i2c_driver.attach_adapter and .detach_adapter 2011-03-20 14:50:53 +01:00