diff options
author | Sachin Kamat <sachin.kamat@linaro.org> | 2013-08-19 07:38:00 -0400 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2013-08-19 15:27:24 -0400 |
commit | 8571ebf7fc1892beadd83dd7af385c599c3ec0d3 (patch) | |
tree | f4c164ee7e0a0e31b9dd14cf54d9a4755f8fe8f7 | |
parent | cd5e5785417591deba06b5fe3e78137137d2a9d3 (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.c | 31 |
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 | ||
340 | error_free_irq: | ||
341 | if (spi->irq) | ||
342 | free_irq(spi->irq, indio_dev); | ||
343 | error_disable_reg: | 338 | error_disable_reg: |
344 | if (!IS_ERR(reg)) | 339 | if (!IS_ERR(reg)) |
345 | regulator_disable(reg); | 340 | regulator_disable(reg); |
346 | error_put_reg: | ||
347 | if (!IS_ERR(reg)) | ||
348 | regulator_put(reg); | ||
349 | 341 | ||
350 | iio_device_free(indio_dev); | ||
351 | error_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 | } |