iio: ti-adc128s052: Drop variable vref
authorMatti Vaittinen <mazziesaccount@gmail.com>
Mon, 28 Apr 2025 07:02:17 +0000 (10:02 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 21 May 2025 13:20:30 +0000 (14:20 +0100)
According to Jonathan, variable reference voltages are very rare. It is
unlikely it is needed, and supporting it makes the code a bit more
complex.

Simplify the driver and drop the variable vref support.

Suggested-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Reviewed-by: David Lechner <dlechner@baylibre.com>
Link: https://patch.msgid.link/59106e24332743a7f9eb0b13ad6a2f5595ab485a.1745823530.git.mazziesaccount@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ti-adc128s052.c

index d4721ad..1b46a81 100644 (file)
@@ -29,13 +29,12 @@ struct adc128_configuration {
 struct adc128 {
        struct spi_device *spi;
 
-       struct regulator *reg;
        /*
         * Serialize the SPI 'write-channel + read data' accesses and protect
         * the shared buffer.
         */
        struct mutex lock;
-
+       int vref_mv;
        union {
                __be16 buffer16;
                u8 buffer[2];
@@ -81,11 +80,7 @@ static int adc128_read_raw(struct iio_dev *indio_dev,
 
        case IIO_CHAN_INFO_SCALE:
 
-               ret = regulator_get_voltage(adc->reg);
-               if (ret < 0)
-                       return ret;
-
-               *val = ret / 1000;
+               *val = adc->vref_mv;
                *val2 = 12;
                return IIO_VAL_FRACTIONAL_LOG2;
 
@@ -155,11 +150,6 @@ static const struct iio_info adc128_info = {
        .read_raw = adc128_read_raw,
 };
 
-static void adc128_disable_regulator(void *reg)
-{
-       regulator_disable(reg);
-}
-
 static int adc128_probe(struct spi_device *spi)
 {
        const struct adc128_configuration *config;
@@ -183,17 +173,14 @@ static int adc128_probe(struct spi_device *spi)
        indio_dev->channels = config->channels;
        indio_dev->num_channels = config->num_channels;
 
-       adc->reg = devm_regulator_get(&spi->dev, config->refname);
-       if (IS_ERR(adc->reg))
-               return PTR_ERR(adc->reg);
-
-       ret = regulator_enable(adc->reg);
+       ret = devm_regulator_get_enable_read_voltage(&spi->dev,
+                                                    config->refname);
        if (ret < 0)
-               return ret;
-       ret = devm_add_action_or_reset(&spi->dev, adc128_disable_regulator,
-                                      adc->reg);
-       if (ret)
-               return ret;
+               return dev_err_probe(&spi->dev, ret,
+                                    "failed to read '%s' voltage",
+                                    config->refname);
+
+       adc->vref_mv = ret / 1000;
 
        if (config->num_other_regulators) {
                ret = devm_regulator_bulk_get_enable(&spi->dev,