iio:vcnl4000: Use devm_iio_device_alloc
authorPeter Meerwald <pmeerw@pmeerw.net>
Mon, 29 Jul 2013 22:18:00 +0000 (23:18 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 3 Aug 2013 21:18:03 +0000 (22:18 +0100)
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/light/vcnl4000.c

index 1014943d949a1c7223b56294bcd07cd4a84280d5..2bb304215b1d88e2c19189215806ec7311f41739 100644 (file)
@@ -157,7 +157,7 @@ static int vcnl4000_probe(struct i2c_client *client,
        struct iio_dev *indio_dev;
        int ret;
 
-       indio_dev = iio_device_alloc(sizeof(*data));
+       indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
        if (!indio_dev)
                return -ENOMEM;
 
@@ -167,7 +167,7 @@ static int vcnl4000_probe(struct i2c_client *client,
 
        ret = i2c_smbus_read_byte_data(data->client, VCNL4000_PROD_REV);
        if (ret < 0)
-               goto error_free_dev;
+               return ret;
 
        dev_info(&client->dev, "VCNL4000 Ambient light/proximity sensor, Prod %02x, Rev: %02x\n",
                ret >> 4, ret & 0xf);
@@ -181,22 +181,14 @@ static int vcnl4000_probe(struct i2c_client *client,
 
        ret = iio_device_register(indio_dev);
        if (ret < 0)
-               goto error_free_dev;
+               return ret;
 
        return 0;
-
-error_free_dev:
-       iio_device_free(indio_dev);
-       return ret;
 }
 
 static int vcnl4000_remove(struct i2c_client *client)
 {
-       struct iio_dev *indio_dev = i2c_get_clientdata(client);
-
-       iio_device_unregister(indio_dev);
-       iio_device_free(indio_dev);
-
+       iio_device_unregister(i2c_get_clientdata(client));
        return 0;
 }