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

title: Texas Instruments J72XX VTM (DTS)

maintainers:
  - Keerthy <j-keerthy@ti.com>

description: |
  The TI K3 family of SoCs typically have a Voltage & Thermal
  Management (VTM) device to control up to 8 temperature diode
  sensors to measure silicon junction temperatures from different
  hotspots of the chip as well as provide temperature, interrupt
  and alerting information.

  The following polynomial equation can then be used to convert
  value returned by this device into a temperature in Celsius

  Temp(C) = (-9.2627e-12) * x^4 + (6.0373e-08) * x^3 + \
            (-1.7058e-04) * x^2 + (3.2512e-01) * x   + (-4.9003e+01)

properties:
  compatible:
    enum:
      - ti,j721e-vtm
      - ti,j7200-vtm

  reg:
    items:
      - description: VTM cfg1 register space
      - description: VTM cfg2 register space
      - description: |
          A software trimming method must be applied to some Jacinto
          devices to function properly. This eFuse region provides
          the information needed for these SoCs to report
          temperatures accurately.
    minItems: 2

  power-domains:
    maxItems: 1

  "#thermal-sensor-cells":
    const: 1

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: ti,j721e-vtm
    then:
      properties:
        reg:
          minItems: 3
    else:
      properties:
        reg:
          maxItems: 2

required:
  - compatible
  - reg
  - power-domains
  - "#thermal-sensor-cells"

additionalProperties: false

examples:
  - |
    #include <dt-bindings/soc/ti,sci_pm_domain.h>
    wkup_vtm0: thermal-sensor@42040000 {
        compatible = "ti,j721e-vtm";
        reg = <0x42040000 0x350>,
              <0x42050000 0x350>,
              <0x43000300 0x10>;
        power-domains = <&k3_pds 154 TI_SCI_PD_EXCLUSIVE>;
        #thermal-sensor-cells = <1>;
    };

    mpu_thermal: mpu-thermal {
        polling-delay-passive = <250>; /* milliseconds */
        polling-delay = <500>; /* milliseconds */
        thermal-sensors = <&wkup_vtm0 0>;

        trips {
            mpu_crit: mpu-crit {
                temperature = <125000>; /* milliCelsius */
                hysteresis = <2000>; /* milliCelsius */
                type = "critical";
            };
        };
    };
...