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

title: Analog Devices MAX11410 ADC device driver

maintainers:
  - Ibrahim Tilki <Ibrahim.Tilki@analog.com>

description: |
  Bindings for the Analog Devices MAX11410 ADC device. Datasheet can be
  found here:
    https://datasheets.maximintegrated.com/en/ds/MAX11410.pdf

properties:
  compatible:
    enum:
      - adi,max11410

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    maxItems: 2

  interrupt-names:
    description: Name of the gpio pin of max11410 used for IRQ
    minItems: 1
    items:
      - enum: [gpio0, gpio1]
      - const: gpio1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  avdd-supply:
    description: Optional avdd supply. Used as reference when no explicit reference supplied.

  vref0p-supply:
    description: vref0p supply can be used as reference for conversion.

  vref1p-supply:
    description: vref1p supply can be used as reference for conversion.

  vref2p-supply:
    description: vref2p supply can be used as reference for conversion.

  vref0n-supply:
    description: vref0n supply can be used as reference for conversion.

  vref1n-supply:
    description: vref1n supply can be used as reference for conversion.

  vref2n-supply:
    description: vref2n supply can be used as reference for conversion.

  spi-max-frequency:
    maximum: 8000000

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

    properties:
      reg:
        description: The channel number in single-ended mode.
        minimum: 0
        maximum: 9

      adi,reference:
        description: |
          Select the reference source to use when converting on
          the specific channel. Valid values are:
          0: VREF0P/VREF0N
          1: VREF1P/VREF1N
          2: VREF2P/VREF2N
          3: AVDD/AGND
          4: VREF0P/AGND
          5: VREF1P/AGND
          6: VREF2P/AGND
          If this field is left empty, AVDD/AGND is selected.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2, 3, 4, 5, 6]
        default: 3

      adi,input-mode:
        description: |
          Select signal path of input channels. Valid values are:
          0: Buffered, low-power, unity-gain path (default)
          1: Bypass path
          2: PGA path
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2]
        default: 0

      diff-channels: true

      bipolar: true

      settling-time-us: true

      adi,buffered-vrefp:
        description: Enable buffered mode for positive reference.
        type: boolean

      adi,buffered-vrefn:
        description: Enable buffered mode for negative reference.
        type: boolean

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - reg

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

unevaluatedProperties: false

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

        adc@0 {
            reg = <0>;
            compatible = "adi,max11410";
            spi-max-frequency = <8000000>;

            interrupt-parent = <&gpio>;
            interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
            interrupt-names = "gpio1";

            avdd-supply = <&adc_avdd>;

            vref1p-supply = <&adc_vref1p>;
            vref1n-supply = <&adc_vref1n>;

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

            channel@0 {
                reg = <0>;
            };

            channel@1 {
                reg = <1>;
                diff-channels = <2 3>;
                adi,reference = <1>;
                bipolar;
                settling-time-us = <100000>;
            };

            channel@2 {
                reg = <2>;
                diff-channels = <7 9>;
                adi,reference = <5>;
                adi,input-mode = <2>;
                settling-time-us = <50000>;
            };
        };
    };