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

title: Analog Devices LTC2688 DAC

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

description: |
  Analog Devices LTC2688 16 channel, 16 bit, +-15V DAC
  https://www.analog.com/media/en/technical-documentation/data-sheets/ltc2688.pdf

properties:
  compatible:
    enum:
      - adi,ltc2688

  reg:
    maxItems: 1

  vcc-supply:
    description: Analog Supply Voltage Input.

  iovcc-supply:
    description: Digital Input/Output Supply Voltage.

  vref-supply:
    description:
      Reference Input/Output. The voltage at the REF pin sets the full-scale
      range of all channels. If not provided the internal reference is used and
      also provided on the VREF pin".

  clr-gpios:
    description:
      If specified, it will be asserted during driver probe. As the line is
      active low, it should be marked GPIO_ACTIVE_LOW.
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

patternProperties:
  "^channel@([0-9]|1[0-5])$":
    type: object
    additionalProperties: false

    properties:
      reg:
        description: The channel number representing the DAC output channel.
        maximum: 15

      adi,toggle-mode:
        description:
          Set the channel as a toggle enabled channel. Toggle operation enables
          fast switching of a DAC output between two different DAC codes without
          any SPI transaction.
        type: boolean

      adi,output-range-microvolt:
        description: Specify the channel output full scale range.
        oneOf:
          - items:
              - const: 0
              - enum: [5000000, 10000000]
          - items:
              - const: -5000000
              - const: 5000000
          - items:
              - const: -10000000
              - const: 10000000
          - items:
              - const: -15000000
              - const: 15000000

      adi,overrange:
        description: Enable 5% overrange over the selected full scale range.
        type: boolean

      clocks:
        maxItems: 1

      adi,toggle-dither-input:
        description:
          Selects the TGPx pin to be associated with this channel. This setting
          only makes sense for toggle or dither enabled channels. If
          @adi,toggle-mode is not set and this property is given, the channel is
          assumed to be a dither capable channel. Note that multiple channels
          can be mapped to the same pin. If this setting is given, the
          respective @clock must also be provided. Mappings between this and
          input pins
            0 - TGP1
            1 - TGP2
            2 - TGP3
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2]

    dependencies:
      adi,toggle-dither-input: [ clocks ]

    required:
      - reg

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |

    spi {
        #address-cells = <1>;
        #size-cells = <0>;
        ltc2688: ltc2688@0 {
            compatible = "adi,ltc2688";
            reg = <0>;

            vcc-supply = <&vcc>;
            iovcc-supply = <&vcc>;
            vref-supply = <&vref>;

            #address-cells = <1>;
            #size-cells = <0>;
            channel@0 {
                reg = <0>;
                adi,toggle-mode;
                adi,overrange;
            };

            channel@1 {
                reg = <1>;
                adi,output-range-microvolt = <0 10000000>;

                clocks = <&clock_tgp3>;
                adi,toggle-dither-input = <2>;
            };
        };
    };

...