Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: adc: ti-ads8688: use devm_regulator_get_enable_read_voltage()

Use devm_regulator_get_enable_read_voltage() to simplify the code.

Signed-off-by: David Lechner <dlechner@baylibre.com>
Link: https://patch.msgid.link/20240621-iio-regulator-refactor-round-2-v1-8-49e50cd0b99a@baylibre.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

David Lechner and committed by
Jonathan Cameron
2867ccf4 71c8bea4

+5 -24
+5 -24
drivers/iio/adc/ti-ads8688.c
··· 65 65 struct mutex lock; 66 66 const struct ads8688_chip_info *chip_info; 67 67 struct spi_device *spi; 68 - struct regulator *reg; 69 68 unsigned int vref_mv; 70 69 enum ads8688_range range[8]; 71 70 union { ··· 422 423 423 424 st = iio_priv(indio_dev); 424 425 425 - st->reg = devm_regulator_get_optional(&spi->dev, "vref"); 426 - if (!IS_ERR(st->reg)) { 427 - ret = regulator_enable(st->reg); 428 - if (ret) 429 - return ret; 426 + ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vref"); 427 + if (ret < 0 && ret != -ENODEV) 428 + return ret; 430 429 431 - ret = regulator_get_voltage(st->reg); 432 - if (ret < 0) 433 - goto err_regulator_disable; 434 - 435 - st->vref_mv = ret / 1000; 436 - } else { 437 - /* Use internal reference */ 438 - st->vref_mv = ADS8688_VREF_MV; 439 - } 430 + st->vref_mv = ret == -ENODEV ? ADS8688_VREF_MV : ret / 1000; 440 431 441 432 st->chip_info = &ads8688_chip_info_tbl[spi_get_device_id(spi)->driver_data]; 442 433 ··· 449 460 ret = iio_triggered_buffer_setup(indio_dev, NULL, ads8688_trigger_handler, NULL); 450 461 if (ret < 0) { 451 462 dev_err(&spi->dev, "iio triggered buffer setup failed\n"); 452 - goto err_regulator_disable; 463 + return ret; 453 464 } 454 465 455 466 ret = iio_device_register(indio_dev); ··· 461 472 err_buffer_cleanup: 462 473 iio_triggered_buffer_cleanup(indio_dev); 463 474 464 - err_regulator_disable: 465 - if (!IS_ERR(st->reg)) 466 - regulator_disable(st->reg); 467 - 468 475 return ret; 469 476 } 470 477 471 478 static void ads8688_remove(struct spi_device *spi) 472 479 { 473 480 struct iio_dev *indio_dev = spi_get_drvdata(spi); 474 - struct ads8688_state *st = iio_priv(indio_dev); 475 481 476 482 iio_device_unregister(indio_dev); 477 483 iio_triggered_buffer_cleanup(indio_dev); 478 - 479 - if (!IS_ERR(st->reg)) 480 - regulator_disable(st->reg); 481 484 } 482 485 483 486 static const struct spi_device_id ads8688_id[] = {