aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2013-08-19 07:38:00 -0400
committerJonathan Cameron <jic23@kernel.org>2013-08-19 15:27:24 -0400
commit8571ebf7fc1892beadd83dd7af385c599c3ec0d3 (patch)
treef4c164ee7e0a0e31b9dd14cf54d9a4755f8fe8f7
parentcd5e5785417591deba06b5fe3e78137137d2a9d3 (diff)
iio: dac: ad5504: Use devm_* APIs
devm_* APIs are device managed and make code simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r--drivers/iio/dac/ad5504.c31
1 files changed, 8 insertions, 23 deletions
diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c
index 139206e84cb7..caffb16bc05c 100644
--- a/drivers/iio/dac/ad5504.c
+++ b/drivers/iio/dac/ad5504.c
@@ -281,16 +281,14 @@ static int ad5504_probe(struct spi_device *spi)
281 struct regulator *reg; 281 struct regulator *reg;
282 int ret, voltage_uv = 0; 282 int ret, voltage_uv = 0;
283 283
284 indio_dev = iio_device_alloc(sizeof(*st)); 284 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
285 if (indio_dev == NULL) { 285 if (!indio_dev)
286 ret = -ENOMEM; 286 return -ENOMEM;
287 goto error_ret; 287 reg = devm_regulator_get(&spi->dev, "vcc");
288 }
289 reg = regulator_get(&spi->dev, "vcc");
290 if (!IS_ERR(reg)) { 288 if (!IS_ERR(reg)) {
291 ret = regulator_enable(reg); 289 ret = regulator_enable(reg);
292 if (ret) 290 if (ret)
293 goto error_put_reg; 291 return ret;
294 292
295 ret = regulator_get_voltage(reg); 293 ret = regulator_get_voltage(reg);
296 if (ret < 0) 294 if (ret < 0)
@@ -321,7 +319,7 @@ static int ad5504_probe(struct spi_device *spi)
321 indio_dev->modes = INDIO_DIRECT_MODE; 319 indio_dev->modes = INDIO_DIRECT_MODE;
322 320
323 if (spi->irq) { 321 if (spi->irq) {
324 ret = request_threaded_irq(spi->irq, 322 ret = devm_request_threaded_irq(&spi->dev, spi->irq,
325 NULL, 323 NULL,
326 &ad5504_event_handler, 324 &ad5504_event_handler,
327 IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 325 IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
@@ -333,22 +331,14 @@ static int ad5504_probe(struct spi_device *spi)
333 331
334 ret = iio_device_register(indio_dev); 332 ret = iio_device_register(indio_dev);
335 if (ret) 333 if (ret)
336 goto error_free_irq; 334 goto error_disable_reg;
337 335
338 return 0; 336 return 0;
339 337
340error_free_irq:
341 if (spi->irq)
342 free_irq(spi->irq, indio_dev);
343error_disable_reg: 338error_disable_reg:
344 if (!IS_ERR(reg)) 339 if (!IS_ERR(reg))
345 regulator_disable(reg); 340 regulator_disable(reg);
346error_put_reg:
347 if (!IS_ERR(reg))
348 regulator_put(reg);
349 341
350 iio_device_free(indio_dev);
351error_ret:
352 return ret; 342 return ret;
353} 343}
354 344
@@ -358,14 +348,9 @@ static int ad5504_remove(struct spi_device *spi)
358 struct ad5504_state *st = iio_priv(indio_dev); 348 struct ad5504_state *st = iio_priv(indio_dev);
359 349
360 iio_device_unregister(indio_dev); 350 iio_device_unregister(indio_dev);
361 if (spi->irq)
362 free_irq(spi->irq, indio_dev);
363 351
364 if (!IS_ERR(st->reg)) { 352 if (!IS_ERR(st->reg))
365 regulator_disable(st->reg); 353 regulator_disable(st->reg);
366 regulator_put(st->reg);
367 }
368 iio_device_free(indio_dev);
369 354
370 return 0; 355 return 0;
371} 356}