From 50fb80a97be3ce06b20cd24bbacce670ab18ebc8 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 20 Mar 2003 20:45:28 -0800 Subject: i2c: remove i2c_adapter->name and use dev->name instead. --- include/linux/i2c.h | 1 - 1 file changed, 1 deletion(-) (limited to 'include/linux') diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 0ae665586de1..4a782ecc335c 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -210,7 +210,6 @@ struct i2c_algorithm { */ 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 */ -- cgit v1.2.3 From 71bcb29dfb68f8a8d3f72401465917366453e9b7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 20 Mar 2003 22:38:21 -0800 Subject: [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(-) (limited to 'include/linux') diff --git a/drivers/i2c/i2c-elv.c b/drivers/i2c/i2c-elv.c index b926425b5300..82237f6651fa 100644 --- a/drivers/i2c/i2c-elv.c +++ b/drivers/i2c/i2c-elv.c @@ -150,7 +150,7 @@ static int __init i2c_bitelv_init(void) 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 --git a/drivers/i2c/scx200_acb.c b/drivers/i2c/scx200_acb.c index 2dc8438b1688..0a4996b8fa9c 100644 --- a/drivers/i2c/scx200_acb.c +++ b/drivers/i2c/scx200_acb.c @@ -289,7 +289,7 @@ static s32 scx200_acb_smbus_xfer(struct i2c_adapter *adapter, 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 @@ static int __init scx200_acb_create(int base, int index) 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 --git a/include/linux/i2c.h b/include/linux/i2c.h index 4a782ecc335c..67c3feaca778 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -219,12 +219,7 @@ struct i2c_adapter { 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 */ @@ -242,6 +237,16 @@ struct i2c_adapter { }; #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 */ #define I2C_DF_DUMMY 0x02 /* do not connect any clients */ -- cgit v1.2.3 From 329e2f3aed7e02e502e76e9fb9063f44f1b87d0c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 21 Mar 2003 00:00:39 -0800 Subject: 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 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include/linux') diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 67c3feaca778..1004d2530312 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -170,8 +170,9 @@ struct i2c_client { 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: -- cgit v1.2.3 From b56a14716f6c2f356bf3c0b2f71ae4dc6c8c0155 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 21 Mar 2003 00:07:30 -0800 Subject: [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(-) (limited to 'include/linux') diff --git a/drivers/i2c/chips/adm1021.c b/drivers/i2c/chips/adm1021.c index c4370afc01e1..8a2b4e7857b5 100644 --- a/drivers/i2c/chips/adm1021.c +++ b/drivers/i2c/chips/adm1021.c @@ -223,8 +223,8 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address, } 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 @@ static int adm1021_detach_client(struct i2c_client *client) 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 int adm1021_write_value(struct i2c_client *client, u8 reg, u16 value) 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_update_client(struct i2c_client *client) 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_temp(struct i2c_client *client, int operation, 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_remote_temp(struct i2c_client *client, int operation, 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_die_code(struct i2c_client *client, int operation, 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 --git a/drivers/i2c/chips/lm75.c b/drivers/i2c/chips/lm75.c index da1e4d2c2c28..ff1e16cad9af 100644 --- a/drivers/i2c/chips/lm75.c +++ b/drivers/i2c/chips/lm75.c @@ -142,8 +142,8 @@ static int lm75_detect(struct i2c_adapter *adapter, int address, } 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_detect(struct i2c_adapter *adapter, int address, 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_init_client(struct i2c_client *client) 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_update_client(struct i2c_client *client) 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 --git a/include/linux/i2c.h b/include/linux/i2c.h index 1004d2530312..956627caacea 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -167,13 +167,22 @@ struct i2c_client { 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: * i2c_algorithm is the interface to a class of hardware solutions which can -- cgit v1.2.3 From cacdd414b81e6a556e5d9207e998f08def54466f Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 21 Mar 2003 00:16:01 -0800 Subject: 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(-) (limited to 'include/linux') diff --git a/drivers/i2c/chips/adm1021.c b/drivers/i2c/chips/adm1021.c index 8a2b4e7857b5..4b1a0b9fe3e0 100644 --- a/drivers/i2c/chips/adm1021.c +++ b/drivers/i2c/chips/adm1021.c @@ -299,7 +299,7 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address, } /* 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 --git a/drivers/i2c/chips/lm75.c b/drivers/i2c/chips/lm75.c index ff1e16cad9af..ec64e4d603e1 100644 --- a/drivers/i2c/chips/lm75.c +++ b/drivers/i2c/chips/lm75.c @@ -180,7 +180,7 @@ static int lm75_detect(struct i2c_adapter *adapter, int address, } /* 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 --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 10468d78806e..534cce1557b5 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -291,9 +291,9 @@ int i2c_del_driver(struct i2c_driver *driver) 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 @@ int i2c_attach_client(struct i2c_client *client) 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 @@ int i2c_attach_client(struct i2c_client *client) } 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 @@ int i2c_detach_client(struct i2c_client *client) 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 @@ int i2c_detach_client(struct i2c_client *client) 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 @@ static ssize_t i2cproc_bus_read(struct file *file, char *buf, 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 --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c index fc4f7cc6da1e..f11d6ca73133 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c @@ -86,7 +86,9 @@ static struct i2c_driver i2cdev_driver = { }; static struct i2c_client i2cdev_client_template = { - .name = "I2C /dev entry", + .dev = { + .name = "I2C /dev entry", + }, .id = 1, .addr = -1, .driver = &i2cdev_driver, diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 956627caacea..bc10de846363 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -156,7 +156,6 @@ extern struct bus_type i2c_bus_type; * 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 */ -- cgit v1.2.3