linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation
@ 2019-06-25  8:11 Mircea Caprioru
  2019-06-25  8:11 ` [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support Mircea Caprioru
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Mircea Caprioru @ 2019-06-25  8:11 UTC (permalink / raw)
  To: jic23
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt, Mircea Caprioru

The driver limits the user to use only 4/8 differential inputs, but this
device has the option to use pseudo-differential channels. This will
increase the number of channels to be equal with the number of inputs so 8
channels for ad7124-4 and 16 for ad7124-8.

This patch removes the check between channel nodes and num_inputs value.

Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
---

Changelog v2:
- nothing changed here

Changelog v3:
- nothing changed here

Changelog v4:
- nothing changed here

 drivers/iio/adc/ad7124.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
index 659ef37d5fe8..810234db9c0d 100644
--- a/drivers/iio/adc/ad7124.c
+++ b/drivers/iio/adc/ad7124.c
@@ -462,13 +462,6 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
 		if (ret)
 			goto err;
 
-		if (ain[0] >= st->chip_info->num_inputs ||
-		    ain[1] >= st->chip_info->num_inputs) {
-			dev_err(indio_dev->dev.parent,
-				"Input pin number out of range.\n");
-			ret = -EINVAL;
-			goto err;
-		}
 		st->channel_config[channel].ain = AD7124_CHANNEL_AINP(ain[0]) |
 						  AD7124_CHANNEL_AINM(ain[1]);
 		st->channel_config[channel].bipolar =
-- 
2.17.1


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

* [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support
  2019-06-25  8:11 [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Mircea Caprioru
@ 2019-06-25  8:11 ` Mircea Caprioru
  2019-06-26 19:24   ` Jonathan Cameron
  2019-06-25  8:11 ` [PATCH V4 3/5] iio: adc: ad7124: Shift to dynamic allocation for channel configuration Mircea Caprioru
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Mircea Caprioru @ 2019-06-25  8:11 UTC (permalink / raw)
  To: jic23
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt, Mircea Caprioru

This patch adds the option to enable the buffered mode for positive and
negative inputs. Each option can be enabled independently.

In buffered mode, the input channel feeds into a high impedance input stage
of the buffer amplifier. Therefore, the input can tolerate significant
source impedances and is tailored for direct connection to external
resistive type sensors such as strain gages or RTDs.

Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
---

Changelog v2:
- nothing changed here

Changelog v3:
- nothing changed here

Changelog v4:
- nothing changed here

 drivers/iio/adc/ad7124.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
index 810234db9c0d..ab52c5e9ecb1 100644
--- a/drivers/iio/adc/ad7124.c
+++ b/drivers/iio/adc/ad7124.c
@@ -61,6 +61,8 @@
 #define AD7124_CONFIG_REF_SEL(x)	FIELD_PREP(AD7124_CONFIG_REF_SEL_MSK, x)
 #define AD7124_CONFIG_PGA_MSK		GENMASK(2, 0)
 #define AD7124_CONFIG_PGA(x)		FIELD_PREP(AD7124_CONFIG_PGA_MSK, x)
+#define AD7124_CONFIG_IN_BUFF_MSK	GENMASK(7, 6)
+#define AD7124_CONFIG_IN_BUFF(x)	FIELD_PREP(AD7124_CONFIG_IN_BUFF_MSK, x)
 
 /* AD7124_FILTER_X */
 #define AD7124_FILTER_FS_MSK		GENMASK(10, 0)
@@ -108,6 +110,8 @@ struct ad7124_chip_info {
 struct ad7124_channel_config {
 	enum ad7124_ref_sel refsel;
 	bool bipolar;
+	bool buf_positive;
+	bool buf_negative;
 	unsigned int ain;
 	unsigned int vref_mv;
 	unsigned int pga_bits;
@@ -473,6 +477,11 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
 		else
 			st->channel_config[channel].refsel = tmp;
 
+		st->channel_config[channel].buf_positive =
+			of_property_read_bool(child, "adi,buffered-positive");
+		st->channel_config[channel].buf_negative =
+			of_property_read_bool(child, "adi,buffered-negative");
+
 		*chan = ad7124_channel_template;
 		chan->address = channel;
 		chan->scan_index = channel;
@@ -492,7 +501,7 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
 static int ad7124_setup(struct ad7124_state *st)
 {
 	unsigned int val, fclk, power_mode;
-	int i, ret;
+	int i, ret, tmp;
 
 	fclk = clk_get_rate(st->mclk);
 	if (!fclk)
@@ -525,8 +534,12 @@ static int ad7124_setup(struct ad7124_state *st)
 		if (ret < 0)
 			return ret;
 
+		tmp = (st->channel_config[i].buf_positive << 1)  +
+			st->channel_config[i].buf_negative;
+
 		val = AD7124_CONFIG_BIPOLAR(st->channel_config[i].bipolar) |
-		      AD7124_CONFIG_REF_SEL(st->channel_config[i].refsel);
+		      AD7124_CONFIG_REF_SEL(st->channel_config[i].refsel) |
+		      AD7124_CONFIG_IN_BUFF(tmp);
 		ret = ad_sd_write_reg(&st->sd, AD7124_CONFIG(i), 2, val);
 		if (ret < 0)
 			return ret;
-- 
2.17.1


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

* [PATCH V4 3/5] iio: adc: ad7124: Shift to dynamic allocation for channel configuration
  2019-06-25  8:11 [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Mircea Caprioru
  2019-06-25  8:11 ` [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support Mircea Caprioru
@ 2019-06-25  8:11 ` Mircea Caprioru
  2019-06-26 19:25   ` Jonathan Cameron
  2019-06-25  8:11 ` [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML Mircea Caprioru
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Mircea Caprioru @ 2019-06-25  8:11 UTC (permalink / raw)
  To: jic23
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt, Mircea Caprioru

This patch changes the channel configuration member of the device
structure from a fixed size array to a dynamic allocated one with a size
equal to the number of channels specified in the device tree. This will
ensure a more flexibility for compatible devices.

Ex. ad7124-4 - can have 4 differential or 8 pseudo-differential channels
ad7124-8 - can have 8 differential or 16 pseudo-differential channels

Also the device can suspport any other combination of differential and
pseudo-differential channels base on the physical number of inputs
available.

Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
---

Changelog v2:
- nothing changed here

Changelog v3:
- nothing changed here

Changelog v4:
- nothing changed here

 drivers/iio/adc/ad7124.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
index ab52c5e9ecb1..edc6f1cc90b2 100644
--- a/drivers/iio/adc/ad7124.c
+++ b/drivers/iio/adc/ad7124.c
@@ -121,7 +121,7 @@ struct ad7124_channel_config {
 struct ad7124_state {
 	const struct ad7124_chip_info *chip_info;
 	struct ad_sigma_delta sd;
-	struct ad7124_channel_config channel_config[4];
+	struct ad7124_channel_config *channel_config;
 	struct regulator *vref[4];
 	struct clk *mclk;
 	unsigned int adc_control;
@@ -439,6 +439,7 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
 	struct ad7124_state *st = iio_priv(indio_dev);
 	struct device_node *child;
 	struct iio_chan_spec *chan;
+	struct ad7124_channel_config *chan_config;
 	unsigned int ain[2], channel = 0, tmp;
 	int ret;
 
@@ -453,8 +454,14 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
 	if (!chan)
 		return -ENOMEM;
 
+	chan_config = devm_kcalloc(indio_dev->dev.parent, st->num_channels,
+				   sizeof(*chan_config), GFP_KERNEL);
+	if (!chan_config)
+		return -ENOMEM;
+
 	indio_dev->channels = chan;
 	indio_dev->num_channels = st->num_channels;
+	st->channel_config = chan_config;
 
 	for_each_available_child_of_node(np, child) {
 		ret = of_property_read_u32(child, "reg", &channel);
-- 
2.17.1


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

* [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML
  2019-06-25  8:11 [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Mircea Caprioru
  2019-06-25  8:11 ` [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support Mircea Caprioru
  2019-06-25  8:11 ` [PATCH V4 3/5] iio: adc: ad7124: Shift to dynamic allocation for channel configuration Mircea Caprioru
@ 2019-06-25  8:11 ` Mircea Caprioru
  2019-06-26 14:44   ` Rob Herring
  2019-06-25  8:11 ` [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property Mircea Caprioru
  2019-06-26 19:22 ` [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Jonathan Cameron
  4 siblings, 1 reply; 13+ messages in thread
From: Mircea Caprioru @ 2019-06-25  8:11 UTC (permalink / raw)
  To: jic23
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt, Mircea Caprioru

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="y", Size: 7184 bytes --]

Convert AD7124 bindings documentation to YAML format.

Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
---

Changelog v2:
- modified SPDX license to GPL-2.0 OR BSD-2-Clause
- added regex for a range from 0 to 15
- added minimum and maximum constraints for reg property
- set type and range of values for adi,reference-select property
- used items for diff-channels property
- set bipolar, adi,buffered-positive and negative to type: boolean

Changelog v3:
- moved adi,buffered-positive and negative properties to own commit

Changelog v4:
- removed old txt dt-binding

 .../bindings/iio/adc/adi,ad7124.txt           |  75 ---------
 .../bindings/iio/adc/adi,ad7124.yaml          | 144 ++++++++++++++++++
 2 files changed, 144 insertions(+), 75 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
 create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml

diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
deleted file mode 100644
index 416273dce569..000000000000
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-Analog Devices AD7124 ADC device driver
-
-Required properties for the AD7124:
-	- compatible: Must be one of "adi,ad7124-4" or "adi,ad7124-8"
-	- reg: SPI chip select number for the device
-	- spi-max-frequency: Max SPI frequency to use
-		see: Documentation/devicetree/bindings/spi/spi-bus.txt
-	- clocks: phandle to the master clock (mclk)
-		see: Documentation/devicetree/bindings/clock/clock-bindings.txt
-	- clock-names: Must be "mclk".
-	- interrupts: IRQ line for the ADC
-		see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
-
-	  Required properties:
-		* #address-cells: Must be 1.
-		* #size-cells: Must be 0.
-
-	  Subnode(s) represent the external channels which are connected to the ADC.
-	  Each subnode represents one channel and has the following properties:
-		Required properties:
-			* reg: The channel number. It can have up to 4 channels on ad7124-4
-			  and 8 channels on ad7124-8, numbered from 0 to 15.
-			* diff-channels: see: Documentation/devicetree/bindings/iio/adc/adc.txt
-
-		Optional properties:
-			* bipolar: see: Documentation/devicetree/bindings/iio/adc/adc.txt
-			* adi,reference-select: Select the reference source to use when
-			  converting on the the specific channel. Valid values are:
-			  0: REFIN1(+)/REFIN1(−).
-			  1: REFIN2(+)/REFIN2(−).
-			  3: AVDD
-			  If this field is left empty, internal reference is selected.
-
-Optional properties:
-	- refin1-supply: refin1 supply can be used as reference for conversion.
-	- refin2-supply: refin2 supply can be used as reference for conversion.
-	- avdd-supply: avdd supply can be used as reference for conversion.
-
-Example:
-	adc@0 {
-		compatible = "adi,ad7124-4";
-		reg = <0>;
-		spi-max-frequency = <5000000>;
-		interrupts = <25 2>;
-		interrupt-parent = <&gpio>;
-		refin1-supply = <&adc_vref>;
-		clocks = <&ad7124_mclk>;
-		clock-names = "mclk";
-
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		channel@0 {
-			reg = <0>;
-			diff-channels = <0 1>;
-			adi,reference-select = <0>;
-		};
-
-		channel@1 {
-			reg = <1>;
-			bipolar;
-			diff-channels = <2 3>;
-			adi,reference-select = <0>;
-		};
-
-		channel@2 {
-			reg = <2>;
-			diff-channels = <4 5>;
-		};
-
-		channel@3 {
-			reg = <3>;
-			diff-channels = <6 7>;
-		};
-	};
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
new file mode 100644
index 000000000000..1b3d84d08609
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
@@ -0,0 +1,144 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright 2019 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/bindings/iio/adc/adi,ad7124.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD7124 ADC device driver
+
+maintainers:
+  - Stefan Popa <stefan.popa@analog.com>
+
+description: |
+  Bindings for the Analog Devices AD7124 ADC device. Datasheet can be
+  found here:
+    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7124-8.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,ad7124-4
+      - adi,ad7124-8
+
+  reg:
+    description: SPI chip select number for the device
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+    description: phandle to the master clock (mclk)
+
+  clock-names:
+    items:
+      - const: mclk
+
+  interrupts:
+    description: IRQ line for the ADC
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  refin1-supply:
+    description: refin1 supply can be used as reference for conversion.
+    maxItems: 1
+
+  refin2-supply:
+    description: refin2 supply can be used as reference for conversion.
+    maxItems: 1
+
+  avdd-supply:
+    description: avdd supply can be used as reference for conversion.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+
+patternProperties:
+  "^channel@([0-9]|1[0-5])$":
+    type: object
+    description: |
+      Represents the external channels which are connected to the ADC.
+      See Documentation/devicetree/bindings/iio/adc/adc.txt.
+
+    properties:
+      reg:
+        description: |
+          The channel number. It can have up to 8 channels on ad7124-4
+          and 16 channels on ad7124-8, numbered from 0 to 15.
+        items:
+         minimum: 0
+         maximum: 15
+
+      adi,reference-select:
+        description: |
+          Select the reference source to use when converting on
+          the specific channel. Valid values are:
+          0: REFIN1(+)/REFIN1(−).
+          1: REFIN2(+)/REFIN2(−).
+          3: AVDD
+          If this field is left empty, internal reference is selected.
+        allOf:
+          - $ref: /schemas/types.yaml#/definitions/uint32
+          - enum: [0, 1, 3]
+
+      diff-channels:
+        description: see Documentation/devicetree/bindings/iio/adc/adc.txt
+        items:
+          minimum: 0
+          maximum: 15
+
+      bipolar:
+        description: see Documentation/devicetree/bindings/iio/adc/adc.txt
+        type: boolean
+
+    required:
+      - reg
+      - diff-channels
+
+examples:
+  - |
+    adc@0 {
+      compatible = "adi,ad7124-4";
+      reg = <0>;
+      spi-max-frequency = <5000000>;
+      interrupts = <25 2>;
+      interrupt-parent = <&gpio>;
+      refin1-supply = <&adc_vref>;
+      clocks = <&ad7124_mclk>;
+      clock-names = "mclk";
+
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      channel@0 {
+        reg = <0>;
+        diff-channels = <0 1>;
+        adi,reference-select = <0>;
+      };
+
+      channel@1 {
+        reg = <1>;
+        bipolar;
+        diff-channels = <2 3>;
+        adi,reference-select = <0>;
+      };
+
+      channel@2 {
+        reg = <2>;
+        diff-channels = <4 5>;
+      };
+
+      channel@3 {
+        reg = <3>;
+        diff-channels = <6 7>;
+      };
+    };
-- 
2.17.1


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

* [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property
  2019-06-25  8:11 [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Mircea Caprioru
                   ` (2 preceding siblings ...)
  2019-06-25  8:11 ` [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML Mircea Caprioru
@ 2019-06-25  8:11 ` Mircea Caprioru
  2019-06-26 14:45   ` Rob Herring
  2019-06-26 19:22 ` [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Jonathan Cameron
  4 siblings, 1 reply; 13+ messages in thread
From: Mircea Caprioru @ 2019-06-25  8:11 UTC (permalink / raw)
  To: jic23
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt, Mircea Caprioru

This patch adds the buffered mode device tree property for positive and
negative inputs. Each option can be enabled independently.

In buffered mode, the input channel feeds into a high impedance input stage
of the buffer amplifier. Therefore, the input can tolerate significant
source impedances and is tailored for direct connection to external
resistive type sensors such as strain gages or RTDs.

Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
---

Changelog v3:
- added this separate commit for adi,buffered-positive and negative
  properties

Changelog v4:
- nothing changed here

 .../devicetree/bindings/iio/adc/adi,ad7124.yaml       | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
index 1b3d84d08609..cf494a08b837 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
@@ -100,6 +100,14 @@ patternProperties:
         description: see Documentation/devicetree/bindings/iio/adc/adc.txt
         type: boolean
 
+      adi,buffered-positive:
+        description: Enable buffered mode for positive input.
+        type: boolean
+
+      adi,buffered-negative:
+        description: Enable buffered mode for negative input.
+        type: boolean
+
     required:
       - reg
       - diff-channels
@@ -123,6 +131,7 @@ examples:
         reg = <0>;
         diff-channels = <0 1>;
         adi,reference-select = <0>;
+        adi,buffered-positive;
       };
 
       channel@1 {
@@ -130,6 +139,8 @@ examples:
         bipolar;
         diff-channels = <2 3>;
         adi,reference-select = <0>;
+        adi,buffered-positive;
+        adi,buffered-negative;
       };
 
       channel@2 {
-- 
2.17.1


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

* Re: [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML
  2019-06-25  8:11 ` [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML Mircea Caprioru
@ 2019-06-26 14:44   ` Rob Herring
  2019-06-26 19:34     ` Jonathan Cameron
  0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2019-06-26 14:44 UTC (permalink / raw)
  To: Mircea Caprioru
  Cc: Jonathan Cameron, Michael Hennerich, Stefan Popa,
	Lars-Peter Clausen, Greg Kroah-Hartman, linux-kernel,
	open list:IIO SUBSYSTEM AND DRIVERS, devicetree

On Tue, Jun 25, 2019 at 2:12 AM Mircea Caprioru
<mircea.caprioru@analog.com> wrote:
>
> Convert AD7124 bindings documentation to YAML format.
>
> Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
> ---
>
> Changelog v2:
> - modified SPDX license to GPL-2.0 OR BSD-2-Clause
> - added regex for a range from 0 to 15
> - added minimum and maximum constraints for reg property
> - set type and range of values for adi,reference-select property
> - used items for diff-channels property
> - set bipolar, adi,buffered-positive and negative to type: boolean
>
> Changelog v3:
> - moved adi,buffered-positive and negative properties to own commit
>
> Changelog v4:
> - removed old txt dt-binding
>
>  .../bindings/iio/adc/adi,ad7124.txt           |  75 ---------
>  .../bindings/iio/adc/adi,ad7124.yaml          | 144 ++++++++++++++++++
>  2 files changed, 144 insertions(+), 75 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
>  create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property
  2019-06-25  8:11 ` [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property Mircea Caprioru
@ 2019-06-26 14:45   ` Rob Herring
  2019-06-26 19:34     ` Jonathan Cameron
  0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2019-06-26 14:45 UTC (permalink / raw)
  To: Mircea Caprioru
  Cc: Jonathan Cameron, Michael Hennerich, Stefan Popa,
	Lars-Peter Clausen, Greg Kroah-Hartman, linux-kernel,
	open list:IIO SUBSYSTEM AND DRIVERS, devicetree

On Tue, Jun 25, 2019 at 2:12 AM Mircea Caprioru
<mircea.caprioru@analog.com> wrote:
>
> This patch adds the buffered mode device tree property for positive and
> negative inputs. Each option can be enabled independently.
>
> In buffered mode, the input channel feeds into a high impedance input stage
> of the buffer amplifier. Therefore, the input can tolerate significant
> source impedances and is tailored for direct connection to external
> resistive type sensors such as strain gages or RTDs.
>
> Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
> ---
>
> Changelog v3:
> - added this separate commit for adi,buffered-positive and negative
>   properties
>
> Changelog v4:
> - nothing changed here
>
>  .../devicetree/bindings/iio/adc/adi,ad7124.yaml       | 11 +++++++++++
>  1 file changed, 11 insertions(+)

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation
  2019-06-25  8:11 [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Mircea Caprioru
                   ` (3 preceding siblings ...)
  2019-06-25  8:11 ` [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property Mircea Caprioru
@ 2019-06-26 19:22 ` Jonathan Cameron
  4 siblings, 0 replies; 13+ messages in thread
From: Jonathan Cameron @ 2019-06-26 19:22 UTC (permalink / raw)
  To: Mircea Caprioru
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt

On Tue, 25 Jun 2019 11:11:24 +0300
Mircea Caprioru <mircea.caprioru@analog.com> wrote:

> The driver limits the user to use only 4/8 differential inputs, but this
> device has the option to use pseudo-differential channels. This will
> increase the number of channels to be equal with the number of inputs so 8
> channels for ad7124-4 and 16 for ad7124-8.
> 
> This patch removes the check between channel nodes and num_inputs value.
> 
> Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with it.

Thanks,

Jonathan

> ---
> 
> Changelog v2:
> - nothing changed here
> 
> Changelog v3:
> - nothing changed here
> 
> Changelog v4:
> - nothing changed here
> 
>  drivers/iio/adc/ad7124.c | 7 -------
>  1 file changed, 7 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
> index 659ef37d5fe8..810234db9c0d 100644
> --- a/drivers/iio/adc/ad7124.c
> +++ b/drivers/iio/adc/ad7124.c
> @@ -462,13 +462,6 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
>  		if (ret)
>  			goto err;
>  
> -		if (ain[0] >= st->chip_info->num_inputs ||
> -		    ain[1] >= st->chip_info->num_inputs) {
> -			dev_err(indio_dev->dev.parent,
> -				"Input pin number out of range.\n");
> -			ret = -EINVAL;
> -			goto err;
> -		}
>  		st->channel_config[channel].ain = AD7124_CHANNEL_AINP(ain[0]) |
>  						  AD7124_CHANNEL_AINM(ain[1]);
>  		st->channel_config[channel].bipolar =


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

* Re: [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support
  2019-06-25  8:11 ` [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support Mircea Caprioru
@ 2019-06-26 19:24   ` Jonathan Cameron
  0 siblings, 0 replies; 13+ messages in thread
From: Jonathan Cameron @ 2019-06-26 19:24 UTC (permalink / raw)
  To: Mircea Caprioru
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt

On Tue, 25 Jun 2019 11:11:25 +0300
Mircea Caprioru <mircea.caprioru@analog.com> wrote:

> This patch adds the option to enable the buffered mode for positive and
> negative inputs. Each option can be enabled independently.
> 
> In buffered mode, the input channel feeds into a high impedance input stage
> of the buffer amplifier. Therefore, the input can tolerate significant
> source impedances and is tailored for direct connection to external
> resistive type sensors such as strain gages or RTDs.
> 
> Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
Applied.

Thanks,

Jonathan

> ---
> 
> Changelog v2:
> - nothing changed here
> 
> Changelog v3:
> - nothing changed here
> 
> Changelog v4:
> - nothing changed here
> 
>  drivers/iio/adc/ad7124.c | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
> index 810234db9c0d..ab52c5e9ecb1 100644
> --- a/drivers/iio/adc/ad7124.c
> +++ b/drivers/iio/adc/ad7124.c
> @@ -61,6 +61,8 @@
>  #define AD7124_CONFIG_REF_SEL(x)	FIELD_PREP(AD7124_CONFIG_REF_SEL_MSK, x)
>  #define AD7124_CONFIG_PGA_MSK		GENMASK(2, 0)
>  #define AD7124_CONFIG_PGA(x)		FIELD_PREP(AD7124_CONFIG_PGA_MSK, x)
> +#define AD7124_CONFIG_IN_BUFF_MSK	GENMASK(7, 6)
> +#define AD7124_CONFIG_IN_BUFF(x)	FIELD_PREP(AD7124_CONFIG_IN_BUFF_MSK, x)
>  
>  /* AD7124_FILTER_X */
>  #define AD7124_FILTER_FS_MSK		GENMASK(10, 0)
> @@ -108,6 +110,8 @@ struct ad7124_chip_info {
>  struct ad7124_channel_config {
>  	enum ad7124_ref_sel refsel;
>  	bool bipolar;
> +	bool buf_positive;
> +	bool buf_negative;
>  	unsigned int ain;
>  	unsigned int vref_mv;
>  	unsigned int pga_bits;
> @@ -473,6 +477,11 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
>  		else
>  			st->channel_config[channel].refsel = tmp;
>  
> +		st->channel_config[channel].buf_positive =
> +			of_property_read_bool(child, "adi,buffered-positive");
> +		st->channel_config[channel].buf_negative =
> +			of_property_read_bool(child, "adi,buffered-negative");
> +
>  		*chan = ad7124_channel_template;
>  		chan->address = channel;
>  		chan->scan_index = channel;
> @@ -492,7 +501,7 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
>  static int ad7124_setup(struct ad7124_state *st)
>  {
>  	unsigned int val, fclk, power_mode;
> -	int i, ret;
> +	int i, ret, tmp;
>  
>  	fclk = clk_get_rate(st->mclk);
>  	if (!fclk)
> @@ -525,8 +534,12 @@ static int ad7124_setup(struct ad7124_state *st)
>  		if (ret < 0)
>  			return ret;
>  
> +		tmp = (st->channel_config[i].buf_positive << 1)  +
> +			st->channel_config[i].buf_negative;
> +
>  		val = AD7124_CONFIG_BIPOLAR(st->channel_config[i].bipolar) |
> -		      AD7124_CONFIG_REF_SEL(st->channel_config[i].refsel);
> +		      AD7124_CONFIG_REF_SEL(st->channel_config[i].refsel) |
> +		      AD7124_CONFIG_IN_BUFF(tmp);
>  		ret = ad_sd_write_reg(&st->sd, AD7124_CONFIG(i), 2, val);
>  		if (ret < 0)
>  			return ret;


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

* Re: [PATCH V4 3/5] iio: adc: ad7124: Shift to dynamic allocation for channel configuration
  2019-06-25  8:11 ` [PATCH V4 3/5] iio: adc: ad7124: Shift to dynamic allocation for channel configuration Mircea Caprioru
@ 2019-06-26 19:25   ` Jonathan Cameron
  0 siblings, 0 replies; 13+ messages in thread
From: Jonathan Cameron @ 2019-06-26 19:25 UTC (permalink / raw)
  To: Mircea Caprioru
  Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
	linux-iio, devicetree, robh+dt

On Tue, 25 Jun 2019 11:11:26 +0300
Mircea Caprioru <mircea.caprioru@analog.com> wrote:

> This patch changes the channel configuration member of the device
> structure from a fixed size array to a dynamic allocated one with a size
> equal to the number of channels specified in the device tree. This will
> ensure a more flexibility for compatible devices.
> 
> Ex. ad7124-4 - can have 4 differential or 8 pseudo-differential channels
> ad7124-8 - can have 8 differential or 16 pseudo-differential channels
> 
> Also the device can suspport any other combination of differential and
> pseudo-differential channels base on the physical number of inputs
> available.
> 
> Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
Applied.

Thanks,

Jonathan

> ---
> 
> Changelog v2:
> - nothing changed here
> 
> Changelog v3:
> - nothing changed here
> 
> Changelog v4:
> - nothing changed here
> 
>  drivers/iio/adc/ad7124.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
> index ab52c5e9ecb1..edc6f1cc90b2 100644
> --- a/drivers/iio/adc/ad7124.c
> +++ b/drivers/iio/adc/ad7124.c
> @@ -121,7 +121,7 @@ struct ad7124_channel_config {
>  struct ad7124_state {
>  	const struct ad7124_chip_info *chip_info;
>  	struct ad_sigma_delta sd;
> -	struct ad7124_channel_config channel_config[4];
> +	struct ad7124_channel_config *channel_config;
>  	struct regulator *vref[4];
>  	struct clk *mclk;
>  	unsigned int adc_control;
> @@ -439,6 +439,7 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
>  	struct ad7124_state *st = iio_priv(indio_dev);
>  	struct device_node *child;
>  	struct iio_chan_spec *chan;
> +	struct ad7124_channel_config *chan_config;
>  	unsigned int ain[2], channel = 0, tmp;
>  	int ret;
>  
> @@ -453,8 +454,14 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
>  	if (!chan)
>  		return -ENOMEM;
>  
> +	chan_config = devm_kcalloc(indio_dev->dev.parent, st->num_channels,
> +				   sizeof(*chan_config), GFP_KERNEL);
> +	if (!chan_config)
> +		return -ENOMEM;
> +
>  	indio_dev->channels = chan;
>  	indio_dev->num_channels = st->num_channels;
> +	st->channel_config = chan_config;
>  
>  	for_each_available_child_of_node(np, child) {
>  		ret = of_property_read_u32(child, "reg", &channel);


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

* Re: [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property
  2019-06-26 14:45   ` Rob Herring
@ 2019-06-26 19:34     ` Jonathan Cameron
  0 siblings, 0 replies; 13+ messages in thread
From: Jonathan Cameron @ 2019-06-26 19:34 UTC (permalink / raw)
  To: Rob Herring
  Cc: Mircea Caprioru, Michael Hennerich, Stefan Popa,
	Lars-Peter Clausen, Greg Kroah-Hartman, linux-kernel,
	open list:IIO SUBSYSTEM AND DRIVERS, devicetree

On Wed, 26 Jun 2019 08:45:01 -0600
Rob Herring <robh+dt@kernel.org> wrote:

> On Tue, Jun 25, 2019 at 2:12 AM Mircea Caprioru
> <mircea.caprioru@analog.com> wrote:
> >
> > This patch adds the buffered mode device tree property for positive and
> > negative inputs. Each option can be enabled independently.
> >
> > In buffered mode, the input channel feeds into a high impedance input stage
> > of the buffer amplifier. Therefore, the input can tolerate significant
> > source impedances and is tailored for direct connection to external
> > resistive type sensors such as strain gages or RTDs.
> >
> > Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
> > ---
> >
> > Changelog v3:
> > - added this separate commit for adi,buffered-positive and negative
> >   properties
> >
> > Changelog v4:
> > - nothing changed here
> >
> >  .../devicetree/bindings/iio/adc/adi,ad7124.yaml       | 11 +++++++++++
> >  1 file changed, 11 insertions(+)  
> 
> Reviewed-by: Rob Herring <robh@kernel.org>

Applied to the togreg branch of iio.git and pushed out as testing.

thanks,

Jonathan

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

* Re: [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML
  2019-06-26 14:44   ` Rob Herring
@ 2019-06-26 19:34     ` Jonathan Cameron
  2019-06-26 19:57       ` Rob Herring
  0 siblings, 1 reply; 13+ messages in thread
From: Jonathan Cameron @ 2019-06-26 19:34 UTC (permalink / raw)
  To: Rob Herring
  Cc: Mircea Caprioru, Michael Hennerich, Stefan Popa,
	Lars-Peter Clausen, Greg Kroah-Hartman, linux-kernel,
	open list:IIO SUBSYSTEM AND DRIVERS, devicetree

On Wed, 26 Jun 2019 08:44:36 -0600
Rob Herring <robh+dt@kernel.org> wrote:

> On Tue, Jun 25, 2019 at 2:12 AM Mircea Caprioru
> <mircea.caprioru@analog.com> wrote:
> >
> > Convert AD7124 bindings documentation to YAML format.
> >
> > Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
> > ---
> >
> > Changelog v2:
> > - modified SPDX license to GPL-2.0 OR BSD-2-Clause
> > - added regex for a range from 0 to 15
> > - added minimum and maximum constraints for reg property
> > - set type and range of values for adi,reference-select property
> > - used items for diff-channels property
> > - set bipolar, adi,buffered-positive and negative to type: boolean
> >
> > Changelog v3:
> > - moved adi,buffered-positive and negative properties to own commit
> >
> > Changelog v4:
> > - removed old txt dt-binding
> >
> >  .../bindings/iio/adc/adi,ad7124.txt           |  75 ---------
> >  .../bindings/iio/adc/adi,ad7124.yaml          | 144 ++++++++++++++++++
> >  2 files changed, 144 insertions(+), 75 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
> >  create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml  
> 
> Reviewed-by: Rob Herring <robh@kernel.org>
Something a bit odd happened when trying to apply this, so I ended up doing
it rather manually.

error: cannot convert from y to UTF-8
fatal: could not parse patch

Anyhow, I think it's fine now, but would welcome any suggestion on what causes
that one?  Patch was perfectly happy with it.

Jonathan



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

* Re: [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML
  2019-06-26 19:34     ` Jonathan Cameron
@ 2019-06-26 19:57       ` Rob Herring
  0 siblings, 0 replies; 13+ messages in thread
From: Rob Herring @ 2019-06-26 19:57 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Mircea Caprioru, Michael Hennerich, Stefan Popa,
	Lars-Peter Clausen, Greg Kroah-Hartman, linux-kernel,
	open list:IIO SUBSYSTEM AND DRIVERS, devicetree

On Wed, Jun 26, 2019 at 1:34 PM Jonathan Cameron <jic23@kernel.org> wrote:
>
> On Wed, 26 Jun 2019 08:44:36 -0600
> Rob Herring <robh+dt@kernel.org> wrote:
>
> > On Tue, Jun 25, 2019 at 2:12 AM Mircea Caprioru
> > <mircea.caprioru@analog.com> wrote:
> > >
> > > Convert AD7124 bindings documentation to YAML format.
> > >
> > > Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
> > > ---
> > >
> > > Changelog v2:
> > > - modified SPDX license to GPL-2.0 OR BSD-2-Clause
> > > - added regex for a range from 0 to 15
> > > - added minimum and maximum constraints for reg property
> > > - set type and range of values for adi,reference-select property
> > > - used items for diff-channels property
> > > - set bipolar, adi,buffered-positive and negative to type: boolean
> > >
> > > Changelog v3:
> > > - moved adi,buffered-positive and negative properties to own commit
> > >
> > > Changelog v4:
> > > - removed old txt dt-binding
> > >
> > >  .../bindings/iio/adc/adi,ad7124.txt           |  75 ---------
> > >  .../bindings/iio/adc/adi,ad7124.yaml          | 144 ++++++++++++++++++
> > >  2 files changed, 144 insertions(+), 75 deletions(-)
> > >  delete mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
> > >  create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
> >
> > Reviewed-by: Rob Herring <robh@kernel.org>
> Something a bit odd happened when trying to apply this, so I ended up doing
> it rather manually.
>
> error: cannot convert from y to UTF-8
> fatal: could not parse patch
>
> Anyhow, I think it's fine now, but would welcome any suggestion on what causes
> that one?  Patch was perfectly happy with it.

Looks like an error in the mail header:

Content-Type: text/plain; charset="y"

Rob

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

end of thread, other threads:[~2019-06-26 19:57 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-25  8:11 [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Mircea Caprioru
2019-06-25  8:11 ` [PATCHi V4 2/5] iio: adc: ad7124: Add buffered input support Mircea Caprioru
2019-06-26 19:24   ` Jonathan Cameron
2019-06-25  8:11 ` [PATCH V4 3/5] iio: adc: ad7124: Shift to dynamic allocation for channel configuration Mircea Caprioru
2019-06-26 19:25   ` Jonathan Cameron
2019-06-25  8:11 ` [PATCH V4 4/5] dt-bindings: iio: adc: Convert ad7124 documentation to YAML Mircea Caprioru
2019-06-26 14:44   ` Rob Herring
2019-06-26 19:34     ` Jonathan Cameron
2019-06-26 19:57       ` Rob Herring
2019-06-25  8:11 ` [PATCH V4 5/5] dt-bindings: iio: adc: Add buffered input property Mircea Caprioru
2019-06-26 14:45   ` Rob Herring
2019-06-26 19:34     ` Jonathan Cameron
2019-06-26 19:22 ` [PATCH V4 1/5] iio: adc: ad7124: Remove input number limitation Jonathan Cameron

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).