]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/hwmon/f75375s.c
virtio: force callback on empty.
[linux-2.6-omap-h63xx.git] / drivers / hwmon / f75375s.c
index 6892f76fc18ab42190168efab9a61a857a8d02a7..dc1f30e432eab96864d52af0706a2ac39f7338a7 100644 (file)
@@ -37,7 +37,7 @@
 #include <linux/f75375s.h>
 
 /* Addresses to scan */
-static unsigned short normal_i2c[] = { 0x2d, 0x2e, I2C_CLIENT_END };
+static const unsigned short normal_i2c[] = { 0x2d, 0x2e, I2C_CLIENT_END };
 
 /* Insmod parameters */
 I2C_CLIENT_INSMOD_2(f75373, f75375);
@@ -117,7 +117,8 @@ struct f75375_data {
 static int f75375_attach_adapter(struct i2c_adapter *adapter);
 static int f75375_detect(struct i2c_adapter *adapter, int address, int kind);
 static int f75375_detach_client(struct i2c_client *client);
-static int f75375_probe(struct i2c_client *client);
+static int f75375_probe(struct i2c_client *client,
+                       const struct i2c_device_id *id);
 static int f75375_remove(struct i2c_client *client);
 
 static struct i2c_driver f75375_legacy_driver = {
@@ -128,12 +129,20 @@ static struct i2c_driver f75375_legacy_driver = {
        .detach_client = f75375_detach_client,
 };
 
+static const struct i2c_device_id f75375_id[] = {
+       { "f75373", f75373 },
+       { "f75375", f75375 },
+       { }
+};
+MODULE_DEVICE_TABLE(i2c, f75375_id);
+
 static struct i2c_driver f75375_driver = {
        .driver = {
                .name = "f75375",
        },
        .probe = f75375_probe,
        .remove = f75375_remove,
+       .id_table = f75375_id,
 };
 
 static inline int f75375_read8(struct i2c_client *client, u8 reg)
@@ -628,7 +637,8 @@ static void f75375_init(struct i2c_client *client, struct f75375_data *data,
 
 }
 
-static int f75375_probe(struct i2c_client *client)
+static int f75375_probe(struct i2c_client *client,
+               const struct i2c_device_id *id)
 {
        struct f75375_data *data = i2c_get_clientdata(client);
        struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data;
@@ -643,15 +653,7 @@ static int f75375_probe(struct i2c_client *client)
        i2c_set_clientdata(client, data);
        data->client = client;
        mutex_init(&data->update_lock);
-
-       if (strcmp(client->name, "f75375") == 0)
-               data->kind = f75375;
-       else if (strcmp(client->name, "f75373") == 0)
-               data->kind = f75373;
-       else {
-               dev_err(&client->dev, "Unsupported device: %s\n", client->name);
-               return -ENODEV;
-       }
+       data->kind = id->driver_data;
 
        if ((err = sysfs_create_group(&client->dev.kobj, &f75375_group)))
                goto exit_free;
@@ -712,6 +714,7 @@ static int f75375_detect(struct i2c_adapter *adapter, int address, int kind)
        u8 version = 0;
        int err = 0;
        const char *name = "";
+       struct i2c_device_id id;
 
        if (!(client = kzalloc(sizeof(*client), GFP_KERNEL))) {
                err = -ENOMEM;
@@ -748,7 +751,9 @@ static int f75375_detect(struct i2c_adapter *adapter, int address, int kind)
        if ((err = i2c_attach_client(client)))
                goto exit_free;
 
-       if ((err = f75375_probe(client)) < 0)
+       strlcpy(id.name, name, I2C_NAME_SIZE);
+       id.driver_data = kind;
+       if ((err = f75375_probe(client, &id)) < 0)
                goto exit_detach;
 
        return 0;