Commit 0d7c04d33f3e2f9e3da0a545be747731b4410e32

Authored by Sachin Kamat
Committed by Jonathan Cameron
1 parent 7ff0de3faa

iio: dac: ad5791: 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>

Showing 1 changed file with 9 additions and 26 deletions Side-by-side Diff

drivers/iio/dac/ad5791.c
... ... @@ -349,17 +349,15 @@
349 349 struct ad5791_state *st;
350 350 int ret, pos_voltage_uv = 0, neg_voltage_uv = 0;
351 351  
352   - indio_dev = iio_device_alloc(sizeof(*st));
353   - if (indio_dev == NULL) {
354   - ret = -ENOMEM;
355   - goto error_ret;
356   - }
  352 + indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
  353 + if (!indio_dev)
  354 + return -ENOMEM;
357 355 st = iio_priv(indio_dev);
358   - st->reg_vdd = regulator_get(&spi->dev, "vdd");
  356 + st->reg_vdd = devm_regulator_get(&spi->dev, "vdd");
359 357 if (!IS_ERR(st->reg_vdd)) {
360 358 ret = regulator_enable(st->reg_vdd);
361 359 if (ret)
362   - goto error_put_reg_pos;
  360 + return ret;
363 361  
364 362 ret = regulator_get_voltage(st->reg_vdd);
365 363 if (ret < 0)
366 364  
... ... @@ -368,11 +366,11 @@
368 366 pos_voltage_uv = ret;
369 367 }
370 368  
371   - st->reg_vss = regulator_get(&spi->dev, "vss");
  369 + st->reg_vss = devm_regulator_get(&spi->dev, "vss");
372 370 if (!IS_ERR(st->reg_vss)) {
373 371 ret = regulator_enable(st->reg_vss);
374 372 if (ret)
375   - goto error_put_reg_neg;
  373 + goto error_disable_reg_pos;
376 374  
377 375 ret = regulator_get_voltage(st->reg_vss);
378 376 if (ret < 0)
379 377  
... ... @@ -428,19 +426,9 @@
428 426 error_disable_reg_neg:
429 427 if (!IS_ERR(st->reg_vss))
430 428 regulator_disable(st->reg_vss);
431   -error_put_reg_neg:
432   - if (!IS_ERR(st->reg_vss))
433   - regulator_put(st->reg_vss);
434   -
435 429 error_disable_reg_pos:
436 430 if (!IS_ERR(st->reg_vdd))
437 431 regulator_disable(st->reg_vdd);
438   -error_put_reg_pos:
439   - if (!IS_ERR(st->reg_vdd))
440   - regulator_put(st->reg_vdd);
441   - iio_device_free(indio_dev);
442   -error_ret:
443   -
444 432 return ret;
445 433 }
446 434  
447 435  
448 436  
449 437  
... ... @@ -450,16 +438,11 @@
450 438 struct ad5791_state *st = iio_priv(indio_dev);
451 439  
452 440 iio_device_unregister(indio_dev);
453   - if (!IS_ERR(st->reg_vdd)) {
  441 + if (!IS_ERR(st->reg_vdd))
454 442 regulator_disable(st->reg_vdd);
455   - regulator_put(st->reg_vdd);
456   - }
457 443  
458   - if (!IS_ERR(st->reg_vss)) {
  444 + if (!IS_ERR(st->reg_vss))
459 445 regulator_disable(st->reg_vss);
460   - regulator_put(st->reg_vss);
461   - }
462   - iio_device_free(indio_dev);
463 446  
464 447 return 0;
465 448 }