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

title: Analog Devices Easy Drive Multiplexed SAR Analog to Digital Converters

maintainers:
  - Michael Hennerich <Michael.Hennerich@analog.com>
  - Nuno Sá <nuno.sa@analog.com>

description: |
  A family of similar multi-channel analog to digital converters with SPI bus.

  * https://www.analog.com/en/products/ad4695.html
  * https://www.analog.com/en/products/ad4696.html
  * https://www.analog.com/en/products/ad4697.html
  * https://www.analog.com/en/products/ad4698.html

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

properties:
  compatible:
    enum:
      - adi,ad4695
      - adi,ad4696
      - adi,ad4697
      - adi,ad4698

  reg:
    maxItems: 1

  spi-max-frequency:
    maximum: 80000000

  spi-cpol: true
  spi-cpha: true

  spi-rx-bus-width:
    minimum: 1
    maximum: 4

  avdd-supply:
    description: Analog power supply.

  vio-supply:
    description: I/O pin power supply.

  ldo-in-supply:
    description: Internal LDO Input. Mutually exclusive with vdd-supply.

  vdd-supply:
    description: Core power supply. Mutually exclusive with ldo-in-supply.

  ref-supply:
    description:
      External reference voltage. Mutually exclusive with refin-supply.

  refin-supply:
    description:
      Internal reference buffer input. Mutually exclusive with ref-supply.

  com-supply:
    description: Common voltage supply for pseudo-differential analog inputs.

  adi,no-ref-current-limit:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      When this flag is present, the REF Overvoltage Reduced Current protection
      is disabled.

  adi,no-ref-high-z:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      Enable this flag if the ref-supply requires Reference Input High-Z Mode
      to be disabled for proper operation.

  cnv-gpios:
    description: The Convert Input (CNV). If omitted, CNV is tied to SPI CS.
    maxItems: 1

  reset-gpios:
    description: The Reset Input (RESET). Should be configured GPIO_ACTIVE_LOW.
    maxItems: 1

  interrupts:
    minItems: 1
    items:
      - description: Signal coming from the BSY_ALT_GP0 pin (ALERT or BUSY).
      - description: Signal coming from the GP2 pin (ALERT).
      - description: Signal coming from the GP3 pin (BUSY).

  interrupt-names:
    minItems: 1
    items:
      - const: gp0
      - const: gp2
      - const: gp3

  gpio-controller: true

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

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

patternProperties:
  "^in(?:[13579]|1[135])-supply$":
    description:
      Optional voltage supply for odd numbered channels when they are used as
      the negative input for a pseudo-differential channel.

  "^channel@[0-9a-f]$":
    type: object
    $ref: adc.yaml
    unevaluatedProperties: false
    description:
      Describes each individual channel. In addition the properties defined
      below, bipolar from adc.yaml is also supported.

    properties:
      reg:
        maximum: 15

      common-mode-channel:
        description:
          Describes the common mode channel for single channels. 0xFF is REFGND
          and OxFE is COM. Macros are available for these values in
          dt-bindings/iio/adi,ad4695.h. Values 1 to 15 correspond to INx inputs.
          Only odd numbered INx inputs can be used as common mode channels.
        enum: [1, 3, 5, 7, 9, 11, 13, 15, 0xFE, 0xFF]
        default: 0xFF

      adi,no-high-z:
        $ref: /schemas/types.yaml#/definitions/flag
        description:
          Enable this flag if the input pin requires the Analog Input High-Z
          Mode to be disabled for proper operation.

    required:
      - reg

    allOf:
      # bipolar mode can't be used with REFGND
      - if:
          properties:
            common-mode-channel:
              const: 0xFF
        then:
          properties:
            bipolar: false

required:
  - compatible
  - reg
  - avdd-supply
  - vio-supply

allOf:
  - oneOf:
      - required:
          - ldo-in-supply
      - required:
          - vdd-supply

  - oneOf:
      - required:
          - ref-supply
      - required:
          - refin-supply

  # the internal reference buffer always requires high-z mode
  - if:
      required:
        - refin-supply
    then:
      properties:
        adi,no-ref-high-z: false

  # limit channels for 8-channel chips
  - if:
      properties:
        compatible:
          contains:
            enum:
              - adi,ad4697
              - adi,ad4698
    then:
      patternProperties:
        "^in(?:9|1[135])-supply$": false
        "^channel@[0-7]$":
          properties:
            reg:
              maximum: 7
            common-mode-channel:
              enum: [1, 3, 5, 7, 0xFE, 0xFF]
        "^channel@[8-9a-f]$": false

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/iio/adi,ad4695.h>

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

        adc@0 {
            compatible = "adi,ad4695";
            reg = <0>;
            spi-cpol;
            spi-cpha;
            spi-max-frequency = <80000000>;
            avdd-supply = <&power_supply>;
            ldo-in-supply = <&power_supply>;
            vio-supply = <&io_supply>;
            refin-supply = <&supply_5V>;
            com-supply = <&supply_2V5>;
            in3-supply = <&supply_2V5>;
            reset-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;

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

            /* Pseudo-differential channel between IN0 and REFGND. */
            channel@0 {
                reg = <0>;
            };

            /* Pseudo-differential channel between IN1 and COM. */
            channel@1 {
                reg = <1>;
                common-mode-channel = <AD4695_COMMON_MODE_COM>;
                bipolar;
            };

            /* Pseudo-differential channel between IN2 and IN3. */
            channel@2 {
                reg = <2>;
                common-mode-channel = <3>;
                bipolar;
            };
        };
    };
