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

title: ADMFM2000 Dual Microwave Down Converter

maintainers:
  - Kim Seer Paller <kimseer.paller@analog.com>

description:
  Dual microwave down converter module with input RF and LO frequency ranges
  from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz.
  It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down
  conversion path.

properties:
  compatible:
    enum:
      - adi,admfm2000

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

patternProperties:
  "^channel@[0-1]$":
    type: object
    description: Represents a channel of the device.

    additionalProperties: false

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

      adi,mixer-mode:
        description:
          Enable mixer mode for the channel. It downconverts RF between 5 GHz
          and 32 GHz to IF between 0.5 GHz and 8 GHz. If not present, the channel
          is in direct IF mode which bypasses the mixer and downconverts RF
          between 2 GHz and 8 GHz to IF between 0.5 GHz and 8 GHz.
        type: boolean

      switch-gpios:
        description: |
          GPIOs to select the RF path for the channel. The same state of CTRL-A
          and CTRL-B GPIOs is not permitted.
          CTRL-A   CTRL-B    CH1 Status        CH2 Status
          1        0         Direct IF mode    Mixer mode
          0        1         Mixer mode        Direct IF mode

        items:
          - description: CTRL-A GPIO
          - description: CTRL-B GPIO

      attenuation-gpios:
        description: |
          Choice of attenuation:
          DSA-V4  DSA-V3  DSA-V2  DSA-V1  DSA-V0
          1       1       1       1       1        0 dB
          1       1       1       1       0        -1 dB
          1       1       1       0       1        -2 dB
          1       1       0       1       1        -4 dB
          1       0       1       1       1        -8 dB
          0       1       1       1       1        -16 dB
          0       0       0       0       0        -31 dB

        items:
          - description: DSA-V0 GPIO
          - description: DSA-V1 GPIO
          - description: DSA-V2 GPIO
          - description: DSA-V3 GPIO
          - description: DSA-V4 GPIO

    required:
      - reg
      - switch-gpios
      - attenuation-gpios

required:
  - compatible

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    converter {
      compatible = "adi,admfm2000";

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

      channel@0 {
        reg = <0>;
        switch-gpios = <&gpio 1 GPIO_ACTIVE_LOW>,
                       <&gpio 2 GPIO_ACTIVE_HIGH>;

        attenuation-gpios = <&gpio 17 GPIO_ACTIVE_LOW>,
                            <&gpio 22 GPIO_ACTIVE_LOW>,
                            <&gpio 23 GPIO_ACTIVE_LOW>,
                            <&gpio 24 GPIO_ACTIVE_LOW>,
                            <&gpio 25 GPIO_ACTIVE_LOW>;
      };

      channel@1 {
        reg = <1>;
        adi,mixer-mode;
        switch-gpios = <&gpio 3 GPIO_ACTIVE_LOW>,
                       <&gpio 4 GPIO_ACTIVE_HIGH>;

        attenuation-gpios = <&gpio 0 GPIO_ACTIVE_LOW>,
                            <&gpio 5 GPIO_ACTIVE_LOW>,
                            <&gpio 6 GPIO_ACTIVE_LOW>,
                            <&gpio 16 GPIO_ACTIVE_LOW>,
                            <&gpio 26 GPIO_ACTIVE_LOW>;
      };
    };
...
