Message ID | 20250226050132.547353-1-mikhail.kshevetskiy@iopsys.eu (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [RESEND] arm64: dts: mediatek: mt7986: fix pwn fan settings for sinovoip bpi-r3 board | expand |
Il 26/02/25 06:01, Mikhail Kshevetskiy ha scritto: Please reformat the title... arm64: dts: mediatek: mt7986-bpi-r3: Change fan PWM value for mid speed > Popular bpi-r3 pwm fans like this one > > https://www.amazon.com/youyeetoo-Barebone-Fan-BPI-R3-Integrated/dp/B0CCCTY8PS Such links to products do expire over time, so this commit will eventually have missing info in the future. "Popular cheap PWM fans for this machine, like the ones coming in heatsink+fan combos will not work properly at the currently defined medium speed" > > will not work properly. Trying different pwm setting using a command > > echo $value > /sys/devices/platform/pwm-fan/hwmon/hwmon1/pwm1 > > I found: > > pwm1 value fan rotation speed cpu temperature notes > ----------------------------------------------------------------- > 0 maximal 31.5 Celsius too noisy > 40 optimal 35.2 Celsius no noise hearable > 95 minimal > above 95 does not rotate 55.5 Celsius > ----------------------------------------------------------------- > > At the moment we have following cooling levels defined: > > cooling-levels = <255 96 0>; Yes, we can see that in the actual DT, not necessary to repeat in the description. "The current cooling levels define a PWM value of 96 for the cpu-active-medium step..." > > for cpu-active-low, cpu-active-medium and cpu-active-high modes > correspondingly. Thus only cpu-active-high and cpu-active-low are usable. > I think this is wrong. > > This patch fixes cpu-active-medium settings for bpi-r3 board. > > PS: I know, the patch is not ideal as it can break pwm fan for some users. > There are some peoples that use handmade cooling solutions, but: > * discussed cooler is the only 'official' pwm cooler for bpi-r3 > available on the market. > * most peoples will use passive cooling available on the market or > the discussed cooler. > * the pwm-fan dts section was added before the official cooler > appears on the market. > Thus it should not be a lot of harm from this fix. I get that the cheapest fans you can get are not working correctly with the current mid pwm setting, but you can't break things. This devicetree should, at this point, hold default values that would generally make the vast majority of fans to actually spin, because it's impossible to have something perfectly (or vaguely, sometimes) optimized for each fan on the market. Of course this means that you need to properly configure your fans in userspace if you want to reach the sweet spot. I added Frank and Daniel to this thread, as they are the ones who originally did upstream this device. Frank, Daniel, any suggestion regarding the PWM values here? P.S.: Remember that the fan will still spin to HIGH when temperature gets high, so the SoC is still thermally protected until users start tuning their fan speed in userspace. > > This patch may not be enough. Users may wants to tweak their thermal_zone0 > trip points, thus tuning fan rotation speed depending on cpu temperature. > That can be done on the base of the folloving example: P.P.S.: Fix typos please. Thanks, Angelo > > === example ========= > # cpu temterature below 25 Celsius degrees, no rotation > echo 25000 > /sys/class/thermal/thermal_zone0/trip_point_4_temp > # cpu temperature in [25..32] Celsius degrees, normal rotation speed > echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_3_temp > # cpu temperature above 50 Celsius degrees, max rotation speed > echo 50000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp > ===================== > > Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> > --- > arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts > index ed79ad1ae871..b0cc0cbdff0f 100644 > --- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts > +++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts > @@ -42,7 +42,7 @@ fan: pwm-fan { > compatible = "pwm-fan"; > #cooling-cells = <2>; > /* cooling level (0, 1, 2) - pwm inverted */ > - cooling-levels = <255 96 0>; > + cooling-levels = <255 40 0>; > pwms = <&pwm 0 10000>; > status = "okay"; > };
diff --git a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts index ed79ad1ae871..b0cc0cbdff0f 100644 --- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts +++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts @@ -42,7 +42,7 @@ fan: pwm-fan { compatible = "pwm-fan"; #cooling-cells = <2>; /* cooling level (0, 1, 2) - pwm inverted */ - cooling-levels = <255 96 0>; + cooling-levels = <255 40 0>; pwms = <&pwm 0 10000>; status = "okay"; };
Popular bpi-r3 pwm fans like this one https://www.amazon.com/youyeetoo-Barebone-Fan-BPI-R3-Integrated/dp/B0CCCTY8PS will not work properly. Trying different pwm setting using a command echo $value > /sys/devices/platform/pwm-fan/hwmon/hwmon1/pwm1 I found: pwm1 value fan rotation speed cpu temperature notes ----------------------------------------------------------------- 0 maximal 31.5 Celsius too noisy 40 optimal 35.2 Celsius no noise hearable 95 minimal above 95 does not rotate 55.5 Celsius ----------------------------------------------------------------- At the moment we have following cooling levels defined: cooling-levels = <255 96 0>; for cpu-active-low, cpu-active-medium and cpu-active-high modes correspondingly. Thus only cpu-active-high and cpu-active-low are usable. I think this is wrong. This patch fixes cpu-active-medium settings for bpi-r3 board. PS: I know, the patch is not ideal as it can break pwm fan for some users. There are some peoples that use handmade cooling solutions, but: * discussed cooler is the only 'official' pwm cooler for bpi-r3 available on the market. * most peoples will use passive cooling available on the market or the discussed cooler. * the pwm-fan dts section was added before the official cooler appears on the market. Thus it should not be a lot of harm from this fix. This patch may not be enough. Users may wants to tweak their thermal_zone0 trip points, thus tuning fan rotation speed depending on cpu temperature. That can be done on the base of the folloving example: === example ========= # cpu temterature below 25 Celsius degrees, no rotation echo 25000 > /sys/class/thermal/thermal_zone0/trip_point_4_temp # cpu temperature in [25..32] Celsius degrees, normal rotation speed echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_3_temp # cpu temperature above 50 Celsius degrees, max rotation speed echo 50000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp ===================== Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> --- arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)