[PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

Subsystems: the rest

STALE1817d LANDED

Landed in mainline as d09ebc6ba9cc on 2021-09-15.

7 messages, 4 authors, 2021-08-13 · open the first message on its own page

[PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Peter Geis <hidden>
Date: 2021-07-30 15:17:43

The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).

Signed-off-by: Peter Geis <redacted>
---

Changelog:
v3:
Removed the gpu nodes to prevent in-fighting (thanks Robin!)

v2:
Adjusted fan setpoints for less noise

 .../boot/dts/rockchip/rk3399-rockpro64.dtsi   | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
index 6bff8db7d33e..83db4ca67334 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
@@ -69,6 +69,7 @@ diy_led: led-1 {
 
 	fan: pwm-fan {
 		compatible = "pwm-fan";
+		cooling-levels = <0 100 150 200 255>;
 		#cooling-cells = <2>;
 		fan-supply = <&vcc12v_dcin>;
 		pwms = <&pwm1 0 50000 0>;
@@ -245,6 +246,34 @@ &cpu_b1 {
 	cpu-supply = <&vdd_cpu_b>;
 };
 
+&cpu_thermal {
+	trips {
+		cpu_warm: cpu_warm {
+			temperature = <55000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+
+		cpu_hot: cpu_hot {
+			temperature = <65000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+	};
+
+	cooling-maps {
+		map2 {
+			trip = <&cpu_warm>;
+			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+		};
+
+		map3 {
+			trip = <&cpu_hot>;
+			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+		};
+	};
+};
+
 &emmc_phy {
 	status = "okay";
 };
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Heiko Stuebner <heiko@sntech.de>
Date: 2021-08-13 08:51:51

On Fri, 30 Jul 2021 11:17:27 -0400, Peter Geis wrote:
The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).
Applied, thanks!

[1/1] arm64: dts: rockchip: add thermal fan control to rockpro64
      commit: 440f361af90acff36eb3d89c1f03debeab7b3fb8

Best regards,
-- 
Heiko Stuebner [off-list ref]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Daniel Lezcano <hidden>
Date: 2021-08-13 13:00:02

On 30/07/2021 17:17, Peter Geis wrote:
quoted hunk
The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).

Signed-off-by: Peter Geis <redacted>
---

Changelog:
v3:
Removed the gpu nodes to prevent in-fighting (thanks Robin!)

v2:
Adjusted fan setpoints for less noise

 .../boot/dts/rockchip/rk3399-rockpro64.dtsi   | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
index 6bff8db7d33e..83db4ca67334 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
@@ -69,6 +69,7 @@ diy_led: led-1 {
 
 	fan: pwm-fan {
 		compatible = "pwm-fan";
+		cooling-levels = <0 100 150 200 255>;
 		#cooling-cells = <2>;
 		fan-supply = <&vcc12v_dcin>;
 		pwms = <&pwm1 0 50000 0>;
@@ -245,6 +246,34 @@ &cpu_b1 {
 	cpu-supply = <&vdd_cpu_b>;
 };
 
+&cpu_thermal {
+	trips {
+		cpu_warm: cpu_warm {
+			temperature = <55000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+
+		cpu_hot: cpu_hot {
+			temperature = <65000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+	};
+
Why two trip points ?

Why not one functioning temperature and no lower / upper limits for the
cooling maps ?

+	cooling-maps {
+		map2 {
+			trip = <&cpu_warm>;
+			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+		};
+
+		map3 {
+			trip = <&cpu_hot>;
+			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+		};
+	};
+};
+
 &emmc_phy {
 	status = "okay";
 };

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Robin Murphy <robin.murphy@arm.com>
Date: 2021-08-13 13:52:06

On 2021-08-13 13:59, Daniel Lezcano wrote:
On 30/07/2021 17:17, Peter Geis wrote:
quoted
The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).

Signed-off-by: Peter Geis <redacted>
---

Changelog:
v3:
Removed the gpu nodes to prevent in-fighting (thanks Robin!)

v2:
Adjusted fan setpoints for less noise

  .../boot/dts/rockchip/rk3399-rockpro64.dtsi   | 29 +++++++++++++++++++
  1 file changed, 29 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
index 6bff8db7d33e..83db4ca67334 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
@@ -69,6 +69,7 @@ diy_led: led-1 {
  
  	fan: pwm-fan {
  		compatible = "pwm-fan";
+		cooling-levels = <0 100 150 200 255>;
  		#cooling-cells = <2>;
  		fan-supply = <&vcc12v_dcin>;
  		pwms = <&pwm1 0 50000 0>;
@@ -245,6 +246,34 @@ &cpu_b1 {
  	cpu-supply = <&vdd_cpu_b>;
  };
  
+&cpu_thermal {
+	trips {
+		cpu_warm: cpu_warm {
+			temperature = <55000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+
+		cpu_hot: cpu_hot {
+			temperature = <65000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+	};
+
Why two trip points ?

Why not one functioning temperature and no lower / upper limits for the
cooling maps ?
Certainly when I first did this for NanoPC-T4, IIRC it was to avoid the 
fan ramping up too eagerly, since level 1 for my fan is effectively 
silent but still cools enough to let a moderate load eventually settle 
to a steady state below the second trip.

Robin.
quoted
+	cooling-maps {
+		map2 {
+			trip = <&cpu_warm>;
+			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+		};
+
+		map3 {
+			trip = <&cpu_hot>;
+			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+		};
+	};
+};
+
  &emmc_phy {
  	status = "okay";
  };
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Daniel Lezcano <hidden>
Date: 2021-08-13 14:54:48

Hi Robin,


On 13/08/2021 15:51, Robin Murphy wrote:
On 2021-08-13 13:59, Daniel Lezcano wrote:
quoted
On 30/07/2021 17:17, Peter Geis wrote:
quoted
The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).

Signed-off-by: Peter Geis <redacted>
[ ... ]
quoted
quoted
  +&cpu_thermal {
+    trips {
+        cpu_warm: cpu_warm {
+            temperature = <55000>;
+            hysteresis = <2000>;
+            type = "active";
+        };
+
+        cpu_hot: cpu_hot {
+            temperature = <65000>;
+            hysteresis = <2000>;
+            type = "active";
+        };
+    };
+
Why two trip points ?

Why not one functioning temperature and no lower / upper limits for the
cooling maps ?
Certainly when I first did this for NanoPC-T4, IIRC it was to avoid the
fan ramping up too eagerly, since level 1 for my fan is effectively
silent but still cools enough to let a moderate load eventually settle
to a steady state below the second trip.
Thanks for your answer.

What would be the governor for this setup ?




-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Peter Geis <hidden>
Date: 2021-08-13 15:14:11

On Fri, Aug 13, 2021 at 10:54 AM Daniel Lezcano
[off-list ref] wrote:

Hi Robin,


On 13/08/2021 15:51, Robin Murphy wrote:
quoted
On 2021-08-13 13:59, Daniel Lezcano wrote:
quoted
On 30/07/2021 17:17, Peter Geis wrote:
quoted
The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).

Signed-off-by: Peter Geis <redacted>
[ ... ]
quoted
quoted
quoted
  +&cpu_thermal {
+    trips {
+        cpu_warm: cpu_warm {
+            temperature = <55000>;
+            hysteresis = <2000>;
+            type = "active";
+        };
+
+        cpu_hot: cpu_hot {
+            temperature = <65000>;
+            hysteresis = <2000>;
+            type = "active";
+        };
+    };
+
Why two trip points ?

Why not one functioning temperature and no lower / upper limits for the
cooling maps ?
Certainly when I first did this for NanoPC-T4, IIRC it was to avoid the
fan ramping up too eagerly, since level 1 for my fan is effectively
silent but still cools enough to let a moderate load eventually settle
to a steady state below the second trip.
That's the same issue I had on the rockpro64.
Thanks for your answer.

What would be the governor for this setup ?
The default governor when using arm64_defconfig is step_wise.


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v3] arm64: dts: rockchip: add thermal fan control to rockpro64

From: Daniel Lezcano <hidden>
Date: 2021-08-13 15:46:22

On 13/08/2021 17:10, Peter Geis wrote:
On Fri, Aug 13, 2021 at 10:54 AM Daniel Lezcano
[off-list ref] wrote:
quoted

Hi Robin,


On 13/08/2021 15:51, Robin Murphy wrote:
quoted
On 2021-08-13 13:59, Daniel Lezcano wrote:
quoted
On 30/07/2021 17:17, Peter Geis wrote:
quoted
The rockpro64 had a fan node since
commit 5882d65c1691 ("arm64: dts: rockchip: Add PWM fan for RockPro64")
however it was never tied into the thermal driver for automatic control.

Add the links to the thermal node to permit the kernel to handle this
automatically.
Borrowed from the (rk3399-khadas-edge.dtsi).

Signed-off-by: Peter Geis <redacted>
[ ... ]
quoted
quoted
quoted
  +&cpu_thermal {
+    trips {
+        cpu_warm: cpu_warm {
+            temperature = <55000>;
+            hysteresis = <2000>;
+            type = "active";
+        };
+
+        cpu_hot: cpu_hot {
+            temperature = <65000>;
+            hysteresis = <2000>;
+            type = "active";
+        };
+    };
+
Why two trip points ?

Why not one functioning temperature and no lower / upper limits for the
cooling maps ?
Certainly when I first did this for NanoPC-T4, IIRC it was to avoid the
fan ramping up too eagerly, since level 1 for my fan is effectively
silent but still cools enough to let a moderate load eventually settle
to a steady state below the second trip.
That's the same issue I had on the rockpro64.
quoted
Thanks for your answer.

What would be the governor for this setup ?
The default governor when using arm64_defconfig is step_wise.
Ok, thanks


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help