Hi,
Here are some i2c driver changes for 2.5.66. These include changes that
I previously sent, but didn't end up in 2.5.65.
They do the following:
- hook up i2c devices with the driver core.
- remove some redundant fields from i2c structures now that the
driver and device structures are being used.
- fix up i2c drivers outside of the i2c tree.
- fix some other minor bugs.
The i2c bus, drivers, and devices are now all hooked up to the driver
core. On one of my boxes this looks like:
/sys/bus/i2c/
|-- devices
| `-- i2c_dev_0 -> ../../../devices/pci0/00:1f.3/i2c-0/i2c_dev_0
`-- drivers
`-- LM75 sensor
`-- i2c_dev_0 -> ../../../../devices/pci0/00:1f.3/i2c-0/i2c_dev_0
Please pull from: bk://kernel.bkbits.net/gregkh/linux/i2c-2.5
thanks,
greg k-h
drivers/acorn/char/i2c.c | 4
drivers/i2c/busses/i2c-ali15x3.c | 8 -
drivers/i2c/busses/i2c-amd756.c | 6 -
drivers/i2c/busses/i2c-amd8111.c | 4
drivers/i2c/busses/i2c-i801.c | 8 -
drivers/i2c/busses/i2c-isa.c | 4
drivers/i2c/busses/i2c-piix4.c | 8 -
drivers/i2c/chips/adm1021.c | 21 +--
drivers/i2c/chips/lm75.c | 14 +-
drivers/i2c/i2c-algo-bit.c | 13 +-
drivers/i2c/i2c-algo-pcf.c | 19 +--
drivers/i2c/i2c-core.c | 108 +++++++++---------
drivers/i2c/i2c-dev.c | 42 +++----
drivers/i2c/i2c-elektor.c | 10 +
drivers/i2c/i2c-elv.c | 6 -
drivers/i2c/i2c-philips-par.c | 4
drivers/i2c/i2c-proc.c | 180 +++++++-----------------------
drivers/i2c/i2c-velleman.c | 4
drivers/i2c/scx200_acb.c | 34 ++---
drivers/ieee1394/pcilynx.c | 4
drivers/media/video/adv7175.c | 22 ++-
drivers/media/video/bt819.c | 33 +++--
drivers/media/video/bt856.c | 27 ++--
drivers/media/video/bttv-if.c | 22 ++-
drivers/media/video/msp3400.c | 32 ++---
drivers/media/video/saa5249.c | 13 +-
drivers/media/video/saa7110.c | 19 +--
drivers/media/video/saa7111.c | 21 ++-
drivers/media/video/saa7134/saa7134-i2c.c | 10 +
drivers/media/video/saa7185.c | 19 +--
drivers/media/video/tda7432.c | 16 +-
drivers/media/video/tda9875.c | 16 +-
drivers/media/video/tda9887.c | 14 +-
drivers/media/video/tuner-3036.c | 6 -
drivers/media/video/tuner.c | 29 ++--
drivers/media/video/tvaudio.c | 44 +++----
drivers/video/matrox/i2c-matroxfb.c | 11 +
include/linux/i2c.h | 33 +++--
38 files changed, 444 insertions(+), 444 deletions(-)
-----
Greg Kroah-Hartman <[email protected]>:
o i2c: set up a "generic" i2c driver to prevent oopses when devices are registering
o i2c: fix typo that newer versions of gcc catch
o i2c: fix up drivers/video/matrox/i2c-matroxfb.c due to previous i2c changes
o i2c: fix up drivers/ieee1394/pcilynx.c due to previous i2c changes
o i2c: fix up drivers/acorn/char/i2c.c due to previous i2c changes
o i2c: fix up drivers/media/video/* due to previous i2c changes
o i2c: ugh, clean up lindent mess in i2c-proc.c::i2c_detect()
o i2c: fix up the chip driver names to play nice with sysfs
o i2c: actually register the i2c client device with the driver core
o i2c: Removed the name variable from i2c_client as the dev one should be used instead
o i2c: remove the data field from struct i2c_client
o i2c: add struct device to i2c_client structure
o i2c: remove *data from i2c_adapter, as dev->data should be used instead
o i2c: remove i2c_adapter->name and use dev->name instead
Petr Vandrovec <[email protected]>:
o Fix kobject_get oopses triggered by i2c in 2.5.65-bk
ChangeSet 1.889.357.8, 2003/03/21 16:39:04-08:00, [email protected]
[PATCH] i2c: fix up the chip driver names to play nice with sysfs
drivers/i2c/chips/adm1021.c | 2 +-
drivers/i2c/chips/lm75.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff -Nru a/drivers/i2c/chips/adm1021.c b/drivers/i2c/chips/adm1021.c
--- a/drivers/i2c/chips/adm1021.c Mon Mar 24 17:27:50 2003
+++ b/drivers/i2c/chips/adm1021.c Mon Mar 24 17:27:50 2003
@@ -144,7 +144,7 @@
/* This is the driver that will be inserted */
static struct i2c_driver adm1021_driver = {
.owner = THIS_MODULE,
- .name = "ADM1021, MAX1617 sensor driver",
+ .name = "ADM1021-MAX1617",
.id = I2C_DRIVERID_ADM1021,
.flags = I2C_DF_NOTIFY,
.attach_adapter = adm1021_attach_adapter,
diff -Nru a/drivers/i2c/chips/lm75.c b/drivers/i2c/chips/lm75.c
--- a/drivers/i2c/chips/lm75.c Mon Mar 24 17:27:50 2003
+++ b/drivers/i2c/chips/lm75.c Mon Mar 24 17:27:50 2003
@@ -82,7 +82,7 @@
/* This is the driver that will be inserted */
static struct i2c_driver lm75_driver = {
.owner = THIS_MODULE,
- .name = "LM75 sensor chip driver",
+ .name = "LM75 sensor",
.id = I2C_DRIVERID_LM75,
.flags = I2C_DF_NOTIFY,
.attach_adapter = lm75_attach_adapter,
ChangeSet 1.985.1.3, 2003/03/24 12:58:59-08:00, [email protected]
[PATCH] i2c: fix typo that newer versions of gcc catch.
drivers/i2c/scx200_acb.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff -Nru a/drivers/i2c/scx200_acb.c b/drivers/i2c/scx200_acb.c
--- a/drivers/i2c/scx200_acb.c Mon Mar 24 17:27:00 2003
+++ b/drivers/i2c/scx200_acb.c Mon Mar 24 17:27:00 2003
@@ -140,7 +140,7 @@
switch (iface->state) {
case state_idle:
- dev_warn(&iface->adapter.dev, "interrupt in idle state\n",);
+ dev_warn(&iface->adapter.dev, "interrupt in idle state\n");
break;
case state_address:
ChangeSet 1.889.357.5, 2003/03/21 16:07:30-08:00, [email protected]
[PATCH] i2c: remove the data field from struct i2c_client
It's no longer needed, as the struct device should be used instead.
Created i2c_get_clientdata() and i2c_set_clientdata() to access the data.
drivers/i2c/chips/adm1021.c | 15 +++++++--------
drivers/i2c/chips/lm75.c | 8 ++++----
include/linux/i2c.h | 11 ++++++++++-
3 files changed, 21 insertions(+), 13 deletions(-)
diff -Nru a/drivers/i2c/chips/adm1021.c b/drivers/i2c/chips/adm1021.c
--- a/drivers/i2c/chips/adm1021.c Mon Mar 24 17:28:15 2003
+++ b/drivers/i2c/chips/adm1021.c Mon Mar 24 17:28:15 2003
@@ -223,8 +223,8 @@
}
data = (struct adm1021_data *) (new_client + 1);
+ i2c_set_clientdata(new_client, data);
new_client->addr = address;
- new_client->data = data;
new_client->adapter = adapter;
new_client->driver = &adm1021_driver;
new_client->flags = 0;
@@ -354,8 +354,7 @@
int err;
- i2c_deregister_entry(((struct adm1021_data *) (client->data))->
- sysctl_id);
+ i2c_deregister_entry(((struct adm1021_data *) (i2c_get_clientdata(client)))->sysctl_id);
if ((err = i2c_detach_client(client))) {
printk
@@ -384,7 +383,7 @@
static void adm1021_update_client(struct i2c_client *client)
{
- struct adm1021_data *data = client->data;
+ struct adm1021_data *data = i2c_get_clientdata(client);
down(&data->update_lock);
@@ -435,7 +434,7 @@
static void adm1021_temp(struct i2c_client *client, int operation,
int ctl_name, int *nrels_mag, long *results)
{
- struct adm1021_data *data = client->data;
+ struct adm1021_data *data = i2c_get_clientdata(client);
if (operation == SENSORS_PROC_REAL_INFO)
*nrels_mag = 0;
@@ -462,7 +461,7 @@
static void adm1021_remote_temp(struct i2c_client *client, int operation,
int ctl_name, int *nrels_mag, long *results)
{
- struct adm1021_data *data = client->data;
+ struct adm1021_data *data = i2c_get_clientdata(client);
int prec = 0;
if (operation == SENSORS_PROC_REAL_INFO)
@@ -535,7 +534,7 @@
static void adm1021_die_code(struct i2c_client *client, int operation,
int ctl_name, int *nrels_mag, long *results)
{
- struct adm1021_data *data = client->data;
+ struct adm1021_data *data = i2c_get_clientdata(client);
if (operation == SENSORS_PROC_REAL_INFO)
*nrels_mag = 0;
@@ -551,7 +550,7 @@
static void adm1021_alarms(struct i2c_client *client, int operation,
int ctl_name, int *nrels_mag, long *results)
{
- struct adm1021_data *data = client->data;
+ struct adm1021_data *data = i2c_get_clientdata(client);
if (operation == SENSORS_PROC_REAL_INFO)
*nrels_mag = 0;
else if (operation == SENSORS_PROC_REAL_READ) {
diff -Nru a/drivers/i2c/chips/lm75.c b/drivers/i2c/chips/lm75.c
--- a/drivers/i2c/chips/lm75.c Mon Mar 24 17:28:15 2003
+++ b/drivers/i2c/chips/lm75.c Mon Mar 24 17:28:15 2003
@@ -142,8 +142,8 @@
}
data = (struct lm75_data *) (new_client + 1);
+ i2c_set_clientdata(new_client, data);
new_client->addr = address;
- new_client->data = data;
new_client->adapter = adapter;
new_client->driver = &lm75_driver;
new_client->flags = 0;
@@ -215,7 +215,7 @@
static int lm75_detach_client(struct i2c_client *client)
{
- struct lm75_data *data = client->data;
+ struct lm75_data *data = i2c_get_clientdata(client);
i2c_deregister_entry(data->sysctl_id);
i2c_detach_client(client);
@@ -263,7 +263,7 @@
static void lm75_update_client(struct i2c_client *client)
{
- struct lm75_data *data = client->data;
+ struct lm75_data *data = i2c_get_clientdata(client);
down(&data->update_lock);
@@ -286,7 +286,7 @@
static void lm75_temp(struct i2c_client *client, int operation, int ctl_name,
int *nrels_mag, long *results)
{
- struct lm75_data *data = client->data;
+ struct lm75_data *data = i2c_get_clientdata(client);
if (operation == SENSORS_PROC_REAL_INFO)
*nrels_mag = 1;
else if (operation == SENSORS_PROC_REAL_READ) {
diff -Nru a/include/linux/i2c.h b/include/linux/i2c.h
--- a/include/linux/i2c.h Mon Mar 24 17:28:15 2003
+++ b/include/linux/i2c.h Mon Mar 24 17:28:15 2003
@@ -167,12 +167,21 @@
alignment considerations */
struct i2c_adapter *adapter; /* the adapter we sit on */
struct i2c_driver *driver; /* and our access routines */
- void *data; /* for the clients */
int usage_count; /* How many accesses currently */
/* to the client */
struct device dev; /* the device structure */
};
#define to_i2c_client(d) container_of(d, struct i2c_client, dev)
+
+static inline void *i2c_get_clientdata (struct i2c_client *dev)
+{
+ return dev_get_drvdata (&dev->dev);
+}
+
+static inline void i2c_set_clientdata (struct i2c_client *dev, void *data)
+{
+ return dev_set_drvdata (&dev->dev, data);
+}
/*
* The following structs are for those who like to implement new bus drivers:
ChangeSet 1.889.357.4, 2003/03/21 16:00:39-08:00, [email protected]
i2c: add struct device to i2c_client structure
Not quite ready to hook it up to the driver core yet.
include/linux/i2c.h | 3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
diff -Nru a/include/linux/i2c.h b/include/linux/i2c.h
--- a/include/linux/i2c.h Mon Mar 24 17:28:24 2003
+++ b/include/linux/i2c.h Mon Mar 24 17:28:24 2003
@@ -170,8 +170,9 @@
void *data; /* for the clients */
int usage_count; /* How many accesses currently */
/* to the client */
+ struct device dev; /* the device structure */
};
-
+#define to_i2c_client(d) container_of(d, struct i2c_client, dev)
/*
* The following structs are for those who like to implement new bus drivers:
ChangeSet 1.985.1.4, 2003/03/24 15:16:12-08:00, [email protected]
[PATCH] i2c: set up a "generic" i2c driver to prevent oopses when devices are registering.
This is needed as we are still not using the driver core model for
matching up devices to drivers, but doing it by hand. Once that is
changed, this will not be needed.
drivers/i2c/i2c-core.c | 9 +++++++++
1 files changed, 9 insertions(+)
diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c Mon Mar 24 17:26:51 2003
+++ b/drivers/i2c/i2c-core.c Mon Mar 24 17:26:51 2003
@@ -65,6 +65,14 @@
return 0;
}
+static struct device_driver i2c_generic_driver = {
+ .name = "i2c",
+ .bus = &i2c_bus_type,
+ .probe = i2c_device_probe,
+ .remove = i2c_device_remove,
+};
+
+
/* ---------------------------------------------------
* registering functions
* ---------------------------------------------------
@@ -106,6 +114,7 @@
if (adap->dev.parent == NULL)
adap->dev.parent = &legacy_bus;
sprintf(adap->dev.bus_id, "i2c-%d", i);
+ adap->dev.driver = &i2c_generic_driver;
device_register(&adap->dev);
/* inform drivers of new adapters */
ChangeSet 1.985.1.2, 2003/03/23 00:06:48-08:00, [email protected]
i2c: fix up drivers/video/matrox/i2c-matroxfb.c due to previous i2c changes
drivers/video/matrox/i2c-matroxfb.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff -Nru a/drivers/video/matrox/i2c-matroxfb.c b/drivers/video/matrox/i2c-matroxfb.c
--- a/drivers/video/matrox/i2c-matroxfb.c Mon Mar 24 17:27:08 2003
+++ b/drivers/video/matrox/i2c-matroxfb.c Mon Mar 24 17:27:08 2003
@@ -111,7 +111,8 @@
b->mask.data = data;
b->mask.clock = clock;
b->adapter = matrox_i2c_adapter_template;
- sprintf(b->adapter.name, name, minor(minfo->fbcon.node));
+ snprintf(b->adapter.dev.name, DEVICE_NAME_SIZE, name,
+ minor(minfo->fbcon.node));
b->adapter.data = b;
b->adapter.algo_data = &b->bac;
b->bac = matrox_i2c_algo_template;
@@ -159,22 +160,22 @@
switch (ACCESS_FBINFO(chip)) {
case MGA_2064:
case MGA_2164:
- err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1B_DATA, DDC1B_CLK, "DDC:fb%u #0 on i2c-matroxfb");
+ err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1B_DATA, DDC1B_CLK, "DDC:fb%u #0");
break;
default:
- err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1_DATA, DDC1_CLK, "DDC:fb%u #0 on i2c-matroxfb");
+ err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1_DATA, DDC1_CLK, "DDC:fb%u #0");
break;
}
if (err)
goto fail_ddc1;
if (ACCESS_FBINFO(devflags.dualhead)) {
- err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1 on i2c-matroxfb");
+ err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1");
if (err == -ENODEV) {
printk(KERN_INFO "i2c-matroxfb: VGA->TV plug detected, DDC unavailable.\n");
} else if (err)
printk(KERN_INFO "i2c-matroxfb: Could not register secondary output i2c bus. Continuing anyway.\n");
/* Register maven bus even on G450/G550 */
- err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u on i2c-matroxfb");
+ err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u");
if (err)
printk(KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n");
}
ChangeSet 1.889.355.14, 2003/03/22 23:20:40-08:00, [email protected]
i2c: fix up drivers/media/video/* due to previous i2c changes.
drivers/media/video/adv7175.c | 22 ++++++++-------
drivers/media/video/bt819.c | 33 ++++++++++++----------
drivers/media/video/bt856.c | 27 ++++++++++--------
drivers/media/video/bttv-if.c | 22 ++++++++-------
drivers/media/video/msp3400.c | 32 +++++++++++----------
drivers/media/video/saa5249.c | 13 +++++---
drivers/media/video/saa7110.c | 19 +++++++-----
drivers/media/video/saa7111.c | 21 ++++++++------
drivers/media/video/saa7134/saa7134-i2c.c | 10 ++++--
drivers/media/video/saa7185.c | 19 +++++++-----
drivers/media/video/tda7432.c | 16 ++++++----
drivers/media/video/tda9875.c | 16 ++++++----
drivers/media/video/tda9887.c | 14 +++++----
drivers/media/video/tuner-3036.c | 6 ++--
drivers/media/video/tuner.c | 29 ++++++++++---------
drivers/media/video/tvaudio.c | 44 +++++++++++++++---------------
16 files changed, 194 insertions(+), 149 deletions(-)
diff -Nru a/drivers/media/video/adv7175.c b/drivers/media/video/adv7175.c
--- a/drivers/media/video/adv7175.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/adv7175.c Mon Mar 24 17:27:34 2003
@@ -170,6 +170,7 @@
client=kmalloc(sizeof(*client), GFP_KERNEL);
if(client == NULL)
return -ENOMEM;
+ memset(client, 0, sizeof(*client));
client_template.adapter = adap;
client_template.addr = addr;
@@ -190,9 +191,10 @@
// We should never get here!!!
dname = unknown_name;
}
- strcpy(client->name, dname);
+ strncpy(client->dev.name, dname, DEVICE_NAME_SIZE);
init_MUTEX(&encoder->lock);
encoder->client = client;
+ i2c_set_clientdata(client, encoder);
encoder->addr = addr;
encoder->norm = VIDEO_MODE_PAL;
encoder->input = 0;
@@ -201,7 +203,7 @@
for (i=1; i<x_common; i++) {
rv = i2c_smbus_write_byte(client,init_common[i]);
if (rv < 0) {
- printk(KERN_ERR "%s_attach: init error %d\n", client->name, rv);
+ printk(KERN_ERR "%s_attach: init error %d\n", client->dev.name, rv);
break;
}
}
@@ -211,7 +213,7 @@
i2c_smbus_write_byte_data(client,0x07, TR0MODE);
i2c_smbus_read_byte_data(client,0x12);
printk(KERN_INFO "%s_attach: %s rev. %d at 0x%02x\n",
- client->name, dname, rv & 1, client->addr);
+ client->dev.name, dname, rv & 1, client->addr);
}
i2c_attach_client(client);
@@ -229,7 +231,7 @@
static int adv717x_detach(struct i2c_client *client)
{
i2c_detach_client(client);
- kfree(client->data);
+ i2c_get_clientdata(client);
kfree(client);
return 0;
}
@@ -237,7 +239,7 @@
static int adv717x_command(struct i2c_client *client, unsigned int cmd,
void *arg)
{
- struct adv7175 *encoder = client->data;
+ struct adv7175 *encoder = i2c_get_clientdata(client);
int i, x_ntsc=13, x_pal=13;
/* x_ntsc is number of entries in init_ntsc -1 */
/* x_pal is number of entries in init_pal -1 */
@@ -297,7 +299,7 @@
default:
printk(KERN_ERR
"%s: illegal norm: %d\n",
- client->name, iarg);
+ client->dev.name, iarg);
return -EINVAL;
}
@@ -353,7 +355,7 @@
default:
printk(KERN_ERR
"%s: illegal input: %d\n",
- client->name, iarg);
+ client->dev.name, iarg);
return -EINVAL;
}
@@ -419,8 +421,10 @@
};
static struct i2c_client client_template = {
- .name = "adv7175_client",
- .driver = &i2c_driver_adv7175
+ .driver = &i2c_driver_adv7175,
+ .dev = {
+ .name = "adv7175_client",
+ },
};
static int adv717x_init(void)
diff -Nru a/drivers/media/video/bt819.c b/drivers/media/video/bt819.c
--- a/drivers/media/video/bt819.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/bt819.c Mon Mar 24 17:27:34 2003
@@ -128,7 +128,7 @@
struct timing *timing;
- decoder = client->data;
+ decoder = i2c_get_clientdata(client);
timing = &timing_data[decoder->norm];
init[3 * 2 - 1] = (((timing->vdelay >> 8) & 0x03) << 6) |
@@ -159,6 +159,7 @@
client = kmalloc(sizeof(*client), GFP_KERNEL);
if(client == NULL)
return -ENOMEM;
+ memset(client, 0, sizeof(*client));
client_template.adapter = adap;
client_template.addr = addr;
memcpy(client, &client_template, sizeof(*client));
@@ -170,8 +171,8 @@
}
memset(decoder, 0, sizeof(struct bt819));
- strcpy(client->name, "bt819");
- client->data = decoder;
+ strncpy(client->dev.name, "bt819", DEVICE_NAME_SIZE);
+ i2c_set_clientdata(client, decoder);
decoder->client = client;
decoder->addr = addr;
decoder->norm = VIDEO_MODE_NTSC;
@@ -186,10 +187,10 @@
i = bt819_init(client);
if (i < 0) {
printk(KERN_ERR "%s: bt819_attach: init status %d\n",
- decoder->client->name, i);
+ decoder->client->dev.name, i);
} else {
printk(KERN_INFO "%s: bt819_attach: chip version %x\n",
- decoder->client->name, i2c_smbus_read_byte_data(client,
+ decoder->client->dev.name, i2c_smbus_read_byte_data(client,
0x17) & 0x0f);
}
init_MUTEX(&decoder->lock);
@@ -205,7 +206,7 @@
static int bt819_detach(struct i2c_client *client)
{
i2c_detach_client(client);
- kfree(client->data);
+ i2c_get_clientdata(client);
kfree(client);
MOD_DEC_USE_COUNT;
return 0;
@@ -215,7 +216,7 @@
{
int temp;
- struct bt819 *decoder = client->data;
+ struct bt819 *decoder = i2c_get_clientdata(client);
//return 0;
if (!decoder->initialized) { // First call to bt819_init could be
@@ -268,7 +269,7 @@
*iarg = res;
DEBUG(printk(KERN_INFO "%s-bt819: get status %x\n",
- decoder->client->name, *iarg));
+ decoder->client->dev.name, *iarg));
}
break;
@@ -278,7 +279,7 @@
struct timing *timing;
DEBUG(printk(KERN_INFO "%s-bt819: set norm %x\n",
- decoder->client->name, *iarg));
+ decoder->client->dev.name, *iarg));
if (*iarg == VIDEO_MODE_NTSC) {
bt819_setbit(decoder, 0x01, 0, 1);
@@ -319,7 +320,7 @@
int *iarg = arg;
DEBUG(printk(KERN_INFO "%s-bt819: set input %x\n",
- decoder->client->name, *iarg));
+ decoder->client->dev.name, *iarg));
if (*iarg < 0 || *iarg > 7) {
return -EINVAL;
@@ -344,7 +345,7 @@
int *iarg = arg;
DEBUG(printk(KERN_INFO "%s-bt819: set output %x\n",
- decoder->client->name, *iarg));
+ decoder->client->dev.name, *iarg));
/* not much choice of outputs */
if (*iarg != 0) {
@@ -360,7 +361,7 @@
DEBUG(printk
(KERN_INFO "%s-bt819: enable output %x\n",
- decoder->client->name, *iarg));
+ decoder->client->dev.name, *iarg));
if (decoder->enable != enable) {
decoder->enable = enable;
@@ -381,7 +382,7 @@
DEBUG(printk
(KERN_INFO
"%s-bt819: set picture brightness %d contrast %d colour %d\n",
- decoder->client->name, pic->brightness,
+ decoder->client->dev.name, pic->brightness,
pic->contrast, pic->colour));
@@ -448,9 +449,11 @@
};
static struct i2c_client client_template = {
- .name = "bt819_client",
.id = -1,
- .driver = &i2c_driver_bt819
+ .driver = &i2c_driver_bt819,
+ .dev = {
+ .name = "bt819_client",
+ },
};
static int bt819_setup(void)
diff -Nru a/drivers/media/video/bt856.c b/drivers/media/video/bt856.c
--- a/drivers/media/video/bt856.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/bt856.c Mon Mar 24 17:27:34 2003
@@ -106,6 +106,7 @@
client = kmalloc(sizeof(*client), GFP_KERNEL);
if(client == NULL)
return -ENOMEM;
+ memset(client, 0, sizeof(*client));
client_template.adapter = adap;
client_template.addr = addr;
memcpy(client, &client_template, sizeof(*client));
@@ -123,14 +124,14 @@
memset(encoder, 0, sizeof(struct bt856));
- strcpy(client->name, "bt856");
+ strncpy(client->dev.name, "bt856", DEVICE_NAME_SIZE);
encoder->client = client;
- client->data = encoder;
+ i2c_set_clientdata(client, encoder);
encoder->addr = client->addr;
encoder->norm = VIDEO_MODE_NTSC;
encoder->enable = 1;
- DEBUG(printk(KERN_INFO "%s-bt856: attach\n", encoder->client->name));
+ DEBUG(printk(KERN_INFO "%s-bt856: attach\n", encoder->client->dev.name));
i2c_smbus_write_byte_data(client, 0xdc, 0x18);
encoder->reg[0xdc] = 0x18;
@@ -171,7 +172,7 @@
static int bt856_detach(struct i2c_client *client)
{
i2c_detach_client(client);
- kfree(client->data);
+ i2c_get_clientdata(client);
kfree(client);
MOD_DEC_USE_COUNT;
return 0;
@@ -180,7 +181,7 @@
static int bt856_command(struct i2c_client *client, unsigned int cmd,
void *arg)
{
- struct bt856 *encoder = client->data;
+ struct bt856 *encoder = i2c_get_clientdata(client);
switch (cmd) {
@@ -190,7 +191,7 @@
DEBUG(printk
(KERN_INFO "%s-bt856: get capabilities\n",
- encoder->client->name));
+ encoder->client->dev.name));
cap->flags
= VIDEO_ENCODER_PAL
@@ -205,7 +206,7 @@
int *iarg = arg;
DEBUG(printk(KERN_INFO "%s-bt856: set norm %d\n",
- encoder->client->name, *iarg));
+ encoder->client->dev.name, *iarg));
switch (*iarg) {
@@ -232,7 +233,7 @@
int *iarg = arg;
DEBUG(printk(KERN_INFO "%s-bt856: set input %d\n",
- encoder->client->name, *iarg));
+ encoder->client->dev.name, *iarg));
/* We only have video bus.
*iarg = 0: input is from bt819
@@ -268,7 +269,7 @@
int *iarg = arg;
DEBUG(printk(KERN_INFO "%s-bt856: set output %d\n",
- encoder->client->name, *iarg));
+ encoder->client->dev.name, *iarg));
/* not much choice of outputs */
if (*iarg != 0) {
@@ -285,7 +286,7 @@
DEBUG(printk
(KERN_INFO "%s-bt856: enable output %d\n",
- encoder->client->name, encoder->enable));
+ encoder->client->dev.name, encoder->enable));
}
break;
@@ -309,9 +310,11 @@
};
static struct i2c_client client_template = {
- .name = "bt856_client",
.id = -1,
- .driver = &i2c_driver_bt856
+ .driver = &i2c_driver_bt856,
+ .dev = {
+ .name = "bt856_client",
+ },
};
static int bt856_init(void)
diff -Nru a/drivers/media/video/bttv-if.c b/drivers/media/video/bttv-if.c
--- a/drivers/media/video/bttv-if.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/bttv-if.c Mon Mar 24 17:27:34 2003
@@ -194,7 +194,7 @@
static int attach_inform(struct i2c_client *client)
{
- struct bttv *btv = (struct bttv*)client->adapter->data;
+ struct bttv *btv = i2c_get_adapdata(client->adapter);
int i;
for (i = 0; i < I2C_CLIENTS_MAX; i++) {
@@ -207,13 +207,13 @@
bttv_call_i2c_clients(btv,TUNER_SET_TYPE,&btv->tuner_type);
if (bttv_verbose)
printk("bttv%d: i2c attach [client=%s,%s]\n",btv->nr,
- client->name, (i < I2C_CLIENTS_MAX) ? "ok" : "failed");
+ client->dev.name, (i < I2C_CLIENTS_MAX) ? "ok" : "failed");
return 0;
}
static int detach_inform(struct i2c_client *client)
{
- struct bttv *btv = (struct bttv*)client->adapter->data;
+ struct bttv *btv = i2c_get_adapdata(client->adapter);
int i;
for (i = 0; i < I2C_CLIENTS_MAX; i++) {
@@ -224,7 +224,7 @@
}
if (bttv_verbose)
printk("bttv%d: i2c detach [client=%s,%s]\n",btv->nr,
- client->name, (i < I2C_CLIENTS_MAX) ? "ok" : "failed");
+ client->dev.name, (i < I2C_CLIENTS_MAX) ? "ok" : "failed");
return 0;
}
@@ -261,15 +261,19 @@
static struct i2c_adapter bttv_i2c_adap_template = {
.owner = THIS_MODULE,
- .name = "bt848",
.id = I2C_HW_B_BT848,
.client_register = attach_inform,
.client_unregister = detach_inform,
+ .dev = {
+ .name = "bt848",
+ },
};
static struct i2c_client bttv_i2c_client_template = {
- .name = "bttv internal use only",
- .id = -1,
+ .id = -1,
+ .dev = {
+ .name = "bttv internal",
+ },
};
@@ -343,10 +347,10 @@
memcpy(&btv->i2c_client, &bttv_i2c_client_template,
sizeof(struct i2c_client));
- sprintf(btv->i2c_adap.name+strlen(btv->i2c_adap.name),
+ sprintf(btv->i2c_adap.dev.name+strlen(btv->i2c_adap.dev.name),
" #%d", btv->nr);
btv->i2c_algo.data = btv;
- btv->i2c_adap.data = btv;
+ i2c_set_adapdata(&btv->i2c_adap, btv);
btv->i2c_adap.algo_data = &btv->i2c_algo;
btv->i2c_client.adapter = &btv->i2c_adap;
diff -Nru a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c
--- a/drivers/media/video/msp3400.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/msp3400.c Mon Mar 24 17:27:34 2003
@@ -349,7 +349,7 @@
static void
msp3400c_set_scart(struct i2c_client *client, int in, int out)
{
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
if (-1 == scarts[out][in])
return;
@@ -411,7 +411,7 @@
static void msp3400c_setmode(struct i2c_client *client, int type)
{
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
int i;
dprintk("msp3400: setmode: %d\n",type);
@@ -471,7 +471,7 @@
{
static char *strmode[] = { "0", "mono", "stereo", "3",
"lang1", "5", "6", "7", "lang2" };
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
int nicam=0; /* channel source: FM/AM or nicam */
int src=0;
@@ -599,7 +599,7 @@
static void
msp3400c_restore_dfp(struct i2c_client *client)
{
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
int i;
for (i = 0; i < DFP_COUNT; i++) {
@@ -627,7 +627,7 @@
static int
autodetect_stereo(struct i2c_client *client)
{
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
int val;
int newstereo = msp->stereo;
int newnicam = msp->nicam_on;
@@ -727,7 +727,7 @@
/* stereo/multilang monitoring */
static void watch_stereo(struct i2c_client *client)
{
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
if (autodetect_stereo(client)) {
if (msp->stereo & VIDEO_SOUND_STEREO)
@@ -746,7 +746,7 @@
static int msp3400c_thread(void *data)
{
struct i2c_client *client = data;
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
struct CARRIER_DETECT *cd;
int count, max1,max2,val1,val2, val,this;
@@ -1002,7 +1002,7 @@
static int msp3410d_thread(void *data)
{
struct i2c_client *client = data;
- struct msp3400c *msp = client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
int mode,val,i,std;
#ifdef CONFIG_SMP
@@ -1226,9 +1226,11 @@
static struct i2c_client client_template =
{
- .name = "(unset)",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
+ .dev = {
+ .name = "(unset)",
+ },
};
static int msp_attach(struct i2c_adapter *adap, int addr,
@@ -1265,7 +1267,7 @@
for (i = 0; i < DFP_COUNT; i++)
msp->dfp_regs[i] = -1;
- c->data = msp;
+ i2c_set_clientdata(c, msp);
init_waitqueue_head(&msp->wq);
if (-1 == msp3400c_reset(c)) {
@@ -1291,7 +1293,7 @@
#endif
msp3400c_setvolume(c,msp->muted,msp->left,msp->right);
- sprintf(c->name,"MSP34%02d%c-%c%d",
+ snprintf(c->dev.name, DEVICE_NAME_SIZE, "MSP34%02d%c-%c%d",
(rev2>>8)&0xff, (rev1&0xff)+'@', ((rev1>>8)&0xff)+'@', rev2&0x1f);
msp->nicam = (((rev2>>8)&0xff) != 00) ? 1 : 0;
@@ -1310,7 +1312,7 @@
msp->wake_stereo.data = (unsigned long)msp;
/* hello world :-) */
- printk(KERN_INFO "msp34xx: init: chip=%s",c->name);
+ printk(KERN_INFO "msp34xx: init: chip=%s",c->dev.name);
if (msp->nicam)
printk(", has NICAM support");
printk("\n");
@@ -1340,7 +1342,7 @@
static int msp_detach(struct i2c_client *client)
{
DECLARE_MUTEX_LOCKED(sem);
- struct msp3400c *msp = (struct msp3400c*)client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
int i;
/* shutdown control thread */
@@ -1379,7 +1381,7 @@
static void msp_wake_thread(struct i2c_client *client)
{
- struct msp3400c *msp = (struct msp3400c*)client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
msp3400c_setvolume(client,msp->muted,0,0);
msp->watch_stereo=0;
@@ -1391,7 +1393,7 @@
static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg)
{
- struct msp3400c *msp = (struct msp3400c*)client->data;
+ struct msp3400c *msp = i2c_get_clientdata(client);
__u16 *sarg = arg;
#if 0
int *iarg = (int*)arg;
diff -Nru a/drivers/media/video/saa5249.c b/drivers/media/video/saa5249.c
--- a/drivers/media/video/saa5249.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/saa5249.c Mon Mar 24 17:27:34 2003
@@ -171,20 +171,21 @@
return -ENOMEM;
}
memset(t, 0, sizeof(*t));
- strcpy(client->name, IF_NAME);
+ strncpy(client->dev.name, IF_NAME, DEVICE_NAME_SIZE);
init_MUTEX(&t->lock);
/*
* Now create a video4linux device
*/
- client->data = vd=(struct video_device *)kmalloc(sizeof(struct video_device), GFP_KERNEL);
+ vd = (struct video_device *)kmalloc(sizeof(struct video_device), GFP_KERNEL);
if(vd==NULL)
{
kfree(t);
kfree(client);
return -ENOMEM;
}
+ i2c_set_clientdata(client, vd);
memcpy(vd, &saa_template, sizeof(*vd));
for (pgbuf = 0; pgbuf < NUM_DAUS; pgbuf++)
@@ -234,7 +235,7 @@
static int saa5249_detach(struct i2c_client *client)
{
- struct video_device *vd=client->data;
+ struct video_device *vd = i2c_get_clientdata(client);
i2c_detach_client(client);
video_unregister_device(vd);
kfree(vd->priv);
@@ -264,9 +265,11 @@
};
static struct i2c_client client_template = {
- .name = "(unset)",
.id = -1,
- .driver = &i2c_driver_videotext
+ .driver = &i2c_driver_videotext,
+ .dev = {
+ .name = "(unset)",
+ },
};
/*
diff -Nru a/drivers/media/video/saa7110.c b/drivers/media/video/saa7110.c
--- a/drivers/media/video/saa7110.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/saa7110.c Mon Mar 24 17:27:34 2003
@@ -163,6 +163,7 @@
client=kmalloc(sizeof(*client), GFP_KERNEL);
if(client == NULL)
return -ENOMEM;
+ memset(client, 0, sizeof(*client));
client_template.adapter = adap;
client_template.addr = addr;
memcpy(client, &client_template, sizeof(*client));
@@ -175,9 +176,9 @@
/* clear our private data */
memset(decoder, 0, sizeof(*decoder));
- strcpy(client->name, IF_NAME);
+ strncpy(client->dev.name, IF_NAME, DEVICE_NAME_SIZE);
decoder->client = client;
- client->data = decoder;
+ i2c_set_clientdata(client, decoder);
decoder->addr = addr;
decoder->norm = VIDEO_MODE_PAL;
decoder->input = 0;
@@ -189,7 +190,7 @@
rv = i2c_master_send(client, initseq, sizeof(initseq));
if (rv < 0)
- printk(KERN_ERR "%s_attach: init status %d\n", client->name, rv);
+ printk(KERN_ERR "%s_attach: init status %d\n", client->dev.name, rv);
else {
i2c_smbus_write_byte_data(client,0x21,0x16);
i2c_smbus_write_byte_data(client,0x0D,0x04);
@@ -213,7 +214,7 @@
static
int saa7110_detach(struct i2c_client *client)
{
- struct saa7110* decoder = client->data;
+ struct saa7110* decoder = i2c_get_clientdata(client);
i2c_detach_client(client);
@@ -232,7 +233,7 @@
static
int saa7110_command(struct i2c_client *client, unsigned int cmd, void *arg)
{
- struct saa7110* decoder = client->data;
+ struct saa7110* decoder = i2c_get_clientdata(client);
int v;
switch (cmd) {
@@ -251,7 +252,7 @@
case DECODER_GET_STATUS:
{
- struct saa7110* decoder = client->data;
+ struct saa7110* decoder = i2c_get_clientdata(client);
int status;
int res = 0;
@@ -390,9 +391,11 @@
.command = saa7110_command
};
static struct i2c_client client_template = {
- .name = "saa7110_client",
.id = -1,
- .driver = &i2c_driver_saa7110
+ .driver = &i2c_driver_saa7110,
+ .dev = {
+ .name = "saa7110_client",
+ },
};
static int saa7110_init(void)
diff -Nru a/drivers/media/video/saa7111.c b/drivers/media/video/saa7111.c
--- a/drivers/media/video/saa7111.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/saa7111.c Mon Mar 24 17:27:34 2003
@@ -120,6 +120,7 @@
client = kmalloc(sizeof(*client), GFP_KERNEL);
if(client == NULL)
return -ENOMEM;
+ memset(client, 0, sizeof(*client));
client_template.adapter = adap;
client_template.addr = addr;
memcpy(client, &client_template, sizeof(*client));
@@ -132,9 +133,9 @@
}
memset(decoder, 0, sizeof(*decoder));
- strcpy(client->name, "saa7111");
+ strncpy(client->dev.name, "saa7111", DEVICE_NAME_SIZE);
decoder->client = client;
- client->data = decoder;
+ i2c_set_clientdata(client, decoder);
decoder->addr = addr;
decoder->norm = VIDEO_MODE_NTSC;
decoder->input = 0;
@@ -147,10 +148,10 @@
i = i2c_master_send(client, init, sizeof(init));
if (i < 0) {
printk(KERN_ERR "%s_attach: init status %d\n",
- client->name, i);
+ client->dev.name, i);
} else {
printk(KERN_INFO "%s_attach: chip version %x\n",
- client->name, i2c_smbus_read_byte_data(client, 0x00) >> 4);
+ client->dev.name, i2c_smbus_read_byte_data(client, 0x00) >> 4);
}
init_MUTEX(&decoder->lock);
i2c_attach_client(client);
@@ -164,7 +165,7 @@
static int saa7111_detach(struct i2c_client *client)
{
- struct saa7111 *decoder = client->data;
+ struct saa7111 *decoder = i2c_get_clientdata(client);
i2c_detach_client(client);
kfree(decoder);
kfree(client);
@@ -175,7 +176,7 @@
static int saa7111_command(struct i2c_client *client, unsigned int cmd,
void *arg)
{
- struct saa7111 *decoder = client->data;
+ struct saa7111 *decoder = i2c_get_clientdata(client);
switch (cmd) {
@@ -187,7 +188,7 @@
for (i = 0; i < 32; i += 16) {
int j;
- printk("KERN_DEBUG %s: %03x", client->name,
+ printk("KERN_DEBUG %s: %03x", client->dev.name,
i);
for (j = 0; j < 16; ++j) {
printk(" %02x",
@@ -407,9 +408,11 @@
};
static struct i2c_client client_template = {
- .name = "saa7111_client",
.id = -1,
- .driver = &i2c_driver_saa7111
+ .driver = &i2c_driver_saa7111,
+ .dev = {
+ .name = "saa7111_client",
+ },
};
static int saa7111_init(void)
diff -Nru a/drivers/media/video/saa7134/saa7134-i2c.c b/drivers/media/video/saa7134/saa7134-i2c.c
--- a/drivers/media/video/saa7134/saa7134-i2c.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/saa7134/saa7134-i2c.c Mon Mar 24 17:27:34 2003
@@ -334,15 +334,19 @@
static struct i2c_adapter saa7134_adap_template = {
.owner = THIS_MODULE,
- .name = "saa7134",
.id = I2C_ALGO_SAA7134,
.algo = &saa7134_algo,
.client_register = attach_inform,
+ .dev = {
+ .name = "saa7134",
+ },
};
static struct i2c_client saa7134_client_template = {
- .name = "saa7134 internal",
.id = -1,
+ .dev = {
+ .name = "saa7134 internal",
+ },
};
/* ----------------------------------------------------------- */
@@ -410,7 +414,7 @@
int saa7134_i2c_register(struct saa7134_dev *dev)
{
dev->i2c_adap = saa7134_adap_template;
- strcpy(dev->i2c_adap.name,dev->name);
+ strncpy(dev->i2c_adap.dev.name, dev->name, DEVICE_NAME_SIZE);
dev->i2c_adap.algo_data = dev;
i2c_add_adapter(&dev->i2c_adap);
diff -Nru a/drivers/media/video/saa7185.c b/drivers/media/video/saa7185.c
--- a/drivers/media/video/saa7185.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/saa7185.c Mon Mar 24 17:27:34 2003
@@ -191,6 +191,7 @@
client = kmalloc(sizeof(*client), GFP_KERNEL);
if (client == NULL)
return -ENOMEM;
+ memset(client, 0, sizeof(*client));
client_template.adapter = adap;
client_template.addr = addr;
memcpy(client, &client_template, sizeof(*client));
@@ -202,9 +203,9 @@
memset(encoder, 0, sizeof(*encoder));
- strcpy(client->name, "saa7185");
+ strncpy(client->dev.name, "saa7185", DEVICE_NAME_SIZE);
encoder->client = client;
- client->data = encoder;
+ i2c_set_clientdata(client, encoder);
encoder->addr = addr;
encoder->norm = VIDEO_MODE_NTSC;
encoder->enable = 1;
@@ -215,11 +216,11 @@
sizeof(init_ntsc));
}
if (i < 0) {
- printk(KERN_ERR "%s_attach: init error %d\n", client->name,
+ printk(KERN_ERR "%s_attach: init error %d\n", client->dev.name,
i);
} else {
printk(KERN_INFO "%s_attach: chip version %d\n",
- client->name, i2c_smbus_read_byte(client) >> 5);
+ client->dev.name, i2c_smbus_read_byte(client) >> 5);
}
init_MUTEX(&encoder->lock);
i2c_attach_client(client);
@@ -233,7 +234,7 @@
static int saa7185_detach(struct i2c_client *client)
{
- struct saa7185 *encoder = client->data;
+ struct saa7185 *encoder = i2c_get_clientdata(client);
i2c_detach_client(client);
i2c_smbus_write_byte_data(client, 0x61, (encoder->reg[0x61]) | 0x40); /* SW: output off is active */
//i2c_smbus_write_byte_data(client, 0x3a, (encoder->reg[0x3a]) | 0x80); /* SW: color bar */
@@ -246,7 +247,7 @@
static int saa7185_command(struct i2c_client *client, unsigned int cmd,
void *arg)
{
- struct saa7185 *encoder = client->data;
+ struct saa7185 *encoder = i2c_get_clientdata(client);
switch (cmd) {
@@ -365,9 +366,11 @@
};
static struct i2c_client client_template = {
- .name = "saa7185_client",
.id = -1,
- .driver = &i2c_driver_saa7185
+ .driver = &i2c_driver_saa7185,
+ .dev = {
+ .name = "saa7185_client",
+ },
};
static int saa7185_init(void)
diff -Nru a/drivers/media/video/tda7432.c b/drivers/media/video/tda7432.c
--- a/drivers/media/video/tda7432.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/tda7432.c Mon Mar 24 17:27:34 2003
@@ -260,7 +260,7 @@
static int tda7432_set(struct i2c_client *client)
{
- struct tda7432 *t = client->data;
+ struct tda7432 *t = i2c_get_clientdata(client);
unsigned char buf[16];
d2printk("tda7432: In tda7432_set\n");
@@ -287,7 +287,7 @@
static void do_tda7432_init(struct i2c_client *client)
{
- struct tda7432 *t = client->data;
+ struct tda7432 *t = i2c_get_clientdata(client);
d2printk("tda7432: In tda7432_init\n");
t->input = TDA7432_STEREO_IN | /* Main (stereo) input */
@@ -328,11 +328,11 @@
memcpy(client,&client_template,sizeof(struct i2c_client));
client->adapter = adap;
client->addr = addr;
- client->data = t;
+ i2c_set_clientdata(client, t);
do_tda7432_init(client);
MOD_INC_USE_COUNT;
- strcpy(client->name,"TDA7432");
+ strncpy(client->dev.name, "TDA7432", DEVICE_NAME_SIZE);
printk(KERN_INFO "tda7432: init\n");
i2c_attach_client(client);
@@ -348,7 +348,7 @@
static int tda7432_detach(struct i2c_client *client)
{
- struct tda7432 *t = client->data;
+ struct tda7432 *t = i2c_get_clientdata(client);
do_tda7432_init(client);
i2c_detach_client(client);
@@ -361,7 +361,7 @@
static int tda7432_command(struct i2c_client *client,
unsigned int cmd, void *arg)
{
- struct tda7432 *t = client->data;
+ struct tda7432 *t = i2c_get_clientdata(client);
d2printk("tda7432: In tda7432_command\n");
switch (cmd) {
@@ -526,9 +526,11 @@
static struct i2c_client client_template =
{
- .name = "tda7432",
.id = -1,
.driver = &driver,
+ .dev = {
+ .name = "tda7432",
+ },
};
static int tda7432_init(void)
diff -Nru a/drivers/media/video/tda9875.c b/drivers/media/video/tda9875.c
--- a/drivers/media/video/tda9875.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/tda9875.c Mon Mar 24 17:27:34 2003
@@ -158,7 +158,7 @@
static void tda9875_set(struct i2c_client *client)
{
- struct tda9875 *tda = client->data;
+ struct tda9875 *tda = i2c_get_clientdata(client);
unsigned char a;
dprintk(KERN_DEBUG "tda9875_set(%04x,%04x,%04x,%04x)\n",tda->lvol,tda->rvol,tda->bass,tda->treble);
@@ -176,7 +176,7 @@
static void do_tda9875_init(struct i2c_client *client)
{
- struct tda9875 *t = client->data;
+ struct tda9875 *t = i2c_get_clientdata(client);
dprintk("In tda9875_init\n");
tda9875_write(client, TDA9875_CFG, 0xd0 ); /*reg de config 0 (reset)*/
tda9875_write(client, TDA9875_MSR, 0x03 ); /* Monitor 0b00000XXX*/
@@ -256,7 +256,7 @@
memcpy(client,&client_template,sizeof(struct i2c_client));
client->adapter = adap;
client->addr = addr;
- client->data = t;
+ i2c_set_clientdata(client, t);
if(!tda9875_checkit(adap,addr)) {
kfree(t);
@@ -265,7 +265,7 @@
do_tda9875_init(client);
MOD_INC_USE_COUNT;
- strcpy(client->name,"TDA9875");
+ strncpy(client->dev.name, "TDA9875", DEVICE_NAME_SIZE);
printk(KERN_INFO "tda9875: init\n");
i2c_attach_client(client);
@@ -281,7 +281,7 @@
static int tda9875_detach(struct i2c_client *client)
{
- struct tda9875 *t = client->data;
+ struct tda9875 *t = i2c_get_clientdata(client);
do_tda9875_init(client);
i2c_detach_client(client);
@@ -294,7 +294,7 @@
static int tda9875_command(struct i2c_client *client,
unsigned int cmd, void *arg)
{
- struct tda9875 *t = client->data;
+ struct tda9875 *t = i2c_get_clientdata(client);
dprintk("In tda9875_command...\n");
@@ -396,9 +396,11 @@
static struct i2c_client client_template =
{
- .name = "tda9875",
.id = -1,
.driver = &driver,
+ .dev = {
+ .name = "tda9875",
+ },
};
static int tda9875_init(void)
diff -Nru a/drivers/media/video/tda9887.c b/drivers/media/video/tda9887.c
--- a/drivers/media/video/tda9887.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/tda9887.c Mon Mar 24 17:27:34 2003
@@ -359,7 +359,7 @@
return -ENOMEM;
memset(t,0,sizeof(*t));
t->client = client_template;
- t->client.data = t;
+ i2c_set_clientdata(&t->client, t);
t->pinnacle_id = -1;
i2c_attach_client(&t->client);
@@ -376,12 +376,12 @@
case I2C_ALGO_BIT | I2C_HW_B_RIVA:
case I2C_ALGO_SAA7134:
printk("tda9887: probing %s i2c adapter [id=0x%x]\n",
- adap->name,adap->id);
+ adap->dev.name,adap->id);
rc = i2c_probe(adap, &addr_data, tda9887_attach);
break;
default:
printk("tda9887: ignoring %s i2c adapter [id=0x%x]\n",
- adap->name,adap->id);
+ adap->dev.name,adap->id);
rc = 0;
/* nothing */
}
@@ -390,7 +390,7 @@
static int tda9887_detach(struct i2c_client *client)
{
- struct tda9887 *t = (struct tda9887*)client->data;
+ struct tda9887 *t = i2c_get_clientdata(client);
i2c_detach_client(client);
kfree(t);
@@ -401,7 +401,7 @@
static int
tda9887_command(struct i2c_client *client, unsigned int cmd, void *arg)
{
- struct tda9887 *t = (struct tda9887*)client->data;
+ struct tda9887 *t = i2c_get_clientdata(client);
switch (cmd) {
@@ -456,9 +456,11 @@
};
static struct i2c_client client_template =
{
- .name = "tda9887",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
+ .dev = {
+ .name = "tda9887",
+ },
};
static int tda9887_init_module(void)
diff -Nru a/drivers/media/video/tuner-3036.c b/drivers/media/video/tuner-3036.c
--- a/drivers/media/video/tuner-3036.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/tuner-3036.c Mon Mar 24 17:27:34 2003
@@ -196,9 +196,11 @@
static struct i2c_client client_template =
{
- .name = "SAB3036",
.id = -1,
- .driver = &i2c_driver_tuner
+ .driver = &i2c_driver_tuner,
+ .dev = {
+ .name = "SAB3036",
+ },
};
int __init
diff -Nru a/drivers/media/video/tuner.c b/drivers/media/video/tuner.c
--- a/drivers/media/video/tuner.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/tuner.c Mon Mar 24 17:27:34 2003
@@ -226,7 +226,7 @@
{
unsigned char byte;
- struct tuner *t = (struct tuner*)c->data;
+ struct tuner *t = i2c_get_clientdata(c);
if (t->type == TUNER_MT2032)
return 0;
@@ -276,7 +276,7 @@
{
unsigned char buf[21];
int ret,xogc,xok=0;
- struct tuner *t = (struct tuner*)c->data;
+ struct tuner *t = i2c_get_clientdata(c);
buf[0]=0;
ret=i2c_master_send(c,buf,1);
@@ -517,7 +517,7 @@
{
unsigned char buf[21];
int lint_try,ret,sel,lock=0;
- struct tuner *t = (struct tuner*)c->data;
+ struct tuner *t = i2c_get_clientdata(c);
dprintk("mt2032_set_if_freq rfin=%d if1=%d if2=%d from=%d to=%d\n",rfin,if1,if2,from,to);
@@ -594,7 +594,7 @@
u8 config;
u16 div;
struct tunertype *tun;
- struct tuner *t = c->data;
+ struct tuner *t = i2c_get_clientdata(c);
unsigned char buffer[4];
int rc;
@@ -733,7 +733,7 @@
static void set_radio_freq(struct i2c_client *c, int freq)
{
struct tunertype *tun;
- struct tuner *t = (struct tuner*)c->data;
+ struct tuner *t = i2c_get_clientdata(c);
unsigned char buffer[4];
int rc,div;
@@ -794,16 +794,17 @@
if (NULL == (client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL)))
return -ENOMEM;
memcpy(client,&client_template,sizeof(struct i2c_client));
- client->data = t = kmalloc(sizeof(struct tuner),GFP_KERNEL);
+ t = kmalloc(sizeof(struct tuner),GFP_KERNEL);
if (NULL == t) {
kfree(client);
return -ENOMEM;
}
+ i2c_set_clientdata(client, t);
memset(t,0,sizeof(struct tuner));
if (type >= 0 && type < TUNERS) {
t->type = type;
printk("tuner(bttv): type forced to %d (%s) [insmod]\n",t->type,tuners[t->type].name);
- strncpy(client->name, tuners[t->type].name, sizeof(client->name));
+ strncpy(client->dev.name, tuners[t->type].name, DEVICE_NAME_SIZE);
} else {
t->type = -1;
}
@@ -830,12 +831,12 @@
case I2C_ALGO_SAA7134:
case I2C_ALGO_SAA7146:
printk("tuner: probing %s i2c adapter [id=0x%x]\n",
- adap->name,adap->id);
+ adap->dev.name,adap->id);
rc = i2c_probe(adap, &addr_data, tuner_attach);
break;
default:
printk("tuner: ignoring %s i2c adapter [id=0x%x]\n",
- adap->name,adap->id);
+ adap->dev.name,adap->id);
rc = 0;
/* nothing */
}
@@ -844,7 +845,7 @@
static int tuner_detach(struct i2c_client *client)
{
- struct tuner *t = (struct tuner*)client->data;
+ struct tuner *t = i2c_get_clientdata(client);
i2c_detach_client(client);
kfree(t);
@@ -856,7 +857,7 @@
static int
tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
{
- struct tuner *t = (struct tuner*)client->data;
+ struct tuner *t = i2c_get_clientdata(client);
int *iarg = (int*)arg;
#if 0
__u16 *sarg = (__u16*)arg;
@@ -875,7 +876,7 @@
t->type = *iarg;
printk("tuner: type set to %d (%s)\n",
t->type,tuners[t->type].name);
- strncpy(client->name, tuners[t->type].name, sizeof(client->name));
+ strncpy(client->dev.name, tuners[t->type].name, DEVICE_NAME_SIZE);
if (t->type == TUNER_MT2032)
mt2032_init(client);
break;
@@ -977,9 +978,11 @@
};
static struct i2c_client client_template =
{
- .name = "(tuner unset)",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
+ .dev = {
+ .name = "(tuner unset)",
+ },
};
static int tuner_init_module(void)
diff -Nru a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
--- a/drivers/media/video/tvaudio.c Mon Mar 24 17:27:34 2003
+++ b/drivers/media/video/tvaudio.c Mon Mar 24 17:27:34 2003
@@ -161,22 +161,22 @@
unsigned char buffer[2];
if (-1 == subaddr) {
- dprintk("%s: chip_write: 0x%x\n", chip->c.name, val);
+ dprintk("%s: chip_write: 0x%x\n", chip->c.dev.name, val);
chip->shadow.bytes[1] = val;
buffer[0] = val;
if (1 != i2c_master_send(&chip->c,buffer,1)) {
printk(KERN_WARNING "%s: I/O error (write 0x%x)\n",
- chip->c.name, val);
+ chip->c.dev.name, val);
return -1;
}
} else {
- dprintk("%s: chip_write: reg%d=0x%x\n", chip->c.name, subaddr, val);
+ dprintk("%s: chip_write: reg%d=0x%x\n", chip->c.dev.name, subaddr, val);
chip->shadow.bytes[subaddr+1] = val;
buffer[0] = subaddr;
buffer[1] = val;
if (2 != i2c_master_send(&chip->c,buffer,2)) {
printk(KERN_WARNING "%s: I/O error (write reg%d=0x%x)\n",
- chip->c.name, subaddr, val);
+ chip->c.dev.name, subaddr, val);
return -1;
}
}
@@ -201,10 +201,10 @@
if (1 != i2c_master_recv(&chip->c,&buffer,1)) {
printk(KERN_WARNING "%s: I/O error (read)\n",
- chip->c.name);
+ chip->c.dev.name);
return -1;
}
- dprintk("%s: chip_read: 0x%x\n",chip->c.name,buffer);
+ dprintk("%s: chip_read: 0x%x\n",chip->c.dev.name,buffer);
return buffer;
}
@@ -220,11 +220,11 @@
if (2 != i2c_transfer(chip->c.adapter,msgs,2)) {
printk(KERN_WARNING "%s: I/O error (read2)\n",
- chip->c.name);
+ chip->c.dev.name);
return -1;
}
dprintk("%s: chip_read2: reg%d=0x%x\n",
- chip->c.name,subaddr,read[0]);
+ chip->c.dev.name,subaddr,read[0]);
return read[0];
}
@@ -237,7 +237,7 @@
/* update our shadow register set; print bytes if (debug > 0) */
dprintk("%s: chip_cmd(%s): reg=%d, data:",
- chip->c.name,name,cmd->bytes[0]);
+ chip->c.dev.name,name,cmd->bytes[0]);
for (i = 1; i < cmd->count; i++) {
dprintk(" 0x%x",cmd->bytes[i]);
chip->shadow.bytes[i+cmd->bytes[0]] = cmd->bytes[i];
@@ -246,7 +246,7 @@
/* send data to the chip */
if (cmd->count != i2c_master_send(&chip->c,cmd->bytes,cmd->count)) {
- printk(KERN_WARNING "%s: I/O error (%s)\n", chip->c.name, name);
+ printk(KERN_WARNING "%s: I/O error (%s)\n", chip->c.dev.name, name);
return -1;
}
return 0;
@@ -273,19 +273,19 @@
#ifdef CONFIG_SMP
lock_kernel();
#endif
- daemonize("%s", chip->c.name);
+ daemonize("%s", chip->c.dev.name);
chip->thread = current;
#ifdef CONFIG_SMP
unlock_kernel();
#endif
- dprintk("%s: thread started\n", chip->c.name);
+ dprintk("%s: thread started\n", chip->c.dev.name);
if(chip->notify != NULL)
up(chip->notify);
for (;;) {
interruptible_sleep_on(&chip->wq);
- dprintk("%s: thread wakeup\n", chip->c.name);
+ dprintk("%s: thread wakeup\n", chip->c.dev.name);
if (chip->done || signal_pending(current))
break;
@@ -301,7 +301,7 @@
}
chip->thread = NULL;
- dprintk("%s: thread exiting\n", chip->c.name);
+ dprintk("%s: thread exiting\n", chip->c.dev.name);
if(chip->notify != NULL)
up(chip->notify);
@@ -316,7 +316,7 @@
if (mode == chip->prevmode)
return;
- dprintk("%s: thread checkmode\n", chip->c.name);
+ dprintk("%s: thread checkmode\n", chip->c.dev.name);
chip->prevmode = mode;
if (mode & VIDEO_SOUND_STEREO)
@@ -1339,7 +1339,7 @@
memcpy(&chip->c,&client_template,sizeof(struct i2c_client));
chip->c.adapter = adap;
chip->c.addr = addr;
- chip->c.data = chip;
+ i2c_set_clientdata(&chip->c, chip);
/* find description for the chip */
dprintk("tvaudio: chip found @ i2c-addr=0x%x\n", addr<<1);
@@ -1364,7 +1364,7 @@
(desc->flags & CHIP_HAS_INPUTSEL) ? " audiomux" : "");
/* fill required data structures */
- strcpy(chip->c.name,desc->name);
+ strncpy(chip->c.dev.name, desc->name, DEVICE_NAME_SIZE);
chip->type = desc-chiplist;
chip->shadow.count = desc->registers+1;
chip->prevmode = -1;
@@ -1421,7 +1421,7 @@
static int chip_detach(struct i2c_client *client)
{
- struct CHIPSTATE *chip = client->data;
+ struct CHIPSTATE *chip = i2c_get_clientdata(client);
del_timer(&chip->wt);
if (NULL != chip->thread) {
@@ -1447,10 +1447,10 @@
unsigned int cmd, void *arg)
{
__u16 *sarg = arg;
- struct CHIPSTATE *chip = client->data;
+ struct CHIPSTATE *chip = i2c_get_clientdata(client);
struct CHIPDESC *desc = chiplist + chip->type;
- dprintk("%s: chip_command 0x%x\n",chip->c.name,cmd);
+ dprintk("%s: chip_command 0x%x\n",chip->c.dev.name,cmd);
switch (cmd) {
case AUDC_SET_INPUT:
@@ -1558,9 +1558,11 @@
static struct i2c_client client_template =
{
- .name = "(unset)",
.flags = I2C_CLIENT_ALLOW_USE,
.driver = &driver,
+ .dev = {
+ .name = "(unset)",
+ },
};
static int audiochip_init_module(void)
ChangeSet 1.889.355.15, 2003/03/22 23:26:58-08:00, [email protected]
i2c: fix up drivers/acorn/char/i2c.c due to previous i2c changes
I'm not going to touch the other driver in this directory, as it will
need more than just minor fixups to get correct.
drivers/acorn/char/i2c.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletion(-)
diff -Nru a/drivers/acorn/char/i2c.c b/drivers/acorn/char/i2c.c
--- a/drivers/acorn/char/i2c.c Mon Mar 24 17:27:25 2003
+++ b/drivers/acorn/char/i2c.c Mon Mar 24 17:27:25 2003
@@ -303,11 +303,13 @@
}
static struct i2c_adapter ioc_ops = {
- .name = "IOC/IOMD",
.id = I2C_HW_B_IOC,
.algo_data = &ioc_data,
.client_register = ioc_client_reg,
.client_unregister = ioc_client_unreg
+ .dev = {
+ .name = "IOC/IOMD",
+ },
};
static int __init i2c_ioc_init(void)
ChangeSet 1.889.357.9, 2003/03/21 16:45:59-08:00, [email protected]
i2c: ugh, clean up lindent mess in i2c-proc.c::i2c_detect()
Yes, this function now goes beyond 80 columns, but it's almost
readable, while the previous version was not.
Also removed some #ifdefs
drivers/i2c/i2c-proc.c | 180 ++++++++++++-------------------------------------
1 files changed, 47 insertions(+), 133 deletions(-)
diff -Nru a/drivers/i2c/i2c-proc.c b/drivers/i2c/i2c-proc.c
--- a/drivers/i2c/i2c-proc.c Mon Mar 24 17:27:42 2003
+++ b/drivers/i2c/i2c-proc.c Mon Mar 24 17:27:42 2003
@@ -23,6 +23,8 @@
This driver puts entries in /proc/sys/dev/sensors for each I2C device
*/
+/* #define DEBUG 1 */
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
@@ -581,9 +583,9 @@
is_isa ? SENSORS_ISA_BUS : i2c_adapter_id(adapter);
/* Forget it if we can't probe using SMBUS_QUICK */
- if ((!is_isa)
- && !i2c_check_functionality(adapter,
- I2C_FUNC_SMBUS_QUICK)) return -1;
+ if ((!is_isa) &&
+ !i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK))
+ return -1;
for (addr = 0x00; addr <= (is_isa ? 0xffff : 0x7f); addr++) {
/* XXX: WTF is going on here??? */
@@ -594,31 +596,14 @@
/* If it is in one of the force entries, we don't do any
detection at all */
found = 0;
- for (i = 0;
- !found
- && (this_force =
- address_data->forces + i, this_force->force); i++) {
- for (j = 0;
- !found
- && (this_force->force[j] != SENSORS_I2C_END);
- j += 2) {
- if (
- ((adapter_id == this_force->force[j])
- ||
- ((this_force->
- force[j] == SENSORS_ANY_I2C_BUS)
- && !is_isa))
- && (addr == this_force->force[j + 1])) {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found force parameter for adapter %d, addr %04x\n",
- adapter_id, addr);
-#endif
- if (
- (err =
- found_proc(adapter, addr, 0,
- this_force->
- kind))) return err;
+ for (i = 0; !found && (this_force = address_data->forces + i, this_force->force); i++) {
+ for (j = 0; !found && (this_force->force[j] != SENSORS_I2C_END); j += 2) {
+ if ( ((adapter_id == this_force->force[j]) ||
+ ((this_force->force[j] == SENSORS_ANY_I2C_BUS) && !is_isa)) &&
+ (addr == this_force->force[j + 1]) ) {
+ dev_dbg(&adapter->dev, "found force parameter for adapter %d, addr %04x\n", adapter_id, addr);
+ if ((err = found_proc(adapter, addr, 0, this_force->kind)))
+ return err;
found = 1;
}
}
@@ -628,42 +613,22 @@
/* If this address is in one of the ignores, we can forget about it
right now */
- for (i = 0;
- !found
- && (address_data->ignore[i] != SENSORS_I2C_END);
- i += 2) {
- if (
- ((adapter_id == address_data->ignore[i])
- ||
- ((address_data->
- ignore[i] == SENSORS_ANY_I2C_BUS)
- && !is_isa))
- && (addr == address_data->ignore[i + 1])) {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found ignore parameter for adapter %d, "
- "addr %04x\n", adapter_id, addr);
-#endif
+ for (i = 0; !found && (address_data->ignore[i] != SENSORS_I2C_END); i += 2) {
+ if ( ((adapter_id == address_data->ignore[i]) ||
+ ((address_data->ignore[i] == SENSORS_ANY_I2C_BUS) &&
+ !is_isa)) &&
+ (addr == address_data->ignore[i + 1])) {
+ dev_dbg(&adapter->dev, "found ignore parameter for adapter %d, addr %04x\n", adapter_id, addr);
found = 1;
}
}
- for (i = 0;
- !found
- && (address_data->ignore_range[i] != SENSORS_I2C_END);
- i += 3) {
- if (
- ((adapter_id == address_data->ignore_range[i])
- ||
- ((address_data->
- ignore_range[i] ==
- SENSORS_ANY_I2C_BUS) & !is_isa))
- && (addr >= address_data->ignore_range[i + 1])
- && (addr <= address_data->ignore_range[i + 2])) {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found ignore_range parameter for adapter %d, "
- "addr %04x\n", adapter_id, addr);
-#endif
+ for (i = 0; !found && (address_data->ignore_range[i] != SENSORS_I2C_END); i += 3) {
+ if ( ((adapter_id == address_data->ignore_range[i]) ||
+ ((address_data-> ignore_range[i] == SENSORS_ANY_I2C_BUS) &
+ !is_isa)) &&
+ (addr >= address_data->ignore_range[i + 1]) &&
+ (addr <= address_data->ignore_range[i + 2])) {
+ dev_dbg(&adapter->dev, "found ignore_range parameter for adapter %d, addr %04x\n", adapter_id, addr);
found = 1;
}
}
@@ -673,68 +638,31 @@
/* Now, we will do a detection, but only if it is in the normal or
probe entries */
if (is_isa) {
- for (i = 0;
- !found
- && (address_data->normal_isa[i] !=
- SENSORS_ISA_END); i += 1) {
+ for (i = 0; !found && (address_data->normal_isa[i] != SENSORS_ISA_END); i += 1) {
if (addr == address_data->normal_isa[i]) {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found normal isa entry for adapter %d, "
- "addr %04x\n", adapter_id,
- addr);
-#endif
+ dev_dbg(&adapter->dev, "found normal isa entry for adapter %d, addr %04x\n", adapter_id, addr);
found = 1;
}
}
- for (i = 0;
- !found
- && (address_data->normal_isa_range[i] !=
- SENSORS_ISA_END); i += 3) {
- if ((addr >=
- address_data->normal_isa_range[i])
- && (addr <=
- address_data->normal_isa_range[i + 1])
- &&
- ((addr -
- address_data->normal_isa_range[i]) %
- address_data->normal_isa_range[i + 2] ==
- 0)) {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found normal isa_range entry for adapter %d, "
- "addr %04x", adapter_id, addr);
-#endif
+ for (i = 0; !found && (address_data->normal_isa_range[i] != SENSORS_ISA_END); i += 3) {
+ if ((addr >= address_data->normal_isa_range[i]) &&
+ (addr <= address_data->normal_isa_range[i + 1]) &&
+ ((addr - address_data->normal_isa_range[i]) % address_data->normal_isa_range[i + 2] == 0)) {
+ dev_dbg(&adapter->dev, "found normal isa_range entry for adapter %d, addr %04x", adapter_id, addr);
found = 1;
}
}
} else {
- for (i = 0;
- !found && (address_data->normal_i2c[i] !=
- SENSORS_I2C_END); i += 1) {
+ for (i = 0; !found && (address_data->normal_i2c[i] != SENSORS_I2C_END); i += 1) {
if (addr == address_data->normal_i2c[i]) {
found = 1;
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found normal i2c entry for adapter %d, "
- "addr %02x", adapter_id, addr);
-#endif
+ dev_dbg(&adapter->dev, "found normal i2c entry for adapter %d, addr %02x", adapter_id, addr);
}
}
- for (i = 0;
- !found
- && (address_data->normal_i2c_range[i] !=
- SENSORS_I2C_END); i += 2) {
- if ((addr >=
- address_data->normal_i2c_range[i])
- && (addr <=
- address_data->normal_i2c_range[i + 1]))
- {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found normal i2c_range entry for adapter %d, "
- "addr %04x\n", adapter_id, addr);
-#endif
+ for (i = 0; !found && (address_data->normal_i2c_range[i] != SENSORS_I2C_END); i += 2) {
+ if ((addr >= address_data->normal_i2c_range[i]) &&
+ (addr <= address_data->normal_i2c_range[i + 1])) {
+ dev_dbg(&adapter->dev, "found normal i2c_range entry for adapter %d, addr %04x\n", adapter_id, addr);
found = 1;
}
}
@@ -747,30 +675,17 @@
((address_data->
probe[i] == SENSORS_ANY_I2C_BUS) & !is_isa))
&& (addr == address_data->probe[i + 1])) {
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found probe parameter for adapter %d, "
- "addr %04x\n", adapter_id, addr);
-#endif
+ dev_dbg(&adapter->dev, "found probe parameter for adapter %d, addr %04x\n", adapter_id, addr);
found = 1;
}
}
- for (i = 0; !found &&
- (address_data->probe_range[i] != SENSORS_I2C_END);
- i += 3) {
- if (
- ((adapter_id == address_data->probe_range[i])
- ||
- ((address_data->probe_range[i] ==
- SENSORS_ANY_I2C_BUS) & !is_isa))
- && (addr >= address_data->probe_range[i + 1])
- && (addr <= address_data->probe_range[i + 2])) {
+ for (i = 0; !found && (address_data->probe_range[i] != SENSORS_I2C_END); i += 3) {
+ if ( ((adapter_id == address_data->probe_range[i]) ||
+ ((address_data->probe_range[i] == SENSORS_ANY_I2C_BUS) & !is_isa)) &&
+ (addr >= address_data->probe_range[i + 1]) &&
+ (addr <= address_data->probe_range[i + 2])) {
found = 1;
-#ifdef DEBUG
- printk
- (KERN_DEBUG "i2c-proc.o: found probe_range parameter for adapter %d, "
- "addr %04x\n", adapter_id, addr);
-#endif
+ dev_dbg(&adapter->dev, "found probe_range parameter for adapter %d, addr %04x\n", adapter_id, addr);
}
}
if (!found)
@@ -779,8 +694,7 @@
/* OK, so we really should examine this address. First check
whether there is some client here at all! */
if (is_isa ||
- (i2c_smbus_xfer
- (adapter, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL) >= 0))
+ (i2c_smbus_xfer (adapter, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL) >= 0))
if ((err = found_proc(adapter, addr, 0, -1)))
return err;
}
ChangeSet 1.889.357.2, 2003/03/21 12:45:28-08:00, [email protected]
i2c: remove i2c_adapter->name and use dev->name instead.
drivers/i2c/busses/i2c-ali15x3.c | 8 ++--
drivers/i2c/busses/i2c-amd756.c | 6 ++-
drivers/i2c/busses/i2c-amd8111.c | 4 +-
drivers/i2c/busses/i2c-i801.c | 8 ++--
drivers/i2c/busses/i2c-isa.c | 4 +-
drivers/i2c/busses/i2c-piix4.c | 8 ++--
drivers/i2c/i2c-algo-bit.c | 13 +++---
drivers/i2c/i2c-algo-pcf.c | 19 ++++------
drivers/i2c/i2c-core.c | 73 ++++++++++++++++-----------------------
drivers/i2c/i2c-dev.c | 17 +++------
drivers/i2c/i2c-elektor.c | 10 +++--
drivers/i2c/i2c-elv.c | 4 +-
drivers/i2c/i2c-philips-par.c | 4 +-
drivers/i2c/i2c-velleman.c | 4 +-
drivers/i2c/scx200_acb.c | 28 ++++++--------
include/linux/i2c.h | 1
16 files changed, 105 insertions(+), 106 deletions(-)
diff -Nru a/drivers/i2c/busses/i2c-ali15x3.c b/drivers/i2c/busses/i2c-ali15x3.c
--- a/drivers/i2c/busses/i2c-ali15x3.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/busses/i2c-ali15x3.c Mon Mar 24 17:28:41 2003
@@ -474,9 +474,11 @@
static struct i2c_adapter ali15x3_adapter = {
.owner = THIS_MODULE,
- .name = "unset",
.id = I2C_ALGO_SMBUS | I2C_HW_SMBUS_ALI15X3,
.algo = &smbus_algorithm,
+ .dev = {
+ .name = "unset",
+ },
};
static struct pci_device_id ali15x3_ids[] __devinitdata = {
@@ -500,8 +502,8 @@
/* set up the driverfs linkage to our parent device */
ali15x3_adapter.dev.parent = &dev->dev;
- sprintf(ali15x3_adapter.name, "SMBus ALI15X3 adapter at %04x",
- ali15x3_smba);
+ snprintf(ali15x3_adapter.dev.name, DEVICE_NAME_SIZE,
+ "SMBus ALI15X3 adapter at %04x", ali15x3_smba);
return i2c_add_adapter(&ali15x3_adapter);
}
diff -Nru a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c
--- a/drivers/i2c/busses/i2c-amd756.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/busses/i2c-amd756.c Mon Mar 24 17:28:41 2003
@@ -312,9 +312,11 @@
static struct i2c_adapter amd756_adapter = {
.owner = THIS_MODULE,
- .name = "unset",
.id = I2C_ALGO_SMBUS | I2C_HW_SMBUS_AMD756,
.algo = &smbus_algorithm,
+ .dev = {
+ .name = "unset",
+ },
};
enum chiptype { AMD756, AMD766, AMD768, NFORCE };
@@ -376,7 +378,7 @@
/* set up the driverfs linkage to our parent device */
amd756_adapter.dev.parent = &pdev->dev;
- sprintf(amd756_adapter.name,
+ snprintf(amd756_adapter.dev.name, DEVICE_NAME_SIZE,
"SMBus AMD75x adapter at %04x", amd756_ioport);
error = i2c_add_adapter(&amd756_adapter);
diff -Nru a/drivers/i2c/busses/i2c-amd8111.c b/drivers/i2c/busses/i2c-amd8111.c
--- a/drivers/i2c/busses/i2c-amd8111.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/busses/i2c-amd8111.c Mon Mar 24 17:28:41 2003
@@ -357,8 +357,8 @@
goto out_kfree;
smbus->adapter.owner = THIS_MODULE;
- sprintf(smbus->adapter.name,
- "SMBus2 AMD8111 adapter at %04x", smbus->base);
+ snprintf(smbus->adapter.dev.name, DEVICE_NAME_SIZE,
+ "SMBus2 AMD8111 adapter at %04x", smbus->base);
smbus->adapter.id = I2C_ALGO_SMBUS | I2C_HW_SMBUS_AMD8111;
smbus->adapter.algo = &smbus_algorithm;
smbus->adapter.algo_data = smbus;
diff -Nru a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
--- a/drivers/i2c/busses/i2c-i801.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/busses/i2c-i801.c Mon Mar 24 17:28:41 2003
@@ -546,9 +546,11 @@
static struct i2c_adapter i801_adapter = {
.owner = THIS_MODULE,
- .name = "unset",
.id = I2C_ALGO_SMBUS | I2C_HW_SMBUS_I801,
.algo = &smbus_algorithm,
+ .dev = {
+ .name = "unset",
+ },
};
static struct pci_device_id i801_ids[] __devinitdata = {
@@ -597,8 +599,8 @@
/* set up the driverfs linkage to our parent device */
i801_adapter.dev.parent = &dev->dev;
- sprintf(i801_adapter.name, "SMBus I801 adapter at %04x",
- i801_smba);
+ snprintf(i801_adapter.dev.name, DEVICE_NAME_SIZE,
+ "SMBus I801 adapter at %04x", i801_smba);
return i2c_add_adapter(&i801_adapter);
}
diff -Nru a/drivers/i2c/busses/i2c-isa.c b/drivers/i2c/busses/i2c-isa.c
--- a/drivers/i2c/busses/i2c-isa.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/busses/i2c-isa.c Mon Mar 24 17:28:41 2003
@@ -39,9 +39,11 @@
/* There can only be one... */
static struct i2c_adapter isa_adapter = {
.owner = THIS_MODULE,
- .name = "ISA main adapter",
.id = I2C_ALGO_ISA | I2C_HW_ISA,
.algo = &isa_algorithm,
+ .dev = {
+ .name = "ISA main adapter",
+ },
};
static int __init i2c_isa_init(void)
diff -Nru a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
--- a/drivers/i2c/busses/i2c-piix4.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/busses/i2c-piix4.c Mon Mar 24 17:28:41 2003
@@ -394,9 +394,11 @@
static struct i2c_adapter piix4_adapter = {
.owner = THIS_MODULE,
- .name = "unset",
.id = I2C_ALGO_SMBUS | I2C_HW_SMBUS_PIIX4,
.algo = &smbus_algorithm,
+ .dev = {
+ .name = "unset",
+ },
};
static struct pci_device_id piix4_ids[] __devinitdata = {
@@ -449,8 +451,8 @@
/* set up the driverfs linkage to our parent device */
piix4_adapter.dev.parent = &dev->dev;
- sprintf(piix4_adapter.name, "SMBus PIIX4 adapter at %04x",
- piix4_smba);
+ snprintf(piix4_adapter.dev.name, DEVICE_NAME_SIZE,
+ "SMBus PIIX4 adapter at %04x", piix4_smba);
retval = i2c_add_adapter(&piix4_adapter);
diff -Nru a/drivers/i2c/i2c-algo-bit.c b/drivers/i2c/i2c-algo-bit.c
--- a/drivers/i2c/i2c-algo-bit.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-algo-bit.c Mon Mar 24 17:28:41 2003
@@ -23,6 +23,8 @@
/* $Id: i2c-algo-bit.c,v 1.44 2003/01/21 08:08:16 kmalkki Exp $ */
+/* #define DEBUG 1 */
+
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
@@ -338,16 +340,14 @@
while (count > 0) {
c = *temp;
- DEB2(printk(KERN_DEBUG "i2c-algo-bit.o: %s sendbytes: writing %2.2X\n",
- i2c_adap->name, c&0xff));
+ DEB2(dev_dbg(&i2c_adap->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 */
- printk(KERN_ERR "i2c-algo-bit.o: %s sendbytes: error - bailout.\n",
- i2c_adap->name);
+ dev_err(&i2c_adap->dev, "sendbytes: error - bailout.\n");
i2c_stop(adap);
return (retval<0)? retval : -EFAULT;
/* got a better one ?? */
@@ -527,13 +527,12 @@
struct i2c_algo_bit_data *bit_adap = adap->algo_data;
if (bit_test) {
- int ret = test_bus(bit_adap, adap->name);
+ int ret = test_bus(bit_adap, adap->dev.name);
if (ret<0)
return -ENODEV;
}
- DEB2(printk(KERN_DEBUG "i2c-algo-bit.o: hw routines for %s registered.\n",
- adap->name));
+ DEB2(dev_dbg(&adap->dev, "hw routines registered.\n"));
/* register new adapter to i2c module... */
diff -Nru a/drivers/i2c/i2c-algo-pcf.c b/drivers/i2c/i2c-algo-pcf.c
--- a/drivers/i2c/i2c-algo-pcf.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-algo-pcf.c Mon Mar 24 17:28:41 2003
@@ -27,6 +27,8 @@
messages, proper stop/repstart signaling during receive,
added detect code */
+/* #define DEBUG 1 */ /* to pick up dev_dbg calls */
+
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
@@ -222,21 +224,19 @@
int wrcount, status, timeout;
for (wrcount=0; wrcount<count; ++wrcount) {
- DEB2(printk(KERN_DEBUG "i2c-algo-pcf.o: %s i2c_write: writing %2.2X\n",
- i2c_adap->name, buf[wrcount]&0xff));
+ DEB2(dev_dbg(&i2c_adap->dev, "i2c_write: writing %2.2X\n",
+ buf[wrcount]&0xff));
i2c_outb(adap, buf[wrcount]);
timeout = wait_for_pin(adap, &status);
if (timeout) {
i2c_stop(adap);
- printk(KERN_ERR "i2c-algo-pcf.o: %s i2c_write: "
- "error - timeout.\n", i2c_adap->name);
+ dev_err(&i2c_adap->dev, "i2c_write: error - timeout.\n");
return -EREMOTEIO; /* got a better one ?? */
}
#ifndef STUB_I2C
if (status & I2C_PCF_LRB) {
i2c_stop(adap);
- printk(KERN_ERR "i2c-algo-pcf.o: %s i2c_write: "
- "error - no ack.\n", i2c_adap->name);
+ dev_err(&i2c_adap->dev, "i2c_write: error - no ack.\n");
return -EREMOTEIO; /* got a better one ?? */
}
#endif
@@ -263,14 +263,14 @@
if (wait_for_pin(adap, &status)) {
i2c_stop(adap);
- printk(KERN_ERR "i2c-algo-pcf.o: pcf_readbytes timed out.\n");
+ dev_err(&i2c_adap->dev, "pcf_readbytes timed out.\n");
return (-1);
}
#ifndef STUB_I2C
if ((status & I2C_PCF_LRB) && (i != count)) {
i2c_stop(adap);
- printk(KERN_ERR "i2c-algo-pcf.o: i2c_read: i2c_inb, No ack.\n");
+ dev_err(&i2c_adap->dev, "i2c_read: i2c_inb, No ack.\n");
return (-1);
}
#endif
@@ -445,8 +445,7 @@
struct i2c_algo_pcf_data *pcf_adap = adap->algo_data;
int rval;
- DEB2(printk(KERN_DEBUG "i2c-algo-pcf.o: hw routines for %s registered.\n",
- adap->name));
+ DEB2(dev_dbg(&adap->dev, "hw routines registered.\n"));
/* register new adapter to i2c module... */
diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-core.c Mon Mar 24 17:28:41 2003
@@ -23,6 +23,8 @@
/* $Id: i2c-core.c,v 1.95 2003/01/22 05:25:08 kmalkki Exp $ */
+/* #define DEBUG 1 */ /* needed to pick up the dev_dbg() calls */
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
@@ -82,9 +84,8 @@
if (NULL == adapters[i])
break;
if (I2C_ADAP_MAX == i) {
- printk(KERN_WARNING
- " i2c-core.o: register_adapter(%s) - enlarge I2C_ADAP_MAX.\n",
- adap->name);
+ dev_warn(&adap->dev,
+ "register_adapter - enlarge I2C_ADAP_MAX.\n");
res = -ENOMEM;
goto out_unlock;
}
@@ -105,7 +106,6 @@
if (adap->dev.parent == NULL)
adap->dev.parent = &legacy_bus;
sprintf(adap->dev.bus_id, "i2c-%d", i);
- strcpy(adap->dev.name, "i2c controller");
device_register(&adap->dev);
/* inform drivers of new adapters */
@@ -116,8 +116,7 @@
drivers[j]->attach_adapter(adap);
up(&core_lists);
- DEB(printk(KERN_DEBUG "i2c-core.o: adapter %s registered as adapter %d.\n",
- adap->name,i));
+ DEB(dev_dbg(&adap->dev, "registered as adapter %d.\n", i));
out_unlock:
up(&core_lists);
@@ -134,8 +133,7 @@
if (adap == adapters[i])
break;
if (I2C_ADAP_MAX == i) {
- printk( KERN_WARNING "i2c-core.o: unregister_adapter adap [%s] not found.\n",
- adap->name);
+ dev_warn(&adap->dev, "unregister_adapter adap not found.\n");
res = -ENODEV;
goto out_unlock;
}
@@ -148,9 +146,9 @@
for (j = 0; j < I2C_DRIVER_MAX; j++)
if (drivers[j] && (drivers[j]->flags & I2C_DF_DUMMY))
if ((res = drivers[j]->attach_adapter(adap))) {
- printk(KERN_WARNING "i2c-core.o: can't detach adapter %s "
+ dev_warn(&adap->dev, "can't detach adapter"
"while detaching driver %s: driver not "
- "detached!",adap->name,drivers[j]->name);
+ "detached!", drivers[j]->name);
goto out_unlock;
}
@@ -164,10 +162,10 @@
* must be deleted, as this would cause invalid states.
*/
if ((res=client->driver->detach_client(client))) {
- printk(KERN_ERR "i2c-core.o: adapter %s not "
+ dev_err(&adap->dev, "adapter not "
"unregistered, because client at "
"address %02x can't be detached. ",
- adap->name, client->addr);
+ client->addr);
goto out_unlock;
}
}
@@ -180,7 +178,7 @@
adapters[i] = NULL;
- DEB(printk(KERN_DEBUG "i2c-core.o: adapter unregistered: %s\n",adap->name));
+ DEB(dev_dbg(&adap->dev, "adapter unregistered\n"));
out_unlock:
up(&core_lists);
@@ -272,8 +270,7 @@
struct i2c_adapter *adap = adapters[k];
if (adap == NULL) /* skip empty entries. */
continue;
- DEB2(printk(KERN_DEBUG "i2c-core.o: examining adapter %s:\n",
- adap->name));
+ DEB2(dev_dbg(&adap->dev, "examining adapter\n"));
if (driver->flags & I2C_DF_DUMMY) {
/* DUMMY drivers do not register their clients, so we have to
* use a trick here: we call driver->attach_adapter to
@@ -281,11 +278,10 @@
* this or hell will break loose...
*/
if ((res = driver->attach_adapter(adap))) {
- printk(KERN_WARNING "i2c-core.o: while unregistering "
- "dummy driver %s, adapter %s could "
+ dev_warn(&adap->dev, "while unregistering "
+ "dummy driver %s, adapter could "
"not be detached properly; driver "
- "not unloaded!",driver->name,
- adap->name);
+ "not unloaded!",driver->name);
goto out_unlock;
}
} else {
@@ -296,19 +292,16 @@
DEB2(printk(KERN_DEBUG "i2c-core.o: "
"detaching client %s:\n",
client->name));
- if ((res = driver->
- detach_client(client)))
- {
- printk(KERN_ERR "i2c-core.o: while "
+ if ((res = driver->detach_client(client))) {
+ dev_err(&adap->dev, "while "
"unregistering driver "
"`%s', the client at "
"address %02x of "
- "adapter `%s' could not "
+ "adapter could not "
"be detached; driver "
"not unloaded!",
driver->name,
- client->addr,
- adap->name);
+ client->addr);
goto out_unlock;
}
}
@@ -374,16 +367,14 @@
if (adapter->client_register) {
if (adapter->client_register(client)) {
- printk(KERN_DEBUG
- "i2c-core.o: warning: client_register seems "
- "to have failed for client %02x at adapter %s\n",
- client->addr, adapter->name);
+ dev_warn(&adapter->dev, "warning: client_register "
+ "seems to have failed for client %02x\n",
+ client->addr);
}
}
- DEB(printk(KERN_DEBUG
- "i2c-core.o: client [%s] registered to adapter [%s] "
- "(pos. %d).\n", client->name, adapter->name, i));
+ DEB(dev_dbg(&adapter->dev, "client [%s] registered to adapter "
+ "(pos. %d).\n", client->name, i));
if (client->flags & I2C_CLIENT_ALLOW_USE)
client->usage_count = 0;
@@ -579,7 +570,7 @@
seq_printf(s, "dummy ");
seq_printf(s, "\t%-32s\t%-32s\n",
- adapter->name, adapter->algo->name);
+ adapter->dev.name, adapter->algo->name);
}
up(&core_lists);
@@ -688,8 +679,7 @@
int ret;
if (adap->algo->master_xfer) {
- DEB2(printk(KERN_DEBUG "i2c-core.o: master_xfer: %s with %d msgs.\n",
- adap->name,num));
+ DEB2(dev_dbg(&adap->dev, "master_xfer: with %d msgs.\n", num));
down(&adap->bus);
ret = adap->algo->master_xfer(adap,msgs,num);
@@ -697,8 +687,7 @@
return ret;
} else {
- printk(KERN_ERR "i2c-core.o: I2C adapter %04x: I2C level transfers not supported\n",
- adap->id);
+ dev_err(&adap->dev, "I2C level transfers not supported\n");
return -ENOSYS;
}
}
@@ -715,8 +704,8 @@
msg.len = count;
(const char *)msg.buf = buf;
- DEB2(printk(KERN_DEBUG "i2c-core.o: master_send: writing %d bytes on %s.\n",
- count,client->adapter->name));
+ DEB2(dev_dbg(&client->adapter->dev, "master_send: writing %d bytes.\n",
+ count));
down(&adap->bus);
ret = adap->algo->master_xfer(adap,&msg,1);
@@ -745,8 +734,8 @@
msg.len = count;
msg.buf = buf;
- DEB2(printk(KERN_DEBUG "i2c-core.o: master_recv: reading %d bytes on %s.\n",
- count,client->adapter->name));
+ DEB2(dev_dbg(&client->adapter->dev, "master_recv: reading %d bytes.\n",
+ count));
down(&adap->bus);
ret = adap->algo->master_xfer(adap,&msg,1);
diff -Nru a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
--- a/drivers/i2c/i2c-dev.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-dev.c Mon Mar 24 17:28:41 2003
@@ -30,6 +30,9 @@
/* $Id: i2c-dev.c,v 1.53 2003/01/21 08:08:16 kmalkki Exp $ */
+/* If you want debugging uncomment: */
+/* #define DEBUG 1 */
+
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
@@ -41,10 +44,6 @@
#include <linux/i2c-dev.h>
#include <asm/uaccess.h>
-/* If you want debugging uncomment: */
-/* #define DEBUG */
-
-
/* struct file_operations changed too often in the 2.1 series for nice code */
static ssize_t i2cdev_read (struct file *file, char *buf, size_t count,
@@ -386,11 +385,11 @@
char name[12];
if ((i = i2c_adapter_id(adap)) < 0) {
- printk(KERN_DEBUG "i2c-dev.o: Unknown adapter ?!?\n");
+ dev_dbg(&adap->dev, "Unknown adapter ?!?\n");
return -ENODEV;
}
if (i >= I2CDEV_ADAPS_MAX) {
- printk(KERN_DEBUG "i2c-dev.o: Adapter number too large?!? (%d)\n",i);
+ dev_dbg(&adap->dev, "Adapter number too large?!? (%d)\n",i);
return -ENODEV;
}
@@ -401,14 +400,12 @@
DEVFS_FL_DEFAULT, I2C_MAJOR, i,
S_IFCHR | S_IRUSR | S_IWUSR,
&i2cdev_fops, NULL);
- printk(KERN_DEBUG "i2c-dev.o: Registered '%s' as minor %d\n",adap->name,i);
+ dev_dbg(&adap->dev, "Registered as minor %d\n", i);
} else {
/* This is actually a detach_adapter call! */
devfs_remove("i2c/%d", i);
i2cdev_adaps[i] = NULL;
-#ifdef DEBUG
- printk(KERN_DEBUG "i2c-dev.o: Adapter unregistered: %s\n",adap->name);
-#endif
+ dev_dbg(&adap->dev, "Adapter unregistered\n");
}
return 0;
diff -Nru a/drivers/i2c/i2c-elektor.c b/drivers/i2c/i2c-elektor.c
--- a/drivers/i2c/i2c-elektor.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-elektor.c Mon Mar 24 17:28:41 2003
@@ -174,10 +174,12 @@
};
static struct i2c_adapter pcf_isa_ops = {
- .owner = THIS_MODULE,
- .name = "PCF8584 ISA adapter",
- .id = I2C_HW_P_ELEK,
- .algo_data = &pcf_isa_data,
+ .owner = THIS_MODULE,
+ .id = I2C_HW_P_ELEK,
+ .algo_data = &pcf_isa_data,
+ .dev = {
+ .name = "PCF8584 ISA adapter",
+ },
};
static int __init i2c_pcfisa_init(void)
diff -Nru a/drivers/i2c/i2c-elv.c b/drivers/i2c/i2c-elv.c
--- a/drivers/i2c/i2c-elv.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-elv.c Mon Mar 24 17:28:41 2003
@@ -129,9 +129,11 @@
static struct i2c_adapter bit_elv_ops = {
.owner = THIS_MODULE,
- .name = "ELV Parallel port adaptor",
.id = I2C_HW_B_ELV,
.algo_data = &bit_elv_data,
+ .dev = {
+ .name = "ELV Parallel port adaptor",
+ },
};
static int __init i2c_bitelv_init(void)
diff -Nru a/drivers/i2c/i2c-philips-par.c b/drivers/i2c/i2c-philips-par.c
--- a/drivers/i2c/i2c-philips-par.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-philips-par.c Mon Mar 24 17:28:41 2003
@@ -151,8 +151,10 @@
static struct i2c_adapter bit_lp_ops = {
.owner = THIS_MODULE,
- .name = "Philips Parallel port adapter",
.id = I2C_HW_B_LP,
+ .dev = {
+ .name = "Philips Parallel port adapter",
+ },
};
static void i2c_parport_attach (struct parport *port)
diff -Nru a/drivers/i2c/i2c-velleman.c b/drivers/i2c/i2c-velleman.c
--- a/drivers/i2c/i2c-velleman.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/i2c-velleman.c Mon Mar 24 17:28:41 2003
@@ -114,9 +114,11 @@
static struct i2c_adapter bit_velle_ops = {
.owner = THIS_MODULE,
- .name = "Velleman K8000",
.id = I2C_HW_B_VELLE,
.algo_data = &bit_velle_data,
+ .dev = {
+ .name = "Velleman K8000",
+ },
};
static int __init i2c_bitvelle_init(void)
diff -Nru a/drivers/i2c/scx200_acb.c b/drivers/i2c/scx200_acb.c
--- a/drivers/i2c/scx200_acb.c Mon Mar 24 17:28:41 2003
+++ b/drivers/i2c/scx200_acb.c Mon Mar 24 17:28:41 2003
@@ -140,8 +140,7 @@
switch (iface->state) {
case state_idle:
- printk(KERN_WARNING NAME ": %s, interrupt in idle state\n",
- iface->adapter.name);
+ dev_warn(&iface->adapter.dev, "interrupt in idle state\n",);
break;
case state_address:
@@ -226,8 +225,8 @@
return;
error:
- printk(KERN_ERR NAME ": %s, %s in state %s\n", iface->adapter.name,
- errmsg, scx200_acb_state_name[iface->state]);
+ dev_err(&iface->adapter.dev, "%s in state %s\n", errmsg,
+ scx200_acb_state_name[iface->state]);
iface->state = state_idle;
iface->result = -EIO;
@@ -236,8 +235,8 @@
static void scx200_acb_timeout(struct scx200_acb_iface *iface)
{
- printk(KERN_ERR NAME ": %s, timeout in state %s\n",
- iface->adapter.name, scx200_acb_state_name[iface->state]);
+ dev_err(&iface->adapter.dev, "timeout in state %s\n",
+ scx200_acb_state_name[iface->state]);
iface->state = state_idle;
iface->result = -EIO;
@@ -331,13 +330,12 @@
size, address, command, len, rw == I2C_SMBUS_READ);
if (!len && rw == I2C_SMBUS_READ) {
- printk(KERN_WARNING NAME ": %s, zero length read\n",
- adapter->name);
+ dev_warn(&adapter->dev, "zero length read\n");
return -EINVAL;
}
if (len && !buffer) {
- printk(KERN_WARNING NAME ": %s, nonzero length but no buffer\n", adapter->name);
+ dev_warn(&adapter->dev, "nonzero length but no buffer\n");
return -EFAULT;
}
@@ -458,17 +456,17 @@
memset(iface, 0, sizeof(*iface));
adapter = &iface->adapter;
adapter->data = iface;
- sprintf(adapter->name, "SCx200 ACB%d", index);
+ snprintf(adapter->dev.name, DEVICE_NAME_SIZE, "SCx200 ACB%d", index);
adapter->owner = THIS_MODULE;
adapter->id = I2C_ALGO_SMBUS;
adapter->algo = &scx200_acb_algorithm;
init_MUTEX(&iface->sem);
- sprintf(description, "NatSemi SCx200 ACCESS.bus [%s]", adapter->name);
+ snprintf(description, sizeof(description), "NatSemi SCx200 ACCESS.bus [%s]", adapter->dev.name);
if (request_region(base, 8, description) == 0) {
- printk(KERN_ERR NAME ": %s, can't allocate io 0x%x-0x%x\n",
- adapter->name, base, base + 8-1);
+ dev_err(&adapter->dev, "can't allocate io 0x%x-0x%x\n",
+ base, base + 8-1);
rc = -EBUSY;
goto errout;
}
@@ -476,14 +474,14 @@
rc = scx200_acb_probe(iface);
if (rc) {
- printk(KERN_WARNING NAME ": %s, probe failed\n", adapter->name);
+ dev_warn(&adapter->dev, "probe failed\n");
goto errout;
}
scx200_acb_reset(iface);
if (i2c_add_adapter(adapter) < 0) {
- printk(KERN_ERR NAME ": %s, failed to register\n", adapter->name);
+ dev_err(&adapter->dev, "failed to register\n");
rc = -ENODEV;
goto errout;
}
diff -Nru a/include/linux/i2c.h b/include/linux/i2c.h
--- a/include/linux/i2c.h Mon Mar 24 17:28:41 2003
+++ b/include/linux/i2c.h Mon Mar 24 17:28:41 2003
@@ -210,7 +210,6 @@
*/
struct i2c_adapter {
struct module *owner;
- char name[32]; /* some useful name to identify the adapter */
unsigned int id;/* == is algo->id | hwdep.struct->id, */
/* for registered values see below */
struct i2c_algorithm *algo;/* the algorithm to access the bus */
ChangeSet 1.889.357.3, 2003/03/21 14:38:21-08:00, [email protected]
[PATCH] i2c: remove *data from i2c_adapter, as dev->data should be used instead.
drivers/i2c/i2c-elv.c | 2 +-
drivers/i2c/scx200_acb.c | 4 ++--
include/linux/i2c.h | 17 +++++++++++------
3 files changed, 14 insertions(+), 9 deletions(-)
diff -Nru a/drivers/i2c/i2c-elv.c b/drivers/i2c/i2c-elv.c
--- a/drivers/i2c/i2c-elv.c Mon Mar 24 17:28:32 2003
+++ b/drivers/i2c/i2c-elv.c Mon Mar 24 17:28:32 2003
@@ -150,7 +150,7 @@
return -ENODEV;
}
} else {
- bit_elv_ops.data=(void*)base;
+ i2c_set_adapdata(&bit_elv_ops, (void *)base);
if (bit_elv_init()==0) {
if(i2c_bit_add_bus(&bit_elv_ops) < 0)
return -ENODEV;
diff -Nru a/drivers/i2c/scx200_acb.c b/drivers/i2c/scx200_acb.c
--- a/drivers/i2c/scx200_acb.c Mon Mar 24 17:28:32 2003
+++ b/drivers/i2c/scx200_acb.c Mon Mar 24 17:28:32 2003
@@ -289,7 +289,7 @@
char rw, u8 command, int size,
union i2c_smbus_data *data)
{
- struct scx200_acb_iface *iface = adapter->data;
+ struct scx200_acb_iface *iface = i2c_get_adapdata(adapter);
int len;
u8 *buffer;
u16 cur_word;
@@ -455,7 +455,7 @@
memset(iface, 0, sizeof(*iface));
adapter = &iface->adapter;
- adapter->data = iface;
+ i2c_set_adapdata(adapter, iface);
snprintf(adapter->dev.name, DEVICE_NAME_SIZE, "SCx200 ACB%d", index);
adapter->owner = THIS_MODULE;
adapter->id = I2C_ALGO_SMBUS;
diff -Nru a/include/linux/i2c.h b/include/linux/i2c.h
--- a/include/linux/i2c.h Mon Mar 24 17:28:32 2003
+++ b/include/linux/i2c.h Mon Mar 24 17:28:32 2003
@@ -219,12 +219,7 @@
int (*client_register)(struct i2c_client *);
int (*client_unregister)(struct i2c_client *);
- void *data; /* private data for the adapter */
- /* some data fields that are used by all types */
- /* these data fields are readonly to the public */
- /* and can be set via the i2c_ioctl call */
-
- /* data fields that are valid for all devices */
+ /* data fields that are valid for all devices */
struct semaphore bus;
struct semaphore list;
unsigned int flags;/* flags specifying div. data */
@@ -241,6 +236,16 @@
#endif /* def CONFIG_PROC_FS */
};
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
+
+static inline void *i2c_get_adapdata (struct i2c_adapter *dev)
+{
+ return dev_get_drvdata (&dev->dev);
+}
+
+static inline void i2c_set_adapdata (struct i2c_adapter *dev, void *data)
+{
+ return dev_set_drvdata (&dev->dev, data);
+}
/*flags for the driver struct: */
#define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
ChangeSet 1.889.355.16, 2003/03/22 23:29:40-08:00, [email protected]
i2c: fix up drivers/ieee1394/pcilynx.c due to previous i2c changes.
drivers/ieee1394/pcilynx.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletion(-)
diff -Nru a/drivers/ieee1394/pcilynx.c b/drivers/ieee1394/pcilynx.c
--- a/drivers/ieee1394/pcilynx.c Mon Mar 24 17:27:16 2003
+++ b/drivers/ieee1394/pcilynx.c Mon Mar 24 17:27:16 2003
@@ -138,10 +138,12 @@
};
static struct i2c_adapter bit_ops = {
- .name = "PCILynx I2C adapter",
.id = 0xAA, //FIXME: probably we should get an id in i2c-id.h
.client_register = bit_reg,
.client_unregister = bit_unreg,
+ .dev = {
+ .name = "PCILynx I2C",
+ },
};
ChangeSet 1.889.357.7, 2003/03/21 16:26:04-08:00, [email protected]
i2c: actually register the i2c client device with the driver core.
We have to initialize the client structure with 0 to keep the
driver core from oopsing.
Now everything is hooked up enough to start removing the i2c sysctl
and proc crud.
drivers/i2c/chips/adm1021.c | 2 ++
drivers/i2c/chips/lm75.c | 2 ++
drivers/i2c/i2c-core.c | 10 ++++++++++
3 files changed, 14 insertions(+)
diff -Nru a/drivers/i2c/chips/adm1021.c b/drivers/i2c/chips/adm1021.c
--- a/drivers/i2c/chips/adm1021.c Mon Mar 24 17:27:59 2003
+++ b/drivers/i2c/chips/adm1021.c Mon Mar 24 17:27:59 2003
@@ -221,6 +221,8 @@
err = -ENOMEM;
goto error0;
}
+ memset(new_client, 0x00, sizeof(struct i2c_client) +
+ sizeof(struct adm1021_data));
data = (struct adm1021_data *) (new_client + 1);
i2c_set_clientdata(new_client, data);
diff -Nru a/drivers/i2c/chips/lm75.c b/drivers/i2c/chips/lm75.c
--- a/drivers/i2c/chips/lm75.c Mon Mar 24 17:27:59 2003
+++ b/drivers/i2c/chips/lm75.c Mon Mar 24 17:27:59 2003
@@ -140,6 +140,8 @@
err = -ENOMEM;
goto error0;
}
+ memset(new_client, 0x00, sizeof(struct i2c_client) +
+ sizeof(struct lm75_data));
data = (struct lm75_data *) (new_client + 1);
i2c_set_clientdata(new_client, data);
diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c Mon Mar 24 17:27:59 2003
+++ b/drivers/i2c/i2c-core.c Mon Mar 24 17:27:59 2003
@@ -378,6 +378,15 @@
if (client->flags & I2C_CLIENT_ALLOW_USE)
client->usage_count = 0;
+
+ client->dev.parent = &client->adapter->dev;
+ client->dev.driver = &client->driver->driver;
+ client->dev.bus = &i2c_bus_type;
+
+ snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id), "i2c_dev_%d", i);
+ printk("registering %s\n", client->dev.bus_id);
+ device_register(&client->dev);
+
return 0;
}
@@ -414,6 +423,7 @@
res = -ENODEV;
out_unlock:
+ device_unregister(&client->dev);
up(&adapter->list);
out:
return res;
ChangeSet 1.889.357.6, 2003/03/21 16:16:01-08:00, [email protected]
i2c: Removed the name variable from i2c_client as the dev one should be used instead.
drivers/i2c/chips/adm1021.c | 2 +-
drivers/i2c/chips/lm75.c | 2 +-
drivers/i2c/i2c-core.c | 14 +++++++-------
drivers/i2c/i2c-dev.c | 4 +++-
include/linux/i2c.h | 1 -
5 files changed, 12 insertions(+), 11 deletions(-)
diff -Nru a/drivers/i2c/chips/adm1021.c b/drivers/i2c/chips/adm1021.c
--- a/drivers/i2c/chips/adm1021.c Mon Mar 24 17:28:07 2003
+++ b/drivers/i2c/chips/adm1021.c Mon Mar 24 17:28:07 2003
@@ -299,7 +299,7 @@
}
/* Fill in the remaining client fields and put it into the global list */
- strcpy(new_client->name, client_name);
+ strncpy(new_client->dev.name, client_name, DEVICE_NAME_SIZE);
data->type = kind;
new_client->id = adm1021_id++;
diff -Nru a/drivers/i2c/chips/lm75.c b/drivers/i2c/chips/lm75.c
--- a/drivers/i2c/chips/lm75.c Mon Mar 24 17:28:07 2003
+++ b/drivers/i2c/chips/lm75.c Mon Mar 24 17:28:07 2003
@@ -180,7 +180,7 @@
}
/* Fill in the remaining client fields and put it into the global list */
- strcpy(new_client->name, client_name);
+ strncpy(new_client->dev.name, client_name, DEVICE_NAME_SIZE);
new_client->id = lm75_id++;
data->valid = 0;
diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c Mon Mar 24 17:28:07 2003
+++ b/drivers/i2c/i2c-core.c Mon Mar 24 17:28:07 2003
@@ -291,9 +291,9 @@
client->driver == driver) {
DEB2(printk(KERN_DEBUG "i2c-core.o: "
"detaching client %s:\n",
- client->name));
+ client->dev.name));
if ((res = driver->detach_client(client))) {
- dev_err(&adap->dev, "while "
+ dev_err(&adap->dev, "while "
"unregistering driver "
"`%s', the client at "
"address %02x of "
@@ -355,7 +355,7 @@
printk(KERN_WARNING
" i2c-core.o: attach_client(%s) - enlarge I2C_CLIENT_MAX.\n",
- client->name);
+ client->dev.name);
out_unlock_list:
up(&adapter->list);
@@ -374,7 +374,7 @@
}
DEB(dev_dbg(&adapter->dev, "client [%s] registered to adapter "
- "(pos. %d).\n", client->name, i));
+ "(pos. %d).\n", client->dev.name, i));
if (client->flags & I2C_CLIENT_ALLOW_USE)
client->usage_count = 0;
@@ -395,7 +395,7 @@
if (res) {
printk(KERN_ERR
"i2c-core.o: client_unregister [%s] failed, "
- "client not detached", client->name);
+ "client not detached", client->dev.name);
goto out;
}
}
@@ -410,7 +410,7 @@
printk(KERN_WARNING
" i2c-core.o: unregister_client [%s] not found\n",
- client->name);
+ client->dev.name);
res = -ENODEV;
out_unlock:
@@ -522,7 +522,7 @@
client = adapters[i]->clients[order[j]];
len += sprintf(kbuf+len,"%02x\t%-32s\t%-32s\n",
client->addr,
- client->name,
+ client->dev.name,
client->driver->name);
}
len = len - file->f_pos;
diff -Nru a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
--- a/drivers/i2c/i2c-dev.c Mon Mar 24 17:28:07 2003
+++ b/drivers/i2c/i2c-dev.c Mon Mar 24 17:28:07 2003
@@ -86,7 +86,9 @@
};
static struct i2c_client i2cdev_client_template = {
- .name = "I2C /dev entry",
+ .dev = {
+ .name = "I2C /dev entry",
+ },
.id = 1,
.addr = -1,
.driver = &i2cdev_driver,
diff -Nru a/include/linux/i2c.h b/include/linux/i2c.h
--- a/include/linux/i2c.h Mon Mar 24 17:28:07 2003
+++ b/include/linux/i2c.h Mon Mar 24 17:28:07 2003
@@ -156,7 +156,6 @@
* function is mainly used for lookup & other admin. functions.
*/
struct i2c_client {
- char name[32];
int id;
unsigned int flags; /* div., see below */
unsigned int addr; /* chip address - NOTE: 7bit */
ChangeSet 1.889.357.1, 2003/03/21 12:29:44-08:00, [email protected]
[PATCH] Fix kobject_get oopses triggered by i2c in 2.5.65-bk
i2c initialization must not use module_init now, when it was converted
to the kobject interface. There are dozens of users which need it working
much sooner. i2c is subsystem after all, isn't it?
Fixes kernel oopses in kobject_get during system init which were happening
to me.
drivers/i2c/i2c-core.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c Mon Mar 24 17:28:49 2003
+++ b/drivers/i2c/i2c-core.c Mon Mar 24 17:28:49 2003
@@ -675,7 +675,7 @@
bus_unregister(&i2c_bus_type);
}
-module_init(i2c_init);
+subsys_initcall(i2c_init);
module_exit(i2c_exit);
/* ----------------------------------------------------
On Tue, Mar 25, 2003 at 08:55:05AM +0000, Russell King wrote:
> Are you sure that "IOC/IOMD" is a good name to stick in sysfs?
> s|/|,| would probably be a good idea.
Gah, ignore that comment.
--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
On Mon, Mar 24, 2003 at 05:38:00PM -0800, Greg KH wrote:
> static struct i2c_adapter ioc_ops = {
> - .name = "IOC/IOMD",
> .id = I2C_HW_B_IOC,
> .algo_data = &ioc_data,
> .client_register = ioc_client_reg,
> .client_unregister = ioc_client_unreg
> + .dev = {
> + .name = "IOC/IOMD",
> + },
> };
Are you sure that "IOC/IOMD" is a good name to stick in sysfs?
s|/|,| would probably be a good idea.
--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
--- clean/drivers/media/video/tvmixer.c 2003-03-21 12:42:04.000000000 +0100
+++ work/drivers/media/video/tvmixer.c 2003-03-25 09:37:07.000000000 +0100
@@ -87,7 +87,7 @@
if (cmd == SOUND_MIXER_INFO) {
mixer_info info;
strncpy(info.id, "tv card", sizeof(info.id));
- strncpy(info.name, client->name, sizeof(info.name));
+ strncpy(info.name, client->dev.name, sizeof(info.name));
info.modify_counter = 42 /* FIXME */;
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
@@ -96,7 +96,7 @@
if (cmd == SOUND_OLD_MIXER_INFO) {
_old_mixer_info info;
strncpy(info.id, "tv card", sizeof(info.id));
- strncpy(info.name, client->name, sizeof(info.name));
+ strncpy(info.name, client->dev.name, sizeof(info.name));
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
return 0;
@@ -237,7 +237,7 @@
int i;
if (debug)
- printk("tvmixer: adapter %s\n",adap->name);
+ printk("tvmixer: adapter %s\n",adap->dev.name);
for (i=0; i<I2C_CLIENT_MAX; i++) {
if (!adap->clients[i])
continue;
@@ -261,10 +261,10 @@
/* ignore that one */
if (debug)
printk("tvmixer: %s is not a tv card\n",
- client->adapter->name);
+ client->adapter->dev.name);
return -1;
}
- printk("tvmixer: debug: %s\n",client->name);
+ printk("tvmixer: debug: %s\n",client->dev.name);
/* unregister ?? */
for (i = 0; i < DEV_MAX; i++) {
@@ -273,7 +273,7 @@
unregister_sound_mixer(devices[i].minor);
devices[i].dev = NULL;
devices[i].minor = -1;
- printk("tvmixer: %s unregistered (#1)\n",client->name);
+ printk("tvmixer: %s unregistered (#1)\n",client->dev.name);
return 0;
}
}
@@ -298,13 +298,13 @@
if (0 != client->driver->command(client,VIDIOCGAUDIO,&va)) {
if (debug)
printk("tvmixer: %s: VIDIOCGAUDIO failed\n",
- client->name);
+ client->dev.name);
return -1;
}
if (0 == (va.flags & VIDEO_AUDIO_VOLUME)) {
if (debug)
printk("tvmixer: %s: has no volume control\n",
- client->name);
+ client->dev.name);
return -1;
}
@@ -318,7 +318,7 @@
devices[i].count = 0;
devices[i].dev = client;
printk("tvmixer: %s (%s) registered with minor %d\n",
- client->name,client->adapter->name,minor);
+ client->dev.name,client->adapter->dev.name,minor);
return 0;
}
@@ -344,7 +344,7 @@
if (devices[i].minor != -1) {
unregister_sound_mixer(devices[i].minor);
printk("tvmixer: %s unregistered (#2)\n",
- devices[i].dev->name);
+ devices[i].dev->dev.name);
}
}
}
On Tue, Mar 25, 2003 at 10:17:21AM +0100, Jan Dittmer wrote:
> Greg KH wrote:
> >ChangeSet 1.889.355.14, 2003/03/22 23:20:40-08:00, [email protected]
> >
> >i2c: fix up drivers/media/video/* due to previous i2c changes.
> >
>
> Additionally I need the following patch to tvmixer.c to compile properly
> with CONFIG_SOUND_TVMIXER=m. Just a /client->name/client->dev.name/g.
Thanks, I've applied this to my kernel trees and will send it on to
Linus with the next batch of i2c patches.
thanks,
greg k-h