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

title: Analog Devices AD485X family

maintainers:
  - Sergiu Cuciurean <sergiu.cuciurean@analog.com>
  - Dragos Bogdan <dragos.bogdan@analog.com>
  - Antoniu Miclaus <antoniu.miclaus@analog.com>

description: |
  Analog Devices AD485X fully buffered, 8-channel simultaneous sampling,
  16/20-bit, 1 MSPS data acquisition system (DAS) with differential, wide
  common-mode range inputs.

  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4855.pdf
  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4856.pdf
  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4857.pdf
  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4858.pdf

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

properties:
  compatible:
    enum:
      - adi,ad4851
      - adi,ad4852
      - adi,ad4853
      - adi,ad4854
      - adi,ad4855
      - adi,ad4856
      - adi,ad4857
      - adi,ad4858
      - adi,ad4858i

  reg:
    maxItems: 1

  vcc-supply: true

  vee-supply: true

  vdd-supply: true

  vddh-supply: true

  vddl-supply: true

  vio-supply: true

  vrefbuf-supply: true

  vrefio-supply: true

  pwms:
    description: PWM connected to the CNV pin.
    maxItems: 1

  io-backends:
    maxItems: 1

  pd-gpios:
    maxItems: 1

  spi-max-frequency:
    maximum: 25000000

  spi-3wire: true

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

patternProperties:
  "^channel(@[0-7])?$":
    $ref: adc.yaml
    type: object
    description: Represents the channels which are connected to the ADC.

    properties:
      reg:
        description:
          The channel number, as specified in the datasheet (from 0 to 7).
        minimum: 0
        maximum: 7

      diff-channels:
        description:
          Each channel can be configured as a bipolar differential channel.
          The ADC uses the same positive and negative inputs for this.
          This property must be specified as 'reg' (or the channel number) for
          both positive and negative inputs (i.e. diff-channels = <reg reg>).
          Since the configuration is bipolar differential, the 'bipolar'
          property is required.
        items:
          minimum: 0
          maximum: 7

      bipolar: true

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - reg
  - vcc-supply
  - vee-supply
  - vdd-supply
  - vio-supply
  - pwms

unevaluatedProperties: false

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

        adc@0{
            #address-cells = <1>;
            #size-cells = <0>;
            compatible = "adi,ad4858";
            reg = <0>;
            spi-max-frequency = <10000000>;
            vcc-supply = <&vcc>;
            vdd-supply = <&vdd>;
            vee-supply = <&vee>;
            vddh-supply = <&vddh>;
            vddl-supply = <&vddl>;
            vio-supply = <&vio>;
            pwms = <&pwm_gen 0 0>;
            io-backends = <&iio_backend>;

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

            channel@1 {
              reg = <1>;
            };
        };
    };
...
