瀏覽代碼

mvebu: setup effective thermal zones on Puzzle M901 and M902

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 <[email protected]>
Daniel Golle 2 年之前
父節點
當前提交
aa41f4a395

+ 12 - 15
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts

@@ -6,6 +6,7 @@
  */
 
 #include "cn9130.dtsi"
+#include "puzzle-thermal.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
@@ -109,26 +110,18 @@
 			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 */
@@ -396,6 +389,10 @@
 	};
 };
 
+&cp1_thermal_ic {
+	PUZZLE_FAN_THERMAL(cp1, &chassis_fan_group0);
+};
+
 &cp1_usb3_1 {
 	status = "okay";
 	phys = <&cp1_comphy3 1>;

+ 17 - 15
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts

@@ -6,6 +6,7 @@
  */
 
 #include "cn9130.dtsi"
+#include "puzzle-thermal.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
@@ -154,28 +155,21 @@
 			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";
@@ -447,6 +441,10 @@
 	};
 };
 
+&cp1_thermal_ic {
+	PUZZLE_FAN_THERMAL(cp1, &chassis_fan_group0);
+};
+
 /*
  * Instantiate the second connected CP115
  */
@@ -562,3 +560,7 @@
 		};
 	};
 };
+
+&cp2_thermal_ic {
+	PUZZLE_FAN_THERMAL(cp2, &chassis_fan_group0);
+};

+ 41 - 0
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi

@@ -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>;		\
+		};								\
+	}