mediatek: mt7981: improve fan behaviour
authorŁukasz M <lukasz1992m@gmail.com>
Tue, 31 Oct 2023 15:15:06 +0000 (16:15 +0100)
committerDavid Bauer <mail@david-bauer.net>
Fri, 3 Nov 2023 22:06:07 +0000 (23:06 +0100)
This doubles the number of cooling-levels.
In addition the fan is turned on with a low speed at lower temperatures
and with a higher speed at higher temperatures.
This also attempts to reduce the likelihood of constant start-stop actions.

The change only affects the GL.iNet MT3000 and has been tested with it.

Signed-off-by: Łukasz M <lukasz1992m@gmail.com>
target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7981.dtsi
target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7981.dtsi

index 05d4b7d91da112c57aa4a635cbf7420f67eb2922..cb161df81e9d573f00db2a5a6bcb3210011b6c9a 100644 (file)
@@ -55,8 +55,8 @@
 
        fan: pwm-fan {
                compatible = "pwm-fan";
-               /* cooling level (0, 1, 2, 3) : (0% duty, 50% duty, 75% duty, 100% duty) */
-               cooling-levels = <0 128 192 255>;
+               /* cooling level (0, 1, 2, 3, 4, 5, 6, 7) : (0%/25%/37.5%/50%/62.5%/75%/87.5%/100% duty) */
+               cooling-levels = <0 63 95 127 159 191 223 255>;
                #cooling-cells = <2>;
                status = "disabled";
        };
                        polling-delay = <1000>;
                        thermal-sensors = <&thermal 0>;
                        trips {
-                               cpu_trip_crit: crit {
-                                       temperature = <125000>;
+                               cpu_trip_active_highest: active-highest {
+                                       temperature = <70000>;
                                        hysteresis = <2000>;
-                                       type = "critical";
-                               };
-
-                               cpu_trip_hot: hot {
-                                       temperature = <120000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
+                                       type = "active";
                                };
 
                                cpu_trip_active_high: active-high {
-                                       temperature = <115000>;
+                                       temperature = <60000>;
                                        hysteresis = <2000>;
                                        type = "active";
                                };
 
                                cpu_trip_active_med: active-med {
-                                       temperature = <85000>;
+                                       temperature = <50000>;
                                        hysteresis = <2000>;
                                        type = "active";
                                };
 
                                cpu_trip_active_low: active-low {
-                                       temperature = <60000>;
+                                       temperature = <45000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_active_lowest: active-lowest {
+                                       temperature = <40000>;
                                        hysteresis = <2000>;
                                        type = "active";
                                };
                        };
 
                        cooling-maps {
+                               cpu-active-highest {
+                                       /* active: set fan to cooling level 7 */
+                                       cooling-device = <&fan 7 7>;
+                                       trip = <&cpu_trip_active_highest>;
+                               };
+
                                cpu-active-high {
-                                       /* active: set fan to cooling level 3 */
-                                       cooling-device = <&fan 3 3>;
+                                       /* active: set fan to cooling level 5 */
+                                       cooling-device = <&fan 5 5>;
                                        trip = <&cpu_trip_active_high>;
                                };
 
                                cpu-active-med {
-                                       /* active: set fan to cooling level 2 */
-                                       cooling-device = <&fan 2 2>;
+                                       /* active: set fan to cooling level 3 */
+                                       cooling-device = <&fan 3 3>;
                                        trip = <&cpu_trip_active_med>;
                                };
 
                                cpu-active-low {
-                                       /* passive: set fan to cooling level 1 */
-                                       cooling-device = <&fan 1 1>;
+                                       /* active: set fan to cooling level 2 */
+                                       cooling-device = <&fan 2 2>;
                                        trip = <&cpu_trip_active_low>;
                                };
+
+                               cpu-active-lowest {
+                                       /* active: set fan to cooling level 1 */
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active_lowest>;
+                               };
                        };
                };
        };
index 05d4b7d91da112c57aa4a635cbf7420f67eb2922..cb161df81e9d573f00db2a5a6bcb3210011b6c9a 100644 (file)
@@ -55,8 +55,8 @@
 
        fan: pwm-fan {
                compatible = "pwm-fan";
-               /* cooling level (0, 1, 2, 3) : (0% duty, 50% duty, 75% duty, 100% duty) */
-               cooling-levels = <0 128 192 255>;
+               /* cooling level (0, 1, 2, 3, 4, 5, 6, 7) : (0%/25%/37.5%/50%/62.5%/75%/87.5%/100% duty) */
+               cooling-levels = <0 63 95 127 159 191 223 255>;
                #cooling-cells = <2>;
                status = "disabled";
        };
                        polling-delay = <1000>;
                        thermal-sensors = <&thermal 0>;
                        trips {
-                               cpu_trip_crit: crit {
-                                       temperature = <125000>;
+                               cpu_trip_active_highest: active-highest {
+                                       temperature = <70000>;
                                        hysteresis = <2000>;
-                                       type = "critical";
-                               };
-
-                               cpu_trip_hot: hot {
-                                       temperature = <120000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
+                                       type = "active";
                                };
 
                                cpu_trip_active_high: active-high {
-                                       temperature = <115000>;
+                                       temperature = <60000>;
                                        hysteresis = <2000>;
                                        type = "active";
                                };
 
                                cpu_trip_active_med: active-med {
-                                       temperature = <85000>;
+                                       temperature = <50000>;
                                        hysteresis = <2000>;
                                        type = "active";
                                };
 
                                cpu_trip_active_low: active-low {
-                                       temperature = <60000>;
+                                       temperature = <45000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_active_lowest: active-lowest {
+                                       temperature = <40000>;
                                        hysteresis = <2000>;
                                        type = "active";
                                };
                        };
 
                        cooling-maps {
+                               cpu-active-highest {
+                                       /* active: set fan to cooling level 7 */
+                                       cooling-device = <&fan 7 7>;
+                                       trip = <&cpu_trip_active_highest>;
+                               };
+
                                cpu-active-high {
-                                       /* active: set fan to cooling level 3 */
-                                       cooling-device = <&fan 3 3>;
+                                       /* active: set fan to cooling level 5 */
+                                       cooling-device = <&fan 5 5>;
                                        trip = <&cpu_trip_active_high>;
                                };
 
                                cpu-active-med {
-                                       /* active: set fan to cooling level 2 */
-                                       cooling-device = <&fan 2 2>;
+                                       /* active: set fan to cooling level 3 */
+                                       cooling-device = <&fan 3 3>;
                                        trip = <&cpu_trip_active_med>;
                                };
 
                                cpu-active-low {
-                                       /* passive: set fan to cooling level 1 */
-                                       cooling-device = <&fan 1 1>;
+                                       /* active: set fan to cooling level 2 */
+                                       cooling-device = <&fan 2 2>;
                                        trip = <&cpu_trip_active_low>;
                                };
+
+                               cpu-active-lowest {
+                                       /* active: set fan to cooling level 1 */
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active_lowest>;
+                               };
                        };
                };
        };