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

title: Analog Devices HMC425A and similar Digital Step Attenuators

maintainers:
  - Michael Hennerich <michael.hennerich@analog.com>

description: |
  Digital Step Attenuator IIO devices with gpio interface.
  Offer various frequency and attenuation ranges.
  ADRF5750 2 dB LSB, 4-Bit, Silicon Digital Attenuator, 10 MHz to 60 GHz
    https://www.analog.com/media/en/technical-documentation/data-sheets/adrf5740.pdf

  HMC425A 0.5 dB LSB GaAs MMIC 6-BIT DIGITAL POSITIVE CONTROL ATTENUATOR, 2.2 - 8.0 GHz
    https://www.analog.com/media/en/technical-documentation/data-sheets/hmc425A.pdf

  HMC540S 1 dB LSB Silicon MMIC 4-Bit Digital Positive Control Attenuator, 0.1 - 8 GHz
    https://www.analog.com/media/en/technical-documentation/data-sheets/hmc540s.pdf

  LTC6373 is a 3-Bit precision instrumentation amplifier with fully differential outputs
    https://www.analog.com/media/en/technical-documentation/data-sheets/ltc6373.pdf

properties:
  compatible:
    enum:
      - adi,adrf5740
      - adi,hmc425a
      - adi,hmc540s
      - adi,ltc6373

  vcc-supply: true

  ctrl-gpios:
    description:
      Must contain an array of GPIO specifiers, referring to the GPIO pins
      connected to the control pins.
        ADRF5740  - 4 GPIO connected to D2-D5
        HMC540S   - 4 GPIO connected to V1-V4
        HMC425A   - 6 GPIO connected to V1-V6
        LTC6373   - 3 GPIO connected to A0-A2
    minItems: 1
    maxItems: 6

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: adi,hmc425a
    then:
      properties:
        ctrl-gpios:
          minItems: 6
          maxItems: 6
  - if:
      properties:
        compatible:
          contains:
            anyOf:
              - const: adi,adrf5740
              - const: adi,hmc540s
    then:
      properties:
        ctrl-gpios:
          minItems: 4
          maxItems: 4
  - if:
      properties:
        compatible:
          contains:
            const: adi,ltc6373
    then:
      properties:
        ctrl-gpios:
          minItems: 3
          maxItems: 3

required:
  - compatible
  - ctrl-gpios

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    gpio_hmc425a: hmc425a {
      compatible = "adi,hmc425a";
      ctrl-gpios = <&gpio 40 GPIO_ACTIVE_HIGH>,
        <&gpio 39 GPIO_ACTIVE_HIGH>,
        <&gpio 38 GPIO_ACTIVE_HIGH>,
        <&gpio 37 GPIO_ACTIVE_HIGH>,
        <&gpio 36 GPIO_ACTIVE_HIGH>,
        <&gpio 35 GPIO_ACTIVE_HIGH>;
      vcc-supply = <&foo>;
    };
...
