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

title: Texas Instruments INA3221 Current and Voltage Monitor

maintainers:
  - Jean Delvare <jdelvare@suse.com>
  - Guenter Roeck <linux@roeck-us.net>

properties:
  compatible:
    const: ti,ina3221

  reg:
    maxItems: 1

  ti,single-shot:
    description: |
      This chip has two power modes: single-shot (chip takes one measurement
      and then shuts itself down) and continuous (chip takes continuous
      measurements). The continuous mode is more reliable and suitable for
      hardware monitor type device, but the single-shot mode is more power-
      friendly and useful for battery-powered device which cares power
      consumptions while still needs some measurements occasionally.

      If this property is present, the single-shot mode will be used, instead
      of the default continuous one for monitoring.
    $ref: /schemas/types.yaml#/definitions/flag

  "#address-cells":
    description: Required only if a child node is present.
    const: 1

  "#size-cells":
    description: Required only if a child node is present.
    const: 0

patternProperties:
  "^input@[0-2]$":
    description: The node contains optional child nodes for three channels.
      Each child node describes the information of input source. Input channels
      default to enabled in the chip. Unless channels are explicitly disabled
      in device-tree, input channels will be enabled.
    type: object
    additionalProperties: false
    properties:
      reg:
        description: Must be 0, 1 and 2, corresponding to the IN1, IN2 or IN3
          ports of the INA3221, respectively.
        enum: [ 0, 1, 2 ]

      label:
        description: name of the input source

      shunt-resistor-micro-ohms:
        description: shunt resistor value in micro-Ohm

      ti,summation-disable:
        description: |
          The INA3221 has a critical alert pin that can be controlled by the
          summation control function. This function adds the single
          shunt-voltage conversions for the desired channels in order to
          compare the combined sum to the programmed limit. The Shunt-Voltage
          Sum Limit register contains the programmed value that is compared
          to the value in the Shunt-Voltage Sum register in order to
          determine if the total summed limit is exceeded. If the
          shunt-voltage sum limit value is exceeded, the critical alert pin
          is asserted.

          For the summation limit to have a meaningful value, it is necessary
          to use the same shunt-resistor value on all enabled channels. If
          this is not the case or if a channel should not be used for
          triggering the critical alert pin, then this property can be used
          exclude specific channels from the summation control function.
        type: boolean

    required:
      - reg

required:
  - compatible
  - reg

additionalProperties: false

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

        power-sensor@40 {
            compatible = "ti,ina3221";
            reg = <0x40>;
            #address-cells = <1>;
            #size-cells = <0>;

            input@0 {
                reg = <0x0>;
                /*
                 * Input channels are enabled by default in the device and so
                 * to disable, must be explicitly disabled in device-tree.
                 */
                status = "disabled";
            };

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

            input@2 {
                reg = <0x2>;
                label = "VDD_5V";
                shunt-resistor-micro-ohms = <5000>;
            };
        };
    };
