return st->single_rx;
}
-static int ti_ads7950_get_range(struct ti_ads7950_state *st)
+static unsigned int ti_ads7950_get_range(struct ti_ads7950_state *st)
{
- int vref;
-
- if (st->vref_mv) {
- vref = st->vref_mv;
- } else {
- vref = regulator_get_voltage(st->reg);
- if (vref < 0)
- return vref;
-
- vref /= 1000;
- }
+ unsigned int vref = st->vref_mv;
if (st->cmd_settings_bitmask & TI_ADS7950_CR_RANGE_5V)
vref *= 2;
return IIO_VAL_INT;
case IIO_CHAN_INFO_SCALE:
- ret = ti_ads7950_get_range(st);
- if (ret < 0)
- return ret;
-
- *val = ret;
+ *val = ti_ads7950_get_range(st);
*val2 = (1 << chan->scan_type.realbits) - 1;
return IIO_VAL_FRACTIONAL;
spi_message_init_with_transfers(&st->scan_single_msg,
st->scan_single_xfer, 3);
- /* Use hard coded value for reference voltage in ACPI case */
- if (ACPI_COMPANION(&spi->dev))
- st->vref_mv = TI_ADS7950_VA_MV_ACPI_DEFAULT;
-
mutex_init(&st->slock);
- st->reg = devm_regulator_get(&spi->dev, "vref");
- if (IS_ERR(st->reg)) {
- ret = dev_err_probe(&spi->dev, PTR_ERR(st->reg),
- "Failed to get regulator \"vref\"\n");
- goto error_destroy_mutex;
- }
+ /* Use hard coded value for reference voltage in ACPI case */
+ if (ACPI_COMPANION(&spi->dev)) {
+ st->vref_mv = TI_ADS7950_VA_MV_ACPI_DEFAULT;
+ } else {
+ ret = devm_regulator_get_enable_read_voltage(&spi->dev, "vref");
+ if (ret < 0)
+ return dev_err_probe(&spi->dev, ret,
+ "Failed to get regulator \"vref\"\n");
- ret = regulator_enable(st->reg);
- if (ret) {
- dev_err(&spi->dev, "Failed to enable regulator \"vref\"\n");
- goto error_destroy_mutex;
+ st->vref_mv = ret / 1000;
}
ret = iio_triggered_buffer_setup(indio_dev, NULL,
&ti_ads7950_trigger_handler, NULL);
if (ret) {
dev_err(&spi->dev, "Failed to setup triggered buffer\n");
- goto error_disable_reg;
+ goto error_destroy_mutex;
}
ret = ti_ads7950_init_hw(st);
iio_device_unregister(indio_dev);
error_cleanup_ring:
iio_triggered_buffer_cleanup(indio_dev);
-error_disable_reg:
- regulator_disable(st->reg);
error_destroy_mutex:
mutex_destroy(&st->slock);
gpiochip_remove(&st->chip);
iio_device_unregister(indio_dev);
iio_triggered_buffer_cleanup(indio_dev);
- regulator_disable(st->reg);
mutex_destroy(&st->slock);
}