mvebu: setup effective thermal zones on Puzzle M901 and M902
authorDaniel Golle <daniel@makrotopia.org>
Sat, 25 Feb 2023 17:42:23 +0000 (17:42 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 25 Feb 2023 19:01:40 +0000 (19:01 +0000)
Assign fan with 4 active cooling levels to be used for the main CPU as
well as external SerDes units.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi [new file with mode: 0644]

index 80d876b4ad6740f2c2c4fe69973930d4ea006f5c..0ad25fafbb8b2d81973431dcd55976f1e5f8c679 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "cn9130.dtsi"
+#include "puzzle-thermal.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
                        chassis_fan_group0: fan-group@0 {
                                #cooling-cells = <2>;
                                reg = <0x00>;
-                               cooling-levels = <64 102 170 230 250>;
+                               cooling-levels = <80 102 170 230 255>;
                        };
                };
        };
 };
 
-&ap_thermal_cpu1 {
-       trips {
-               cpu_active: cpu-active {
-                       temperature = <44000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-       };
-       cooling-maps {
-               fan-map {
-                       trip = <&cpu_active>;
-                       cooling-device = <&chassis_fan_group0 64 THERMAL_NO_LIMIT>;
-               };
-       };
+&ap_thermal_ic {
+       PUZZLE_FAN_THERMAL(ic, &chassis_fan_group0);
+};
+
+&cp0_thermal_ic {
+       PUZZLE_FAN_THERMAL(cp0, &chassis_fan_group0);
 };
 
 /* on-board eMMC - U9 */
        };
 };
 
+&cp1_thermal_ic {
+       PUZZLE_FAN_THERMAL(cp1, &chassis_fan_group0);
+};
+
 &cp1_usb3_1 {
        status = "okay";
        phys = <&cp1_comphy3 1>;
index fd99eb2d1303ca6109c0b3df77f47d0d498cc9ab..398e53a5f9a4f480faa2dcbb2eae02085a47822e 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "cn9130.dtsi"
+#include "puzzle-thermal.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
                        chassis_fan_group0: fan-group@0 {
                                #cooling-cells = <2>;
                                reg = <0x00>;
-                               cooling-levels = <64 102 170 230 250>;
+                               cooling-levels = <80 102 170 230 255>;
                        };
                };
        };
 };
 
-&ap_thermal_cpu1 {
-       trips {
-               cpu_active: cpu-active {
-                       temperature = <44000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-       };
-       cooling-maps {
-               fan-map {
-                       trip = <&cpu_active>;
-                       cooling-device = <&chassis_fan_group0 64 THERMAL_NO_LIMIT>;
-               };
-       };
+&ap_thermal_ic {
+       PUZZLE_FAN_THERMAL(ic, &chassis_fan_group0);
+};
+
+&cp0_thermal_ic {
+       PUZZLE_FAN_THERMAL(cp0, &chassis_fan_group0);
 };
 
+
 /* on-board eMMC - U9 */
 &ap_sdhci0 {
        pinctrl-names = "default";
        };
 };
 
+&cp1_thermal_ic {
+       PUZZLE_FAN_THERMAL(cp1, &chassis_fan_group0);
+};
+
 /*
  * Instantiate the second connected CP115
  */
                };
        };
 };
+
+&cp2_thermal_ic {
+       PUZZLE_FAN_THERMAL(cp2, &chassis_fan_group0);
+};
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
new file mode 100644 (file)
index 0000000..9467753
--- /dev/null
@@ -0,0 +1,41 @@
+#define PUZZLE_FAN_THERMAL(_cname, _fan)                                       \
+       trips {                                                                 \
+               _cname##_active_high: cpu-active-high {                         \
+                       temperature = <80000>;                                  \
+                       hysteresis = <2000>;                                    \
+                       type = "active";                                        \
+               };                                                              \
+               _cname##_active_med: cpu-active-med {                           \
+                       temperature = <72000>;                                  \
+                       hysteresis = <2000>;                                    \
+                       type = "active";                                        \
+               };                                                              \
+               _cname##_active_low: cpu-active-low {                           \
+                       temperature = <65000>;                                  \
+                       hysteresis = <2000>;                                    \
+                       type = "active";                                        \
+               };                                                              \
+               _cname##_active_idle: cpu-active-idle {                         \
+                       temperature = <60000>;                                  \
+                       hysteresis = <2000>;                                    \
+                       type = "active";                                        \
+               };                                                              \
+       };                                                                      \
+       cooling-maps {                                                          \
+               cpu-active-high {                                               \
+                       trip = <&_cname##_active_high>;                         \
+                       cooling-device = <_fan 3 THERMAL_NO_LIMIT>;             \
+               };                                                              \
+               cpu-active-med {                                                \
+                       trip = <&_cname##_active_med>;                          \
+                       cooling-device = <_fan 2 THERMAL_NO_LIMIT>;             \
+               };                                                              \
+               cpu-active-low {                                                \
+                       trip = <&_cname##_active_low>;                          \
+                       cooling-device = <_fan 1 THERMAL_NO_LIMIT>;             \
+               };                                                              \
+               cpu-active-idle {                                               \
+                       trip = <&_cname##_active_idle>;                         \
+                       cooling-device = <_fan 0 THERMAL_NO_LIMIT>;             \
+               };                                                              \
+       }