nv-public: add support for thermal trip event

This change binds thermal trip event cooling devices to the following
events:
- sw throttling event
- hot surface event

When the bound trip point temperature gets crossed, the associated
cooling device will become active, and its state can be learnt from the
user space to take the action accordingly.

The thermal trip event cooling device is not needed for safety IGX so
disable it.

Bug 4261645
Bug 1688327

Signed-off-by: Yi-Wei Wang <yiweiw@nvidia.com>
Change-Id: Ifa7f2dfb5c95113e9902e3ea4dfc03197065c5e5
Reviewed-on: https://git-master.nvidia.com/r/c/device/hardware/nvidia/t23x-public-dts/+/3015753
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Yi-Wei Wang
2023-11-14 17:38:43 +08:00
committed by mobile promotions
parent 9bc8cd05e7
commit 9279090408
5 changed files with 306 additions and 0 deletions

View File

@@ -5,6 +5,7 @@
#include "nv-soc/tegra234-soc-thermal.dtsi" #include "nv-soc/tegra234-soc-thermal.dtsi"
#include "nv-soc/tegra234-soc-thermal-slowdown-cluster.dtsi" #include "nv-soc/tegra234-soc-thermal-slowdown-cluster.dtsi"
#include "nv-soc/tegra234-soc-thermal-shutdown.dtsi" #include "nv-soc/tegra234-soc-thermal-shutdown.dtsi"
#include "nv-soc/tegra234-soc-thermal-trip-event.dtsi"
#include "nv-soc/tegra234-soc-audio-dai-links.dtsi" #include "nv-soc/tegra234-soc-audio-dai-links.dtsi"
#include "nv-soc/tegra234-soc-camera.dtsi" #include "nv-soc/tegra234-soc-camera.dtsi"
#include "tegra234-p3737-0000.dtsi" #include "tegra234-p3737-0000.dtsi"

View File

@@ -5,6 +5,7 @@
#include "nv-soc/tegra234-soc-thermal.dtsi" #include "nv-soc/tegra234-soc-thermal.dtsi"
#include "nv-soc/tegra234-soc-thermal-slowdown-cluster.dtsi" #include "nv-soc/tegra234-soc-thermal-slowdown-cluster.dtsi"
#include "nv-soc/tegra234-soc-thermal-shutdown.dtsi" #include "nv-soc/tegra234-soc-thermal-shutdown.dtsi"
#include "nv-soc/tegra234-soc-thermal-trip-event.dtsi"
#include "nv-soc/tegra234-soc-camera.dtsi" #include "nv-soc/tegra234-soc-camera.dtsi"
#include "tegra234-camera-p3785.dtsi" #include "tegra234-camera-p3785.dtsi"
#include "tegra234-p3740-0002.dtsi" #include "tegra234-p3740-0002.dtsi"

View File

@@ -116,6 +116,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&cpu_throttle_alert 0 0>;
};
}; };
}; };
@@ -130,6 +138,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&gpu_throttle_alert 0 0>;
};
}; };
}; };
@@ -144,6 +160,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&cv0_throttle_alert 0 0>;
};
}; };
}; };
@@ -158,6 +182,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&cv1_throttle_alert 0 0>;
};
}; };
}; };
@@ -172,6 +204,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&cv2_throttle_alert 0 0>;
};
}; };
}; };
@@ -186,6 +226,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&soc0_throttle_alert 0 0>;
};
}; };
}; };
@@ -200,6 +248,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&soc1_throttle_alert 0 0>;
};
}; };
}; };
@@ -214,6 +270,14 @@
map-devfreq { map-devfreq {
cooling-device = <&ga10b 0 0>; cooling-device = <&ga10b 0 0>;
}; };
map-hot-surface-alert {
cooling-device = <&hot_surface_alert 0 0>;
};
map-throttle-alert {
cooling-device = <&soc2_throttle_alert 0 0>;
};
}; };
}; };
}; };

View File

@@ -5,6 +5,7 @@
#include "nv-soc/tegra234-soc-thermal.dtsi" #include "nv-soc/tegra234-soc-thermal.dtsi"
#include "nv-soc/tegra234-soc-thermal-slowdown-corepair.dtsi" #include "nv-soc/tegra234-soc-thermal-slowdown-corepair.dtsi"
#include "nv-soc/tegra234-soc-thermal-shutdown.dtsi" #include "nv-soc/tegra234-soc-thermal-shutdown.dtsi"
#include "nv-soc/tegra234-soc-thermal-trip-event.dtsi"
#include "nv-soc/tegra234-soc-audio-dai-links.dtsi" #include "nv-soc/tegra234-soc-audio-dai-links.dtsi"
#include "tegra234-p3768-0000.dtsi" #include "tegra234-p3768-0000.dtsi"
#include "tegra234-p3767-0000.dtsi" #include "tegra234-p3767-0000.dtsi"

View File

@@ -0,0 +1,239 @@
// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#define TEGRA234_THERMAL_HOT_SURFACE_TEMP 70000
#define TEGRA234_THERMAL_HOT_SURFACE_HYST 8000
/ {
cpu_throttle_alert: cpu-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "cpu-throttle-alert";
#cooling-cells = <2>;
};
gpu_throttle_alert: gpu-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "gpu-throttle-alert";
#cooling-cells = <2>;
};
cv0_throttle_alert: cv0-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "cv0-throttle-alert";
#cooling-cells = <2>;
};
cv1_throttle_alert: cv1-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "cv1-throttle-alert";
#cooling-cells = <2>;
};
cv2_throttle_alert: cv2-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "cv2-throttle-alert";
#cooling-cells = <2>;
};
soc0_throttle_alert: soc0-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "soc0-throttle-alert";
#cooling-cells = <2>;
};
soc1_throttle_alert: soc1-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "soc1-throttle-alert";
#cooling-cells = <2>;
};
soc2_throttle_alert: soc2-throttle-alert {
compatible = "thermal-trip-event";
cdev-type = "soc2-throttle-alert";
#cooling-cells = <2>;
};
hot_surface_alert: hot-surface-alert {
compatible = "thermal-trip-event";
cdev-type = "hot-surface-alert";
#cooling-cells = <2>;
};
thermal-zones {
cpu-thermal {
trips {
cpu_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&cpu_sw_slowdown>;
cooling-device = <&cpu_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&cpu_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
gpu-thermal {
trips {
gpu_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&gpu_sw_slowdown>;
cooling-device = <&gpu_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&gpu_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
cv0-thermal {
trips {
cv0_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&cv0_sw_slowdown>;
cooling-device = <&cv0_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&cv0_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
cv1-thermal {
trips {
cv1_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&cv1_sw_slowdown>;
cooling-device = <&cv1_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&cv1_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
cv2-thermal {
trips {
cv2_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&cv2_sw_slowdown>;
cooling-device = <&cv2_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&cv2_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
soc0-thermal {
trips {
soc0_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&soc0_sw_slowdown>;
cooling-device = <&soc0_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&soc0_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
soc1-thermal {
trips {
soc1_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&soc1_sw_slowdown>;
cooling-device = <&soc1_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&soc1_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
soc2-thermal {
trips {
soc2_trip_hot_surface: hot-surface {
temperature = <TEGRA234_THERMAL_HOT_SURFACE_TEMP>;
hysteresis = <TEGRA234_THERMAL_HOT_SURFACE_HYST>;
type = "passive";
};
};
cooling-maps {
map-throttle-alert {
trip = <&soc2_sw_slowdown>;
cooling-device = <&soc2_throttle_alert 1 1>;
};
map-hot-surface-alert {
trip = <&soc2_trip_hot_surface>;
cooling-device = <&hot_surface_alert 1 1>;
};
};
};
};
};