]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
iio: adc: ad7298: rework external ref setup & remove platform data
authorAlexandru Ardelean <alexandru.ardelean@analog.com>
Thu, 1 Oct 2020 14:10:48 +0000 (17:10 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 10 Oct 2020 17:01:26 +0000 (18:01 +0100)
This change removes the old platform data for ad7298. It is only used to
provide whether to use an external regulator as a reference.

So, the logic is inverted a bit. The driver now tries to obtain a
regulator. If one is provided, then the external ref is used. The rest of
the logic should work as before.

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Link: https://lore.kernel.org/r/20201001141048.69050-1-alexandru.ardelean@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7298.c
include/linux/platform_data/ad7298.h [deleted file]

index 48d43cb0f932cf48b32aaf4e21b2616152dfb45e..fa1047f74a1f0b6f95f6ec31d3f3413593fef961 100644 (file)
@@ -23,8 +23,6 @@
 #include <linux/iio/trigger_consumer.h>
 #include <linux/iio/triggered_buffer.h>
 
-#include <linux/platform_data/ad7298.h>
-
 #define AD7298_WRITE   BIT(15) /* write to the control register */
 #define AD7298_REPEAT  BIT(14) /* repeated conversion enable */
 #define AD7298_CH(x)   BIT(13 - (x)) /* channel select */
@@ -283,7 +281,6 @@ static const struct iio_info ad7298_info = {
 
 static int ad7298_probe(struct spi_device *spi)
 {
-       struct ad7298_platform_data *pdata = spi->dev.platform_data;
        struct ad7298_state *st;
        struct iio_dev *indio_dev;
        int ret;
@@ -294,14 +291,18 @@ static int ad7298_probe(struct spi_device *spi)
 
        st = iio_priv(indio_dev);
 
-       if (pdata && pdata->ext_ref)
+       st->reg = devm_regulator_get_optional(&spi->dev, "vref");
+       if (!IS_ERR(st->reg)) {
                st->ext_ref = AD7298_EXTREF;
+       } else {
+               ret = PTR_ERR(st->reg);
+               if (ret != -ENODEV)
+                       return ret;
 
-       if (st->ext_ref) {
-               st->reg = devm_regulator_get(&spi->dev, "vref");
-               if (IS_ERR(st->reg))
-                       return PTR_ERR(st->reg);
+               st->reg = NULL;
+       }
 
+       if (st->reg) {
                ret = regulator_enable(st->reg);
                if (ret)
                        return ret;
diff --git a/include/linux/platform_data/ad7298.h b/include/linux/platform_data/ad7298.h
deleted file mode 100644 (file)
index 3e0ffe2..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * AD7298 SPI ADC driver
- *
- * Copyright 2011 Analog Devices Inc.
- */
-
-#ifndef __LINUX_PLATFORM_DATA_AD7298_H__
-#define __LINUX_PLATFORM_DATA_AD7298_H__
-
-/**
- * struct ad7298_platform_data - Platform data for the ad7298 ADC driver
- * @ext_ref: Whether to use an external reference voltage.
- **/
-struct ad7298_platform_data {
-       bool ext_ref;
-};
-
-#endif /* IIO_ADC_AD7298_H_ */