[i2c] [patch 2.6.20-rc1 3/6] other i2c code stops using i2c_adapter.dev
David Brownell
david-b at pacbell.net
Mon Dec 18 22:20:00 CET 2006
Update various I2C drivers and algorithms so they stop referencing
the soon-to-be-gone i2c_adapter.dev; they were using it for messages.
Also does the same for the i2c core.
Signed-off-by: David Brownell <dbrownell at users.sourceforge.net>
---
Updated per feedback from Jean.
drivers/i2c/algos/i2c-algo-bit.c | 8 ++--
drivers/i2c/algos/i2c-algo-pca.c | 3 +
drivers/i2c/algos/i2c-algo-pcf.c | 17 ++++++---
drivers/i2c/chips/isp1301_omap.c | 8 ++--
drivers/i2c/chips/tps65010.c | 6 ++-
drivers/i2c/i2c-core.c | 67 +++++++++++++++++++++++----------------
drivers/i2c/i2c-dev.c | 11 +++---
7 files changed, 73 insertions(+), 47 deletions(-)
Index: g26/drivers/i2c/i2c-core.c
===================================================================
--- g26.orig/drivers/i2c/i2c-core.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/i2c-core.c 2006-12-18 12:48:50.000000000 -0800
@@ -147,6 +147,7 @@ static struct device_attribute dev_attr_
*/
int i2c_add_adapter(struct i2c_adapter *adap)
{
+ struct device *dev = adap->class_dev.dev;
int id, res = 0;
struct list_head *item;
struct i2c_driver *driver;
@@ -196,7 +197,8 @@ int i2c_add_adapter(struct i2c_adapter *
if (res)
goto out_remove_name;
- dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
+ dev_dbg(dev, "adapter %s [%s] registered\n",
+ adap->class_dev.class_id, adap->name);
/* inform drivers of new adapters */
list_for_each(item,&drivers) {
@@ -225,6 +227,7 @@ out_list:
int i2c_del_adapter(struct i2c_adapter *adap)
{
+ struct device *dev = adap->class_dev.dev;
struct list_head *item, *_n;
struct i2c_adapter *adap_from_list;
struct i2c_driver *driver;
@@ -249,7 +252,7 @@ int i2c_del_adapter(struct i2c_adapter *
driver = list_entry(item, struct i2c_driver, list);
if (driver->detach_adapter)
if ((res = driver->detach_adapter(adap))) {
- dev_err(&adap->dev, "detach_adapter failed "
+ dev_err(dev, "detach_adapter failed "
"for driver [%s]\n",
driver->driver.name);
goto out_unlock;
@@ -262,7 +265,7 @@ int i2c_del_adapter(struct i2c_adapter *
client = list_entry(item, struct i2c_client, list);
if ((res=client->driver->detach_client(client))) {
- dev_err(&adap->dev, "detach_client failed for client "
+ dev_err(dev, "detach_client failed for client "
"[%s] at address 0x%02x\n", client->name,
client->addr);
goto out_unlock;
@@ -284,7 +287,8 @@ int i2c_del_adapter(struct i2c_adapter *
/* free dynamically allocated bus id */
idr_remove(&i2c_adapter_idr, adap->nr);
- dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
+ dev_dbg(dev, "adapter %s [%s] unregistered\n",
+ adap->class_dev.class_id, adap->name);
out_unlock:
mutex_unlock(&core_lists);
@@ -345,10 +349,13 @@ int i2c_del_driver(struct i2c_driver *dr
* afterwards.
*/
list_for_each(item1,&adapters) {
+ struct device *dev;
+
adap = list_entry(item1, struct i2c_adapter, list);
+ dev = adap->class_dev.dev;
if (driver->detach_adapter) {
if ((res = driver->detach_adapter(adap))) {
- dev_err(&adap->dev, "detach_adapter failed "
+ dev_err(dev, "detach_adapter failed "
"for driver [%s]\n",
driver->driver.name);
goto out_unlock;
@@ -358,11 +365,11 @@ int i2c_del_driver(struct i2c_driver *dr
client = list_entry(item2, struct i2c_client, list);
if (client->driver != driver)
continue;
- dev_dbg(&adap->dev, "detaching client [%s] "
+ dev_dbg(dev, "detaching client [%s] "
"at 0x%02x\n", client->name,
client->addr);
if ((res = driver->detach_client(client))) {
- dev_err(&adap->dev, "detach_client "
+ dev_err(dev, "detach_client "
"failed for client [%s] at "
"0x%02x\n", client->name,
client->addr);
@@ -426,7 +433,8 @@ int i2c_attach_client(struct i2c_client
snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id),
"%d-%04x", i2c_adapter_id(adapter), client->addr);
- dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n",
+ dev_dbg(adapter->class_dev.dev,
+ "client [%s] registering with bus id %s\n",
client->name, client->dev.bus_id);
res = device_register(&client->dev);
if (res)
@@ -438,7 +446,7 @@ int i2c_attach_client(struct i2c_client
if (adapter->client_register) {
if (adapter->client_register(client)) {
- dev_dbg(&adapter->dev, "client_register "
+ dev_dbg(adapter->class_dev.dev, "client_register "
"failed for client [%s] at 0x%02x\n",
client->name, client->addr);
}
@@ -452,7 +460,8 @@ out_unregister:
wait_for_completion(&client->released);
out_list:
list_del(&client->list);
- dev_err(&adapter->dev, "Failed to attach i2c client %s at 0x%02x "
+ dev_err(adapter->class_dev.dev,
+ "Failed to attach i2c client %s at 0x%02x "
"(%d)\n", client->name, client->addr, res);
out_unlock:
mutex_unlock(&adapter->clist_lock);
@@ -589,12 +598,13 @@ module_exit(i2c_exit);
int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg *msgs, int num)
{
+ struct device *dev = adap->class_dev.dev;
int ret;
if (adap->algo->master_xfer) {
#ifdef DEBUG
for (ret = 0; ret < num; ret++) {
- dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
+ dev_dbg(dev, "master_xfer[%d] %c, addr=0x%02x, "
"len=%d\n", ret, msgs[ret].flags & I2C_M_RD ?
'R' : 'W', msgs[ret].addr, msgs[ret].len);
}
@@ -606,7 +616,7 @@ int i2c_transfer(struct i2c_adapter * ad
return ret;
} else {
- dev_dbg(&adap->dev, "I2C level transfers not supported\n");
+ dev_dbg(dev, "I2C transfers not supported\n");
return -ENOSYS;
}
}
@@ -655,7 +665,8 @@ int i2c_control(struct i2c_client *clien
int ret = 0;
struct i2c_adapter *adap = client->adapter;
- dev_dbg(&client->adapter->dev, "i2c ioctl, cmd: 0x%x, arg: %#lx\n", cmd, arg);
+ dev_dbg(adap->class_dev.dev,"i2c ioctl, cmd: 0x%x, arg: %#lx\n",
+ cmd, arg);
switch (cmd) {
case I2C_RETRIES:
adap->retries = arg;
@@ -678,12 +689,12 @@ int i2c_control(struct i2c_client *clien
static int i2c_probe_address(struct i2c_adapter *adapter, int addr, int kind,
int (*found_proc) (struct i2c_adapter *, int, int))
{
+ struct device *dev = adapter->class_dev.dev;
int err;
/* Make sure the address is valid */
if (addr < 0x03 || addr > 0x77) {
- dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
- addr);
+ dev_warn(dev, "Invalid probe address 0x%02x\n", addr);
return -EINVAL;
}
@@ -712,8 +723,8 @@ static int i2c_probe_address(struct i2c_
err = 0;
if (err)
- dev_warn(&adapter->dev, "Client creation failed at 0x%x (%d)\n",
- addr, err);
+ dev_warn(dev, "found_proc %p failed at 0x%x (%d)\n",
+ found_proc, addr, err);
return err;
}
@@ -721,6 +732,7 @@ int i2c_probe(struct i2c_adapter *adapte
struct i2c_client_address_data *address_data,
int (*found_proc) (struct i2c_adapter *, int, int))
{
+ struct device *dev = adapter->class_dev.dev;
int i, err;
int adap_id = i2c_adapter_id(adapter);
@@ -735,7 +747,7 @@ int i2c_probe(struct i2c_adapter *adapte
i += 2) {
if (forces[kind][i] == adap_id
|| forces[kind][i] == ANY_I2C_BUS) {
- dev_dbg(&adapter->dev, "found force "
+ dev_dbg(dev, "found force "
"parameter for adapter %d, "
"addr 0x%02x, kind %d\n",
adap_id, forces[kind][i + 1],
@@ -756,7 +768,7 @@ int i2c_probe(struct i2c_adapter *adapte
&& address_data->normal_i2c[0] == I2C_CLIENT_END)
return 0;
- dev_warn(&adapter->dev, "SMBus Quick command not supported, "
+ dev_warn(dev, "SMBus Quick command not supported, "
"can't probe for chips\n");
return -1;
}
@@ -766,7 +778,7 @@ int i2c_probe(struct i2c_adapter *adapte
for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) {
if (address_data->probe[i] == adap_id
|| address_data->probe[i] == ANY_I2C_BUS) {
- dev_dbg(&adapter->dev, "found probe parameter for "
+ dev_dbg(dev, "found probe parameter for "
"adapter %d, addr 0x%02x\n", adap_id,
address_data->probe[i + 1]);
err = i2c_probe_address(adapter,
@@ -788,7 +800,7 @@ int i2c_probe(struct i2c_adapter *adapte
address_data->ignore[j] == ANY_I2C_BUS)
&& address_data->ignore[j + 1]
== address_data->normal_i2c[i]) {
- dev_dbg(&adapter->dev, "found ignore "
+ dev_dbg(dev, "found ignore "
"parameter for adapter %d, "
"addr 0x%02x\n", adap_id,
address_data->ignore[j + 1]);
@@ -799,7 +811,7 @@ int i2c_probe(struct i2c_adapter *adapte
if (ignore)
continue;
- dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
+ dev_dbg(dev, "found normal entry for adapter %d, "
"addr 0x%02x\n", adap_id,
address_data->normal_i2c[i]);
err = i2c_probe_address(adapter, address_data->normal_i2c[i],
@@ -1012,6 +1024,7 @@ static s32 i2c_smbus_xfer_emulated(struc
};
int i;
u8 partial_pec = 0;
+ struct device *dev = adapter->class_dev.dev;
msgbuf0[0] = command;
switch(size) {
@@ -1055,13 +1068,13 @@ static s32 i2c_smbus_xfer_emulated(struc
break;
case I2C_SMBUS_BLOCK_DATA:
if (read_write == I2C_SMBUS_READ) {
- dev_err(&adapter->dev, "Block read not supported "
+ dev_err(dev, "Block read not supported "
"under I2C emulation!\n");
return -1;
} else {
msg[0].len = data->block[0] + 2;
if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) {
- dev_err(&adapter->dev, "smbus_access called with "
+ dev_err(dev, "smbus_access called with "
"invalid block write size (%d)\n",
data->block[0]);
return -1;
@@ -1071,7 +1084,7 @@ static s32 i2c_smbus_xfer_emulated(struc
}
break;
case I2C_SMBUS_BLOCK_PROC_CALL:
- dev_dbg(&adapter->dev, "Block process call not supported "
+ dev_dbg(dev, "Block process call not supported "
"under I2C emulation!\n");
return -1;
case I2C_SMBUS_I2C_BLOCK_DATA:
@@ -1080,7 +1093,7 @@ static s32 i2c_smbus_xfer_emulated(struc
} else {
msg[0].len = data->block[0] + 1;
if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 1) {
- dev_err(&adapter->dev, "i2c_smbus_xfer_emulated called with "
+ dev_err(dev, "i2c_smbus_xfer_emulated called with "
"invalid block write size (%d)\n",
data->block[0]);
return -1;
@@ -1090,7 +1103,7 @@ static s32 i2c_smbus_xfer_emulated(struc
}
break;
default:
- dev_err(&adapter->dev, "smbus_access called with invalid size (%d)\n",
+ dev_err(dev, "smbus_access called with invalid size (%d)\n",
size);
return -1;
}
Index: g26/drivers/i2c/i2c-dev.c
===================================================================
--- g26.orig/drivers/i2c/i2c-dev.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/i2c-dev.c 2006-12-18 12:16:03.000000000 -0800
@@ -166,8 +166,9 @@ static int i2cdev_ioctl(struct inode *in
u8 __user **data_ptrs;
int i,datasize,res;
unsigned long funcs;
+ struct device *dev = client->adapter->class_dev.dev;
- dev_dbg(&client->adapter->dev, "ioctl, cmd=0x%02x, arg=0x%02lx\n",
+ dev_dbg(dev, "ioctl, cmd=0x%02x, arg=0x%02lx\n",
cmd, arg);
switch ( cmd ) {
@@ -286,7 +287,7 @@ static int i2cdev_ioctl(struct inode *in
(data_arg.size != I2C_SMBUS_BLOCK_DATA) &&
(data_arg.size != I2C_SMBUS_I2C_BLOCK_DATA) &&
(data_arg.size != I2C_SMBUS_BLOCK_PROC_CALL)) {
- dev_dbg(&client->adapter->dev,
+ dev_dbg(dev,
"size out of range (%x) in ioctl I2C_SMBUS.\n",
data_arg.size);
return -EINVAL;
@@ -295,7 +296,7 @@ static int i2cdev_ioctl(struct inode *in
so the check is valid if size==I2C_SMBUS_QUICK too. */
if ((data_arg.read_write != I2C_SMBUS_READ) &&
(data_arg.read_write != I2C_SMBUS_WRITE)) {
- dev_dbg(&client->adapter->dev,
+ dev_dbg(dev,
"read_write out of range (%x) in ioctl I2C_SMBUS.\n",
data_arg.read_write);
return -EINVAL;
@@ -314,7 +315,7 @@ static int i2cdev_ioctl(struct inode *in
data_arg.size, NULL);
if (data_arg.data == NULL) {
- dev_dbg(&client->adapter->dev,
+ dev_dbg(dev,
"data is NULL pointer in ioctl I2C_SMBUS.\n");
return -EINVAL;
}
@@ -414,7 +415,7 @@ static int i2cdev_attach_adapter(struct
return PTR_ERR(i2c_dev);
/* register this i2c device with the driver core */
- i2c_dev->dev = device_create(i2c_dev_class, &adap->dev,
+ i2c_dev->dev = device_create(i2c_dev_class, adap->class_dev.dev,
MKDEV(I2C_MAJOR, adap->nr),
"i2c-%d", adap->nr);
if (IS_ERR(i2c_dev->dev)) {
Index: g26/drivers/i2c/chips/tps65010.c
===================================================================
--- g26.orig/drivers/i2c/chips/tps65010.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/chips/tps65010.c 2006-12-18 12:16:03.000000000 -0800
@@ -499,7 +499,8 @@ tps65010_probe(struct i2c_adapter *bus,
unsigned long irqflags;
if (the_tps) {
- dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME);
+ dev_dbg(bus->class_dev.dev, "only one %s for now\n",
+ DRIVER_NAME);
return 0;
}
@@ -517,7 +518,8 @@ tps65010_probe(struct i2c_adapter *bus,
status = i2c_attach_client(&tps->client);
if (status < 0) {
- dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n",
+ dev_dbg(bus->class_dev.dev,
+ "can't attach %s to device %d, err %d\n",
DRIVER_NAME, address, status);
goto fail1;
}
Index: g26/drivers/i2c/chips/isp1301_omap.c
===================================================================
--- g26.orig/drivers/i2c/chips/isp1301_omap.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/chips/isp1301_omap.c 2006-12-18 12:50:11.000000000 -0800
@@ -1511,13 +1511,14 @@ static int isp1301_probe(struct i2c_adap
if (kind < 0) {
status = isp1301_get_u16(isp, ISP1301_VENDOR_ID);
if (status != I2C_VENDOR_ID_PHILIPS) {
- dev_dbg(&bus->dev, "addr %d not philips id: %d\n",
+ dev_dbg(bus->class_dev.dev,
+ "addr %d not philips id: %d\n",
address, status);
goto fail1;
}
status = isp1301_get_u16(isp, ISP1301_PRODUCT_ID);
if (status != I2C_PRODUCT_ID_PHILIPS_1301) {
- dev_dbg(&bus->dev, "%d not isp1301, %d\n",
+ dev_dbg(bus->class_dev.dev, "%d not isp1301, %d\n",
address, status);
goto fail1;
}
@@ -1525,7 +1526,8 @@ static int isp1301_probe(struct i2c_adap
status = i2c_attach_client(i2c);
if (status < 0) {
- dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n",
+ dev_dbg(bus->class_dev.dev,
+ "can't attach %s to device %d, err %d\n",
DRIVER_NAME, address, status);
fail1:
kfree(isp);
Index: g26/drivers/i2c/algos/i2c-algo-bit.c
===================================================================
--- g26.orig/drivers/i2c/algos/i2c-algo-bit.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/algos/i2c-algo-bit.c 2006-12-18 12:16:03.000000000 -0800
@@ -341,14 +341,16 @@ static int sendbytes(struct i2c_adapter
while (count > 0) {
c = *temp;
- DEB2(dev_dbg(&i2c_adap->dev, "sendbytes: writing %2.2X\n", c&0xff));
+ DEB2(dev_dbg(i2c_adap->class_dev.dev,
+ "sendbytes: writing %2.2X\n", c&0xff));
retval = i2c_outb(i2c_adap,c);
if ((retval>0) || (nak_ok && (retval==0))) { /* ok or ignored NAK */
count--;
temp++;
wrcount++;
} else { /* arbitration or no acknowledge */
- dev_err(&i2c_adap->dev, "sendbytes: error - bailout.\n");
+ dev_err(i2c_adap->class_dev.dev,
+ "sendbytes: error - bailout.\n");
i2c_stop(adap);
return (retval<0)? retval : -EFAULT;
/* got a better one ?? */
@@ -530,7 +532,7 @@ int i2c_bit_add_bus(struct i2c_adapter *
return -ENODEV;
}
- DEB2(dev_dbg(&adap->dev, "hw routines registered.\n"));
+ DEB2(dev_dbg(adap->class_dev.dev, "hw routines registered.\n"));
/* register new adapter to i2c module... */
adap->algo = &i2c_bit_algo;
Index: g26/drivers/i2c/algos/i2c-algo-pcf.c
===================================================================
--- g26.orig/drivers/i2c/algos/i2c-algo-pcf.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/algos/i2c-algo-pcf.c 2006-12-18 12:16:03.000000000 -0800
@@ -239,7 +239,8 @@ static int pcf_sendbytes(struct i2c_adap
int wrcount, status, timeout;
for (wrcount=0; wrcount<count; ++wrcount) {
- DEB2(dev_dbg(&i2c_adap->dev, "i2c_write: writing %2.2X\n",
+ DEB2(dev_dbg(i2c_adap->class_dev.dev,
+ "i2c_write: writing %2.2X\n",
buf[wrcount]&0xff));
i2c_outb(adap, buf[wrcount]);
timeout = wait_for_pin(adap, &status);
@@ -249,13 +250,15 @@ static int pcf_sendbytes(struct i2c_adap
return -EINTR;
}
i2c_stop(adap);
- dev_err(&i2c_adap->dev, "i2c_write: error - timeout.\n");
+ dev_err(i2c_adap->class_dev.dev,
+ "i2c_write: error - timeout.\n");
return -EREMOTEIO; /* got a better one ?? */
}
#ifndef STUB_I2C
if (status & I2C_PCF_LRB) {
i2c_stop(adap);
- dev_err(&i2c_adap->dev, "i2c_write: error - no ack.\n");
+ dev_err(i2c_adap->class_dev.dev,
+ "i2c_write: error - no ack.\n");
return -EREMOTEIO; /* got a better one ?? */
}
#endif
@@ -287,14 +290,16 @@ static int pcf_readbytes(struct i2c_adap
return -EINTR;
}
i2c_stop(adap);
- dev_err(&i2c_adap->dev, "pcf_readbytes timed out.\n");
+ dev_err(i2c_adap->class_dev.dev,
+ "pcf_readbytes timed out.\n");
return (-1);
}
#ifndef STUB_I2C
if ((status & I2C_PCF_LRB) && (i != count)) {
i2c_stop(adap);
- dev_err(&i2c_adap->dev, "i2c_read: i2c_inb, No ack.\n");
+ dev_err(i2c_adap->class_dev.dev,
+ "i2c_read: i2c_inb, No ack.\n");
return (-1);
}
#endif
@@ -471,7 +476,7 @@ int i2c_pcf_add_bus(struct i2c_adapter *
struct i2c_algo_pcf_data *pcf_adap = adap->algo_data;
int rval;
- DEB2(dev_dbg(&adap->dev, "hw routines registered.\n"));
+ DEB2(dev_dbg(adap->class_dev.dev, "hw routines registered.\n"));
/* register new adapter to i2c module... */
adap->algo = &pcf_algo;
Index: g26/drivers/i2c/algos/i2c-algo-pca.c
===================================================================
--- g26.orig/drivers/i2c/algos/i2c-algo-pca.c 2006-12-18 12:15:52.000000000 -0800
+++ g26/drivers/i2c/algos/i2c-algo-pca.c 2006-12-18 12:16:03.000000000 -0800
@@ -193,7 +193,8 @@ static int pca_xfer(struct i2c_adapter *
msleep(10);
}
if (state != 0xf8) {
- dev_dbg(&i2c_adap->dev, "bus is not idle. status is %#04x\n", state);
+ dev_dbg(i2c_adap->class_dev.dev,
+ "bus is not idle. status is %#04x\n", state);
return -EIO;
}
More information about the i2c
mailing list