linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] staging: iio: ad7606: move driver out of staging
@ 2016-12-11  2:47 Eva Rachel Retuya
  2016-12-11  2:47 ` [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale Eva Rachel Retuya
  2016-12-11  2:47 ` [PATCH v3 2/2] staging: iio: ad7606: move out of staging Eva Rachel Retuya
  0 siblings, 2 replies; 8+ messages in thread
From: Eva Rachel Retuya @ 2016-12-11  2:47 UTC (permalink / raw)
  To: linux-iio, devel, linux-kernel
  Cc: lars, Michael.Hennerich, jic23, knaack.h, pmeerw, gregkh,
	daniel.baluta, amsfield22, Eva Rachel Retuya

Address the last remaining TODO [1] for this driver and move it from staging
into mainline.

[1] https://marc.info/?l=linux-iio&m=147689684332118&w=2 

Change in v3:
* Fix incorrect type of 'scale'. (Pointed out by kbuild test robot)

Change in v2:
* Address the incorrect way of implementing the scale. (Pointed out by Lars)

Eva Rachel Retuya (2):
  staging: iio: ad7606: replace range/range_available with corresponding
    scale
  staging: iio: ad7606: move out of staging

 drivers/iio/adc/Kconfig                    |  34 ++++++++++
 drivers/iio/adc/Makefile                   |   3 +
 drivers/{staging => }/iio/adc/ad7606.c     | 100 ++++++++++++++++++-----------
 drivers/{staging => }/iio/adc/ad7606.h     |   1 +
 drivers/{staging => }/iio/adc/ad7606_par.c |   0
 drivers/{staging => }/iio/adc/ad7606_spi.c |   0
 drivers/staging/iio/adc/Kconfig            |  34 ----------
 drivers/staging/iio/adc/Makefile           |   4 --
 8 files changed, 99 insertions(+), 77 deletions(-)
 rename drivers/{staging => }/iio/adc/ad7606.c (86%)
 rename drivers/{staging => }/iio/adc/ad7606.h (98%)
 rename drivers/{staging => }/iio/adc/ad7606_par.c (100%)
 rename drivers/{staging => }/iio/adc/ad7606_spi.c (100%)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale
  2016-12-11  2:47 [PATCH v3 0/2] staging: iio: ad7606: move driver out of staging Eva Rachel Retuya
@ 2016-12-11  2:47 ` Eva Rachel Retuya
  2016-12-30 19:59   ` Jonathan Cameron
  2016-12-11  2:47 ` [PATCH v3 2/2] staging: iio: ad7606: move out of staging Eva Rachel Retuya
  1 sibling, 1 reply; 8+ messages in thread
From: Eva Rachel Retuya @ 2016-12-11  2:47 UTC (permalink / raw)
  To: linux-iio, devel, linux-kernel
  Cc: lars, Michael.Hennerich, jic23, knaack.h, pmeerw, gregkh,
	daniel.baluta, amsfield22, Eva Rachel Retuya

Eliminate the non-standard attributes in_voltage_range and
in_voltage_range_available. Implement in_voltage_scale_available in place
of these attributes and update the SCALE accordingly. The array
scale_avail is introduced to hold the available scale values.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
---
Change in v3:
* Change incorrect type of 'scale' from unsigned int to unsigned long long

Changes in v2:
* Update commit message to reflect changes.
* Introduce scale_avail[] array to hold the available scales.
* Rewrite read_raw's SCALE to make use of the scale_avail[].
* Provide write_raw and write_raw_get_fmt for implementing SCALE.
* Populate the scale_avail[] with values in probe().

 drivers/staging/iio/adc/ad7606.c | 100 ++++++++++++++++++++++++---------------
 drivers/staging/iio/adc/ad7606.h |   1 +
 2 files changed, 62 insertions(+), 39 deletions(-)

diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/staging/iio/adc/ad7606.c
index 4531908..b878664 100644
--- a/drivers/staging/iio/adc/ad7606.c
+++ b/drivers/staging/iio/adc/ad7606.c
@@ -151,9 +151,9 @@ static int ad7606_read_raw(struct iio_dev *indio_dev,
 		*val = (short)ret;
 		return IIO_VAL_INT;
 	case IIO_CHAN_INFO_SCALE:
-		*val = st->range * 2;
-		*val2 = st->chip_info->channels[0].scan_type.realbits;
-		return IIO_VAL_FRACTIONAL_LOG2;
+		*val = st->scale_avail[st->range][0];
+		*val2 = st->scale_avail[st->range][1];
+		return IIO_VAL_INT_PLUS_NANO;
 	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
 		*val = st->oversampling;
 		return IIO_VAL_INT;
@@ -161,42 +161,24 @@ static int ad7606_read_raw(struct iio_dev *indio_dev,
 	return -EINVAL;
 }
 
-static ssize_t ad7606_show_range(struct device *dev,
-				 struct device_attribute *attr, char *buf)
+static ssize_t in_voltage_scale_available_show(struct device *dev,
+					       struct device_attribute *attr,
+					       char *buf)
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7606_state *st = iio_priv(indio_dev);
+	int i, len = 0;
 
-	return sprintf(buf, "%u\n", st->range);
-}
-
-static ssize_t ad7606_store_range(struct device *dev,
-				  struct device_attribute *attr,
-				  const char *buf, size_t count)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	struct ad7606_state *st = iio_priv(indio_dev);
-	unsigned long lval;
-	int ret;
-
-	ret = kstrtoul(buf, 10, &lval);
-	if (ret)
-		return ret;
-
-	if (!(lval == 5000 || lval == 10000))
-		return -EINVAL;
+	for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
+		len += scnprintf(buf + len, PAGE_SIZE - len, "%d.%09u ",
+				 st->scale_avail[i][0], st->scale_avail[i][1]);
 
-	mutex_lock(&indio_dev->mlock);
-	gpiod_set_value(st->gpio_range, lval == 10000);
-	st->range = lval;
-	mutex_unlock(&indio_dev->mlock);
+	buf[len - 1] = '\n';
 
-	return count;
+	return len;
 }
 
-static IIO_DEVICE_ATTR(in_voltage_range, S_IRUGO | S_IWUSR,
-		       ad7606_show_range, ad7606_store_range, 0);
-static IIO_CONST_ATTR(in_voltage_range_available, "5000 10000");
+static IIO_DEVICE_ATTR_RO(in_voltage_scale_available, 0);
 
 static int ad7606_oversampling_get_index(unsigned int val)
 {
@@ -218,9 +200,23 @@ static int ad7606_write_raw(struct iio_dev *indio_dev,
 {
 	struct ad7606_state *st = iio_priv(indio_dev);
 	int values[3];
-	int ret;
+	int ret, i;
 
 	switch (mask) {
+	case IIO_CHAN_INFO_SCALE:
+		ret = -EINVAL;
+		mutex_lock(&indio_dev->mlock);
+		for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
+			if (val2 == st->scale_avail[i][1]) {
+				gpiod_set_value(st->gpio_range, i);
+				st->range = i;
+
+				ret = 0;
+				break;
+			}
+		mutex_unlock(&indio_dev->mlock);
+
+		return ret;
 	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
 		if (val2)
 			return -EINVAL;
@@ -244,11 +240,22 @@ static int ad7606_write_raw(struct iio_dev *indio_dev,
 	}
 }
 
+static int ad7606_write_raw_get_fmt(struct iio_dev *indio_dev,
+				    struct iio_chan_spec const *chan,
+				    long mask)
+{
+	switch (mask) {
+	case IIO_CHAN_INFO_SCALE:
+		return IIO_VAL_INT_PLUS_NANO;
+	default:
+		return -EINVAL;
+	}
+}
+
 static IIO_CONST_ATTR(oversampling_ratio_available, "1 2 4 8 16 32 64");
 
 static struct attribute *ad7606_attributes_os_and_range[] = {
-	&iio_dev_attr_in_voltage_range.dev_attr.attr,
-	&iio_const_attr_in_voltage_range_available.dev_attr.attr,
+	&iio_dev_attr_in_voltage_scale_available.dev_attr.attr,
 	&iio_const_attr_oversampling_ratio_available.dev_attr.attr,
 	NULL,
 };
@@ -267,8 +274,7 @@ static const struct attribute_group ad7606_attribute_group_os = {
 };
 
 static struct attribute *ad7606_attributes_range[] = {
-	&iio_dev_attr_in_voltage_range.dev_attr.attr,
-	&iio_const_attr_in_voltage_range_available.dev_attr.attr,
+	&iio_dev_attr_in_voltage_scale_available.dev_attr.attr,
 	NULL,
 };
 
@@ -384,6 +390,7 @@ static const struct iio_info ad7606_info_os_and_range = {
 	.driver_module = THIS_MODULE,
 	.read_raw = &ad7606_read_raw,
 	.write_raw = &ad7606_write_raw,
+	.write_raw_get_fmt = &ad7606_write_raw_get_fmt,
 	.attrs = &ad7606_attribute_group_os_and_range,
 };
 
@@ -397,6 +404,8 @@ static const struct iio_info ad7606_info_os = {
 static const struct iio_info ad7606_info_range = {
 	.driver_module = THIS_MODULE,
 	.read_raw = &ad7606_read_raw,
+	.write_raw = &ad7606_write_raw,
+	.write_raw_get_fmt = &ad7606_write_raw_get_fmt,
 	.attrs = &ad7606_attribute_group_range,
 };
 
@@ -405,7 +414,9 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address,
 		 const struct ad7606_bus_ops *bops)
 {
 	struct ad7606_state *st;
-	int ret;
+	unsigned int range;
+	unsigned long long scale;
+	int ret, i, j;
 	struct iio_dev *indio_dev;
 
 	indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
@@ -417,8 +428,19 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address,
 	st->dev = dev;
 	st->bops = bops;
 	st->base_address = base_address;
-	st->range = 5000;
+	/* tied to logic low, analog input range is +/- 5V */
+	st->range = 0;
 	st->oversampling = 1;
+	/* Populate the scales, 2.5/2**16 then 5/2**16 */
+	range = 5000;
+	for (i = 0, j = 1; i < ARRAY_SIZE(st->scale_avail); i++, j--) {
+		scale = ((u64)range * 100000000) >>
+			ad7606_channels[1].scan_type.realbits;
+		scale >>= j;
+
+		st->scale_avail[i][1] = do_div(scale, 100000000) * 10;
+		st->scale_avail[i][0] = scale;
+	}
 	INIT_WORK(&st->poll_work, &ad7606_poll_bh_to_ring);
 
 	st->reg = devm_regulator_get(dev, "avcc");
@@ -525,7 +547,7 @@ static int ad7606_resume(struct device *dev)
 	struct ad7606_state *st = iio_priv(indio_dev);
 
 	if (st->gpio_standby) {
-		gpiod_set_value(st->gpio_range, st->range == 10000);
+		gpiod_set_value(st->gpio_range, st->range);
 		gpiod_set_value(st->gpio_standby, 1);
 		ad7606_reset(st);
 	}
diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h
index 746f955..671c456 100644
--- a/drivers/staging/iio/adc/ad7606.h
+++ b/drivers/staging/iio/adc/ad7606.h
@@ -34,6 +34,7 @@ struct ad7606_state {
 	const struct ad7606_bus_ops	*bops;
 	unsigned int			range;
 	unsigned int			oversampling;
+	unsigned int			scale_avail[2][2];
 	bool				done;
 	void __iomem			*base_address;
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 2/2] staging: iio: ad7606: move out of staging
  2016-12-11  2:47 [PATCH v3 0/2] staging: iio: ad7606: move driver out of staging Eva Rachel Retuya
  2016-12-11  2:47 ` [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale Eva Rachel Retuya
@ 2016-12-11  2:47 ` Eva Rachel Retuya
  2016-12-30 20:16   ` Jonathan Cameron
  1 sibling, 1 reply; 8+ messages in thread
From: Eva Rachel Retuya @ 2016-12-11  2:47 UTC (permalink / raw)
  To: linux-iio, devel, linux-kernel
  Cc: lars, Michael.Hennerich, jic23, knaack.h, pmeerw, gregkh,
	daniel.baluta, amsfield22, Eva Rachel Retuya

Move the ad7606 driver from staging/iio/adc to iio/adc. Also, update the
corresponding Makefile and Kconfig associated with the change.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
---
 drivers/iio/adc/Kconfig                    | 34 ++++++++++++++++++++++++++++++
 drivers/iio/adc/Makefile                   |  3 +++
 drivers/{staging => }/iio/adc/ad7606.c     |  0
 drivers/{staging => }/iio/adc/ad7606.h     |  0
 drivers/{staging => }/iio/adc/ad7606_par.c |  0
 drivers/{staging => }/iio/adc/ad7606_spi.c |  0
 drivers/staging/iio/adc/Kconfig            | 34 ------------------------------
 drivers/staging/iio/adc/Makefile           |  4 ----
 8 files changed, 37 insertions(+), 38 deletions(-)
 rename drivers/{staging => }/iio/adc/ad7606.c (100%)
 rename drivers/{staging => }/iio/adc/ad7606.h (100%)
 rename drivers/{staging => }/iio/adc/ad7606_par.c (100%)
 rename drivers/{staging => }/iio/adc/ad7606_spi.c (100%)

diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index be81ba3..3fa2c60 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -58,6 +58,40 @@ config AD7476
 	  To compile this driver as a module, choose M here: the
 	  module will be called ad7476.
 
+config AD7606
+	tristate "Analog Devices AD7606 ADC driver"
+	depends on GPIOLIB || COMPILE_TEST
+	depends on HAS_IOMEM
+	select IIO_BUFFER
+	select IIO_TRIGGERED_BUFFER
+	help
+	  Say yes here to build support for Analog Devices:
+	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called ad7606.
+
+config AD7606_IFACE_PARALLEL
+	tristate "parallel interface support"
+	depends on AD7606
+	help
+	  Say yes here to include parallel interface support on the AD7606
+	  ADC driver.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called ad7606_parallel.
+
+config AD7606_IFACE_SPI
+	tristate "spi interface support"
+	depends on AD7606
+	depends on SPI
+	help
+	  Say yes here to include parallel interface support on the AD7606
+	  ADC driver.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called ad7606_spi.
+
 config AD7766
 	tristate "Analog Devices AD7766/AD7767 ADC driver"
 	depends on SPI_MASTER
diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
index f8e1218..dfe7dea 100644
--- a/drivers/iio/adc/Makefile
+++ b/drivers/iio/adc/Makefile
@@ -9,6 +9,9 @@ obj-$(CONFIG_AD7291) += ad7291.o
 obj-$(CONFIG_AD7298) += ad7298.o
 obj-$(CONFIG_AD7923) += ad7923.o
 obj-$(CONFIG_AD7476) += ad7476.o
+obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
+obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
+obj-$(CONFIG_AD7606) += ad7606.o
 obj-$(CONFIG_AD7766) += ad7766.o
 obj-$(CONFIG_AD7791) += ad7791.o
 obj-$(CONFIG_AD7793) += ad7793.o
diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/iio/adc/ad7606.c
similarity index 100%
rename from drivers/staging/iio/adc/ad7606.c
rename to drivers/iio/adc/ad7606.c
diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/iio/adc/ad7606.h
similarity index 100%
rename from drivers/staging/iio/adc/ad7606.h
rename to drivers/iio/adc/ad7606.h
diff --git a/drivers/staging/iio/adc/ad7606_par.c b/drivers/iio/adc/ad7606_par.c
similarity index 100%
rename from drivers/staging/iio/adc/ad7606_par.c
rename to drivers/iio/adc/ad7606_par.c
diff --git a/drivers/staging/iio/adc/ad7606_spi.c b/drivers/iio/adc/ad7606_spi.c
similarity index 100%
rename from drivers/staging/iio/adc/ad7606_spi.c
rename to drivers/iio/adc/ad7606_spi.c
diff --git a/drivers/staging/iio/adc/Kconfig b/drivers/staging/iio/adc/Kconfig
index deff899..995867b 100644
--- a/drivers/staging/iio/adc/Kconfig
+++ b/drivers/staging/iio/adc/Kconfig
@@ -3,40 +3,6 @@
 #
 menu "Analog to digital converters"
 
-config AD7606
-	tristate "Analog Devices AD7606 ADC driver"
-	depends on GPIOLIB || COMPILE_TEST
-	depends on HAS_IOMEM
-	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
-	help
-	  Say yes here to build support for Analog Devices:
-	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called ad7606.
-
-config AD7606_IFACE_PARALLEL
-	tristate "parallel interface support"
-	depends on AD7606
-	help
-	  Say yes here to include parallel interface support on the AD7606
-	  ADC driver.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called ad7606_parallel.
-
-config AD7606_IFACE_SPI
-	tristate "spi interface support"
-	depends on AD7606
-	depends on SPI
-	help
-	  Say yes here to include parallel interface support on the AD7606
-	  ADC driver.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called ad7606_spi.
-
 config AD7780
 	tristate "Analog Devices AD7780 and similar ADCs driver"
 	depends on SPI
diff --git a/drivers/staging/iio/adc/Makefile b/drivers/staging/iio/adc/Makefile
index ac09485..549032b 100644
--- a/drivers/staging/iio/adc/Makefile
+++ b/drivers/staging/iio/adc/Makefile
@@ -2,10 +2,6 @@
 # Makefile for industrial I/O ADC drivers
 #
 
-obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
-obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
-obj-$(CONFIG_AD7606) += ad7606.o
-
 obj-$(CONFIG_AD7780) += ad7780.o
 obj-$(CONFIG_AD7816) += ad7816.o
 obj-$(CONFIG_AD7192) += ad7192.o
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale
  2016-12-11  2:47 ` [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale Eva Rachel Retuya
@ 2016-12-30 19:59   ` Jonathan Cameron
  2017-01-02 18:42     ` Lars-Peter Clausen
  0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Cameron @ 2016-12-30 19:59 UTC (permalink / raw)
  To: Eva Rachel Retuya, linux-iio, devel, linux-kernel
  Cc: lars, Michael.Hennerich, knaack.h, pmeerw, gregkh, daniel.baluta,
	amsfield22

On 11/12/16 02:47, Eva Rachel Retuya wrote:
> Eliminate the non-standard attributes in_voltage_range and
> in_voltage_range_available. Implement in_voltage_scale_available in place
> of these attributes and update the SCALE accordingly. The array
> scale_avail is introduced to hold the available scale values.
> 
> Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
Looks good to me.

Lars, if you have a minute to look over this as well that would
be great.

Jonathan
> ---
> Change in v3:
> * Change incorrect type of 'scale' from unsigned int to unsigned long long
> 
> Changes in v2:
> * Update commit message to reflect changes.
> * Introduce scale_avail[] array to hold the available scales.
> * Rewrite read_raw's SCALE to make use of the scale_avail[].
> * Provide write_raw and write_raw_get_fmt for implementing SCALE.
> * Populate the scale_avail[] with values in probe().
> 
>  drivers/staging/iio/adc/ad7606.c | 100 ++++++++++++++++++++++++---------------
>  drivers/staging/iio/adc/ad7606.h |   1 +
>  2 files changed, 62 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/staging/iio/adc/ad7606.c
> index 4531908..b878664 100644
> --- a/drivers/staging/iio/adc/ad7606.c
> +++ b/drivers/staging/iio/adc/ad7606.c
> @@ -151,9 +151,9 @@ static int ad7606_read_raw(struct iio_dev *indio_dev,
>  		*val = (short)ret;
>  		return IIO_VAL_INT;
>  	case IIO_CHAN_INFO_SCALE:
> -		*val = st->range * 2;
> -		*val2 = st->chip_info->channels[0].scan_type.realbits;
> -		return IIO_VAL_FRACTIONAL_LOG2;
> +		*val = st->scale_avail[st->range][0];
> +		*val2 = st->scale_avail[st->range][1];
> +		return IIO_VAL_INT_PLUS_NANO;
>  	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
>  		*val = st->oversampling;
>  		return IIO_VAL_INT;
> @@ -161,42 +161,24 @@ static int ad7606_read_raw(struct iio_dev *indio_dev,
>  	return -EINVAL;
>  }
>  
> -static ssize_t ad7606_show_range(struct device *dev,
> -				 struct device_attribute *attr, char *buf)
> +static ssize_t in_voltage_scale_available_show(struct device *dev,
> +					       struct device_attribute *attr,
> +					       char *buf)
>  {
>  	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
>  	struct ad7606_state *st = iio_priv(indio_dev);
> +	int i, len = 0;
>  
> -	return sprintf(buf, "%u\n", st->range);
> -}
> -
> -static ssize_t ad7606_store_range(struct device *dev,
> -				  struct device_attribute *attr,
> -				  const char *buf, size_t count)
> -{
> -	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> -	struct ad7606_state *st = iio_priv(indio_dev);
> -	unsigned long lval;
> -	int ret;
> -
> -	ret = kstrtoul(buf, 10, &lval);
> -	if (ret)
> -		return ret;
> -
> -	if (!(lval == 5000 || lval == 10000))
> -		return -EINVAL;
> +	for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
> +		len += scnprintf(buf + len, PAGE_SIZE - len, "%d.%09u ",
> +				 st->scale_avail[i][0], st->scale_avail[i][1]);
>  
> -	mutex_lock(&indio_dev->mlock);
> -	gpiod_set_value(st->gpio_range, lval == 10000);
> -	st->range = lval;
> -	mutex_unlock(&indio_dev->mlock);
> +	buf[len - 1] = '\n';
>  
> -	return count;
> +	return len;
>  }
>  
> -static IIO_DEVICE_ATTR(in_voltage_range, S_IRUGO | S_IWUSR,
> -		       ad7606_show_range, ad7606_store_range, 0);
> -static IIO_CONST_ATTR(in_voltage_range_available, "5000 10000");
> +static IIO_DEVICE_ATTR_RO(in_voltage_scale_available, 0);
>  
>  static int ad7606_oversampling_get_index(unsigned int val)
>  {
> @@ -218,9 +200,23 @@ static int ad7606_write_raw(struct iio_dev *indio_dev,
>  {
>  	struct ad7606_state *st = iio_priv(indio_dev);
>  	int values[3];
> -	int ret;
> +	int ret, i;
>  
>  	switch (mask) {
> +	case IIO_CHAN_INFO_SCALE:
> +		ret = -EINVAL;
> +		mutex_lock(&indio_dev->mlock);
> +		for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++)
> +			if (val2 == st->scale_avail[i][1]) {
> +				gpiod_set_value(st->gpio_range, i);
> +				st->range = i;
> +
> +				ret = 0;
> +				break;
> +			}
> +		mutex_unlock(&indio_dev->mlock);
> +
> +		return ret;
>  	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
>  		if (val2)
>  			return -EINVAL;
> @@ -244,11 +240,22 @@ static int ad7606_write_raw(struct iio_dev *indio_dev,
>  	}
>  }
>  
> +static int ad7606_write_raw_get_fmt(struct iio_dev *indio_dev,
> +				    struct iio_chan_spec const *chan,
> +				    long mask)
> +{
> +	switch (mask) {
> +	case IIO_CHAN_INFO_SCALE:
> +		return IIO_VAL_INT_PLUS_NANO;
> +	default:
> +		return -EINVAL;
> +	}
> +}
> +
>  static IIO_CONST_ATTR(oversampling_ratio_available, "1 2 4 8 16 32 64");
>  
>  static struct attribute *ad7606_attributes_os_and_range[] = {
> -	&iio_dev_attr_in_voltage_range.dev_attr.attr,
> -	&iio_const_attr_in_voltage_range_available.dev_attr.attr,
> +	&iio_dev_attr_in_voltage_scale_available.dev_attr.attr,
>  	&iio_const_attr_oversampling_ratio_available.dev_attr.attr,
>  	NULL,
>  };
> @@ -267,8 +274,7 @@ static const struct attribute_group ad7606_attribute_group_os = {
>  };
>  
>  static struct attribute *ad7606_attributes_range[] = {
> -	&iio_dev_attr_in_voltage_range.dev_attr.attr,
> -	&iio_const_attr_in_voltage_range_available.dev_attr.attr,
> +	&iio_dev_attr_in_voltage_scale_available.dev_attr.attr,
>  	NULL,
>  };
>  
> @@ -384,6 +390,7 @@ static const struct iio_info ad7606_info_os_and_range = {
>  	.driver_module = THIS_MODULE,
>  	.read_raw = &ad7606_read_raw,
>  	.write_raw = &ad7606_write_raw,
> +	.write_raw_get_fmt = &ad7606_write_raw_get_fmt,
>  	.attrs = &ad7606_attribute_group_os_and_range,
>  };
>  
> @@ -397,6 +404,8 @@ static const struct iio_info ad7606_info_os = {
>  static const struct iio_info ad7606_info_range = {
>  	.driver_module = THIS_MODULE,
>  	.read_raw = &ad7606_read_raw,
> +	.write_raw = &ad7606_write_raw,
> +	.write_raw_get_fmt = &ad7606_write_raw_get_fmt,
>  	.attrs = &ad7606_attribute_group_range,
>  };
>  
> @@ -405,7 +414,9 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address,
>  		 const struct ad7606_bus_ops *bops)
>  {
>  	struct ad7606_state *st;
> -	int ret;
> +	unsigned int range;
> +	unsigned long long scale;
> +	int ret, i, j;
>  	struct iio_dev *indio_dev;
>  
>  	indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
> @@ -417,8 +428,19 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address,
>  	st->dev = dev;
>  	st->bops = bops;
>  	st->base_address = base_address;
> -	st->range = 5000;
> +	/* tied to logic low, analog input range is +/- 5V */
> +	st->range = 0;
>  	st->oversampling = 1;
> +	/* Populate the scales, 2.5/2**16 then 5/2**16 */
> +	range = 5000;
> +	for (i = 0, j = 1; i < ARRAY_SIZE(st->scale_avail); i++, j--) {
> +		scale = ((u64)range * 100000000) >>
> +			ad7606_channels[1].scan_type.realbits;
> +		scale >>= j;
> +
> +		st->scale_avail[i][1] = do_div(scale, 100000000) * 10;
> +		st->scale_avail[i][0] = scale;
> +	}
>  	INIT_WORK(&st->poll_work, &ad7606_poll_bh_to_ring);
>  
>  	st->reg = devm_regulator_get(dev, "avcc");
> @@ -525,7 +547,7 @@ static int ad7606_resume(struct device *dev)
>  	struct ad7606_state *st = iio_priv(indio_dev);
>  
>  	if (st->gpio_standby) {
> -		gpiod_set_value(st->gpio_range, st->range == 10000);
> +		gpiod_set_value(st->gpio_range, st->range);
>  		gpiod_set_value(st->gpio_standby, 1);
>  		ad7606_reset(st);
>  	}
> diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h
> index 746f955..671c456 100644
> --- a/drivers/staging/iio/adc/ad7606.h
> +++ b/drivers/staging/iio/adc/ad7606.h
> @@ -34,6 +34,7 @@ struct ad7606_state {
>  	const struct ad7606_bus_ops	*bops;
>  	unsigned int			range;
>  	unsigned int			oversampling;
> +	unsigned int			scale_avail[2][2];
>  	bool				done;
>  	void __iomem			*base_address;
>  
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 2/2] staging: iio: ad7606: move out of staging
  2016-12-11  2:47 ` [PATCH v3 2/2] staging: iio: ad7606: move out of staging Eva Rachel Retuya
@ 2016-12-30 20:16   ` Jonathan Cameron
  2017-01-02 18:33     ` Lars-Peter Clausen
  2017-01-04 10:09     ` Eva Rachel Retuya
  0 siblings, 2 replies; 8+ messages in thread
From: Jonathan Cameron @ 2016-12-30 20:16 UTC (permalink / raw)
  To: Eva Rachel Retuya, linux-iio, devel, linux-kernel
  Cc: lars, Michael.Hennerich, knaack.h, pmeerw, gregkh, daniel.baluta,
	amsfield22

On 11/12/16 02:47, Eva Rachel Retuya wrote:
> Move the ad7606 driver from staging/iio/adc to iio/adc. Also, update the
> corresponding Makefile and Kconfig associated with the change.
> 
> Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
Personally (and this is much debated ;) I prefer for the odd case
of staging graduations, that git isn't run with the -M parameter so we
have the whole driver to comment on.

Anyhow, just casting my eyes over the code so here are some notes:
1. The whole computing scale available values on the fly seems rather over the
top as they can be easily precomputed and stored in a static const array.
There are only 2 of them!

2. There are some single line comments still using multiline syntax (now
I'm really nitpicking ;)

3. A slight oddity has crept in with the cleanup of attributes.  We now
prevent the appearance of the _scale_available / oversampling_ratio_available
attributes if the gpios are attached, but not _scale or _oversampling.
(oops).  If we are going to do this dance, then we should also have an
alternative set of iio_chan_spec array to reflect this.

4. I'd drop the 'More devices added in future' comment. It's now the future
and they haven't been yet ;)

5. We can write oversampling ratio, but queries to the write_get_fmt will
return an error for that. Probably want to fix that unless I'm missing something.

6. There are some ancient references to 'ring' buffers in the comments and
function naming.  We switched over from my hand rolled ring buffer to the
kfifo buffer we now use ages ago.  Would be nice to clear those out.

None of these are really blockers to it moving out of staging
(except the bugs we introduced in the cleanup), but might be nice
to do one last series pinning those down then get a final review done to
see if we missed anything else.

Been a long time since I looked at this one in any depth and it's certainly
heading in the right direction!

Jonathan

> ---
>  drivers/iio/adc/Kconfig                    | 34 ++++++++++++++++++++++++++++++
>  drivers/iio/adc/Makefile                   |  3 +++
>  drivers/{staging => }/iio/adc/ad7606.c     |  0
>  drivers/{staging => }/iio/adc/ad7606.h     |  0
>  drivers/{staging => }/iio/adc/ad7606_par.c |  0
>  drivers/{staging => }/iio/adc/ad7606_spi.c |  0
>  drivers/staging/iio/adc/Kconfig            | 34 ------------------------------
>  drivers/staging/iio/adc/Makefile           |  4 ----
>  8 files changed, 37 insertions(+), 38 deletions(-)
>  rename drivers/{staging => }/iio/adc/ad7606.c (100%)
>  rename drivers/{staging => }/iio/adc/ad7606.h (100%)
>  rename drivers/{staging => }/iio/adc/ad7606_par.c (100%)
>  rename drivers/{staging => }/iio/adc/ad7606_spi.c (100%)
> 
> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> index be81ba3..3fa2c60 100644
> --- a/drivers/iio/adc/Kconfig
> +++ b/drivers/iio/adc/Kconfig
> @@ -58,6 +58,40 @@ config AD7476
>  	  To compile this driver as a module, choose M here: the
>  	  module will be called ad7476.
>  
> +config AD7606
> +	tristate "Analog Devices AD7606 ADC driver"
> +	depends on GPIOLIB || COMPILE_TEST
> +	depends on HAS_IOMEM
> +	select IIO_BUFFER
> +	select IIO_TRIGGERED_BUFFER
> +	help
> +	  Say yes here to build support for Analog Devices:
> +	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).
> +
> +	  To compile this driver as a module, choose M here: the
> +	  module will be called ad7606.
> +
> +config AD7606_IFACE_PARALLEL
> +	tristate "parallel interface support"
> +	depends on AD7606
> +	help
> +	  Say yes here to include parallel interface support on the AD7606
> +	  ADC driver.
> +
> +	  To compile this driver as a module, choose M here: the
> +	  module will be called ad7606_parallel.
> +
> +config AD7606_IFACE_SPI
> +	tristate "spi interface support"
> +	depends on AD7606
> +	depends on SPI
> +	help
> +	  Say yes here to include parallel interface support on the AD7606
> +	  ADC driver.
> +
> +	  To compile this driver as a module, choose M here: the
> +	  module will be called ad7606_spi.
> +
>  config AD7766
>  	tristate "Analog Devices AD7766/AD7767 ADC driver"
>  	depends on SPI_MASTER
> diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
> index f8e1218..dfe7dea 100644
> --- a/drivers/iio/adc/Makefile
> +++ b/drivers/iio/adc/Makefile
> @@ -9,6 +9,9 @@ obj-$(CONFIG_AD7291) += ad7291.o
>  obj-$(CONFIG_AD7298) += ad7298.o
>  obj-$(CONFIG_AD7923) += ad7923.o
>  obj-$(CONFIG_AD7476) += ad7476.o
> +obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
> +obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
> +obj-$(CONFIG_AD7606) += ad7606.o
>  obj-$(CONFIG_AD7766) += ad7766.o
>  obj-$(CONFIG_AD7791) += ad7791.o
>  obj-$(CONFIG_AD7793) += ad7793.o
> diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/iio/adc/ad7606.c
> similarity index 100%
> rename from drivers/staging/iio/adc/ad7606.c
> rename to drivers/iio/adc/ad7606.c
> diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/iio/adc/ad7606.h
> similarity index 100%
> rename from drivers/staging/iio/adc/ad7606.h
> rename to drivers/iio/adc/ad7606.h
> diff --git a/drivers/staging/iio/adc/ad7606_par.c b/drivers/iio/adc/ad7606_par.c
> similarity index 100%
> rename from drivers/staging/iio/adc/ad7606_par.c
> rename to drivers/iio/adc/ad7606_par.c
> diff --git a/drivers/staging/iio/adc/ad7606_spi.c b/drivers/iio/adc/ad7606_spi.c
> similarity index 100%
> rename from drivers/staging/iio/adc/ad7606_spi.c
> rename to drivers/iio/adc/ad7606_spi.c
> diff --git a/drivers/staging/iio/adc/Kconfig b/drivers/staging/iio/adc/Kconfig
> index deff899..995867b 100644
> --- a/drivers/staging/iio/adc/Kconfig
> +++ b/drivers/staging/iio/adc/Kconfig
> @@ -3,40 +3,6 @@
>  #
>  menu "Analog to digital converters"
>  
> -config AD7606
> -	tristate "Analog Devices AD7606 ADC driver"
> -	depends on GPIOLIB || COMPILE_TEST
> -	depends on HAS_IOMEM
> -	select IIO_BUFFER
> -	select IIO_TRIGGERED_BUFFER
> -	help
> -	  Say yes here to build support for Analog Devices:
> -	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).
> -
> -	  To compile this driver as a module, choose M here: the
> -	  module will be called ad7606.
> -
> -config AD7606_IFACE_PARALLEL
> -	tristate "parallel interface support"
> -	depends on AD7606
> -	help
> -	  Say yes here to include parallel interface support on the AD7606
> -	  ADC driver.
> -
> -	  To compile this driver as a module, choose M here: the
> -	  module will be called ad7606_parallel.
> -
> -config AD7606_IFACE_SPI
> -	tristate "spi interface support"
> -	depends on AD7606
> -	depends on SPI
> -	help
> -	  Say yes here to include parallel interface support on the AD7606
> -	  ADC driver.
> -
> -	  To compile this driver as a module, choose M here: the
> -	  module will be called ad7606_spi.
> -
>  config AD7780
>  	tristate "Analog Devices AD7780 and similar ADCs driver"
>  	depends on SPI
> diff --git a/drivers/staging/iio/adc/Makefile b/drivers/staging/iio/adc/Makefile
> index ac09485..549032b 100644
> --- a/drivers/staging/iio/adc/Makefile
> +++ b/drivers/staging/iio/adc/Makefile
> @@ -2,10 +2,6 @@
>  # Makefile for industrial I/O ADC drivers
>  #
>  
> -obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
> -obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
> -obj-$(CONFIG_AD7606) += ad7606.o
> -
>  obj-$(CONFIG_AD7780) += ad7780.o
>  obj-$(CONFIG_AD7816) += ad7816.o
>  obj-$(CONFIG_AD7192) += ad7192.o
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 2/2] staging: iio: ad7606: move out of staging
  2016-12-30 20:16   ` Jonathan Cameron
@ 2017-01-02 18:33     ` Lars-Peter Clausen
  2017-01-04 10:09     ` Eva Rachel Retuya
  1 sibling, 0 replies; 8+ messages in thread
From: Lars-Peter Clausen @ 2017-01-02 18:33 UTC (permalink / raw)
  To: Jonathan Cameron, Eva Rachel Retuya, linux-iio, devel, linux-kernel
  Cc: Michael.Hennerich, knaack.h, pmeerw, gregkh, daniel.baluta, amsfield22

On 12/30/2016 09:16 PM, Jonathan Cameron wrote:
> On 11/12/16 02:47, Eva Rachel Retuya wrote:
>> Move the ad7606 driver from staging/iio/adc to iio/adc. Also, update the
>> corresponding Makefile and Kconfig associated with the change.
>>
>> Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
> Personally (and this is much debated ;) I prefer for the odd case
> of staging graduations, that git isn't run with the -M parameter so we
> have the whole driver to comment on.
> 
> Anyhow, just casting my eyes over the code so here are some notes:
> 1. The whole computing scale available values on the fly seems rather over the
> top as they can be easily precomputed and stored in a static const array.
> There are only 2 of them!
> 
> 2. There are some single line comments still using multiline syntax (now
> I'm really nitpicking ;)
> 
> 3. A slight oddity has crept in with the cleanup of attributes.  We now
> prevent the appearance of the _scale_available / oversampling_ratio_available
> attributes if the gpios are attached, but not _scale or _oversampling.
> (oops).  If we are going to do this dance, then we should also have an
> alternative set of iio_chan_spec array to reflect this.
> 
> 4. I'd drop the 'More devices added in future' comment. It's now the future
> and they haven't been yet ;)
> 

I actually have a patch adding more devices, that just waits for the driver
to be moved out of staging. But still the comment can be removed it is not
really meaningful.

> 5. We can write oversampling ratio, but queries to the write_get_fmt will
> return an error for that. Probably want to fix that unless I'm missing something.
> 
> 6. There are some ancient references to 'ring' buffers in the comments and
> function naming.  We switched over from my hand rolled ring buffer to the
> kfifo buffer we now use ages ago.  Would be nice to clear those out.
> 
> None of these are really blockers to it moving out of staging
> (except the bugs we introduced in the cleanup), but might be nice
> to do one last series pinning those down then get a final review done to
> see if we missed anything else.
> 
> Been a long time since I looked at this one in any depth and it's certainly
> heading in the right direction!

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale
  2016-12-30 19:59   ` Jonathan Cameron
@ 2017-01-02 18:42     ` Lars-Peter Clausen
  0 siblings, 0 replies; 8+ messages in thread
From: Lars-Peter Clausen @ 2017-01-02 18:42 UTC (permalink / raw)
  To: Jonathan Cameron, Eva Rachel Retuya, linux-iio, devel, linux-kernel
  Cc: Michael.Hennerich, knaack.h, pmeerw, gregkh, daniel.baluta, amsfield22

On 12/30/2016 08:59 PM, Jonathan Cameron wrote:
> On 11/12/16 02:47, Eva Rachel Retuya wrote:
>> Eliminate the non-standard attributes in_voltage_range and
>> in_voltage_range_available. Implement in_voltage_scale_available in place
>> of these attributes and update the SCALE accordingly. The array
>> scale_avail is introduced to hold the available scale values.
>>
>> Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
> Looks good to me.
> 
> Lars, if you have a minute to look over this as well that would
> be great.

I think this is OK as is, since it is an improvement over the current
situation. But there is still the open issue that we don't know the scale
setting if pin is hardwired. I'd like to see that addressed before the
driver is moved out of staging. Similar for the oversampling ratio.

Consider this Acked-by: Lars-Peter Clausen <lars@metafoo.de>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 2/2] staging: iio: ad7606: move out of staging
  2016-12-30 20:16   ` Jonathan Cameron
  2017-01-02 18:33     ` Lars-Peter Clausen
@ 2017-01-04 10:09     ` Eva Rachel Retuya
  1 sibling, 0 replies; 8+ messages in thread
From: Eva Rachel Retuya @ 2017-01-04 10:09 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-iio, devel, linux-kernel, lars, Michael.Hennerich,
	knaack.h, pmeerw, gregkh, daniel.baluta, amsfield22

On Fri, Dec 30, 2016 at 08:16:02PM +0000, Jonathan Cameron wrote:
> On 11/12/16 02:47, Eva Rachel Retuya wrote:
> > Move the ad7606 driver from staging/iio/adc to iio/adc. Also, update the
> > corresponding Makefile and Kconfig associated with the change.
> > 
> > Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
> Personally (and this is much debated ;) I prefer for the odd case
> of staging graduations, that git isn't run with the -M parameter so we
> have the whole driver to comment on.
> 
> Anyhow, just casting my eyes over the code so here are some notes:
> 1. The whole computing scale available values on the fly seems rather over the
> top as they can be easily precomputed and stored in a static const array.
> There are only 2 of them!
> 

OK, will submit another version with this in mind. Also, will drop this
patch since Lars said he prefers to not "graduate" this driver yet until the
hardwire issues are resolved.

Thanks for the notes, will consider submitting a patchset addressing
these after I'm done with my IIO project.

Eva

> 2. There are some single line comments still using multiline syntax (now
> I'm really nitpicking ;)
> 
> 3. A slight oddity has crept in with the cleanup of attributes.  We now
> prevent the appearance of the _scale_available / oversampling_ratio_available
> attributes if the gpios are attached, but not _scale or _oversampling.
> (oops).  If we are going to do this dance, then we should also have an
> alternative set of iio_chan_spec array to reflect this.
> 
> 4. I'd drop the 'More devices added in future' comment. It's now the future
> and they haven't been yet ;)
> 
> 5. We can write oversampling ratio, but queries to the write_get_fmt will
> return an error for that. Probably want to fix that unless I'm missing something.
> 
> 6. There are some ancient references to 'ring' buffers in the comments and
> function naming.  We switched over from my hand rolled ring buffer to the
> kfifo buffer we now use ages ago.  Would be nice to clear those out.
> 
> None of these are really blockers to it moving out of staging
> (except the bugs we introduced in the cleanup), but might be nice
> to do one last series pinning those down then get a final review done to
> see if we missed anything else.
> 
> Been a long time since I looked at this one in any depth and it's certainly
> heading in the right direction!
> 
> Jonathan
> 
> > ---
> >  drivers/iio/adc/Kconfig                    | 34 ++++++++++++++++++++++++++++++
> >  drivers/iio/adc/Makefile                   |  3 +++
> >  drivers/{staging => }/iio/adc/ad7606.c     |  0
> >  drivers/{staging => }/iio/adc/ad7606.h     |  0
> >  drivers/{staging => }/iio/adc/ad7606_par.c |  0
> >  drivers/{staging => }/iio/adc/ad7606_spi.c |  0
> >  drivers/staging/iio/adc/Kconfig            | 34 ------------------------------
> >  drivers/staging/iio/adc/Makefile           |  4 ----
> >  8 files changed, 37 insertions(+), 38 deletions(-)
> >  rename drivers/{staging => }/iio/adc/ad7606.c (100%)
> >  rename drivers/{staging => }/iio/adc/ad7606.h (100%)
> >  rename drivers/{staging => }/iio/adc/ad7606_par.c (100%)
> >  rename drivers/{staging => }/iio/adc/ad7606_spi.c (100%)
> > 
> > diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> > index be81ba3..3fa2c60 100644
> > --- a/drivers/iio/adc/Kconfig
> > +++ b/drivers/iio/adc/Kconfig
> > @@ -58,6 +58,40 @@ config AD7476
> >  	  To compile this driver as a module, choose M here: the
> >  	  module will be called ad7476.
> >  
> > +config AD7606
> > +	tristate "Analog Devices AD7606 ADC driver"
> > +	depends on GPIOLIB || COMPILE_TEST
> > +	depends on HAS_IOMEM
> > +	select IIO_BUFFER
> > +	select IIO_TRIGGERED_BUFFER
> > +	help
> > +	  Say yes here to build support for Analog Devices:
> > +	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).
> > +
> > +	  To compile this driver as a module, choose M here: the
> > +	  module will be called ad7606.
> > +
> > +config AD7606_IFACE_PARALLEL
> > +	tristate "parallel interface support"
> > +	depends on AD7606
> > +	help
> > +	  Say yes here to include parallel interface support on the AD7606
> > +	  ADC driver.
> > +
> > +	  To compile this driver as a module, choose M here: the
> > +	  module will be called ad7606_parallel.
> > +
> > +config AD7606_IFACE_SPI
> > +	tristate "spi interface support"
> > +	depends on AD7606
> > +	depends on SPI
> > +	help
> > +	  Say yes here to include parallel interface support on the AD7606
> > +	  ADC driver.
> > +
> > +	  To compile this driver as a module, choose M here: the
> > +	  module will be called ad7606_spi.
> > +
> >  config AD7766
> >  	tristate "Analog Devices AD7766/AD7767 ADC driver"
> >  	depends on SPI_MASTER
> > diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
> > index f8e1218..dfe7dea 100644
> > --- a/drivers/iio/adc/Makefile
> > +++ b/drivers/iio/adc/Makefile
> > @@ -9,6 +9,9 @@ obj-$(CONFIG_AD7291) += ad7291.o
> >  obj-$(CONFIG_AD7298) += ad7298.o
> >  obj-$(CONFIG_AD7923) += ad7923.o
> >  obj-$(CONFIG_AD7476) += ad7476.o
> > +obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
> > +obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
> > +obj-$(CONFIG_AD7606) += ad7606.o
> >  obj-$(CONFIG_AD7766) += ad7766.o
> >  obj-$(CONFIG_AD7791) += ad7791.o
> >  obj-$(CONFIG_AD7793) += ad7793.o
> > diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/iio/adc/ad7606.c
> > similarity index 100%
> > rename from drivers/staging/iio/adc/ad7606.c
> > rename to drivers/iio/adc/ad7606.c
> > diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/iio/adc/ad7606.h
> > similarity index 100%
> > rename from drivers/staging/iio/adc/ad7606.h
> > rename to drivers/iio/adc/ad7606.h
> > diff --git a/drivers/staging/iio/adc/ad7606_par.c b/drivers/iio/adc/ad7606_par.c
> > similarity index 100%
> > rename from drivers/staging/iio/adc/ad7606_par.c
> > rename to drivers/iio/adc/ad7606_par.c
> > diff --git a/drivers/staging/iio/adc/ad7606_spi.c b/drivers/iio/adc/ad7606_spi.c
> > similarity index 100%
> > rename from drivers/staging/iio/adc/ad7606_spi.c
> > rename to drivers/iio/adc/ad7606_spi.c
> > diff --git a/drivers/staging/iio/adc/Kconfig b/drivers/staging/iio/adc/Kconfig
> > index deff899..995867b 100644
> > --- a/drivers/staging/iio/adc/Kconfig
> > +++ b/drivers/staging/iio/adc/Kconfig
> > @@ -3,40 +3,6 @@
> >  #
> >  menu "Analog to digital converters"
> >  
> > -config AD7606
> > -	tristate "Analog Devices AD7606 ADC driver"
> > -	depends on GPIOLIB || COMPILE_TEST
> > -	depends on HAS_IOMEM
> > -	select IIO_BUFFER
> > -	select IIO_TRIGGERED_BUFFER
> > -	help
> > -	  Say yes here to build support for Analog Devices:
> > -	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).
> > -
> > -	  To compile this driver as a module, choose M here: the
> > -	  module will be called ad7606.
> > -
> > -config AD7606_IFACE_PARALLEL
> > -	tristate "parallel interface support"
> > -	depends on AD7606
> > -	help
> > -	  Say yes here to include parallel interface support on the AD7606
> > -	  ADC driver.
> > -
> > -	  To compile this driver as a module, choose M here: the
> > -	  module will be called ad7606_parallel.
> > -
> > -config AD7606_IFACE_SPI
> > -	tristate "spi interface support"
> > -	depends on AD7606
> > -	depends on SPI
> > -	help
> > -	  Say yes here to include parallel interface support on the AD7606
> > -	  ADC driver.
> > -
> > -	  To compile this driver as a module, choose M here: the
> > -	  module will be called ad7606_spi.
> > -
> >  config AD7780
> >  	tristate "Analog Devices AD7780 and similar ADCs driver"
> >  	depends on SPI
> > diff --git a/drivers/staging/iio/adc/Makefile b/drivers/staging/iio/adc/Makefile
> > index ac09485..549032b 100644
> > --- a/drivers/staging/iio/adc/Makefile
> > +++ b/drivers/staging/iio/adc/Makefile
> > @@ -2,10 +2,6 @@
> >  # Makefile for industrial I/O ADC drivers
> >  #
> >  
> > -obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
> > -obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
> > -obj-$(CONFIG_AD7606) += ad7606.o
> > -
> >  obj-$(CONFIG_AD7780) += ad7780.o
> >  obj-$(CONFIG_AD7816) += ad7816.o
> >  obj-$(CONFIG_AD7192) += ad7192.o
> > 
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-01-04 10:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-11  2:47 [PATCH v3 0/2] staging: iio: ad7606: move driver out of staging Eva Rachel Retuya
2016-12-11  2:47 ` [PATCH v3 1/2] staging: iio: ad7606: replace range/range_available with corresponding scale Eva Rachel Retuya
2016-12-30 19:59   ` Jonathan Cameron
2017-01-02 18:42     ` Lars-Peter Clausen
2016-12-11  2:47 ` [PATCH v3 2/2] staging: iio: ad7606: move out of staging Eva Rachel Retuya
2016-12-30 20:16   ` Jonathan Cameron
2017-01-02 18:33     ` Lars-Peter Clausen
2017-01-04 10:09     ` Eva Rachel Retuya

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).