staging: iio: light: isl29018: Use devm_iio_device_alloc
authorSachin Kamat <sachin.kamat@linaro.org>
Mon, 22 Jul 2013 11:03:00 +0000 (12:03 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 3 Aug 2013 17:41:08 +0000 (18:41 +0100)
Using devm_iio_device_alloc makes code simpler.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Acked-by: Rhyland Klein <rklein@nvidia.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/staging/iio/light/isl29018.c

index 82478a59e42e719588adc20533824a7f31e47271..351936c3efd698e8c5cbe76d7878eb8ad16c311f 100644 (file)
@@ -550,11 +550,10 @@ static int isl29018_probe(struct i2c_client *client,
        struct iio_dev *indio_dev;
        int err;
 
-       indio_dev = iio_device_alloc(sizeof(*chip));
+       indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*chip));
        if (indio_dev == NULL) {
                dev_err(&client->dev, "iio allocation fails\n");
-               err = -ENOMEM;
-               goto exit;
+               return -ENOMEM;
        }
        chip = iio_priv(indio_dev);
 
@@ -572,12 +571,12 @@ static int isl29018_probe(struct i2c_client *client,
        if (IS_ERR(chip->regmap)) {
                err = PTR_ERR(chip->regmap);
                dev_err(chip->dev, "regmap initialization failed: %d\n", err);
-               goto exit;
+               return err;
        }
 
        err = isl29018_chip_init(chip);
        if (err)
-               goto exit_iio_free;
+               return err;
 
        indio_dev->info = &isl29108_info;
        indio_dev->channels = isl29018_channels;
@@ -588,14 +587,10 @@ static int isl29018_probe(struct i2c_client *client,
        err = iio_device_register(indio_dev);
        if (err) {
                dev_err(&client->dev, "iio registration fails\n");
-               goto exit_iio_free;
+               return err;
        }
 
        return 0;
-exit_iio_free:
-       iio_device_free(indio_dev);
-exit:
-       return err;
 }
 
 static int isl29018_remove(struct i2c_client *client)
@@ -604,7 +599,6 @@ static int isl29018_remove(struct i2c_client *client)
 
        dev_dbg(&client->dev, "%s()\n", __func__);
        iio_device_unregister(indio_dev);
-       iio_device_free(indio_dev);
 
        return 0;
 }