Blame view

Documentation/i2c/summary 1.88 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
  I2C and SMBus
  =============
  
  I2C (pronounce: I squared C) is a protocol developed by Philips. It is a 
4298cfc3e   David Brownell   i2c: i2c probe() ...
5
6
7
8
9
  slow two-wire protocol (variable speed, up to 400 kHz), with a high speed
  extension (3.4 MHz).  It provides an inexpensive bus for connecting many
  types of devices with infrequent or low bandwidth communications needs.
  I2C is widely used with embedded systems.  Some systems use variants that
  don't meet branding requirements, and so are not advertised as being I2C.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
10

4298cfc3e   David Brownell   i2c: i2c probe() ...
11
12
13
14
15
16
  SMBus (System Management Bus) is based on the I2C protocol, and is mostly
  a subset of I2C protocols and signaling.  Many I2C devices will work on an
  SMBus, but some SMBus protocols add semantics beyond what is required to
  achieve I2C branding.  Modern PC mainboards rely on SMBus.  The most common
  devices connected through SMBus are RAM modules configured using I2C EEPROMs,
  and hardware monitoring chips.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
17

4298cfc3e   David Brownell   i2c: i2c probe() ...
18
19
20
21
  Because the SMBus is mostly a subset of the generalized I2C bus, we can
  use its protocols on many I2C systems.  However, there are systems that don't
  meet both SMBus and I2C electrical constraints; and others which can't
  implement all the common SMBus protocol semantics or messages.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
22
23
24
25
26
27
28
29
30
31
32
33
  
  
  Terminology
  ===========
  
  When we talk about I2C, we use the following terms:
    Bus    -> Algorithm
              Adapter
    Device -> Driver
              Client
  
  An Algorithm driver contains general code that can be used for a whole class
45ccc6c50   Jean Delvare   i2c: Delete an ou...
34
35
  of I2C adapters. Each specific adapter driver either depends on one algorithm
  driver, or includes its own implementation.
4298cfc3e   David Brownell   i2c: i2c probe() ...
36

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
37
38
39
40
  A Driver driver (yes, this sounds ridiculous, sorry) contains the general
  code to access some type of device. Each detected device gets its own
  data in the Client structure. Usually, Driver and Client are more closely
  integrated than Algorithm and Adapter.
45ccc6c50   Jean Delvare   i2c: Delete an ou...
41
42
  For a given configuration, you will need a driver for your I2C bus, and
  drivers for your I2C devices (usually one driver for each device).