You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.3 KiB
84 lines
3.3 KiB
This is an explanation of what i2c is, and what is supported in this package.
|
|
|
|
I2C and SMBus
|
|
=============
|
|
|
|
I2C (pronounce: I squared C) is a protocol developed by Philips. It is a
|
|
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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
|
|
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
|
|
of I2C adapters. Each specific adapter driver depends on one algorithm
|
|
driver.
|
|
|
|
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.
|
|
|
|
For a given configuration, you will need a driver for your I2C bus (usually
|
|
a separate Adapter and Algorithm driver), and drivers for your I2C devices
|
|
(usually one driver for each device). There are no I2C device drivers
|
|
in this package. See the lm_sensors project http://www.lm-sensors.nu
|
|
for device drivers.
|
|
|
|
At this time, Linux only operates I2C (or SMBus) in master mode; you can't
|
|
use these APIs to make a Linux system behave as a slave/device, either to
|
|
speak a custom protocol or to emulate some other device.
|
|
|
|
|
|
Included Bus Drivers
|
|
====================
|
|
Note that only stable drivers are patched into the kernel by 'mkpatch'.
|
|
|
|
|
|
Base modules
|
|
------------
|
|
|
|
i2c-core: The basic I2C code, including the /proc/bus/i2c* interface
|
|
i2c-dev: The /dev/i2c-* interface
|
|
i2c-proc: The /proc/sys/dev/sensors interface for device (client) drivers
|
|
|
|
Algorithm drivers
|
|
-----------------
|
|
|
|
i2c-algo-bit: A bit-banging algorithm
|
|
i2c-algo-pcf: A PCF 8584 style algorithm
|
|
i2c-algo-ibm_ocp: An algorithm for the I2C device in IBM 4xx processors (NOT BUILT BY DEFAULT)
|
|
|
|
Adapter drivers
|
|
---------------
|
|
|
|
i2c-elektor: Elektor ISA card (uses i2c-algo-pcf)
|
|
i2c-elv: ELV parallel port adapter (uses i2c-algo-bit)
|
|
i2c-pcf-epp: PCF8584 on a EPP parallel port (uses i2c-algo-pcf) (NOT mkpatched)
|
|
i2c-philips-par: Philips style parallel port adapter (uses i2c-algo-bit)
|
|
i2c-adap-ibm_ocp: IBM 4xx processor I2C device (uses i2c-algo-ibm_ocp) (NOT BUILT BY DEFAULT)
|
|
i2c-pport: Primitive parallel port adapter (uses i2c-algo-bit)
|
|
i2c-velleman: Velleman K8000 parallel port adapter (uses i2c-algo-bit)
|
|
|
|
|