Commit 02ec96be authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6

* 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6:
  i2c/isp1301_omap: Build fix
  i2c: Add missing spaces in split log messages
  i2c-gpio: Initialize adapter class
  i2c: Delete an outdated piece of documentation
parents 19fb1457 187426e6
This is an explanation of what i2c is, and what is supported in this package.
I2C and SMBus I2C and SMBus
============= =============
...@@ -33,52 +31,17 @@ When we talk about I2C, we use the following terms: ...@@ -33,52 +31,17 @@ When we talk about I2C, we use the following terms:
Client Client
An Algorithm driver contains general code that can be used for a whole class 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 of I2C adapters. Each specific adapter driver either depends on one algorithm
driver. driver, or includes its own implementation.
A Driver driver (yes, this sounds ridiculous, sorry) contains the general A Driver driver (yes, this sounds ridiculous, sorry) contains the general
code to access some type of device. Each detected device gets its own 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 data in the Client structure. Usually, Driver and Client are more closely
integrated than Algorithm and Adapter. integrated than Algorithm and Adapter.
For a given configuration, you will need a driver for your I2C bus (usually For a given configuration, you will need a driver for your I2C bus, and
a separate Adapter and Algorithm driver), and drivers for your I2C devices drivers for your I2C devices (usually one driver for each device).
(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 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 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. 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)
...@@ -404,7 +404,7 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) ...@@ -404,7 +404,7 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id)
DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_REG,
w); w);
} else } else
dev_err(dev->dev, "RDR IRQ while no" dev_err(dev->dev, "RDR IRQ while no "
"data requested\n"); "data requested\n");
break; break;
...@@ -423,7 +423,7 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) ...@@ -423,7 +423,7 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id)
DAVINCI_I2C_IMR_REG, DAVINCI_I2C_IMR_REG,
w); w);
} else } else
dev_err(dev->dev, "TDR IRQ while no data to" dev_err(dev->dev, "TDR IRQ while no data to "
"send\n"); "send\n");
break; break;
......
...@@ -140,6 +140,7 @@ static int __init i2c_gpio_probe(struct platform_device *pdev) ...@@ -140,6 +140,7 @@ static int __init i2c_gpio_probe(struct platform_device *pdev)
adap->owner = THIS_MODULE; adap->owner = THIS_MODULE;
snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id);
adap->algo_data = bit_data; adap->algo_data = bit_data;
adap->class = I2C_CLASS_HWMON;
adap->dev.parent = &pdev->dev; adap->dev.parent = &pdev->dev;
/* /*
......
...@@ -203,7 +203,7 @@ static int omap_i2c_init(struct omap_i2c_dev *dev) ...@@ -203,7 +203,7 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
while (!(omap_i2c_read_reg(dev, OMAP_I2C_SYSS_REG) & while (!(omap_i2c_read_reg(dev, OMAP_I2C_SYSS_REG) &
OMAP_I2C_SYSS_RDONE)) { OMAP_I2C_SYSS_RDONE)) {
if (time_after(jiffies, timeout)) { if (time_after(jiffies, timeout)) {
dev_warn(dev->dev, "timeout waiting" dev_warn(dev->dev, "timeout waiting "
"for controller reset\n"); "for controller reset\n");
return -ETIMEDOUT; return -ETIMEDOUT;
} }
...@@ -483,7 +483,7 @@ omap_i2c_isr(int this_irq, void *dev_id) ...@@ -483,7 +483,7 @@ omap_i2c_isr(int this_irq, void *dev_id)
dev->buf_len--; dev->buf_len--;
} }
} else } else
dev_err(dev->dev, "RRDY IRQ while no data" dev_err(dev->dev, "RRDY IRQ while no data "
"requested\n"); "requested\n");
omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RRDY); omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RRDY);
continue; continue;
...@@ -498,7 +498,7 @@ omap_i2c_isr(int this_irq, void *dev_id) ...@@ -498,7 +498,7 @@ omap_i2c_isr(int this_irq, void *dev_id)
dev->buf_len--; dev->buf_len--;
} }
} else } else
dev_err(dev->dev, "XRDY IRQ while no" dev_err(dev->dev, "XRDY IRQ while no "
"data to send\n"); "data to send\n");
omap_i2c_write_reg(dev, OMAP_I2C_DATA_REG, w); omap_i2c_write_reg(dev, OMAP_I2C_DATA_REG, w);
omap_i2c_ack_stat(dev, OMAP_I2C_STAT_XRDY); omap_i2c_ack_stat(dev, OMAP_I2C_STAT_XRDY);
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/usb/ch9.h> #include <linux/usb/ch9.h>
#include <linux/usb_gadget.h> #include <linux/usb/gadget.h>
#include <linux/usb.h> #include <linux/usb.h>
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
#include <linux/i2c.h> #include <linux/i2c.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment