Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
Pull i2c subsystem fixes from Jean Delvare. * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: i2c-i801: Fix comment i2c-i801: Simplify dependency towards GPIOLIB i2c-stub: Move to drivers/i2c
This commit is contained in:
commit
6b0cb4eef7
@ -8,6 +8,7 @@ obj-$(CONFIG_I2C_SMBUS) += i2c-smbus.o
|
||||
obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o
|
||||
obj-$(CONFIG_I2C_MUX) += i2c-mux.o
|
||||
obj-y += algos/ busses/ muxes/
|
||||
obj-$(CONFIG_I2C_STUB) += i2c-stub.o
|
||||
|
||||
ccflags-$(CONFIG_I2C_DEBUG_CORE) := -DDEBUG
|
||||
CFLAGS_i2c-core.o := -Wno-deprecated-declarations
|
||||
|
@ -81,7 +81,6 @@ config I2C_I801
|
||||
tristate "Intel 82801 (ICH/PCH)"
|
||||
depends on PCI
|
||||
select CHECK_SIGNATURE if X86 && DMI
|
||||
select GPIOLIB if I2C_MUX
|
||||
help
|
||||
If you say yes to this option, support will be included for the Intel
|
||||
801 family of mainboard I2C interfaces. Specifically, the following
|
||||
|
@ -85,7 +85,6 @@ obj-$(CONFIG_I2C_ACORN) += i2c-acorn.o
|
||||
obj-$(CONFIG_I2C_ELEKTOR) += i2c-elektor.o
|
||||
obj-$(CONFIG_I2C_PCA_ISA) += i2c-pca-isa.o
|
||||
obj-$(CONFIG_I2C_SIBYTE) += i2c-sibyte.o
|
||||
obj-$(CONFIG_I2C_STUB) += i2c-stub.o
|
||||
obj-$(CONFIG_SCx200_ACB) += scx200_acb.o
|
||||
obj-$(CONFIG_SCx200_I2C) += scx200_i2c.o
|
||||
|
||||
|
@ -82,7 +82,8 @@
|
||||
#include <linux/wait.h>
|
||||
#include <linux/err.h>
|
||||
|
||||
#if defined CONFIG_I2C_MUX || defined CONFIG_I2C_MUX_MODULE
|
||||
#if (defined CONFIG_I2C_MUX_GPIO || defined CONFIG_I2C_MUX_GPIO_MODULE) && \
|
||||
defined CONFIG_DMI
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/i2c-mux-gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
@ -192,7 +193,8 @@ struct i801_priv {
|
||||
int len;
|
||||
u8 *data;
|
||||
|
||||
#if defined CONFIG_I2C_MUX || defined CONFIG_I2C_MUX_MODULE
|
||||
#if (defined CONFIG_I2C_MUX_GPIO || defined CONFIG_I2C_MUX_GPIO_MODULE) && \
|
||||
defined CONFIG_DMI
|
||||
const struct i801_mux_config *mux_drvdata;
|
||||
struct platform_device *mux_pdev;
|
||||
#endif
|
||||
@ -921,7 +923,8 @@ static void __init input_apanel_init(void) {}
|
||||
static void __devinit i801_probe_optional_slaves(struct i801_priv *priv) {}
|
||||
#endif /* CONFIG_X86 && CONFIG_DMI */
|
||||
|
||||
#if defined CONFIG_I2C_MUX || defined CONFIG_I2C_MUX_MODULE
|
||||
#if (defined CONFIG_I2C_MUX_GPIO || defined CONFIG_I2C_MUX_GPIO_MODULE) && \
|
||||
defined CONFIG_DMI
|
||||
static struct i801_mux_config i801_mux_config_asus_z8_d12 = {
|
||||
.gpio_chip = "gpio_ich",
|
||||
.values = { 0x02, 0x03 },
|
||||
@ -1059,7 +1062,7 @@ static unsigned int __devinit i801_get_adapter_class(struct i801_priv *priv)
|
||||
|
||||
id = dmi_first_match(mux_dmi_table);
|
||||
if (id) {
|
||||
/* Remove from branch classes from trunk */
|
||||
/* Remove branch classes from trunk */
|
||||
mux_config = id->driver_data;
|
||||
for (i = 0; i < mux_config->n_values; i++)
|
||||
class &= ~mux_config->classes[i];
|
||||
|
@ -2,7 +2,7 @@
|
||||
i2c-stub.c - I2C/SMBus chip emulator
|
||||
|
||||
Copyright (c) 2004 Mark M. Hoffman <mhoffman@lightlink.com>
|
||||
Copyright (C) 2007 Jean Delvare <khali@linux-fr.org>
|
||||
Copyright (C) 2007, 2012 Jean Delvare <khali@linux-fr.org>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -51,8 +51,8 @@ struct stub_chip {
|
||||
static struct stub_chip *stub_chips;
|
||||
|
||||
/* Return negative errno on error. */
|
||||
static s32 stub_xfer(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
char read_write, u8 command, int size, union i2c_smbus_data * data)
|
||||
static s32 stub_xfer(struct i2c_adapter *adap, u16 addr, unsigned short flags,
|
||||
char read_write, u8 command, int size, union i2c_smbus_data *data)
|
||||
{
|
||||
s32 ret;
|
||||
int i, len;
|
||||
@ -78,14 +78,14 @@ static s32 stub_xfer(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
case I2C_SMBUS_BYTE:
|
||||
if (read_write == I2C_SMBUS_WRITE) {
|
||||
chip->pointer = command;
|
||||
dev_dbg(&adap->dev, "smbus byte - addr 0x%02x, "
|
||||
"wrote 0x%02x.\n",
|
||||
addr, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"smbus byte - addr 0x%02x, wrote 0x%02x.\n",
|
||||
addr, command);
|
||||
} else {
|
||||
data->byte = chip->words[chip->pointer++] & 0xff;
|
||||
dev_dbg(&adap->dev, "smbus byte - addr 0x%02x, "
|
||||
"read 0x%02x.\n",
|
||||
addr, data->byte);
|
||||
dev_dbg(&adap->dev,
|
||||
"smbus byte - addr 0x%02x, read 0x%02x.\n",
|
||||
addr, data->byte);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
@ -95,14 +95,14 @@ static s32 stub_xfer(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
if (read_write == I2C_SMBUS_WRITE) {
|
||||
chip->words[command] &= 0xff00;
|
||||
chip->words[command] |= data->byte;
|
||||
dev_dbg(&adap->dev, "smbus byte data - addr 0x%02x, "
|
||||
"wrote 0x%02x at 0x%02x.\n",
|
||||
addr, data->byte, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"smbus byte data - addr 0x%02x, wrote 0x%02x at 0x%02x.\n",
|
||||
addr, data->byte, command);
|
||||
} else {
|
||||
data->byte = chip->words[command] & 0xff;
|
||||
dev_dbg(&adap->dev, "smbus byte data - addr 0x%02x, "
|
||||
"read 0x%02x at 0x%02x.\n",
|
||||
addr, data->byte, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"smbus byte data - addr 0x%02x, read 0x%02x at 0x%02x.\n",
|
||||
addr, data->byte, command);
|
||||
}
|
||||
chip->pointer = command + 1;
|
||||
|
||||
@ -112,14 +112,14 @@ static s32 stub_xfer(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
case I2C_SMBUS_WORD_DATA:
|
||||
if (read_write == I2C_SMBUS_WRITE) {
|
||||
chip->words[command] = data->word;
|
||||
dev_dbg(&adap->dev, "smbus word data - addr 0x%02x, "
|
||||
"wrote 0x%04x at 0x%02x.\n",
|
||||
addr, data->word, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"smbus word data - addr 0x%02x, wrote 0x%04x at 0x%02x.\n",
|
||||
addr, data->word, command);
|
||||
} else {
|
||||
data->word = chip->words[command];
|
||||
dev_dbg(&adap->dev, "smbus word data - addr 0x%02x, "
|
||||
"read 0x%04x at 0x%02x.\n",
|
||||
addr, data->word, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"smbus word data - addr 0x%02x, read 0x%04x at 0x%02x.\n",
|
||||
addr, data->word, command);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
@ -132,17 +132,17 @@ static s32 stub_xfer(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
chip->words[command + i] &= 0xff00;
|
||||
chip->words[command + i] |= data->block[1 + i];
|
||||
}
|
||||
dev_dbg(&adap->dev, "i2c block data - addr 0x%02x, "
|
||||
"wrote %d bytes at 0x%02x.\n",
|
||||
addr, len, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"i2c block data - addr 0x%02x, wrote %d bytes at 0x%02x.\n",
|
||||
addr, len, command);
|
||||
} else {
|
||||
for (i = 0; i < len; i++) {
|
||||
data->block[1 + i] =
|
||||
chip->words[command + i] & 0xff;
|
||||
}
|
||||
dev_dbg(&adap->dev, "i2c block data - addr 0x%02x, "
|
||||
"read %d bytes at 0x%02x.\n",
|
||||
addr, len, command);
|
||||
dev_dbg(&adap->dev,
|
||||
"i2c block data - addr 0x%02x, read %d bytes at 0x%02x.\n",
|
||||
addr, len, command);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
@ -179,25 +179,24 @@ static int __init i2c_stub_init(void)
|
||||
int i, ret;
|
||||
|
||||
if (!chip_addr[0]) {
|
||||
printk(KERN_ERR "i2c-stub: Please specify a chip address\n");
|
||||
pr_err("i2c-stub: Please specify a chip address\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_CHIPS && chip_addr[i]; i++) {
|
||||
if (chip_addr[i] < 0x03 || chip_addr[i] > 0x77) {
|
||||
printk(KERN_ERR "i2c-stub: Invalid chip address "
|
||||
"0x%02x\n", chip_addr[i]);
|
||||
pr_err("i2c-stub: Invalid chip address 0x%02x\n",
|
||||
chip_addr[i]);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "i2c-stub: Virtual chip at 0x%02x\n",
|
||||
chip_addr[i]);
|
||||
pr_info("i2c-stub: Virtual chip at 0x%02x\n", chip_addr[i]);
|
||||
}
|
||||
|
||||
/* Allocate memory for all chips at once */
|
||||
stub_chips = kzalloc(i * sizeof(struct stub_chip), GFP_KERNEL);
|
||||
if (!stub_chips) {
|
||||
printk(KERN_ERR "i2c-stub: Out of memory\n");
|
||||
pr_err("i2c-stub: Out of memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -219,4 +218,3 @@ MODULE_LICENSE("GPL");
|
||||
|
||||
module_init(i2c_stub_init);
|
||||
module_exit(i2c_stub_exit);
|
||||
|
Loading…
Reference in New Issue
Block a user