Merge branch 'for-linus' of git://git.kernel.dk/linux-block
[pandora-kernel.git] / drivers / staging / iio / meter / ade7854-i2c.c
index 4578e7b..dd72343 100644 (file)
@@ -20,7 +20,7 @@ static int ade7854_i2c_write_reg_8(struct device *dev,
 {
        int ret;
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
 
        mutex_lock(&st->buf_lock);
        st->tx[0] = (reg_address >> 8) & 0xFF;
@@ -39,7 +39,7 @@ static int ade7854_i2c_write_reg_16(struct device *dev,
 {
        int ret;
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
 
        mutex_lock(&st->buf_lock);
        st->tx[0] = (reg_address >> 8) & 0xFF;
@@ -59,7 +59,7 @@ static int ade7854_i2c_write_reg_24(struct device *dev,
 {
        int ret;
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
 
        mutex_lock(&st->buf_lock);
        st->tx[0] = (reg_address >> 8) & 0xFF;
@@ -80,7 +80,7 @@ static int ade7854_i2c_write_reg_32(struct device *dev,
 {
        int ret;
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
 
        mutex_lock(&st->buf_lock);
        st->tx[0] = (reg_address >> 8) & 0xFF;
@@ -101,7 +101,7 @@ static int ade7854_i2c_read_reg_8(struct device *dev,
                u8 *val)
 {
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
        int ret;
 
        mutex_lock(&st->buf_lock);
@@ -127,7 +127,7 @@ static int ade7854_i2c_read_reg_16(struct device *dev,
                u16 *val)
 {
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
        int ret;
 
        mutex_lock(&st->buf_lock);
@@ -153,7 +153,7 @@ static int ade7854_i2c_read_reg_24(struct device *dev,
                u32 *val)
 {
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
        int ret;
 
        mutex_lock(&st->buf_lock);
@@ -179,7 +179,7 @@ static int ade7854_i2c_read_reg_32(struct device *dev,
                u32 *val)
 {
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7854_state *st = iio_dev_get_devdata(indio_dev);
+       struct ade7854_state *st = iio_priv(indio_dev);
        int ret;
 
        mutex_lock(&st->buf_lock);
@@ -204,13 +204,14 @@ static int __devinit ade7854_i2c_probe(struct i2c_client *client,
                const struct i2c_device_id *id)
 {
        int ret;
-       struct ade7854_state *st = kzalloc(sizeof *st, GFP_KERNEL);
-       if (!st) {
-               ret =  -ENOMEM;
-               return ret;
-       }
-
-       i2c_set_clientdata(client, st);
+       struct ade7854_state *st;
+       struct iio_dev *indio_dev;
+
+       indio_dev = iio_allocate_device(sizeof(*st));
+       if (indio_dev == NULL)
+               return -ENOMEM;
+       st = iio_priv(indio_dev);
+       i2c_set_clientdata(client, indio_dev);
        st->read_reg_8 = ade7854_i2c_read_reg_8;
        st->read_reg_16 = ade7854_i2c_read_reg_16;
        st->read_reg_24 = ade7854_i2c_read_reg_24;
@@ -222,11 +223,9 @@ static int __devinit ade7854_i2c_probe(struct i2c_client *client,
        st->i2c = client;
        st->irq = client->irq;
 
-       ret = ade7854_probe(st, &client->dev);
-       if (ret) {
-               kfree(st);
-               return ret;
-       }
+       ret = ade7854_probe(indio_dev, &client->dev);
+       if (ret)
+               iio_free_device(indio_dev);
 
        return ret;
 }