# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2023 Analog Devices Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ad7173.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices AD7173 ADC

maintainers:
  - Ceclan Dumitru <dumitru.ceclan@analog.com>

description: |
  Analog Devices AD717x ADC's:
  The AD717x family offer a complete integrated Sigma-Delta ADC solution which
  can be used in high precision, low noise single channel applications
  (Life Science measurements) or higher speed multiplexed applications
  (Factory Automation PLC Input modules). The Sigma-Delta ADC is intended
  primarily for measurement of signals close to DC but also delivers
  outstanding performance with input bandwidths out to ~10kHz.

  Analog Devices AD411x ADC's:
  The AD411X family encompasses a series of low power, low noise, 24-bit,
  sigma-delta analog-to-digital converters that offer a versatile range of
  specifications. They integrate an analog front end suitable for processing
  fully differential/single-ended and bipolar voltage inputs.

  Datasheets for supported chips:
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD4111.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD4112.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD4114.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD4115.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD4116.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7172-2.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7172-4.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7173-8.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7175-2.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7175-8.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7176-2.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD7177-2.pdf

properties:
  compatible:
    enum:
      - adi,ad4111
      - adi,ad4112
      - adi,ad4114
      - adi,ad4115
      - adi,ad4116
      - adi,ad7172-2
      - adi,ad7172-4
      - adi,ad7173-8
      - adi,ad7175-2
      - adi,ad7175-8
      - adi,ad7176-2
      - adi,ad7177-2

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    items:
      - description: |
          Ready: multiplexed with SPI data out. While SPI CS is low,
          can be used to indicate the completion of a conversion.

      - description: |
          Error: The three error bits in the status register (ADC_ERROR, CRC_ERROR,
          and REG_ERROR) are OR'ed, inverted, and mapped to the ERROR pin.
          Therefore, the ERROR pin indicates that an error has occurred.

  interrupt-names:
    minItems: 1
    items:
      - const: rdy
      - const: err

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  spi-max-frequency:
    maximum: 20000000

  gpio-controller:
    description: Marks the device node as a GPIO controller.

  '#gpio-cells':
    const: 2
    description:
      The first cell is the GPIO number and the second cell specifies
      GPIO flags, as defined in <dt-bindings/gpio/gpio.h>.

  vref-supply:
    description: |
      Differential external reference supply used for conversion. The reference
      voltage (Vref) specified here must be the voltage difference between the
      REF+ and REF- pins: Vref = (REF+) - (REF-).

  vref2-supply:
    description: |
      Differential external reference supply used for conversion. The reference
      voltage (Vref2) specified here must be the voltage difference between the
      REF2+ and REF2- pins: Vref2 = (REF2+) - (REF2-).

  avdd-supply:
    description: Avdd supply, can be used as reference for conversion.
                 This supply is referenced to AVSS, voltage specified here
                 represents (AVDD1 - AVSS).

  avdd2-supply:
    description: Avdd2 supply, used as the input to the internal voltage regulator.
                 This supply is referenced to AVSS, voltage specified here
                 represents (AVDD2 - AVSS).

  iovdd-supply:
    description: iovdd supply, used for the chip digital interface.

  clocks:
    maxItems: 1
    description: |
      Optional external clock source. Can include one clock source: external
      clock or external crystal.

  clock-names:
    enum:
      - ext-clk
      - xtal

  '#clock-cells':
    const: 0

patternProperties:
  "^channel@[0-9a-f]$":
    type: object
    $ref: adc.yaml
    unevaluatedProperties: false

    properties:
      reg:
        minimum: 0
        maximum: 15

      diff-channels:
        description: |
          This property is used for defining the inputs of a differential
          voltage channel. The first value is the positive input and the second
          value is the negative input of the channel.

          Family AD411x supports a dedicated VINCOM voltage input.
          To select it set the second channel to 16.
            (VIN2, VINCOM) -> diff-channels = <2 16>

          There are special values that can be selected besides the voltage
          analog inputs:
            21: REF+
            22: REF−

          Supported only by AD7172-2, AD7172-4, AD7175-2, AD7175-8, AD7177-2,
          must be paired together and can be used to monitor the power supply
          of the ADC:
            19: ((AVDD1 − AVSS)/5)+
            20: ((AVDD1 − AVSS)/5)−

        items:
          minimum: 0
          maximum: 31

      single-channel:
        description: |
          This property is used for defining a current channel or the positive
          input of a voltage channel (single-ended or pseudo-differential).

          Models AD4111 and AD4112 support current channels.
            Example: (IIN2+, IIN2−) -> single-channel = <2>
          To correctly configure a current channel set the "adi,current-channel"
          property to true.

          To configure a single-ended/pseudo-differential channel set the
          "common-mode-channel" property to the desired negative voltage input.

          When used as a voltage channel, special inputs are valid as well.
        minimum: 0
        maximum: 31

      common-mode-channel:
        description:
          This property is used for defining the negative input of a
          single-ended or pseudo-differential voltage channel.

          Special inputs are valid as well.
        minimum: 0
        maximum: 31

      adi,reference-select:
        description: |
          Select the reference source to use when converting on
          the specific channel. Valid values are:
          vref       : REF+  /REF−
          vref2      : REF2+ /REF2−
          refout-avss: REFOUT/AVSS (Internal reference)
          avdd       : AVDD  /AVSS

          External reference ref2 only available on ad7173-8 and ad7172-4.
          Internal reference refout-avss not available on ad7172-4.

          If not specified, internal reference used (if available).
        $ref: /schemas/types.yaml#/definitions/string
        enum:
          - vref
          - vref2
          - refout-avss
          - avdd
        default: refout-avss

      adi,current-channel:
        $ref: /schemas/types.yaml#/definitions/flag
        description: |
          Signal that the selected inputs are current channels.
          Only available on AD4111 and AD4112.

    required:
      - reg

    allOf:
      - oneOf:
          - required: [single-channel]
            properties:
              diff-channels: false
          - required: [diff-channels]
            properties:
              single-channel: false
              adi,current-channel: false
              common-mode-channel: false

      - if:
          required: [common-mode-channel]
        then:
          properties:
            adi,current-channel: false

required:
  - compatible
  - reg

allOf:
  - $ref: /schemas/spi/spi-peripheral-props.yaml#

  # Only ad7172-4, ad7173-8 and ad7175-8 support vref2
  - if:
      properties:
        compatible:
          not:
            contains:
              enum:
                - adi,ad7172-4
                - adi,ad7173-8
                - adi,ad7175-8
    then:
      properties:
        vref2-supply: false
      patternProperties:
        "^channel@[0-9a-f]$":
          properties:
            adi,reference-select:
              enum:
                - vref
                - refout-avss
                - avdd

  - if:
      properties:
        compatible:
          contains:
            enum:
              - adi,ad4114
              - adi,ad4115
              - adi,ad4116
              - adi,ad7173-8
              - adi,ad7175-8
    then:
      patternProperties:
        "^channel@[0-9a-f]$":
          properties:
            reg:
              maximum: 15

  - if:
      properties:
        compatible:
          contains:
            enum:
              - adi,ad7172-2
              - adi,ad7175-2
              - adi,ad7176-2
              - adi,ad7177-2
    then:
      patternProperties:
        "^channel@[0-9a-f]$":
          properties:
            reg:
              maximum: 3

  # Model ad7172-4 does not support internal reference
  - if:
      properties:
        compatible:
          contains:
            const: adi,ad7172-4
    then:
      patternProperties:
        "^channel@[0-9a-f]$":
          properties:
            reg:
              maximum: 7
            adi,reference-select:
              enum:
                - vref
                - vref2
                - avdd
          required:
            - adi,reference-select

  - if:
      properties:
        compatible:
          contains:
            enum:
              - adi,ad4111
              - adi,ad4112
              - adi,ad4114
              - adi,ad4115
              - adi,ad4116
    then:
      properties:
        avdd2-supply: false

  - if:
      properties:
        compatible:
          not:
            contains:
              enum:
                - adi,ad4111
                - adi,ad4112
    then:
      patternProperties:
        "^channel@[0-9a-f]$":
          properties:
            adi,current-channel: false

  - if:
      anyOf:
        - required: [clock-names]
        - required: [clocks]
    then:
      properties:
        '#clock-cells': false

unevaluatedProperties: false

examples:
  # Example AD7173-8 with external reference connected to REF+/REF-:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    spi {
      #address-cells = <1>;
      #size-cells = <0>;

      adc@0 {
        compatible = "adi,ad7173-8";
        reg = <0>;

        #address-cells = <1>;
        #size-cells = <0>;

        interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
        interrupt-names = "rdy";
        interrupt-parent = <&gpio>;
        spi-max-frequency = <5000000>;
        gpio-controller;
        #gpio-cells = <2>;
        #clock-cells = <0>;

        vref-supply = <&dummy_regulator>;

        channel@0 {
          reg = <0>;
          bipolar;
          diff-channels = <0 1>;
          adi,reference-select = "vref";
        };

        channel@1 {
          reg = <1>;
          diff-channels = <2 3>;
        };

        channel@2 {
          reg = <2>;
          bipolar;
          diff-channels = <4 5>;
        };

        channel@3 {
          reg = <3>;
          bipolar;
          diff-channels = <6 7>;
        };

        channel@4 {
          reg = <4>;
          diff-channels = <8 9>;
          adi,reference-select = "avdd";
        };
      };
    };

  # Example AD4111 with current channel and single-ended channel:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    spi {
      #address-cells = <1>;
      #size-cells = <0>;

       adc@0 {
        compatible = "adi,ad4111";
        reg = <0>;

        #address-cells = <1>;
        #size-cells = <0>;

        interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
        interrupt-names = "rdy";
        interrupt-parent = <&gpio>;
        spi-max-frequency = <5000000>;
        gpio-controller;
        #gpio-cells = <2>;
        #clock-cells = <0>;

        channel@0 {
          reg = <0>;
          bipolar;
          diff-channels = <4 5>;
        };

        // Single ended channel VIN2/VINCOM
        channel@1 {
          reg = <1>;
          bipolar;
          single-channel = <2>;
          common-mode-channel = <16>;
        };

        // Current channel IN2+/IN2-
        channel@2 {
          reg = <2>;
          single-channel = <2>;
          adi,current-channel;
        };
      };
    };
