diff mbox series

[2/2] arm64: tegra: Add thermal support for Tegra234

Message ID 20230124115119.21451-2-jonathanh@nvidia.com
State New
Headers show
Series [1/2] dt-bindings: thermal: Add Tegra234 BPMP thermal zones | expand

Commit Message

Jon Hunter Jan. 24, 2023, 11:51 a.m. UTC
From: Yi-Wei Wang <yiweiw@nvidia.com>

Add the BPMP thermal device node and thermal-zones for Tegra234 and
enable thermal support for the Tegra234 Jetson AGX Orin board.

Signed-off-by: Yi-Wei Wang <yiweiw@nvidia.com>
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 .../boot/dts/nvidia/tegra234-p3701-0000.dtsi  | 276 ++++++++++++++++++
 .../nvidia/tegra234-p3737-0000+p3701-0000.dts |  32 ++
 arch/arm64/boot/dts/nvidia/tegra234.dtsi      |  59 ++++
 3 files changed, 367 insertions(+)
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi b/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
index 2378da324273..7f798742df43 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
@@ -80,6 +80,22 @@  pmc@c360000 {
 		};
 	};
 
+	bpmp {
+		i2c {
+			tegra_tmp451: thermal-sensor@4c {
+				compatible = "ti,tmp451";
+				reg = <0x4c>;
+				vcc-supply = <&vdd_1v8_ao>;
+				#thermal-sensor-cells = <1>;
+				status = "okay";
+			};
+		};
+
+		thermal {
+			status = "okay";
+		};
+	};
+
 	vdd_5v0_sys: regulator-vdd-5v0-sys {
 		compatible = "regulator-fixed";
 		regulator-name = "VIN_SYS_5V0";
@@ -139,4 +155,264 @@  vdd_12v_pcie: regulator-vdd-12v-pcie {
 		gpio = <&gpio TEGRA234_MAIN_GPIO(A, 1) GPIO_ACTIVE_LOW>;
 		regulator-boot-on;
 	};
+
+	thermal-zones {
+		cpu-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CPU>;
+			status = "okay";
+
+			trips {
+				cpu_sw_shutdown: cpu-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				cpu_sw_throttle: cpu-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cpu_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		gpu-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_GPU>;
+			status = "okay";
+			status = "disabled";
+
+			trips {
+				gpu_sw_shutdown: gpu-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				gpu_sw_throttle: gpu-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&gpu_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cv0-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CV0>;
+			status = "okay";
+
+			trips {
+				cv0_sw_shutdown: cv0-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				cv0_sw_throttle: cv0-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cv0_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+
+		cv1-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CV1>;
+			status = "okay";
+			status = "disabled";
+
+			trips {
+				cv1_sw_shutdown: cv1-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				cv1_sw_throttle: cv1-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cv1_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cv2-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CV2>;
+			status = "okay";
+
+			trips {
+				cv2_sw_shutdown: cv2-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				cv2_sw_throttle: cv2-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cv2_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		soc0-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_SOC0>;
+			status = "okay";
+
+			trips {
+				soc0_sw_shutdown: soc0-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				soc0_sw_throttle: soc0-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&soc0_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		soc1-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_SOC1>;
+			status = "okay";
+
+			trips {
+				soc1_sw_shutdown: soc1-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				soc1_sw_throttle: soc1-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&soc1_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		soc2-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_SOC2>;
+			status = "okay";
+
+			trips {
+				soc2_sw_shutdown: soc2-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+
+				soc2_sw_throttle: soc2-sw-throttle {
+					temperature = <99000>;
+					hysteresis = <0>;
+					type = "passive";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&soc2_sw_throttle>;
+					cooling-device = <&cpu0_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		tj-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_TJ_MAX>;
+			status = "okay";
+
+			trips {
+				tj_sw_shutdown: tj-sw-shutdown {
+					temperature = <104500>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+		};
+	};
 };
diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
index bfd935a86d19..b9c03a87fa5c 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
@@ -2377,4 +2377,36 @@  sound {
 
 		label = "NVIDIA Jetson AGX Orin APE";
 	};
+
+	thermal-zones {
+		tboard-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&tegra_tmp451 0>;
+			status = "okay";
+
+			trips {
+				tboard_sw_shutdown: tboard-sw-shutdown {
+					temperature = <107000>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+		};
+
+		tdiode-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <1000>;
+			thermal-sensors = <&tegra_tmp451 1>;
+			status = "okay";
+
+			trips {
+				tdiode_sw_shutdown: tdiode-sw-shutdown {
+					temperature = <107000>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+		};
+	};
 };
diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
index 7b7a57c90e3d..b92427e397af 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
@@ -8,6 +8,8 @@ 
 #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
 #include <dt-bindings/power/tegra234-powergate.h>
 #include <dt-bindings/reset/tegra234-reset.h>
+#include <dt-bindings/thermal/tegra234-bpmp-thermal.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
 	compatible = "nvidia,tegra234";
@@ -3135,6 +3137,12 @@  bpmp_i2c: i2c {
 			#address-cells = <1>;
 			#size-cells = <0>;
 		};
+
+		thermal {
+			compatible = "nvidia,tegra186-bpmp-thermal";
+			#thermal-sensor-cells = <1>;
+			status = "disabled";
+		};
 	};
 
 	cpus {
@@ -3155,6 +3163,7 @@  cpu0_0: cpu@0 {
 			d-cache-line-size = <64>;
 			d-cache-sets = <256>;
 			next-level-cache = <&l2c0_0>;
+			#cooling-cells = <2>;
 		};
 
 		cpu0_1: cpu@100 {
@@ -3219,6 +3228,7 @@  cpu1_0: cpu@10000 {
 			d-cache-line-size = <64>;
 			d-cache-sets = <256>;
 			next-level-cache = <&l2c1_0>;
+			#cooling-cells = <2>;
 		};
 
 		cpu1_1: cpu@10100 {
@@ -3283,6 +3293,7 @@  cpu2_0: cpu@20000 {
 			d-cache-line-size = <64>;
 			d-cache-sets = <256>;
 			next-level-cache = <&l2c2_0>;
+			#cooling-cells = <2>;
 		};
 
 		cpu2_1: cpu@20100 {
@@ -3580,4 +3591,52 @@  timer {
 		interrupt-parent = <&gic>;
 		always-on;
 	};
+
+	thermal-zones {
+		cpu-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CPU>;
+			status = "disabled";
+		};
+
+		gpu-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_GPU>;
+			status = "disabled";
+		};
+
+		cv0-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CV0>;
+			status = "disabled";
+		};
+
+
+		cv1-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CV1>;
+			status = "disabled";
+		};
+
+		cv2-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_CV2>;
+			status = "disabled";
+		};
+
+		soc0-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_SOC0>;
+			status = "disabled";
+		};
+
+		soc1-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_SOC1>;
+			status = "disabled";
+		};
+
+		soc2-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_SOC2>;
+			status = "disabled";
+		};
+
+		tj-thermal {
+			thermal-sensors = <&{/bpmp/thermal} TEGRA234_THERMAL_ZONE_TJ_MAX>;
+			status = "disabled";
+		};
+	};
 };