Main Page

From Linux i2c Wiki
Jump to: navigation, search

OBSOLETE CONTENT

This wiki has been archived and the content is no longer updated.

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 https://www.kernel.org/pub/software/utils/i2c-tools/.

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