Commit 78f50df5 authored by Valentin Schneider's avatar Valentin Schneider Committed by Ionela Voinescu
Browse files

arm64: dts: sdm845: Bind CPU thermal throttling to cluster sensors



The previous commit removed per-CPU thermal zones. Despite having a thermal
sensor per-CPU, the trip points in those zones would affect *several* CPUs:
this system doesn't have per-CPU DVFS, so one cannot change the frequency
of an individual CPU, but rather a group thereof (i.e. the frequency
domain).

Furthermore, the (existing) CPU cluster thermal zones have a "hot" trip
point set at the same trip temperature as the lower per-CPU thermal
zones. AIUI this is actually useless, as the struct thermal_zone_device_ops
provided by thermal_of.c doesn't contain a .notify() callback, so no action
will (and can) be taken as a consequence of hitting that trip point.

Copy the previous per-CPU trip points / cooling maps into the CPU cluster
thermal zones. This should effectively lead to a similar CPU thermal
management as before with less overhead.
Signed-off-by: Valentin Schneider's avatarValentin Schneider <valentin.schneider@arm.com>
parent 05982f95
......@@ -4968,7 +4968,12 @@
cluster0_alert0: trip-point0 {
temperature = <90000>;
hysteresis = <2000>;
type = "hot";
type = "passive";
};
cluster0_alert1: trip-point1 {
temperature = <95000>;
hysteresis = <2000>;
type = "passive";
};
cluster0_crit: cluster0_crit {
temperature = <110000>;
......@@ -4976,6 +4981,24 @@
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&cluster0_alert0>;
cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
map1 {
trip = <&cluster0_alert1>;
cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
cluster1-thermal {
......@@ -4988,7 +5011,12 @@
cluster1_alert0: trip-point0 {
temperature = <90000>;
hysteresis = <2000>;
type = "hot";
type = "passive";
};
cluster1_alert1: trip-point1 {
temperature = <95000>;
hysteresis = <2000>;
type = "passive";
};
cluster1_crit: cluster1_crit {
temperature = <110000>;
......@@ -4996,6 +5024,24 @@
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&cluster1_alert0>;
cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
map1 {
trip = <&cluster1_alert1>;
cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
gpu-thermal-top {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment