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: pressure: ms5611: Use devm_regulator_get_enable()

This driver only turns the power on at probe and off at remove.
The new devm_regulator_get_enable() replaces this boilerplate code.
Some additional refactoring to drop now unnecessary unwinding after
this change.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Tomasz Duszynski <tduszyns@gmail.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Link: https://lore.kernel.org/r/20221016163409.320197-14-jic23@kernel.org

+5 -30
-3
drivers/iio/pressure/ms5611.h
··· 13 13 #include <linux/iio/iio.h> 14 14 #include <linux/mutex.h> 15 15 16 - struct regulator; 17 - 18 16 #define MS5611_RESET 0x1e 19 17 #define MS5611_READ_ADC 0x00 20 18 #define MS5611_READ_PROM_WORD 0xA0 ··· 50 52 51 53 int (*compensate_temp_and_pressure)(struct ms5611_state *st, s32 *temp, 52 54 s32 *pressure); 53 - struct regulator *vdd; 54 55 }; 55 56 56 57 int ms5611_probe(struct iio_dev *indio_dev, struct device *dev,
+5 -27
drivers/iio/pressure/ms5611_core.c
··· 380 380 static int ms5611_init(struct iio_dev *indio_dev) 381 381 { 382 382 int ret; 383 - struct ms5611_state *st = iio_priv(indio_dev); 384 383 385 384 /* Enable attached regulator if any. */ 386 - st->vdd = devm_regulator_get(indio_dev->dev.parent, "vdd"); 387 - if (IS_ERR(st->vdd)) 388 - return PTR_ERR(st->vdd); 389 - 390 - ret = regulator_enable(st->vdd); 391 - if (ret) { 392 - dev_err(indio_dev->dev.parent, 393 - "failed to enable Vdd supply: %d\n", ret); 385 + ret = devm_regulator_get_enable(indio_dev->dev.parent, "vdd"); 386 + if (ret) 394 387 return ret; 395 - } 396 388 397 389 ret = ms5611_reset(indio_dev); 398 390 if (ret < 0) 399 - goto err_regulator_disable; 391 + return ret; 400 392 401 393 ret = ms5611_read_prom(indio_dev); 402 394 if (ret < 0) 403 - goto err_regulator_disable; 395 + return ret; 404 396 405 397 return 0; 406 - 407 - err_regulator_disable: 408 - regulator_disable(st->vdd); 409 - return ret; 410 - } 411 - 412 - static void ms5611_fini(const struct iio_dev *indio_dev) 413 - { 414 - const struct ms5611_state *st = iio_priv(indio_dev); 415 - 416 - regulator_disable(st->vdd); 417 398 } 418 399 419 400 int ms5611_probe(struct iio_dev *indio_dev, struct device *dev, ··· 438 457 ms5611_trigger_handler, NULL); 439 458 if (ret < 0) { 440 459 dev_err(dev, "iio triggered buffer setup failed\n"); 441 - goto err_fini; 460 + return ret; 442 461 } 443 462 444 463 ret = iio_device_register(indio_dev); ··· 451 470 452 471 err_buffer_cleanup: 453 472 iio_triggered_buffer_cleanup(indio_dev); 454 - err_fini: 455 - ms5611_fini(indio_dev); 456 473 return ret; 457 474 } 458 475 EXPORT_SYMBOL_NS(ms5611_probe, IIO_MS5611); ··· 459 480 { 460 481 iio_device_unregister(indio_dev); 461 482 iio_triggered_buffer_cleanup(indio_dev); 462 - ms5611_fini(indio_dev); 463 483 } 464 484 EXPORT_SYMBOL_NS(ms5611_remove, IIO_MS5611); 465 485