ARM: tegra: Add SOCTHERM support on Tegra114

Add SOCTHERM and thermal zones nodes into common Tegra 4 device tree.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
Svyatoslav Ryhel 2025-08-28 08:51:04 +03:00 committed by Thierry Reding
parent 6de23f81a5
commit 4fba78552c

View File

@ -6,6 +6,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/nvidia,tegra114-car.h>
#include <dt-bindings/soc/tegra-pmc.h>
#include <dt-bindings/thermal/tegra114-soctherm.h>
/ {
compatible = "nvidia,tegra114";
@ -751,6 +752,46 @@ tegra_i2s4: i2s@70080700 {
};
};
soctherm: thermal-sensor@700e2000 {
compatible = "nvidia,tegra114-soctherm";
reg = <0x700e2000 0x600>, /* SOC_THERM reg_base */
<0x60006000 0x400>; /* CAR reg_base */
reg-names = "soctherm-reg", "car-reg";
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "thermal", "edp";
clocks = <&tegra_car TEGRA114_CLK_TSENSOR>,
<&tegra_car TEGRA114_CLK_SOC_THERM>;
clock-names = "tsensor", "soctherm";
resets = <&tegra_car 78>;
reset-names = "soctherm";
assigned-clocks = <&tegra_car TEGRA114_CLK_TSENSOR>,
<&tegra_car TEGRA114_CLK_SOC_THERM>;
assigned-clock-rates = <500000>, <51000000>;
assigned-clock-parents = <&tegra_car TEGRA114_CLK_CLK_M>,
<&tegra_car TEGRA114_CLK_PLL_P>;
#thermal-sensor-cells = <1>;
throttle-cfgs {
throttle_heavy: heavy {
nvidia,priority = <100>;
nvidia,cpu-throt-percent = <80>;
nvidia,gpu-throt-level = <TEGRA114_SOCTHERM_THROT_LEVEL_HIGH>;
#cooling-cells = <2>;
};
throttle_light: light {
nvidia,priority = <80>;
nvidia,cpu-throt-percent = <50>;
nvidia,gpu-throt-level = <TEGRA114_SOCTHERM_THROT_LEVEL_MED>;
#cooling-cells = <2>;
};
};
};
mipi: mipi@700e3000 {
compatible = "nvidia,tegra114-mipi";
reg = <0x700e3000 0x100>;
@ -921,24 +962,28 @@ cpu0: cpu@0 {
clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll";
/* FIXME: what's the actual transition time? */
clock-latency = <300000>;
#cooling-cells = <2>;
};
cpu1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <1>;
#cooling-cells = <2>;
};
cpu2: cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <2>;
#cooling-cells = <2>;
};
cpu3: cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <3>;
#cooling-cells = <2>;
};
};
@ -951,6 +996,158 @@ pmu {
interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
};
thermal-zones {
cpu-thermal {
polling-delay-passive = <1000>;
polling-delay = <1000>;
thermal-sensors =
<&soctherm TEGRA114_SOCTHERM_SENSOR_CPU>;
trips {
cpu-shutdown-trip {
temperature = <102000>;
hysteresis = <0>;
type = "critical";
};
cpu_throttle_trip: cpu-throttle-trip {
temperature = <100000>;
hysteresis = <1000>;
type = "hot";
};
cpu_balanced_trip: cpu-balanced-trip {
temperature = <90000>;
hysteresis = <1000>;
type = "passive";
};
};
cooling-maps {
map0 {
trip = <&cpu_throttle_trip>;
cooling-device = <&throttle_heavy 1 1>;
};
map1 {
trip = <&cpu_balanced_trip>;
cooling-device = <&throttle_light 1 1>;
};
};
};
mem-thermal {
polling-delay-passive = <1000>;
polling-delay = <1000>;
thermal-sensors =
<&soctherm TEGRA114_SOCTHERM_SENSOR_MEM>;
trips {
mem-shutdown-trip {
temperature = <102000>;
hysteresis = <0>;
type = "critical";
};
mem_throttle_trip: mem-throttle-trip {
temperature = <100000>;
hysteresis = <1000>;
type = "hot";
};
mem_balanced_trip: mem-balanced-trip {
temperature = <90000>;
hysteresis = <1000>;
type = "passive";
};
};
cooling-maps {
/*
* There are currently no cooling maps,
* because there are no cooling devices.
*/
};
};
gpu-thermal {
polling-delay-passive = <1000>;
polling-delay = <1000>;
thermal-sensors =
<&soctherm TEGRA114_SOCTHERM_SENSOR_GPU>;
trips {
gpu-shutdown-trip {
temperature = <102000>;
hysteresis = <0>;
type = "critical";
};
gpu_throttle_trip: gpu-throttle-trip {
temperature = <100000>;
hysteresis = <1000>;
type = "hot";
};
gpu_balanced_trip: gpu-balanced-trip {
temperature = <90000>;
hysteresis = <1000>;
type = "passive";
};
};
cooling-maps {
map0 {
trip = <&gpu_throttle_trip>;
cooling-device = <&throttle_heavy 1 1>;
};
map1 {
trip = <&gpu_balanced_trip>;
cooling-device = <&throttle_light 1 1>;
};
};
};
pllx-thermal {
polling-delay-passive = <1000>;
polling-delay = <1000>;
thermal-sensors =
<&soctherm TEGRA114_SOCTHERM_SENSOR_PLLX>;
trips {
pllx-shutdown-trip {
temperature = <102000>;
hysteresis = <0>;
type = "critical";
};
pllx_throttle_trip: pllx-throttle-trip {
temperature = <100000>;
hysteresis = <1000>;
type = "hot";
};
pllx_balanced_trip: pllx-balanced-trip {
temperature = <90000>;
hysteresis = <1000>;
type = "passive";
};
};
cooling-maps {
/*
* There are currently no cooling maps,
* because there are no cooling devices.
*/
};
};
};
timer {
compatible = "arm,armv7-timer";
interrupts =