Byte-by-byte transactions are used primarily for accessing i2c deviceswith an smbus controller. For these transactions, for each byte that isread or written, the SMBus controller generates a BYTE_DONE irq. The isrreads/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 thei2c adapter lock ensures there is never multiple simultaneous transactionsfor the same device, and the driver thread never accesses these variableswhile interrupts might be occurring.

The end result is a dramatic speed up in emulated i2c-over smbus blockread and write transactions.

Note: This patch has only been tested and verified by doing i2c read andwrite block transfers on Cougar Point 6 Series PCH.