Commit 0d7c04d33f3e2f9e3da0a545be747731b4410e32
Committed by
Jonathan Cameron
1 parent
7ff0de3faa
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
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 | } |