Main Page

From Linux i2c Wiki
Jump to: navigation, search

Linux i2c Subsystem

This is the home of the Linux i2c subsystem.

Theory of operation

Developer's documentation

User-space tools

User-space tools for I2C/SMBus are being maintained in the i2c-tools git tree. Released versions can be downloaded from

Work in progress

  • increase SMBus max block size from 32 to 255 as documented in the 3.x specification. Hardest problem is to not break userspace ABI.

To-do list

  • The i2c-dev driver needs to be ported to the new i2c device driver binding model. See this discussion and this bug report.
  • i2c_adapter.retries and i2c_adapter.timeout need to be clarified. Their original intent was not necessarily good nor clear, but they could still be useful, if fault codes returned by adapter drivers are also clarified.
  • Exclusive access to bus segments or devices. The former can partly be done in-kernel since version 3.6 (i2c_lock_adapter / __i2c_transfer / i2c_unlock_adapter) or the SMBus equivalent. Also the user-space case mentioned here is not supported yet.
  • The kernel should be able to prevent probing of specific I2C bus segments from user-space. Either by exposing the class flags and hoping user-space will pay attention and be fair, or by defining one more class flag for user-space access and enforcing it.

Old pages

Subsystem History - up to Linux 3.6

Personal tools