diff options
author | Jean Delvare <khali@linux-fr.org> | 2008-04-29 17:11:39 -0400 |
---|---|---|
committer | Jean Delvare <khali@hyperion.delvare> | 2008-04-29 17:11:39 -0400 |
commit | d2653e92732bd3911feff6bee5e23dbf959381db (patch) | |
tree | fd3a413bc150855a09de29b2d253b7dbeb2705ff /include/linux | |
parent | ee56d977423a58b53fd0fc1ef0aca0c9cb564c53 (diff) |
i2c: Add support for device alias names
Based on earlier work by Jon Smirl and Jochen Friedrich.
This patch allows new-style i2c chip drivers to have alias names using
the official kernel aliasing system and MODULE_DEVICE_TABLE(). At this
point, the old i2c driver binding scheme (driver_name/type) is still
supported.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Jochen Friedrich <jochen@scram.de>
Cc: Jon Smirl <jonsmirl@gmail.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/i2c.h | 5 | ||||
-rw-r--r-- | include/linux/mod_devicetable.h | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 365e0df3646b..89cb34d5b0ba 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -126,7 +126,7 @@ struct i2c_driver { | |||
126 | * With the driver model, device enumeration is NEVER done by drivers; | 126 | * With the driver model, device enumeration is NEVER done by drivers; |
127 | * it's done by infrastructure. (NEW STYLE DRIVERS ONLY) | 127 | * it's done by infrastructure. (NEW STYLE DRIVERS ONLY) |
128 | */ | 128 | */ |
129 | int (*probe)(struct i2c_client *); | 129 | int (*probe)(struct i2c_client *, const struct i2c_device_id *); |
130 | int (*remove)(struct i2c_client *); | 130 | int (*remove)(struct i2c_client *); |
131 | 131 | ||
132 | /* driver model interfaces that don't relate to enumeration */ | 132 | /* driver model interfaces that don't relate to enumeration */ |
@@ -140,11 +140,10 @@ struct i2c_driver { | |||
140 | int (*command)(struct i2c_client *client,unsigned int cmd, void *arg); | 140 | int (*command)(struct i2c_client *client,unsigned int cmd, void *arg); |
141 | 141 | ||
142 | struct device_driver driver; | 142 | struct device_driver driver; |
143 | const struct i2c_device_id *id_table; | ||
143 | }; | 144 | }; |
144 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) | 145 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) |
145 | 146 | ||
146 | #define I2C_NAME_SIZE 20 | ||
147 | |||
148 | /** | 147 | /** |
149 | * struct i2c_client - represent an I2C slave device | 148 | * struct i2c_client - represent an I2C slave device |
150 | * @flags: I2C_CLIENT_TEN indicates the device uses a ten bit chip address; | 149 | * @flags: I2C_CLIENT_TEN indicates the device uses a ten bit chip address; |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 139d49d2f078..d73eceaa7afb 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
@@ -368,4 +368,15 @@ struct virtio_device_id { | |||
368 | }; | 368 | }; |
369 | #define VIRTIO_DEV_ANY_ID 0xffffffff | 369 | #define VIRTIO_DEV_ANY_ID 0xffffffff |
370 | 370 | ||
371 | /* i2c */ | ||
372 | |||
373 | #define I2C_NAME_SIZE 20 | ||
374 | #define I2C_MODULE_PREFIX "i2c:" | ||
375 | |||
376 | struct i2c_device_id { | ||
377 | char name[I2C_NAME_SIZE]; | ||
378 | kernel_ulong_t driver_data; /* Data private to the driver */ | ||
379 | }; | ||
380 | |||
381 | |||
371 | #endif /* LINUX_MOD_DEVICETABLE_H */ | 382 | #endif /* LINUX_MOD_DEVICETABLE_H */ |