diff mbox series

arm64: dts: rockchip: enable automatic fan control on Orange Pi 5+

Message ID 20240921183810.225322-1-flokli@flokli.de (mailing list archive)
State New
Headers show
Series arm64: dts: rockchip: enable automatic fan control on Orange Pi 5+ | expand

Commit Message

Florian Klink Sept. 21, 2024, 6:38 p.m. UTC
This links the PWM fan on Orange Pi 5+ as an active cooling device
managed automatically by the thermal subsystem, with a target SoC
temperature of 65C and a minimum-spin interval from 55C to 65C to
ensure airflow when the system gets warm.

This is pretty much the same as '4a152231b050 ("arm64: dts: rockchip:
enable automatic fan control on Rock 5B")', except for the Orange Pi
5+ board.

Signed-off-by: Florian Klink <flokli@flokli.de>
---
 .../dts/rockchip/rk3588-orangepi-5-plus.dts   | 30 +++++++++++++++++++
 1 file changed, 30 insertions(+)

Comments

Dragan Simic Sept. 21, 2024, 9:42 p.m. UTC | #1
Hello Florian,

Thanks for the patch.  Please, see a comment below.

On 2024-09-21 20:38, Florian Klink wrote:
> This links the PWM fan on Orange Pi 5+ as an active cooling device
> managed automatically by the thermal subsystem, with a target SoC
> temperature of 65C and a minimum-spin interval from 55C to 65C to
> ensure airflow when the system gets warm.
> 
> This is pretty much the same as '4a152231b050 ("arm64: dts: rockchip:
> enable automatic fan control on Rock 5B")', except for the Orange Pi
> 5+ board.
> 
> Signed-off-by: Florian Klink <flokli@flokli.de>
> ---
>  .../dts/rockchip/rk3588-orangepi-5-plus.dts   | 30 +++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> index e74871491ef5..8569e862b6ee 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> @@ -351,6 +351,36 @@ &i2s2m0_sdi
>  	status = "okay";
>  };
> 
> +&package_thermal {
> +	polling-delay = <1000>;
> +
> +	trips {
> +		package_fan0: package-fan0 {
> +			temperature = <55000>;
> +			hysteresis = <2000>;
> +			type = "active";
> +		};
> +
> +		package_fan1: package-fan1 {
> +			temperature = <65000>;
> +			hysteresis = <2000>;
> +			type = "active";
> +		};
> +	};
> +
> +	cooling-maps {
> +		map1 {
> +			trip = <&package_fan0>;
> +			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
> +		};
> +
> +		map2 {
> +			trip = <&package_fan1>;
> +			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
> +		};

These two cooling maps should be named map0 and map1 instead, i.e.
their numbering shoud start from zero, because there are no package
cooling maps in the parent dtsi file(s).

Having them named map1 and map2 in rk3588-rock-5b.dts was a small
mistake that slipped by somehow, and I've already submitted a small
patch [1] that fixes that mistake.

[1] 
https://lore.kernel.org/linux-rockchip/335ecd5841ab55f333e17bb391d0e1264fac257b.1726954592.git.dsimic@manjaro.org/T/#u

> +	};
> +};
> +
>  /* phy1 - M.KEY socket */
>  &pcie2x1l0 {
>  	reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
Florian Klink Sept. 22, 2024, 11:24 a.m. UTC | #2
Thanks, addressed that in the v2.

On Sat, Sep 21, 2024 at 11:42:43PM GMT, Dragan Simic wrote:
>Hello Florian,
>
>Thanks for the patch.  Please, see a comment below.
>
>On 2024-09-21 20:38, Florian Klink wrote:
>>This links the PWM fan on Orange Pi 5+ as an active cooling device
>>managed automatically by the thermal subsystem, with a target SoC
>>temperature of 65C and a minimum-spin interval from 55C to 65C to
>>ensure airflow when the system gets warm.
>>
>>This is pretty much the same as '4a152231b050 ("arm64: dts: rockchip:
>>enable automatic fan control on Rock 5B")', except for the Orange Pi
>>5+ board.
>>
>>Signed-off-by: Florian Klink <flokli@flokli.de>
>>---
>> .../dts/rockchip/rk3588-orangepi-5-plus.dts   | 30 +++++++++++++++++++
>> 1 file changed, 30 insertions(+)
>>
>>diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
>>b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
>>index e74871491ef5..8569e862b6ee 100644
>>--- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
>>+++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
>>@@ -351,6 +351,36 @@ &i2s2m0_sdi
>> 	status = "okay";
>> };
>>
>>+&package_thermal {
>>+	polling-delay = <1000>;
>>+
>>+	trips {
>>+		package_fan0: package-fan0 {
>>+			temperature = <55000>;
>>+			hysteresis = <2000>;
>>+			type = "active";
>>+		};
>>+
>>+		package_fan1: package-fan1 {
>>+			temperature = <65000>;
>>+			hysteresis = <2000>;
>>+			type = "active";
>>+		};
>>+	};
>>+
>>+	cooling-maps {
>>+		map1 {
>>+			trip = <&package_fan0>;
>>+			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
>>+		};
>>+
>>+		map2 {
>>+			trip = <&package_fan1>;
>>+			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
>>+		};
>
>These two cooling maps should be named map0 and map1 instead, i.e.
>their numbering shoud start from zero, because there are no package
>cooling maps in the parent dtsi file(s).
>
>Having them named map1 and map2 in rk3588-rock-5b.dts was a small
>mistake that slipped by somehow, and I've already submitted a small
>patch [1] that fixes that mistake.
>
>[1] https://lore.kernel.org/linux-rockchip/335ecd5841ab55f333e17bb391d0e1264fac257b.1726954592.git.dsimic@manjaro.org/T/#u
>
>>+	};
>>+};
>>+
>> /* phy1 - M.KEY socket */
>> &pcie2x1l0 {
>> 	reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
index e74871491ef5..8569e862b6ee 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
@@ -351,6 +351,36 @@  &i2s2m0_sdi
 	status = "okay";
 };
 
+&package_thermal {
+	polling-delay = <1000>;
+
+	trips {
+		package_fan0: package-fan0 {
+			temperature = <55000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+
+		package_fan1: package-fan1 {
+			temperature = <65000>;
+			hysteresis = <2000>;
+			type = "active";
+		};
+	};
+
+	cooling-maps {
+		map1 {
+			trip = <&package_fan0>;
+			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+		};
+
+		map2 {
+			trip = <&package_fan1>;
+			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+		};
+	};
+};
+
 /* phy1 - M.KEY socket */
 &pcie2x1l0 {
 	reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;