diff mbox series

[1/2] dt-bindings: iio: adc: Add binding for AD7380 ADCs

Message ID 20231208-ad7380-mainline-v1-1-2b33fe2f44ae@baylibre.com
State Superseded
Headers show
Series iio: adc: add new ad7380 driver | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

David Lechner Dec. 8, 2023, 3:51 p.m. UTC
This adds a binding specification for the Analog Devices Inc. AD7380
family of ADCs.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---
 .../devicetree/bindings/iio/adc/adi,ad7380.yaml    | 102 +++++++++++++++++++++
 MAINTAINERS                                        |   9 ++
 2 files changed, 111 insertions(+)

Comments

Krzysztof Kozlowski Dec. 9, 2023, 7:57 a.m. UTC | #1
On 08/12/2023 16:51, David Lechner wrote:
> This adds a binding specification for the Analog Devices Inc. AD7380
> family of ADCs.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
>  .../devicetree/bindings/iio/adc/adi,ad7380.yaml    | 102 +++++++++++++++++++++
>  MAINTAINERS                                        |   9 ++
>  2 files changed, 111 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
> new file mode 100644
> index 000000000000..e9a0b72cd9d3
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
> @@ -0,0 +1,102 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/adc/adi,ad7380.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Analog Devices Simultaneous Sampling Analog to Digital Converters
> +
> +maintainers:
> +  - Michael Hennerich <Michael.Hennerich@analog.com>
> +  - Nuno Sá <nuno.sa@analog.com>
> +
> +description: |
> +  * https://www.analog.com/en/products/ad7380.html
> +  * https://www.analog.com/en/products/ad7381.html
> +  * https://www.analog.com/en/products/ad7383.html
> +  * https://www.analog.com/en/products/ad7384.html
> +
> +$ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +properties:
> +  compatible:
> +    enum:
> +      - adi,ad7380
> +      - adi,ad7381
> +      - adi,ad7383
> +      - adi,ad7384
> +
> +  reg: true

maxItems
(unless 256 items are really possible for this device)

> +
> +  spi-max-frequency:
> +    maximum: 80000000
> +  spi-cpol: true
> +  spi-cpha: true
> +


Best regards,
Krzysztof
Jonathan Cameron Dec. 10, 2023, 1:49 p.m. UTC | #2
On Fri,  8 Dec 2023 09:51:40 -0600
David Lechner <dlechner@baylibre.com> wrote:

> This adds a binding specification for the Analog Devices Inc. AD7380
> family of ADCs.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
Hi David,

Comments inline.  A question for Mark Brown on the 2-wire bit..
Do we have existing DT bindings for devices with parallel spi data
outputs?

> ---
>  .../devicetree/bindings/iio/adc/adi,ad7380.yaml    | 102 +++++++++++++++++++++
>  MAINTAINERS                                        |   9 ++
>  2 files changed, 111 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
> new file mode 100644
> index 000000000000..e9a0b72cd9d3
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
...


> +  * https://www.analog.com/en/products/ad7380.html
> +  * https://www.analog.com/en/products/ad7381.html
> +  * https://www.analog.com/en/products/ad7383.html
> +  * https://www.analog.com/en/products/ad7384.html

> +  adi,sdo-mode:
> +    $ref: /schemas/types.yaml#/definitions/string
> +    enum: [ 1-wire, 2-wire ]
> +    description:
> +      In 1-wire mode, the SDOA pin acts as the sole data line and the SDOB/ALERT
> +      pin acts as the ALERT interrupt signal. In 2-wire mode, data for input A
> +      is read from SDOA and data for input B is read from SDOB/ALERT (and the
> +      ALERT interrupt signal is not available).

This is fun...  If I understand correctly 2-wire requires two SPI buses (or a complex
spi controller that does parallel serial channels).  What would description for that
look like in DT and can we not establish what is wanted here from that bus description
rather than an adi specific property?

Seems a bit like parallel-memories.

Mark, any insights into what we should do to describe this?

> +
> +  vcc-supply:
> +    description: A 3V to 3.6V supply that powers the chip.
> +
> +  vlogic-supply:
> +    description:
> +      A 1.65V to 3.6V supply for the logic pins.
> +
> +  refio-supply:
> +    description:
> +      A 2.5V to 3.3V supply for the external reference voltage. When omitted,
> +      the internal 2.5V reference is used.
> +
> +  interrupts:
> +    description:
> +      When the device is using 1-wire mode, this property is used to optionally
> +      specify the ALERT interrupt.
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - adi,sdo-mode

Could define a default of 1-wire?  Simplifies things a little in the bindings.

> +  - vcc-supply
> +  - vlogic-supply
David Lechner Dec. 11, 2023, 9:13 a.m. UTC | #3
On Sun, Dec 10, 2023 at 2:49 PM Jonathan Cameron <jic23@kernel.org> wrote:
>
> On Fri,  8 Dec 2023 09:51:40 -0600
> David Lechner <dlechner@baylibre.com> wrote:
>
> > This adds a binding specification for the Analog Devices Inc. AD7380
> > family of ADCs.
> >
> > Signed-off-by: David Lechner <dlechner@baylibre.com>
> Hi David,
>
> Comments inline.  A question for Mark Brown on the 2-wire bit..
> Do we have existing DT bindings for devices with parallel spi data
> outputs?
>
> > ---
> >  .../devicetree/bindings/iio/adc/adi,ad7380.yaml    | 102 +++++++++++++++++++++
> >  MAINTAINERS                                        |   9 ++
> >  2 files changed, 111 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
> > new file mode 100644
> > index 000000000000..e9a0b72cd9d3
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
> ...
>
>
> > +  * https://www.analog.com/en/products/ad7380.html
> > +  * https://www.analog.com/en/products/ad7381.html
> > +  * https://www.analog.com/en/products/ad7383.html
> > +  * https://www.analog.com/en/products/ad7384.html
>
> > +  adi,sdo-mode:
> > +    $ref: /schemas/types.yaml#/definitions/string
> > +    enum: [ 1-wire, 2-wire ]
> > +    description:
> > +      In 1-wire mode, the SDOA pin acts as the sole data line and the SDOB/ALERT
> > +      pin acts as the ALERT interrupt signal. In 2-wire mode, data for input A
> > +      is read from SDOA and data for input B is read from SDOB/ALERT (and the
> > +      ALERT interrupt signal is not available).
>
> This is fun...  If I understand correctly 2-wire requires two SPI buses (or a complex
> spi controller that does parallel serial channels).

No, it wouldn't work with two separate SPI busses. Only a special
controller with parallel serial channels.

> What would description for that
> look like in DT and can we not establish what is wanted here from that bus description
> rather than an adi specific property?
>
> Seems a bit like parallel-memories.

I don't think this is the same as parallel-memories. Looking at the
the patch [1] it looks like parallel memories requires multiple CS
lines to connect to multiple chips to make the multiple chips behave
as one chip but otherwise works like SPI_RX_DUAL.

This ADC, on the other hand, works as if two chips that share
everything except the MISO line. Each MISO line (SDOA and SDOB) shifts
out one bit of two different words in parallel on each line instead of
two bits of the same word like SPI_RX_DUAL busses.

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git/commit/?h=for-6.8&id=88a50c1663ffa9f6b31705c6bf7a887a2c8d9434

>
> Mark, any insights into what we should do to describe this?
>
> > +
> > +  vcc-supply:
> > +    description: A 3V to 3.6V supply that powers the chip.
> > +
> > +  vlogic-supply:
> > +    description:
> > +      A 1.65V to 3.6V supply for the logic pins.
> > +
> > +  refio-supply:
> > +    description:
> > +      A 2.5V to 3.3V supply for the external reference voltage. When omitted,
> > +      the internal 2.5V reference is used.
> > +
> > +  interrupts:
> > +    description:
> > +      When the device is using 1-wire mode, this property is used to optionally
> > +      specify the ALERT interrupt.
> > +    maxItems: 1
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - adi,sdo-mode
>
> Could define a default of 1-wire?  Simplifies things a little in the bindings.
>
> > +  - vcc-supply
> > +  - vlogic-supply
>
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
new file mode 100644
index 000000000000..e9a0b72cd9d3
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
@@ -0,0 +1,102 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad7380.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices Simultaneous Sampling Analog to Digital Converters
+
+maintainers:
+  - Michael Hennerich <Michael.Hennerich@analog.com>
+  - Nuno Sá <nuno.sa@analog.com>
+
+description: |
+  * https://www.analog.com/en/products/ad7380.html
+  * https://www.analog.com/en/products/ad7381.html
+  * https://www.analog.com/en/products/ad7383.html
+  * https://www.analog.com/en/products/ad7384.html
+
+$ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+  compatible:
+    enum:
+      - adi,ad7380
+      - adi,ad7381
+      - adi,ad7383
+      - adi,ad7384
+
+  reg: true
+
+  spi-max-frequency:
+    maximum: 80000000
+  spi-cpol: true
+  spi-cpha: true
+
+  adi,sdo-mode:
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [ 1-wire, 2-wire ]
+    description:
+      In 1-wire mode, the SDOA pin acts as the sole data line and the SDOB/ALERT
+      pin acts as the ALERT interrupt signal. In 2-wire mode, data for input A
+      is read from SDOA and data for input B is read from SDOB/ALERT (and the
+      ALERT interrupt signal is not available).
+
+  vcc-supply:
+    description: A 3V to 3.6V supply that powers the chip.
+
+  vlogic-supply:
+    description:
+      A 1.65V to 3.6V supply for the logic pins.
+
+  refio-supply:
+    description:
+      A 2.5V to 3.3V supply for the external reference voltage. When omitted,
+      the internal 2.5V reference is used.
+
+  interrupts:
+    description:
+      When the device is using 1-wire mode, this property is used to optionally
+      specify the ALERT interrupt.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - adi,sdo-mode
+  - vcc-supply
+  - vlogic-supply
+
+allOf:
+  - if:
+      properties:
+        adi,sdo-mode:
+          const: 2-wire
+    then:
+      properties:
+        interrupts: false
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "adi,ad7380";
+            reg = <0>;
+
+            spi-cpol;
+            spi-cpha;
+            spi-max-frequency = <80000000>;
+
+            adi,sdo-mode = "1-wire";
+            interrupts = <27>;
+
+            vcc-supply = <&supply_3_3V>;
+            vlogic-supply = <&supply_3_3V>;
+            refio-supply = <&supply_2_5V>;
+        };
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index fe1f6f97f96a..e2a998be5879 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -430,6 +430,15 @@  W:	http://wiki.analog.com/AD7142
 W:	https://ez.analog.com/linux-software-drivers
 F:	drivers/input/misc/ad714x.c
 
+AD738X ADC DRIVER (AD7380/1/2/4)
+M:	Michael Hennerich <michael.hennerich@analog.com>
+M:	Nuno Sá <nuno.sa@analog.com>
+R:	David Lechner <dlechner@baylibre.com>
+S:	Supported
+W:	https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad738x
+W:	https://ez.analog.com/linux-software-drivers
+F:	Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml
+
 AD7877 TOUCHSCREEN DRIVER
 M:	Michael Hennerich <michael.hennerich@analog.com>
 S:	Supported