# 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,ad4130.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices AD4130 ADC device driver

maintainers:
  - Cosmin Tanislav <cosmin.tanislav@analog.com>

description: |
  Bindings for the Analog Devices AD4130 ADC. Datasheet can be found here:
    https://www.analog.com/media/en/technical-documentation/data-sheets/AD4130-8.pdf

properties:
  compatible:
    enum:
      - adi,ad4130

  reg:
    maxItems: 1

  clocks:
    maxItems: 1
    description: phandle to the master clock (mclk)

  clock-names:
    items:
      - const: mclk

  interrupts:
    maxItems: 1

  interrupt-names:
    description: |
      Specify which interrupt pin should be configured as Data Ready / FIFO
      interrupt.
      Default if not supplied is int.
    enum:
      - int
      - clk
      - p2
      - dout

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  '#clock-cells':
    const: 0

  clock-output-names:
    maxItems: 1

  refin1-supply:
    description: refin1 supply. Can be used as reference for conversion.

  refin2-supply:
    description: refin2 supply. Can be used as reference for conversion.

  avdd-supply:
    description: AVDD voltage supply. Can be used as reference for conversion.

  iovdd-supply:
    description: IOVDD voltage supply. Used for the chip interface.

  spi-max-frequency:
    maximum: 5000000

  adi,ext-clk-freq-hz:
    description: Specify the frequency of the external clock.
    enum: [76800, 153600]
    default: 76800

  adi,bipolar:
    description: Specify if the device should be used in bipolar mode.
    type: boolean

  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: 16
    items:
      minimum: 0
      maximum: 15

required:
  - compatible
  - reg
  - interrupts

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

    properties:
      reg:
        description: The channel number.
        minimum: 0
        maximum: 15

      diff-channels:
        description: |
          Besides the analog inputs available, internal inputs can be used.
          16: Internal temperature sensor.
          17: AVSS
          18: Internal reference
          19: DGND
          20: (AVDD − AVSS)/6+
          21: (AVDD − AVSS)/6-
          22: (IOVDD − DGND)/6+
          23: (IOVDD − DGND)/6-
          24: (ALDO − AVSS)/6+
          25: (ALDO − AVSS)/6-
          26: (DLDO − DGND)/6+
          27: (DLDO − DGND)/6-
          28: V_MV_P
          29: V_MV_M
        items:
          minimum: 0
          maximum: 29

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

      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: 15
        default: 0

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

      adi,excitation-current-0-nanoamp:
        description: |
          Excitation current in nanoamps to be applied to pin specified in
          adi,excitation-pin-0 while this channel is active.
        enum: [0, 100, 10000, 20000, 50000, 100000, 150000, 200000]
        default: 0

      adi,excitation-current-1-nanoamp:
        description: |
          Excitation current in nanoamps to be applied to pin specified in
          adi,excitation-pin-1 while this channel is active.
        enum: [0, 100, 10000, 20000, 50000, 100000, 150000, 200000]
        default: 0

      adi,burnout-current-nanoamp:
        description: |
          Burnout current in nanoamps to be applied for this channel.
        enum: [0, 500, 2000, 4000]
        default: 0

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

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

    required:
      - reg
      - diff-channels

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 {
        compatible = "adi,ad4130";
        reg = <0>;

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

        spi-max-frequency = <5000000>;
        interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
        interrupt-parent = <&gpio>;

        channel@0 {
          reg = <0>;

          adi,reference-select = <2>;

          /* AIN8, AIN9 */
          diff-channels = <8 9>;
        };

        channel@1 {
          reg = <1>;

          adi,reference-select = <2>;

          /* AIN10, AIN11 */
          diff-channels = <10 11>;
        };

        channel@2 {
          reg = <2>;

          adi,reference-select = <2>;

          /* Temperature Sensor, DGND */
          diff-channels = <16 19>;
        };

        channel@3 {
          reg = <3>;

          adi,reference-select = <2>;

          /* Internal reference, DGND */
          diff-channels = <18 19>;
        };

        channel@4 {
          reg = <4>;

          adi,reference-select = <2>;

          /* DGND, DGND */
          diff-channels = <19 19>;
        };
      };
    };
