162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/thermal/mediatek,lvts-thermal.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: MediaTek SoC Low Voltage Thermal Sensor (LVTS)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Balsam CHIHI <bchihi@baylibre.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  LVTS is a thermal management architecture composed of three subsystems,
1462306a36Sopenharmony_ci  a Sensing device - Thermal Sensing Micro Circuit Unit (TSMCU),
1562306a36Sopenharmony_ci  a Converter - Low Voltage Thermal Sensor converter (LVTS), and
1662306a36Sopenharmony_ci  a Digital controller (LVTS_CTRL).
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    enum:
2162306a36Sopenharmony_ci      - mediatek,mt8192-lvts-ap
2262306a36Sopenharmony_ci      - mediatek,mt8192-lvts-mcu
2362306a36Sopenharmony_ci      - mediatek,mt8195-lvts-ap
2462306a36Sopenharmony_ci      - mediatek,mt8195-lvts-mcu
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  reg:
2762306a36Sopenharmony_ci    maxItems: 1
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  interrupts:
3062306a36Sopenharmony_ci    maxItems: 1
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  clocks:
3362306a36Sopenharmony_ci    maxItems: 1
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  resets:
3662306a36Sopenharmony_ci    maxItems: 1
3762306a36Sopenharmony_ci    description: LVTS reset for clearing temporary data on AP/MCU.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  nvmem-cells:
4062306a36Sopenharmony_ci    minItems: 1
4162306a36Sopenharmony_ci    items:
4262306a36Sopenharmony_ci      - description: Calibration eFuse data 1 for LVTS
4362306a36Sopenharmony_ci      - description: Calibration eFuse data 2 for LVTS
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  nvmem-cell-names:
4662306a36Sopenharmony_ci    minItems: 1
4762306a36Sopenharmony_ci    items:
4862306a36Sopenharmony_ci      - const: lvts-calib-data-1
4962306a36Sopenharmony_ci      - const: lvts-calib-data-2
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  "#thermal-sensor-cells":
5262306a36Sopenharmony_ci    const: 1
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciallOf:
5562306a36Sopenharmony_ci  - $ref: thermal-sensor.yaml#
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  - if:
5862306a36Sopenharmony_ci      properties:
5962306a36Sopenharmony_ci        compatible:
6062306a36Sopenharmony_ci          contains:
6162306a36Sopenharmony_ci            enum:
6262306a36Sopenharmony_ci              - mediatek,mt8192-lvts-ap
6362306a36Sopenharmony_ci              - mediatek,mt8192-lvts-mcu
6462306a36Sopenharmony_ci    then:
6562306a36Sopenharmony_ci      properties:
6662306a36Sopenharmony_ci        nvmem-cells:
6762306a36Sopenharmony_ci          maxItems: 1
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci        nvmem-cell-names:
7062306a36Sopenharmony_ci          maxItems: 1
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  - if:
7362306a36Sopenharmony_ci      properties:
7462306a36Sopenharmony_ci        compatible:
7562306a36Sopenharmony_ci          contains:
7662306a36Sopenharmony_ci            enum:
7762306a36Sopenharmony_ci              - mediatek,mt8195-lvts-ap
7862306a36Sopenharmony_ci              - mediatek,mt8195-lvts-mcu
7962306a36Sopenharmony_ci    then:
8062306a36Sopenharmony_ci      properties:
8162306a36Sopenharmony_ci        nvmem-cells:
8262306a36Sopenharmony_ci          minItems: 2
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci        nvmem-cell-names:
8562306a36Sopenharmony_ci          minItems: 2
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_cirequired:
8862306a36Sopenharmony_ci  - compatible
8962306a36Sopenharmony_ci  - reg
9062306a36Sopenharmony_ci  - interrupts
9162306a36Sopenharmony_ci  - clocks
9262306a36Sopenharmony_ci  - resets
9362306a36Sopenharmony_ci  - nvmem-cells
9462306a36Sopenharmony_ci  - nvmem-cell-names
9562306a36Sopenharmony_ci  - "#thermal-sensor-cells"
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciadditionalProperties: false
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ciexamples:
10062306a36Sopenharmony_ci  - |
10162306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
10262306a36Sopenharmony_ci    #include <dt-bindings/clock/mt8195-clk.h>
10362306a36Sopenharmony_ci    #include <dt-bindings/reset/mt8195-resets.h>
10462306a36Sopenharmony_ci    #include <dt-bindings/thermal/mediatek,lvts-thermal.h>
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci    soc {
10762306a36Sopenharmony_ci      #address-cells = <2>;
10862306a36Sopenharmony_ci      #size-cells = <2>;
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci      lvts_mcu: thermal-sensor@11278000 {
11162306a36Sopenharmony_ci        compatible = "mediatek,mt8195-lvts-mcu";
11262306a36Sopenharmony_ci        reg = <0 0x11278000 0 0x1000>;
11362306a36Sopenharmony_ci        interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH 0>;
11462306a36Sopenharmony_ci        clocks = <&infracfg_ao CLK_INFRA_AO_THERM>;
11562306a36Sopenharmony_ci        resets = <&infracfg_ao MT8195_INFRA_RST4_THERM_CTRL_MCU_SWRST>;
11662306a36Sopenharmony_ci        nvmem-cells = <&lvts_efuse_data1 &lvts_efuse_data2>;
11762306a36Sopenharmony_ci        nvmem-cell-names = "lvts-calib-data-1", "lvts-calib-data-2";
11862306a36Sopenharmony_ci        #thermal-sensor-cells = <1>;
11962306a36Sopenharmony_ci      };
12062306a36Sopenharmony_ci    };
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci    thermal_zones: thermal-zones {
12362306a36Sopenharmony_ci      cpu0-thermal {
12462306a36Sopenharmony_ci        polling-delay = <1000>;
12562306a36Sopenharmony_ci        polling-delay-passive = <250>;
12662306a36Sopenharmony_ci        thermal-sensors = <&lvts_mcu MT8195_MCU_LITTLE_CPU0>;
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci        trips {
12962306a36Sopenharmony_ci          cpu0_alert: trip-alert {
13062306a36Sopenharmony_ci            temperature = <85000>;
13162306a36Sopenharmony_ci            hysteresis = <2000>;
13262306a36Sopenharmony_ci            type = "passive";
13362306a36Sopenharmony_ci          };
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci          cpu0_crit: trip-crit {
13662306a36Sopenharmony_ci            temperature = <100000>;
13762306a36Sopenharmony_ci            hysteresis = <2000>;
13862306a36Sopenharmony_ci            type = "critical";
13962306a36Sopenharmony_ci          };
14062306a36Sopenharmony_ci        };
14162306a36Sopenharmony_ci      };
14262306a36Sopenharmony_ci    };
143