# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---

$id: http://devicetree.org/schemas/hwmon/adi,ltc2991.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices LTC2991 Octal I2C Voltage, Current and Temperature Monitor

maintainers:
  - Antoniu Miclaus <antoniu.miclaus@analog.com>

description: |
  The LTC2991 is used to monitor system temperatures, voltages and currents.
  Through the I2C serial interface, the eight monitors can individually measure
  supply voltages and can be paired for differential measurements of current
  sense resistors or temperature sensing transistors.

  Datasheet:
    https://www.analog.com/en/products/ltc2991.html

properties:
  compatible:
    const: adi,ltc2991

  reg:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  vcc-supply: true

patternProperties:
  "^channel@[0-3]$":
    type: object
    description:
      Represents the differential/temperature channels.

    properties:
      reg:
        description:
          The channel number. LTC2991 can monitor 4 currents/temperatures.
        items:
          minimum: 0
          maximum: 3

      shunt-resistor-micro-ohms:
        description:
          The value of curent sense resistor in micro ohms. Pin configuration is
          set for differential input pair.

      adi,temperature-enable:
        description:
          Enables temperature readings. Pin configuration is set for remote
          diode temperature measurement.
        type: boolean

    required:
      - reg

    allOf:
      - if:
          required:
            - shunt-resistor-micro-ohms
        then:
          properties:
            adi,temperature-enable: false

    additionalProperties: false

required:
  - compatible
  - reg
  - vcc-supply

additionalProperties: false

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        hwmon@48 {
            compatible = "adi,ltc2991";
            reg = <0x48>;
            vcc-supply = <&vcc>;
        };
    };
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        hwmon@48 {
            #address-cells = <1>;
            #size-cells = <0>;

            compatible = "adi,ltc2991";
            reg = <0x48>;
            vcc-supply = <&vcc>;

            channel@0 {
                    reg = <0x0>;
                    shunt-resistor-micro-ohms = <100000>;
            };

            channel@1 {
                    reg = <0x1>;
                    shunt-resistor-micro-ohms = <100000>;
            };

            channel@2 {
                    reg = <0x2>;
                    adi,temperature-enable;
            };

            channel@3 {
                    reg = <0x3>;
                    adi,temperature-enable;
            };
        };
    };
...
