SMBus Protocol Status Page

This is the status page for the implementation of the SMBus protocol, and some similar non-SMBus commands, in the i2c package (for Linux 2.4) and Linux 2.6. Note that not all SMBus adapters support all commands. In particular, most adapters do not support SMBus 1.1 / 2.0 features. See the source and documentation for information on specific adapters in the lm_sensors package and Linux 2.6. Chip drivers can (must!) verify adapter functionality with the i2c_check_functionality() call. User-space applications must use the I2C_FUNCS ioctl instead. I2C adapters support all commands supported by the kernel in "i2c emulation" mode because the kernel does the conversion.

SMBus and I2C Protocol Implementation Status:

COMMAND i2c-dev.c ioctl i2c-dev.h macro i2c-core.c help. func. i2c emulation/2.4 w/ software PEC/2.6 i2c emulation/2.4 w/ software PEC/2.6
Write Quick x x x x n/a x n/a
Read Byte x x x x x (2.10.0) x x (2.6.15)
Write Byte x x x x x x x
Read Byte Data x x x x x (2.10.0) x x (2.6.15)
Write Byte Data x x x x x x x
Read Word x x x x x (2.10.0) x x (2.6.15)
Write Word x x x x x (2.10.0) x x (2.6.15)
Process Call x x x (note b) x x (2.10.0) x x (2.6.15)
Block Read x x x (note b) x (2.8.3) x (2.8.3)
Block Write x x x x x x x
Block Process Call (SMBus 2.0) x x x (note b) x (2.8.3) x (2.8.3)
I2C Block Read (note a) x x x x n/a x n/a
I2C Block Write x x x (note b) x (2.7.0) n/a x n/a
I2C Block Read (2-byte addr.) x n/a n/a
I2C Block Write (2-byte addr.) x n/a n/a

LEGEND:
x = supported
(2.8.3) = supported as of i2c release (2.6.4 or earlier if not noted), as of Linux 2.6 release (2.6.0 or earlier if not noted)
n/a = not applicable
blank = not supported NOTES:
(a) Fixed at 32 bytes for now, likely to change in the future.
(b) Removed in Linux 2.6.10 due to a lack of actual user; will be added back if needed.