]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/i2c/chips/tps65010.c
Merge commit '63cc8c75156462d4b42cbdd76c293b7eee7ddbfe':
[linux-2.6-omap-h63xx.git] / drivers / i2c / chips / tps65010.c
index 6ab3619a49de91120acb85a7c50619e64fef5c0c..cf02e8fceb42a7a1ef4ee91c42d0fb8cfdd14ecb 100644 (file)
@@ -64,7 +64,6 @@ static struct i2c_driver tps65010_driver;
  * as part of board setup by a bootloader.
  */
 enum tps_model {
-       TPS_UNKNOWN = 0,
        TPS65010,
        TPS65011,
        TPS65012,
@@ -554,20 +553,7 @@ static int tps65010_probe(struct i2c_client *client,
        mutex_init(&tps->lock);
        INIT_DELAYED_WORK(&tps->work, tps65010_work);
        tps->client = client;
-
-       if (strcmp(client->name, "tps65010") == 0)
-               tps->model = TPS65010;
-       else if (strcmp(client->name, "tps65011") == 0)
-               tps->model = TPS65011;
-       else if (strcmp(client->name, "tps65012") == 0)
-               tps->model = TPS65012;
-       else if (strcmp(client->name, "tps65013") == 0)
-               tps->model = TPS65013;
-       else {
-               dev_warn(&client->dev, "unknown chip '%s'\n", client->name);
-               status = -ENODEV;
-               goto fail1;
-       }
+       tps->model = id->driver_data;
 
        /* the IRQ is active low, but many gpio lines can't support that
         * so this driver uses falling-edge triggers instead.
@@ -596,9 +582,6 @@ static int tps65010_probe(struct i2c_client *client,
        case TPS65012:
                tps->por = 1;
                break;
-       case TPS_UNKNOWN:
-               printk(KERN_WARNING "%s: unknown TPS chip\n", DRIVER_NAME);
-               break;
        /* else CHGCONFIG.POR is replaced by AUA, enabling a WAIT mode */
        }
        tps->chgconf = i2c_smbus_read_byte_data(client, TPS_CHGCONFIG);
@@ -653,6 +636,8 @@ static int tps65010_probe(struct i2c_client *client,
                tps->outmask = board->outmask;
 
                tps->chip.label = client->name;
+               tps->chip.dev = &client->dev;
+               tps->chip.owner = THIS_MODULE;
 
                tps->chip.set = tps65010_gpio_set;
                tps->chip.direction_output = tps65010_output;
@@ -685,12 +670,22 @@ fail1:
        return status;
 }
 
+static const struct i2c_device_id tps65010_id[] = {
+       { "tps65010", TPS65010 },
+       { "tps65011", TPS65011 },
+       { "tps65012", TPS65012 },
+       { "tps65013", TPS65013 },
+       { }
+};
+MODULE_DEVICE_TABLE(i2c, tps65010_id);
+
 static struct i2c_driver tps65010_driver = {
        .driver = {
                .name   = "tps65010",
        },
        .probe  = tps65010_probe,
        .remove = __exit_p(tps65010_remove),
+       .id_table = tps65010_id,
 };
 
 /*-------------------------------------------------------------------------*/