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

title: Texas Instruments INA209 family of power/voltage monitors

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  The INA209 is a high-side current shunt and power monitor with
  an I2C interface.

  Datasheets:
    https://www.ti.com/product/INA209

properties:
  compatible:
    enum:
      - silergy,sq52206
      - silergy,sy24655
      - ti,ina209
      - ti,ina219
      - ti,ina220
      - ti,ina226
      - ti,ina228
      - ti,ina230
      - ti,ina231
      - ti,ina233
      - ti,ina237
      - ti,ina238
      - ti,ina260
      - ti,ina700
      - ti,ina780

  reg:
    maxItems: 1

  "#io-channel-cells":
    const: 1

  shunt-resistor:
    description:
      Shunt resistor value in micro-Ohm.
    $ref: /schemas/types.yaml#/definitions/uint32

  ti,shunt-gain:
    description: |
      Programmable gain divisor for the shunt voltage accuracy and range. This
      property only applies to devices that have configurable PGA/ADCRANGE. The
      gain value is used configure the gain and to convert the shunt voltage,
      current and power register values when reading measurements from the
      device.

      For devices that have a configurable PGA (e.g. INA209, INA219, INA220),
      the gain value maps directly with the PG bits of the config register.

      For devices that have ADCRANGE configuration (e.g. INA238) a shunt-gain
      value of 1 maps to ADCRANGE=1 where no gain divisor is applied to the
      shunt voltage, and a value of 4 maps to ADCRANGE=0 such that a wider
      voltage range is used.

      For SQ52206,the shunt-gain value 1 mapps to ADCRANGE=10/11, the value 2
      mapps to ADCRANGE=01, and the value 4 mapps to ADCRANGE=00.

      The default value is device dependent, and is defined by the reset value
      of PGA/ADCRANGE in the respective configuration registers.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2, 4, 8]

  vs-supply:
    description: phandle to the regulator that provides the VS supply typically
      in range from 2.7 V to 5.5 V.

  ti,alert-polarity-active-high:
    description: Alert pin is asserted based on the value of Alert polarity Bit
      of Mask/Enable register. Default value is Normal (0 which maps to
      active-low open collector). The other value is Inverted
      (1 which maps to active-high open collector). Specify this property to set
      the alert polarity to active-high.
    $ref: /schemas/types.yaml#/definitions/flag

  ti,maximum-expected-current-microamp:
    description: |
      This value indicates the maximum current in microamps that you can
      expect to measure with ina233 in your circuit.

      This value will be used to calculate the Current_LSB and current/power
      coefficient for the pmbus and to calibrate the IC.
    minimum: 32768
    maximum: 4294967295
    default: 32768000

required:
  - compatible
  - reg

allOf:
  - $ref: hwmon-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - silergy,sq52206
              - silergy,sy24655
              - ti,ina209
              - ti,ina219
              - ti,ina220
              - ti,ina226
              - ti,ina228
              - ti,ina230
              - ti,ina231
              - ti,ina237
              - ti,ina238
              - ti,ina260
              - ti,ina700
              - ti,ina780
    then:
      properties:
        ti,maximum-expected-current-microamp: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - silergy,sy24655
              - ti,ina209
              - ti,ina219
              - ti,ina220
              - ti,ina226
              - ti,ina230
              - ti,ina231
              - ti,ina260
              - ti,ina700
              - ti,ina780
    then:
      properties:
        ti,shunt-gain: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - ti,ina700
              - ti,ina780
    then:
      properties:
        shunt-resistor: false

unevaluatedProperties: false

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

        power-sensor@44 {
            compatible = "ti,ina220";
            reg = <0x44>;
            #io-channel-cells = <1>;
            label = "vdd_3v0";
            shunt-resistor = <1000>;
            vs-supply = <&vdd_3v0>;
            ti,alert-polarity-active-high;
        };
    };
