Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvar...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Mar 2012 21:12:15 +0000 (14:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Mar 2012 21:12:15 +0000 (14:12 -0700)
Pull i2c updates from Jean Delvare.

Fix up trivial conflict in drivers/i2c/busses/i2c-gpio.c due to include
file cleanup clashing with DT support addition (which did the same
cleanup)

* 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  i2c-algo-bit: Don't resched on clock stretching
  i2c: Update the FSF address
  i2c: Convert drivers/i2c/muxes/* to use module_i2c_driver()
  i2c-i801: Use usleep_range to wait for command completion
  i2c-i801: Add device IDs for Intel Lynx Point
  i2c-isch: Decrease delay in command completion check loop
  i2c-gpio: Use linux/gpio.h rather than asm/gpio.h

21 files changed:
Documentation/i2c/busses/i2c-i801
drivers/i2c/algos/i2c-algo-bit.c
drivers/i2c/algos/i2c-algo-pca.c
drivers/i2c/algos/i2c-algo-pcf.c
drivers/i2c/algos/i2c-algo-pcf.h
drivers/i2c/busses/Kconfig
drivers/i2c/busses/i2c-i801.c
drivers/i2c/busses/i2c-isch.c
drivers/i2c/i2c-boardinfo.c
drivers/i2c/i2c-core.c
drivers/i2c/i2c-core.h
drivers/i2c/i2c-dev.c
drivers/i2c/i2c-smbus.c
drivers/i2c/muxes/pca9541.c
drivers/i2c/muxes/pca954x.c
include/linux/i2c-algo-bit.h
include/linux/i2c-algo-pcf.h
include/linux/i2c-dev.h
include/linux/i2c-mux.h
include/linux/i2c-smbus.h
include/linux/i2c.h

index 2871fd5003492b1d3ba266e2cd65aec8ebd58406..71f55bbcefc811e2d78b2987744405c3172314b3 100644 (file)
@@ -20,6 +20,7 @@ Supported adapters:
   * Intel Patsburg (PCH)
   * Intel DH89xxCC (PCH)
   * Intel Panther Point (PCH)
+  * Intel Lynx Point (PCH)
    Datasheets: Publicly available at the Intel website
 
 On Intel Patsburg and later chipsets, both the normal host SMBus controller
index acba1c686c65d6c560fdf47c126b189376c7856c..7f0b83219744e52aa7cd68a7ac5ea6edc49537d1 100644 (file)
@@ -15,7 +15,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.
  * ------------------------------------------------------------------------- */
 
 /* With some changes from Frodo Looijaard <frodol@dds.nl>, Kyösti Mälkki
@@ -111,7 +112,7 @@ static int sclhi(struct i2c_algo_bit_data *adap)
                                break;
                        return -ETIMEDOUT;
                }
-               cond_resched();
+               cpu_relax();
        }
 #ifdef DEBUG
        if (jiffies != start && i2c_debug >= 3)
index beb9ffe2564bc77ffb474ef1346a49c2600c89a5..73133b1063f012416d2a957f3fc2432ace395439 100644 (file)
@@ -15,7 +15,8 @@
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301 USA.
  */
 
 #include <linux/kernel.h>
index 5eebf562ff31b9094fffa7c0300003223382affe..5c2379522aa9fb8d9e8c0e1a6635e4429443289f 100644 (file)
@@ -16,7 +16,8 @@
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301 USA.
  *
  * With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and
  * Frodo Looijaard <frodol@dds.nl>, and also from Martin Bailey
index 5263a9eeb8d7e4df7cf5a2f801c7c0da57f5c043..1ec703ee788d2cc2c3467917d989f6c1c3c16973 100644 (file)
@@ -16,7 +16,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.          */
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.                                                 */
 /* --------------------------------------------------------------------        */
 
 /* With some changes from Frodo Looijaard <frodol@dds.nl> */
index 71c1b0a7535ccad12a2d95068890359ce74b7e3e..d2c5095deeaca5dc0324b3786ff056ec09447275 100644 (file)
@@ -103,6 +103,7 @@ config I2C_I801
            Patsburg (PCH)
            DH89xxCC (PCH)
            Panther Point (PCH)
+           Lynx Point (PCH)
 
          This driver can also be built as a module.  If so, the module
          will be called i2c-i801.
index 5d2e2816831f21dcd73912e8d33a9407f6df0b62..ae2945a5e00713bfda7b268ac48fbb42f4ba5214 100644 (file)
@@ -2,7 +2,7 @@
     Copyright (c) 1998 - 2002  Frodo Looijaard <frodol@dds.nl>,
     Philip Edelbrock <phil@netroedge.com>, and Mark D. Studebaker
     <mdsxyz123@yahoo.com>
-    Copyright (C) 2007, 2008   Jean Delvare <khali@linux-fr.org>
+    Copyright (C) 2007 - 2012  Jean Delvare <khali@linux-fr.org>
     Copyright (C) 2010         Intel Corporation,
                                David Woodhouse <dwmw2@infradead.org>
 
@@ -51,6 +51,7 @@
   Patsburg (PCH) IDF    0x1d72     32     hard     yes     yes     yes
   DH89xxCC (PCH)        0x2330     32     hard     yes     yes     yes
   Panther Point (PCH)   0x1e22     32     hard     yes     yes     yes
+  Lynx Point (PCH)      0x8c22     32     hard     yes     yes     yes
 
   Features supported by this driver:
   Software PEC                     no
 #define SMBHSTCNT_KILL         2
 
 /* Other settings */
-#define MAX_TIMEOUT            100
+#define MAX_RETRIES            400
 #define ENABLE_INT9            0       /* set to 0x01 to enable - untested */
 
 /* I801 command constants */
 #define PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS 0x1e22
 #define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS     0x2330
 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS        0x3b30
+#define PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS    0x8c22
 
 struct i801_priv {
        struct i2c_adapter adapter;
@@ -215,7 +217,7 @@ static int i801_check_post(struct i801_priv *priv, int status, int timeout)
                dev_dbg(&priv->pci_dev->dev, "Terminating the current operation\n");
                outb_p(inb_p(SMBHSTCNT(priv)) | SMBHSTCNT_KILL,
                       SMBHSTCNT(priv));
-               msleep(1);
+               usleep_range(1000, 2000);
                outb_p(inb_p(SMBHSTCNT(priv)) & (~SMBHSTCNT_KILL),
                       SMBHSTCNT(priv));
 
@@ -272,11 +274,11 @@ static int i801_transaction(struct i801_priv *priv, int xact)
 
        /* We will always wait for a fraction of a second! */
        do {
-               msleep(1);
+               usleep_range(250, 500);
                status = inb_p(SMBHSTSTS(priv));
-       } while ((status & SMBHSTSTS_HOST_BUSY) && (timeout++ < MAX_TIMEOUT));
+       } while ((status & SMBHSTSTS_HOST_BUSY) && (timeout++ < MAX_RETRIES));
 
-       result = i801_check_post(priv, status, timeout > MAX_TIMEOUT);
+       result = i801_check_post(priv, status, timeout > MAX_RETRIES);
        if (result < 0)
                return result;
 
@@ -291,12 +293,12 @@ static void i801_wait_hwpec(struct i801_priv *priv)
        int status;
 
        do {
-               msleep(1);
+               usleep_range(250, 500);
                status = inb_p(SMBHSTSTS(priv));
        } while ((!(status & SMBHSTSTS_INTR))
-                && (timeout++ < MAX_TIMEOUT));
+                && (timeout++ < MAX_RETRIES));
 
-       if (timeout > MAX_TIMEOUT)
+       if (timeout > MAX_RETRIES)
                dev_dbg(&priv->pci_dev->dev, "PEC Timeout!\n");
 
        outb_p(status, SMBHSTSTS(priv));
@@ -380,12 +382,12 @@ static int i801_block_transaction_byte_by_byte(struct i801_priv *priv,
                /* We will always wait for a fraction of a second! */
                timeout = 0;
                do {
-                       msleep(1);
+                       usleep_range(250, 500);
                        status = inb_p(SMBHSTSTS(priv));
                } while ((!(status & SMBHSTSTS_BYTE_DONE))
-                        && (timeout++ < MAX_TIMEOUT));
+                        && (timeout++ < MAX_RETRIES));
 
-               result = i801_check_post(priv, status, timeout > MAX_TIMEOUT);
+               result = i801_check_post(priv, status, timeout > MAX_RETRIES);
                if (result < 0)
                        return result;
 
@@ -633,6 +635,7 @@ static DEFINE_PCI_DEVICE_TABLE(i801_ids) = {
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS) },
        { 0, }
 };
 
index 6561d275b8cf20fd9ed056c1963d66fd4c318899..f90a6057508dd7ffe0dabd6f30694ab9b06a36f4 100644 (file)
@@ -47,7 +47,7 @@
 #define SMBBLKDAT      (0x20 + sch_smba)
 
 /* Other settings */
-#define MAX_TIMEOUT    500
+#define MAX_RETRIES    5000
 
 /* I2C constants */
 #define SCH_QUICK              0x00
@@ -68,7 +68,7 @@ static int sch_transaction(void)
 {
        int temp;
        int result = 0;
-       int timeout = 0;
+       int retries = 0;
 
        dev_dbg(&sch_adapter.dev, "Transaction (pre): CNT=%02x, CMD=%02x, "
                "ADD=%02x, DAT0=%02x, DAT1=%02x\n", inb(SMBHSTCNT),
@@ -100,12 +100,12 @@ static int sch_transaction(void)
        outb(inb(SMBHSTCNT) | 0x10, SMBHSTCNT);
 
        do {
-               msleep(1);
+               usleep_range(100, 200);
                temp = inb(SMBHSTSTS) & 0x0f;
-       } while ((temp & 0x08) && (timeout++ < MAX_TIMEOUT));
+       } while ((temp & 0x08) && (retries++ < MAX_RETRIES));
 
        /* If the SMBus is still busy, we give up */
-       if (timeout > MAX_TIMEOUT) {
+       if (retries > MAX_RETRIES) {
                dev_err(&sch_adapter.dev, "SMBus Timeout!\n");
                result = -ETIMEDOUT;
        }
index 10274ffb66d73693ebbe097026156792ddeb8ea6..f24cc64e2e8c6a1288f0cdc0f38c545723057477 100644 (file)
@@ -13,7 +13,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA.
  */
 
 #include <linux/kernel.h>
index e9c18939eda70e78951dd41deaa73046ae4fdd5b..feb7dc359186495ead9dbff484e0ab76507eff0c 100644 (file)
@@ -14,7 +14,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.               */
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.                                                      */
 /* ------------------------------------------------------------------------- */
 
 /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi>.
index 9f9c57ff6708506d5e5c916c956c2ce7bcf91ed0..18a8fd21d2c226741445fdc5bf12ed306e10ff7e 100644 (file)
@@ -13,7 +13,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA.
  */
 
 #include <linux/rwsem.h>
index 10e7f1e7658610b8e2b697cf6e355a999aa4f5b6..45048323b75eab01d5875cb05464207c2eb614b3 100644 (file)
@@ -17,7 +17,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.
 */
 
 /* Note that this is a complete rewrite of Simon Vogl's i2c-dev module.
index f61ccc1e5ea3ea7a350af1cc3ec7858bf0f5dbe8..9836d08f7a77a6450ce40e0e242de32ca2ba705c 100644 (file)
@@ -16,7 +16,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA.
  */
 
 #include <linux/kernel.h>
index ed699c5aa79d033496f0a6eb1b1eb75b6de0e4c6..e0df9b6c66b34132dac3249fc58ad6ee01b758ca 100644 (file)
@@ -393,18 +393,7 @@ static struct i2c_driver pca9541_driver = {
        .id_table = pca9541_id,
 };
 
-static int __init pca9541_init(void)
-{
-       return i2c_add_driver(&pca9541_driver);
-}
-
-static void __exit pca9541_exit(void)
-{
-       i2c_del_driver(&pca9541_driver);
-}
-
-module_init(pca9541_init);
-module_exit(pca9541_exit);
+module_i2c_driver(pca9541_driver);
 
 MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
 MODULE_DESCRIPTION("PCA9541 I2C master selector driver");
index 6f89536646365db2cf316d166c2df23959d2988e..0e37ef27aa129e614bf99b5e9d8f4f2dc5f72527 100644 (file)
@@ -284,18 +284,7 @@ static struct i2c_driver pca954x_driver = {
        .id_table       = pca954x_id,
 };
 
-static int __init pca954x_init(void)
-{
-       return i2c_add_driver(&pca954x_driver);
-}
-
-static void __exit pca954x_exit(void)
-{
-       i2c_del_driver(&pca954x_driver);
-}
-
-module_init(pca954x_init);
-module_exit(pca954x_exit);
+module_i2c_driver(pca954x_driver);
 
 MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
 MODULE_DESCRIPTION("PCA954x I2C mux/switch driver");
index 584ffa0f328247be11729c5b6576e99eca002a31..63904ba6887ea1d1eb60881c122aa9cf182cff4f 100644 (file)
@@ -15,7 +15,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                */
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.                                                      */
 /* ------------------------------------------------------------------------- */
 
 /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even
index 0f91a957a690930cd365937e3d62a411b1f83cdf..538e8f41a319e0d05bde2080c2bb018f1578e6da 100644 (file)
@@ -16,7 +16,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                */
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.                                                      */
 /* ------------------------------------------------------------------------- */
 
 /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even
index fd53bfd2647044be7d48d26adc4de31b6c5d238e..8a7406b2114df7731fed5827e6f6696ef376d6f5 100644 (file)
@@ -16,7 +16,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.
 */
 
 #ifndef _LINUX_I2C_DEV_H
index 34536effd652d38fcc82baf4862022f6c16ba73e..747f0cde41640e08cbbcc75654e7275ae4ea2baf 100644 (file)
@@ -18,7 +18,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA.
  */
 
 #ifndef _LINUX_I2C_MUX_H
index 63f57a8c8b313561a59af8044593f871de3a9edc..017fb40f702ae241784b68c0b4aa61b496869491 100644 (file)
@@ -15,7 +15,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA.
  */
 
 #ifndef _LINUX_I2C_SMBUS_H
index 8e25a9167f1303f3d07e63a26beb93f5d2987e98..195d8b3d9cfbf9b9363367f5604aaec029c68e20 100644 (file)
@@ -17,7 +17,8 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.               */
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA 02110-1301 USA.                                                      */
 /* ------------------------------------------------------------------------- */
 
 /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and
This page took 0.075504 seconds and 5 git commands to generate.