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.
