linux-rockchip.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Dragan Simic <dsimic@manjaro.org>
To: Alexey Charkov <alchark@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Heiko Stuebner <heiko@sntech.de>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] arm64: dts: rockchip: enable temperature driven fan control on Rock 5B
Date: Mon, 29 Jan 2024 01:46:54 +0100	[thread overview]
Message-ID: <30c3afc28da0a241a6397b30d2d7a922@manjaro.org> (raw)
In-Reply-To: <CABjd4YxqarUCbZ-a2XLe3TWJ-qjphGkyq=wDnctnEhdoSdPPpw@mail.gmail.com>

Hello Alexey,

On 2024-01-28 21:08, Alexey Charkov wrote:
> On Sun, Jan 28, 2024 at 12:27 AM Dragan Simic <dsimic@manjaro.org> 
> wrote:
>> On 2024-01-26 00:13, Dragan Simic wrote:
>> > On 2024-01-24 21:30, Alexey Charkov wrote:
>> >> This enables thermal monitoring on Radxa Rock 5B and links the PWM
>> >> fan as an active cooling device managed automatically by the thermal
>> >> subsystem, with a target SoC temperature of 55C
>> >>
>> >> Signed-off-by: Alexey Charkov <alchark@gmail.com>
>> >> ---
>> >>  arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 25
>> >> ++++++++++++++++++++++++-
>> >>  1 file changed, 24 insertions(+), 1 deletion(-)
>> >>
>> >> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
>> >> b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
>> >> index 9b7bf6cec8bd..c4c94e0b6163 100644
>> >> --- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
>> >> +++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
>> >> @@ -52,7 +52,7 @@ led_rgb_b {
>> >>
>> >>      fan: pwm-fan {
>> >>              compatible = "pwm-fan";
>> >> -            cooling-levels = <0 95 145 195 255>;
>> >> +            cooling-levels = <0 120 150 180 210 240 255>;
>> >>              fan-supply = <&vcc5v0_sys>;
>> >>              pwms = <&pwm1 0 50000 0>;
>> >>              #cooling-cells = <2>;
>> >> @@ -180,6 +180,25 @@ &cpu_l3 {
>> >>      cpu-supply = <&vdd_cpu_lit_s0>;
>> >>  };
>> >>
>> >> +&package_thermal {
>> >> +    polling-delay = <1000>;
>> >> +
>> >> +    trips {
>> >> +            package_fan: package-fan {
>> >> +                    temperature = <55000>;
>> >> +                    hysteresis = <2000>;
>> >> +                    type = "active";
>> >> +            };
>> >> +    };
>> >> +
>> >> +    cooling-maps {
>> >> +            map-fan {
>> >> +                    trip = <&package_fan>;
>> >> +                    cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>> >> +            };
>> >> +    };
>> >> +};
>> >
>> > It should be better to have two new trips and two new cooling maps
>> > defined, instead of having just one trip/map pair, like this:
>> >
>> > &package_thermal {
>> >       polling-delay = <1000>;
>> >
>> >       trips {
>> >               package_warm: package-warm {
>> >                       temperature = <55000>;
>> >                       hysteresis = <2000>;
>> >                       type = "active";
>> >               };
>> >
>> >               package_hot: package-hot {
>> >                       temperature = <65000>;
>> >                       hysteresis = <2000>;
>> >                       type = "active";
>> >               };
>> >       };
>> >
>> >       cooling-maps {
>> >               mapX {
>> >                       trip = <&package_warm>;
>> >                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
>> >               };
>> >
>> >               mapY {
>> >                       trip = <&package_hot>;
>> >                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
>> >               };
>> >       };
>> > };
>> >
>> > The idea behind this approach is to keep the fan spinning at the lowest
>> > available speed until the package temperature reaches the second trip's
>> > temperature level, at which point the fan starts ramping up.  An
>> > approach
>> > like this is already employed by the Pine64 RockPro64 SBC.
>> >
>> > This way, we'll be doing our best to keep the fan noise down;  of
>> > course, it will depend on the particular heatsink and fan combo how
>> > long the fan can be kept at the lowest speed, but we should aim at
>> > supporting as many different cooling setups as possible, and as
>> > well as possible, out of the box and with no additional tweaking
>> > required.
>> >
>> > Please notice "mapX" and "mapY" as the names of the additional
>> > cooling maps, where X and Y are simply the next lowest available
>> > indices, which is pretty much the usual way to name the additional
>> > cooling maps.
>> 
>> Just checking, have you seen this?  Quite a few messages were 
>> exchanged
>> on the same day, so just wanted to make sure you didn't miss this one.
> 
> Yes, thank you for pointing it out and following up.
> 
> I've been testing different setups to get my thoughts together on this
> one. Long story short, your suggested setup indeed makes the system
> quieter most of the time while still being safely far from hitting the
> throttling threshold, though it appears that the main influence is
> from the higher temperature value in the second trip (after which the
> fan accelerates) rather than from the presence of the first trip and
> the corresponding cooling map capped at the minimum-speed fan action.

Thank you for testing all this!

I see, but having a higher temperature defined in the second active
thermal trip is exactly the trick that should make cooling setups
  more quiet.  More precisely, the intention is to define a dual-trip
configuration that should make as many different active cooling setups
as quiet as possible, simply because some active cooling setups (and
some CPU loads) may result in crossing the second trip's temperature
less frequently than with the other setups.

> In my observation, the system rarely crosses the 55C threshold under
> partial load, and when the load is high (e.g. compiling stuff with 8
> concurrent jobs) it takes ~2 seconds to go from below the first trip
> point to above the second trip point, so the fan doesn't really get
> the chance to stay at its leisurely first state.
> 
> So frankly I'm inclined to leave one trip point here, and simply
> change its temperature threshold from 55C to 65C - just to keep it
> simple.
> 
> What do you think?

I'd much rather have two active thermal trips defined, simply because
a beefier heatsink, with much larger fin surface, may completely change
the behavior of the Rock 5B's active cooling.  Radxa already sells a
much larger heatsink, linked below, to which a fan can rather easily be
attached, or a fan can be used to provide some airflow inside the case
into which the board is mounted.

- 
https://shop.allnetchina.cn/products/rock5-b-passive-heat-sink?variant=39895250239590

In other words, having two active thermal trips at 55 oC and 65 oC does
not hurt the acoustics and the thermal performance of the active
cooling setup you're using, compared with having just one active trip
at 65 oC, while the dual-trip configuration can help with other active
cooling setups that are different from yours.  It's a win-win.

I hope you agree.

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2024-01-29  0:47 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-24 20:30 [PATCH 0/4] RK3588 and Rock 5B dts additions: thermal, OPP, rfkill and fan Alexey Charkov
2024-01-24 20:30 ` [PATCH 1/4] arm64: dts: rockchip: add rfkill node for M.2 Key E WiFi on rock-5b Alexey Charkov
2024-01-24 20:30 ` [PATCH 2/4] arm64: dts: rockchip: enable built-in thermal monitoring on rk3588 Alexey Charkov
2024-01-24 21:56   ` Daniel Lezcano
2024-01-25  8:26     ` Alexey Charkov
2024-01-25 10:02       ` Daniel Lezcano
2024-01-25 14:46         ` Alexey Charkov
2024-01-25 22:19       ` Dragan Simic
2024-01-25 13:34     ` Diederik de Haas
2024-01-24 20:30 ` [PATCH 3/4] arm64: dts: rockchip: enable temperature driven fan control on Rock 5B Alexey Charkov
2024-01-24 21:59   ` Daniel Lezcano
2024-01-25 23:13   ` Dragan Simic
2024-01-27 20:27     ` Dragan Simic
2024-01-28 20:08       ` Alexey Charkov
2024-01-29  0:46         ` Dragan Simic [this message]
2024-01-24 20:30 ` [PATCH 4/4] arm64: dts: rockchip: Add OPP data for CPU cores on RK3588 Alexey Charkov
2024-01-25  9:30   ` Daniel Lezcano
2024-01-25 10:17     ` Alexey Charkov
2024-01-26  6:32     ` Dragan Simic
2024-01-26  6:44       ` Alexey Charkov
2024-01-26  7:04         ` Dragan Simic
2024-01-26  7:30           ` Alexey Charkov
2024-01-26  7:49             ` Dragan Simic
2024-01-26 12:56               ` Daniel Lezcano
2024-01-26 13:44                 ` Alexey Charkov
2024-01-26 20:33                   ` Dragan Simic
2024-01-27 19:41                     ` Alexey Charkov
2024-01-28  3:35                       ` Dragan Simic
2024-01-28 19:14                         ` Alexey Charkov
2024-01-29  0:09                           ` Dragan Simic
2024-01-29  7:39                             ` Dragan Simic
2024-01-28 15:06                       ` Daniel Lezcano
2024-01-28 19:32                         ` Alexey Charkov
2024-01-26 20:04                 ` Dragan Simic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=30c3afc28da0a241a6397b30d2d7a922@manjaro.org \
    --to=dsimic@manjaro.org \
    --cc=alchark@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=heiko@sntech.de \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).