# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ad4170-4.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices AD4170-4 and similar Analog to Digital Converters

maintainers:
  - Marcelo Schmitt <marcelo.schmitt@analog.com>

description: |
  Analog Devices AD4170-4 series of Sigma-delta Analog to Digital Converters.
  Specifications can be found at:
    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4170-4.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4190-4.pdf
    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4195-4.pdf

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

$defs:
  reference-buffer:
    description: |
      Enable precharge buffer, full buffer, or skip reference buffering of
      the positive/negative voltage reference. Because the output impedance
      of the source driving the voltage reference inputs may be dynamic,
      resistive/capacitive combinations of those inputs can cause DC gain
      errors if the reference inputs go unbuffered into the ADC. Enable
      reference buffering if the provided reference source has dynamic high
      impedance output. Note the absolute voltage allowed on REFINn+ and REFINn-
      inputs is from AVSS - 50 mV to AVDD + 50 mV when the reference buffers are
      disabled but narrows to AVSS to AVDD when reference buffering is enabled
      or in precharge mode.
    $ref: /schemas/types.yaml#/definitions/string
    enum: [ precharge, full, disabled ]
    default: full

properties:
  compatible:
    enum:
      - adi,ad4170-4
      - adi,ad4190-4
      - adi,ad4195-4

  avss-supply:
    description:
      Reference voltage supply for AVSS. A −2.625V minimum and 0V maximum supply
      that powers the chip. If not provided, AVSS is assumed to be at system
      ground (0V).

  avdd-supply:
    description:
      A supply of 4.75V to 5.25V relative to AVSS that powers the chip (AVDD).

  iovdd-supply:
    description: 1.7V to 5.25V reference supply to the serial interface (IOVDD).

  refin1p-supply:
    description: REFIN+ supply that can be used as reference for conversion.

  refin1n-supply:
    description: REFIN- supply that can be used as reference for conversion.

  refin2p-supply:
    description: REFIN2+ supply that can be used as reference for conversion.

  refin2n-supply:
    description: REFIN2- supply that can be used as reference for conversion.

  spi-cpol: true

  spi-cpha: true

  interrupts:
    description:
      Interrupt for signaling the completion of conversion results. The data
      ready signal (RDY) used as interrupt is by default provided on the SDO
      pin. Alternatively, it can be provided on the DIG_AUX1 pin in which case
      the chip disables the RDY function on SDO. Thus, there can be only one
      data ready interrupt enabled at a time.

  interrupt-names:
    description:
      Specify which pin should be configured as Data Ready interrupt.
    enum:
      - sdo
      - dig_aux1

  clocks:
    maxItems: 1
    description:
      Optional external clock source. Can specify either an external clock or
      external crystal.

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

  '#clock-cells':
    const: 0

  clock-output-names:
    maxItems: 1

  gpio-controller: true

  "#gpio-cells":
    const: 2
    description: |
      The first cell is for the GPIO number: 0 to 3.
      The second cell takes standard GPIO flags.

  ldac-gpios:
    description:
      GPIO connected to DIG_AUX2 pin to be used as LDAC toggle to control the
      transfer of data from the DAC_INPUT_A register to the DAC.
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  adi,vbias-pins:
    description: Analog inputs to apply a voltage bias of (AVDD − AVSS) / 2 to.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 9
    items:
      minimum: 0
      maximum: 8

allOf:
  # Some devices don't have integrated DAC
  - if:
      properties:
        compatible:
          contains:
            enum:
              - adi,ad4190-4
              - adi,ad4195-4
    then:
      properties:
        ldac-gpios: false

  # Require to specify the interrupt pin when using interrupts
  - if:
      required:
        - interrupts
    then:
      required:
        - interrupt-names

  # If an external clock is set, the internal clock cannot go out and vice versa
  - oneOf:
      - required: [clocks]
        properties:
          '#clock-cells': false
      - required: ['#clock-cells']
        properties:
          clocks: false

required:
  - compatible
  - reg
  - avdd-supply
  - iovdd-supply
  - spi-cpol
  - spi-cpha

unevaluatedProperties: false

patternProperties:
  "^channel@[0-9a-f]$":
    $ref: /schemas/iio/adc/adc.yaml#
    unevaluatedProperties: false
    description:
      Represents the external channels which are connected to the ADC.

    properties:
      reg:
        description:
          The channel number.
        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.

          Besides the analog input pins AIN0 to AIN8, there are special inputs
          that can be selected with the following values:
          17: Internal temperature sensor
          18: (AVDD-AVSS)/5
          19: (IOVDD-DGND)/5
          20: DAC output
          21: ALDO
          22: DLDO
          23: AVSS
          24: DGND
          25: REFIN+
          26: REFIN-
          27: REFIN2+
          28: REFIN2-
          29: REFOUT
          For the internal temperature sensor, use the input number for both
          inputs (i.e. diff-channels = <17 17>).
        items:
          enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25,
                 26, 27, 28, 29]

      adi,reference-select:
        description: |
          Select the reference source to use when converting on the
          specific channel. Valid values are:
          0: REFIN+/REFIN-
          1: REFIN2+/REFIN2−
          2: REFOUT/AVSS (internal reference)
          3: AVDD/AVSS
          If not specified, REFOUT/AVSS is used.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2, 3]
        default: 1

      adi,positive-reference-buffer:
        $ref: '#/$defs/reference-buffer'

      adi,negative-reference-buffer:
        $ref: '#/$defs/reference-buffer'

      adi,sensor-type:
        description:
          The AD4170-4 and similar designs have features to aid interfacing with
          load cell weigh scale, RTD, and thermocouple sensors. Each of those
          sensor types requires either distinct wiring configuration or
          external circuitry for proper sensor operation and can use different
          ADC chip functionality on their setups. A key characteristic of those
          external sensors is that they must be excited either by voltage supply
          or by ADC chip excitation signals. The sensor can then be read through
          a pair of analog inputs. This property specifies which particular
          sensor type is connected to the ADC so it can be properly setup and
          handled. Omit this property for conventional (not weigh scale, RTD, or
          thermocouple) ADC channel setups.
        $ref: /schemas/types.yaml#/definitions/string
        enum: [ weighscale, rtd, thermocouple ]

      adi,excitation-pin-0:
        description:
          Analog input to apply excitation current to while the channel
          is active.
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 20
        default: 0

      adi,excitation-pin-1:
        description:
          Analog input to apply excitation current to while the channel
          is active.
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 20
        default: 0

      adi,excitation-pin-2:
        description:
          Analog input to apply excitation current to while the channel
          is active.
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 20
        default: 0

      adi,excitation-pin-3:
        description:
          Analog input to apply excitation current to while the channel
          is active.
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 20
        default: 0

      adi,excitation-current-0-microamp:
        description:
          Excitation current in microamperes to be applied to pin specified in
          adi,excitation-pin-0 while this channel is active.
        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
        default: 0

      adi,excitation-current-1-microamp:
        description:
          Excitation current in microamperes to be applied to pin specified in
          adi,excitation-pin-1 while this channel is active.
        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
        default: 0

      adi,excitation-current-2-microamp:
        description:
          Excitation current in microamperes to be applied to pin specified in
          adi,excitation-pin-2 while this channel is active.
        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
        default: 0

      adi,excitation-current-3-microamp:
        description:
          Excitation current in microamperes to be applied to pin specified in
          adi,excitation-pin-3 while this channel is active.
        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
        default: 0

      adi,excitation-ac:
        type: boolean
        description:
          Whether the external sensor has to be AC or DC excited. When omitted,
          it is DC excited.

    allOf:
      - oneOf:
          - required: [single-channel, common-mode-channel]
            properties:
              diff-channels: false
          - required: [diff-channels]
            properties:
              single-channel: false
              common-mode-channel: false
      # Usual ADC channels don't need external circuitry excitation.
      - if:
          not:
            required:
              - adi,sensor-type
        then:
          properties:
            adi,excitation-pin-0: false
            adi,excitation-pin-1: false
            adi,excitation-pin-2: false
            adi,excitation-pin-3: false
            adi,excitation-current-0-microamp: false
            adi,excitation-current-1-microamp: false
            adi,excitation-current-2-microamp: false
            adi,excitation-current-3-microamp: false
            adi,excitation-ac: false
      # Weigh scale bridge AC excited with one pair of predefined signals.
      - if:
          allOf:
            - properties:
                adi,sensor-type:
                  contains:
                    const: weighscale
            - required:
                - adi,excitation-ac
                - adi,excitation-pin-2
                - adi,excitation-pin-3
            - not:
                required:
                  - adi,excitation-current-2-microamp
                  - adi,excitation-current-3-microamp
        then:
          properties:
            adi,excitation-pin-2:
              const: 19
            adi,excitation-pin-3:
              const: 20
      # Weigh scale bridge AC excited with two pairs of predefined signals.
      - if:
          allOf:
            - properties:
                adi,sensor-type:
                  contains:
                    const: weighscale
            - required:
                - adi,excitation-ac
                - adi,excitation-pin-0
                - adi,excitation-pin-1
                - adi,excitation-pin-2
                - adi,excitation-pin-3
            - not:
                required:
                  - adi,excitation-current-0-microamp
                  - adi,excitation-current-1-microamp
                  - adi,excitation-current-2-microamp
                  - adi,excitation-current-3-microamp
        then:
          properties:
            adi,excitation-pin-0:
              const: 17
            adi,excitation-pin-1:
              const: 18
            adi,excitation-pin-2:
              const: 19
            adi,excitation-pin-3:
              const: 20

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        adc@0 {
            compatible = "adi,ad4170-4";
            reg = <0>;
            spi-max-frequency = <20000000>;
            spi-cpol;
            spi-cpha;
            avdd-supply = <&avdd>;
            iovdd-supply = <&iovdd>;
            clocks = <&clk>;
            clock-names = "xtal";
            interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
            interrupt-names = "dig_aux1";
            adi,vbias-pins = <8>;
            #address-cells = <1>;
            #size-cells = <0>;

            // Sample AIN0 with respect to DGND throughout AVDD/DGND input range
            // Pseudo-differential unipolar
            channel@0 {
                reg = <0>;
                single-channel = <0>;
                common-mode-channel = <24>;
                adi,reference-select = <3>;
            };
            // Weigh scale sensor
            channel@1 {
                reg = <1>;
                bipolar;
                diff-channels = <1 2>;
                adi,reference-select = <0>;
                adi,positive-reference-buffer = "precharge";
                adi,negative-reference-buffer = "precharge";
                adi,sensor-type = "weighscale";
                adi,excitation-pin-2 = <19>;
                adi,excitation-pin-3 = <20>;
                adi,excitation-ac;
            };
            // RTD sensor
            channel@2 {
                reg = <2>;
                bipolar;
                diff-channels = <3 4>;
                adi,reference-select = <0>;
                adi,sensor-type = "rtd";
                adi,excitation-pin-0 = <5>;
                adi,excitation-pin-1 = <6>;
                adi,excitation-current-0-microamp = <500>;
                adi,excitation-current-1-microamp = <500>;
                adi,excitation-ac;
            };
            // Thermocouple sensor
            channel@3 {
                reg = <3>;
                bipolar;
                diff-channels = <7 8>;
                adi,reference-select = <0>;
                adi,sensor-type = "thermocouple";
                adi,excitation-pin-0 = <18>;
                adi,excitation-current-0-microamp = <500>;
            };
        };
    };
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        adc@0 {
            compatible = "adi,ad4170-4";
            reg = <0>;
            spi-max-frequency = <20000000>;
            spi-cpol;
            spi-cpha;
            avdd-supply = <&avdd>;
            iovdd-supply = <&iovdd>;
            #clock-cells = <0>;
            clock-output-names = "ad4170-clk16mhz";
            interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
            interrupt-names = "dig_aux1";
            #address-cells = <1>;
            #size-cells = <0>;

            // Sample AIN0 with respect to AIN1 throughout AVDD/AVSS input range
            // Differential bipolar. If AVSS < 0V, differential true bipolar
            channel@0 {
                reg = <0>;
                bipolar;
                diff-channels = <0 1>;
                adi,reference-select = <3>;
            };
            // Sample AIN2 with respect to DGND throughout AVDD/DGND input range
            // Pseudo-differential unipolar
            channel@1 {
                reg = <1>;
                single-channel = <2>;
                common-mode-channel = <24>;
                adi,reference-select = <3>;
            };
            // Sample AIN3 with respect to 2.5V throughout AVDD/AVSS input range
            // Pseudo-differential bipolar
            channel@2 {
                reg = <2>;
                bipolar;
                single-channel = <3>;
                common-mode-channel = <29>;
                adi,reference-select = <3>;
            };
            // Sample AIN4 with respect to DGND throughout AVDD/AVSS input range
            // Pseudo-differential bipolar
            channel@3 {
                reg = <3>;
                bipolar;
                single-channel = <4>;
                common-mode-channel = <24>;
                adi,reference-select = <3>;
            };
            // Sample AIN5 with respect to 2.5V throughout AVDD/AVSS input range
            // Pseudo-differential unipolar (AD4170-4 datasheet page 46 example)
            channel@4 {
                reg = <4>;
                single-channel = <5>;
                common-mode-channel = <29>;
                adi,reference-select = <3>;
            };
            // Sample AIN6 with respect to 2.5V throughout REFIN+/REFIN- input range
            // Pseudo-differential bipolar
            channel@5 {
                reg = <5>;
                bipolar;
                single-channel = <6>;
                common-mode-channel = <29>;
                adi,reference-select = <0>;
            };
            // Weigh scale sensor
            channel@6 {
                reg = <6>;
                bipolar;
                diff-channels = <7 8>;
                adi,reference-select = <0>;
                adi,sensor-type = "weighscale";
                adi,excitation-pin-0 = <17>;
                adi,excitation-pin-1 = <18>;
                adi,excitation-pin-2 = <19>;
                adi,excitation-pin-3 = <20>;
                adi,excitation-ac;
            };
        };
    };
...
