summaryrefslogtreecommitdiff
path: root/drivers/staging/iio/adc
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2011-08-30 12:41:19 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-06 16:00:29 -0700
commit26a54797c1b0941021a40a5973098fc28fe53d12 (patch)
treeec9de84d9d56d5e82fd29ba2d6ec99a0c72a2e6a /drivers/staging/iio/adc
parent3e39440789adef103422ce201538b4da8745fe8e (diff)
staging:iio:various cleanup regulator use paths.
No way iio_device_allocate or iio_device_unregister effected by regulators so copying tricks not needed. This is really about regularizing the layout of drivers. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/adc')
-rw-r--r--drivers/staging/iio/adc/ad7476_core.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/drivers/staging/iio/adc/ad7476_core.c b/drivers/staging/iio/adc/ad7476_core.c
index f0393d59ccaf..7329b009a71a 100644
--- a/drivers/staging/iio/adc/ad7476_core.c
+++ b/drivers/staging/iio/adc/ad7476_core.c
@@ -130,7 +130,6 @@ static int __devinit ad7476_probe(struct spi_device *spi)
struct iio_dev *indio_dev;
int ret, voltage_uv = 0;
bool reg_done = false;
- struct regulator *reg;
indio_dev = iio_allocate_device(sizeof(*st));
if (indio_dev == NULL) {
@@ -138,15 +137,14 @@ static int __devinit ad7476_probe(struct spi_device *spi)
goto error_ret;
}
st = iio_priv(indio_dev);
- reg = regulator_get(&spi->dev, "vcc");
- if (!IS_ERR(reg)) {
- ret = regulator_enable(reg);
+ st->reg = regulator_get(&spi->dev, "vcc");
+ if (!IS_ERR(st->reg)) {
+ ret = regulator_enable(st->reg);
if (ret)
goto error_put_reg;
- voltage_uv = regulator_get_voltage(reg);
+ voltage_uv = regulator_get_voltage(st->reg);
}
- st->reg = reg;
st->chip_info =
&ad7476_chip_info_tbl[spi_get_device_id(spi)->driver_data];
@@ -197,11 +195,11 @@ error_cleanup_ring:
ad7476_ring_cleanup(indio_dev);
iio_device_unregister(indio_dev);
error_disable_reg:
- if (!IS_ERR(reg))
+ if (!IS_ERR(st->reg))
regulator_disable(st->reg);
error_put_reg:
- if (!IS_ERR(reg))
- regulator_put(reg);
+ if (!IS_ERR(st->reg))
+ regulator_put(st->reg);
if (!reg_done)
iio_free_device(indio_dev);
error_ret:
@@ -212,16 +210,14 @@ static int ad7476_remove(struct spi_device *spi)
{
struct iio_dev *indio_dev = spi_get_drvdata(spi);
struct ad7476_state *st = iio_priv(indio_dev);
- /* copy needed as st will have been freed */
- struct regulator *reg = st->reg;
iio_ring_buffer_unregister(indio_dev);
ad7476_ring_cleanup(indio_dev);
- iio_device_unregister(indio_dev);
- if (!IS_ERR(reg)) {
- regulator_disable(reg);
- regulator_put(reg);
+ if (!IS_ERR(st->reg)) {
+ regulator_disable(st->reg);
+ regulator_put(st->reg);
}
+ iio_device_unregister(indio_dev);
return 0;
}