]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
mfd: Use devm managed resources for tps6586x
authorLaxman Dewangan <ldewangan@nvidia.com>
Wed, 18 Jul 2012 06:20:45 +0000 (11:50 +0530)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 24 Jul 2012 22:36:53 +0000 (00:36 +0200)
Allocate memory for device state using devm_kzalloc()
to simplify accounting and letting the kernel do the
garbage-collection.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/tps6586x.c

index c84b5506d5fbd06ee82d12b476abc6239ae4508f..c103ea90361426d6f48eafcc8aa113c5e261dcb0 100644 (file)
@@ -579,9 +579,11 @@ static int __devinit tps6586x_i2c_probe(struct i2c_client *client,
 
        dev_info(&client->dev, "VERSIONCRC is %02x\n", ret);
 
-       tps6586x = kzalloc(sizeof(struct tps6586x), GFP_KERNEL);
-       if (tps6586x == NULL)
+       tps6586x = devm_kzalloc(&client->dev, sizeof(*tps6586x), GFP_KERNEL);
+       if (tps6586x == NULL) {
+               dev_err(&client->dev, "memory for tps6586x alloc failed\n");
                return -ENOMEM;
+       }
 
        tps6586x->client = client;
        tps6586x->dev = &client->dev;
@@ -594,7 +596,7 @@ static int __devinit tps6586x_i2c_probe(struct i2c_client *client,
                                        pdata->irq_base);
                if (ret) {
                        dev_err(&client->dev, "IRQ init failed: %d\n", ret);
-                       goto err_irq_init;
+                       return ret;
                }
        }
 
@@ -622,8 +624,7 @@ err_add_devs:
 err_gpio_init:
        if (client->irq)
                free_irq(client->irq, tps6586x);
-err_irq_init:
-       kfree(tps6586x);
+
        return ret;
 }
 
@@ -644,7 +645,6 @@ static int __devexit tps6586x_i2c_remove(struct i2c_client *client)
        }
 
        tps6586x_remove_subdevs(tps6586x);
-       kfree(tps6586x);
        return 0;
 }