ARM: dts: sun8i-a83t: Add thermal trip points/cooling maps
authorOndrej Jirman <megous@megous.com>
Mon, 24 Feb 2020 16:54:17 +0000 (17:54 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Tue, 25 Feb 2020 09:04:58 +0000 (10:04 +0100)
This enables passive cooling by down-regulating CPU voltage
and frequency.

For the trip points, I used values from the BSP code directly.

The critical trip point value is 30°C above the maximum recommended
ambient temperature (70°C) for the SoC from the datasheet, so there's
some headroom even at such a high ambient temperature.

Signed-off-by: Ondrej Jirman <megous@megous.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
arch/arm/boot/dts/sun8i-a83t.dtsi

index 74ac7ee..53c2b6a 100644 (file)
@@ -72,7 +72,7 @@
                        #cooling-cells = <2>;
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        clocks = <&ccu CLK_C0CPUX>;
@@ -83,7 +83,7 @@
                        #cooling-cells = <2>;
                };
 
-               cpu@2 {
+               cpu2: cpu@2 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        clocks = <&ccu CLK_C0CPUX>;
@@ -94,7 +94,7 @@
                        #cooling-cells = <2>;
                };
 
-               cpu@3 {
+               cpu3: cpu@3 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        clocks = <&ccu CLK_C0CPUX>;
                        #cooling-cells = <2>;
                };
 
-               cpu@101 {
+               cpu101: cpu@101 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        clocks = <&ccu CLK_C1CPUX>;
                        #cooling-cells = <2>;
                };
 
-               cpu@102 {
+               cpu102: cpu@102 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        clocks = <&ccu CLK_C1CPUX>;
                        #cooling-cells = <2>;
                };
 
-               cpu@103 {
+               cpu103: cpu@103 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        clocks = <&ccu CLK_C1CPUX>;
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&ths 0>;
+
+                       trips {
+                               cpu0_hot: cpu-hot {
+                                       temperature = <80000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+
+                               cpu0_very_hot: cpu-very-hot {
+                                       temperature = <100000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               cpu-hot-limit {
+                                       trip = <&cpu0_hot>;
+                                       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>;
+                               };
+                       };
                };
 
                cpu1_thermal: cpu1-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&ths 1>;
+
+                       trips {
+                               cpu1_hot: cpu-hot {
+                                       temperature = <80000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+
+                               cpu1_very_hot: cpu-very-hot {
+                                       temperature = <100000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               cpu-hot-limit {
+                                       trip = <&cpu1_hot>;
+                                       cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
                };
 
                gpu_thermal: gpu-thermal {