Skip to content

Commit

Permalink
Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/ke…
Browse files Browse the repository at this point in the history
…rnel/git/jdelvare/staging

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
  • Loading branch information
torvalds committed Mar 28, 2012
2 parents 7bf97e1 + 41101a3 commit d2a2fc1
Show file tree
Hide file tree
Showing 21 changed files with 55 additions and 57 deletions.
1 change: 1 addition & 0 deletions Documentation/i2c/busses/i2c-i801
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions drivers/i2c/algos/i2c-algo-bit.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]>, Kyösti Mälkki
Expand Down Expand Up @@ -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)
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/algos/i2c-algo-pca.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/algos/i2c-algo-pcf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]> and
* Frodo Looijaard <[email protected]>, and also from Martin Bailey
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/algos/i2c-algo-pcf.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]> */
Expand Down
1 change: 1 addition & 0 deletions drivers/i2c/busses/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
27 changes: 15 additions & 12 deletions drivers/i2c/busses/i2c-i801.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Copyright (c) 1998 - 2002 Frodo Looijaard <[email protected]>,
Philip Edelbrock <[email protected]>, and Mark D. Studebaker
<[email protected]>
Copyright (C) 2007, 2008 Jean Delvare <[email protected]>
Copyright (C) 2007 - 2012 Jean Delvare <[email protected]>
Copyright (C) 2010 Intel Corporation,
David Woodhouse <[email protected]>
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -105,7 +106,7 @@
#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 */
Expand Down Expand Up @@ -145,6 +146,7 @@
#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;
Expand Down Expand Up @@ -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));

Expand Down Expand Up @@ -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;

Expand All @@ -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));
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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, }
};

Expand Down
10 changes: 5 additions & 5 deletions drivers/i2c/busses/i2c-isch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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),
Expand Down Expand Up @@ -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;
}
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/i2c-boardinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/i2c-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]>.
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/i2c-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/i2c-dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion drivers/i2c/i2c-smbus.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
13 changes: 1 addition & 12 deletions drivers/i2c/muxes/pca9541.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]>");
MODULE_DESCRIPTION("PCA9541 I2C master selector driver");
Expand Down
13 changes: 1 addition & 12 deletions drivers/i2c/muxes/pca954x.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]>");
MODULE_DESCRIPTION("PCA954x I2C mux/switch driver");
Expand Down
3 changes: 2 additions & 1 deletion include/linux/i2c-algo-bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]> and even
Expand Down
3 changes: 2 additions & 1 deletion include/linux/i2c-algo-pcf.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]> and even
Expand Down
3 changes: 2 additions & 1 deletion include/linux/i2c-dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion include/linux/i2c-mux.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion include/linux/i2c-smbus.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion include/linux/i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]> and
Expand Down

0 comments on commit d2a2fc1

Please sign in to comment.