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-slowdown-cluster.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-camera.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-slowdown-cluster.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 "tegra234-camera-p3785.dtsi"
#include "tegra234-p3740-0002.dtsi"

View File

@@ -116,6 +116,14 @@
map-devfreq {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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-slowdown-corepair.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 "tegra234-p3768-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>;
};
};
};
};
};