~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/driver-api/i2c.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 I\ :sup:`2`\ C and SMBus Subsystem
  2 ==================================
  3 
  4 I\ :sup:`2`\ C (or without fancy typography, "I2C") is an acronym for
  5 the "Inter-IC" bus, a simple bus protocol which is widely used where low
  6 data rate communications suffice. Since it's also a licensed trademark,
  7 some vendors use another name (such as "Two-Wire Interface", TWI) for
  8 the same bus. I2C only needs two signals (SCL for clock, SDA for data),
  9 conserving board real estate and minimizing signal quality issues. Most
 10 I2C devices use seven bit addresses, and bus speeds of up to 400 kHz;
 11 there's a high speed extension (3.4 MHz) that's not yet found wide use.
 12 I2C is a multi-master bus; open drain signaling is used to arbitrate
 13 between masters, as well as to handshake and to synchronize clocks from
 14 slower clients.
 15 
 16 The Linux I2C programming interfaces support the master side of bus
 17 interactions and the slave side. The programming interface is
 18 structured around two kinds of driver, and two kinds of device. An I2C
 19 "Adapter Driver" abstracts the controller hardware; it binds to a
 20 physical device (perhaps a PCI device or platform_device) and exposes a
 21 :c:type:`struct i2c_adapter <i2c_adapter>` representing each
 22 I2C bus segment it manages. On each I2C bus segment will be I2C devices
 23 represented by a :c:type:`struct i2c_client <i2c_client>`.
 24 Those devices will be bound to a :c:type:`struct i2c_driver
 25 <i2c_driver>`, which should follow the standard Linux driver model. There
 26 are functions to perform various I2C protocol operations; at this writing
 27 all such functions are usable only from task context.
 28 
 29 The System Management Bus (SMBus) is a sibling protocol. Most SMBus
 30 systems are also I2C conformant. The electrical constraints are tighter
 31 for SMBus, and it standardizes particular protocol messages and idioms.
 32 Controllers that support I2C can also support most SMBus operations, but
 33 SMBus controllers don't support all the protocol options that an I2C
 34 controller will. There are functions to perform various SMBus protocol
 35 operations, either using I2C primitives or by issuing SMBus commands to
 36 i2c_adapter devices which don't support those I2C operations.
 37 
 38 .. kernel-doc:: include/linux/i2c.h
 39    :internal:
 40 
 41 .. kernel-doc:: drivers/i2c/i2c-boardinfo.c
 42    :functions: i2c_register_board_info
 43 
 44 .. kernel-doc:: drivers/i2c/i2c-core-base.c
 45    :export:
 46 
 47 .. kernel-doc:: drivers/i2c/i2c-core-smbus.c
 48    :export:

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php