Merge master.kernel.org:/home/rmk/linux-2.6-arm
[pandora-kernel.git] / drivers / regulator / max1586.c
index 2c082d3..c0b09e1 100644 (file)
@@ -179,8 +179,8 @@ static struct regulator_desc max1586_reg[] = {
        },
 };
 
-static int max1586_pmic_probe(struct i2c_client *client,
-                             const struct i2c_device_id *i2c_id)
+static int __devinit max1586_pmic_probe(struct i2c_client *client,
+                                       const struct i2c_device_id *i2c_id)
 {
        struct regulator_dev **rdev;
        struct max1586_platform_data *pdata = client->dev.platform_data;
@@ -235,7 +235,7 @@ out:
        return ret;
 }
 
-static int max1586_pmic_remove(struct i2c_client *client)
+static int __devexit max1586_pmic_remove(struct i2c_client *client)
 {
        struct regulator_dev **rdev = i2c_get_clientdata(client);
        int i;
@@ -243,8 +243,8 @@ static int max1586_pmic_remove(struct i2c_client *client)
        for (i = 0; i <= MAX1586_V6; i++)
                if (rdev[i])
                        regulator_unregister(rdev[i]);
-       kfree(rdev);
        i2c_set_clientdata(client, NULL);
+       kfree(rdev);
 
        return 0;
 }
@@ -257,9 +257,10 @@ MODULE_DEVICE_TABLE(i2c, max1586_id);
 
 static struct i2c_driver max1586_pmic_driver = {
        .probe = max1586_pmic_probe,
-       .remove = max1586_pmic_remove,
+       .remove = __devexit_p(max1586_pmic_remove),
        .driver         = {
                .name   = "max1586",
+               .owner  = THIS_MODULE,
        },
        .id_table       = max1586_id,
 };