Message ID | 20240125-rk-dts-additions-v1-3-5879275db36f@gmail.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-37651-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2553:b0:103:945f:af90 with SMTP id p19csp1239311dyi; Wed, 24 Jan 2024 12:32:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IEABcqao7k0+ZaYNWCv6J7giW5c1TmVNGjlWcgk6Drj7f05I5FzUEKkZFp3lex7q9ItTuJB X-Received: by 2002:aa7:d816:0:b0:559:f2ad:ae4b with SMTP id v22-20020aa7d816000000b00559f2adae4bmr6369edq.35.1706128320041; Wed, 24 Jan 2024 12:32:00 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706128320; cv=pass; d=google.com; s=arc-20160816; b=OjfpJGxFm9zmh56EVAtyxBLT9EcV5jsqQ74LxpCmfFQ92wMFd3mOxkw+ICU3bGMyFP B+1vXA0Ifq9UcAqwngKiv7lTtk4kUgruQ1oZLUN+A4+x/BVr2Nj1seKYIHl8j3QqirmD KYlfUebGbhr1JJBJG+a5fzgP8dsn8vY9nR+za1eJgFkaHhwjGsyLgsQaWsUw+K8J1pAN kXN6betK9B5mFrcOGp65kfCiF1vnoEdAOekg2WbisctBNE7katCwba5NPA7pNUkbsdUx JmYz7IZ7MiTFwAKNbSy+zYvXkRZe2zgNUSHzXvBWKvCucjHxSRixBjLo5c05ZDdF8nOL MGkw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:date:from:dkim-signature; bh=ltvCgfghB12MtrfTdUe+z12yA+jwvK0290cBhszdhKI=; fh=e+eZh3cxOiCzk/JVMGKSAEtWws2dQPVeQjAasHSdJOE=; b=q0E3LbrpitkuG+Y6Xh8oWH6Ceq2ITLgqJYu+ykuaH3Cw+6GwFqMNeHxWfX/ShWMBYi FHV2SM1oeLvVcv8N+kp4QtT/BK3D6jNUdbWMZpQLAWRfweD3Sv2cRIYUnyz3xWsbiBMY GwHCbC5i2Rj4OHHZanes3C4LV1uer4VBCOtc+hSTiAHiBMQbXff7xHXu5zFJJoX1criu 2Sodbgqt/9XWSq2MMNaAZ+eFMRbq+7ZcRF+lp3rFi8JzN9xu8D4XkT3DwU4ZtfiJ1e3x sNFH9LCE4ZAulH3sPmvv/UBbtpY/Ahv9vw/tmOWoPj4u6GLm/PPuK6rtnqvxDtaLikEY cMww== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hzsdiqP1; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-37651-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-37651-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id ij14-20020a056402158e00b0055cc7f11282si955920edb.114.2024.01.24.12.31.59 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jan 2024 12:32:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-37651-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hzsdiqP1; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-37651-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-37651-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id A4E431F22D34 for <ouuuleilei@gmail.com>; Wed, 24 Jan 2024 20:31:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 395021353FD; Wed, 24 Jan 2024 20:30:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hzsdiqP1" Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD3ED1353E0; Wed, 24 Jan 2024 20:30:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706128243; cv=none; b=dPCkaKWdbGkpOE5Ve2LwQeoPYZhvvzdS/MrSaVpcMHxhHNRReaTtTjuxaDXoRtnzEt/6AMgKhqp19QIQkxhGX3BGfMTl3Q2sIq/mm+fHuKI+UgYgF/ZQzIOuhXDgDEw0Plem3P+gcWGcnL5s9zpkyp7CevdhCZ/EahOQSvdu6qw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706128243; c=relaxed/simple; bh=u4l0RsRj4668NcOaxKO+LZ3qtMcTAwoAKZZ3yHzWIOk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ks3IKjQKKralvwLpKXW/FY+Znjal9TEyStLZBPTaireXdxws+3huKCiqAN+cMeVreGAJYslyyZF0ZAJhun6xHBdDPt1cAcmiK712mkxKZetUNXGYxeytJQ6iMzf405nIf6XTXKR1OGHWql3k1qMKSFzHIAsasciEEydQxlo6M9c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hzsdiqP1; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-40e80046264so74403935e9.0; Wed, 24 Jan 2024 12:30:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706128240; x=1706733040; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ltvCgfghB12MtrfTdUe+z12yA+jwvK0290cBhszdhKI=; b=hzsdiqP1YI/5/jCP1yyUxoKHQAKbL2yOzvReS+fhDPRf/yQji1HFhg/reVtoErrCYE TO9BgozsFb3BQ74MZFuO1z378h2py5csHy+h9z/9gtmxEz2671p6vqLDEZRQfhpIcASv g0z5IENbwNZorCD6kzA0Xcprd7LHXZgLWs8Xcp6g8GyuMMHbVMkZogOcoLZ8qS3/Typo gWftR8Mm5NZlbY3p47Uuoj9TwZrRY39TwSIeP6Bgpbilq4FZEsKxlbyvD/DFNh7syiwC zpsvC0dizjB+6gLXIbjP1O4Z4Z94hWXDdqvu4Lc0lskhwB9KEymNPHcboz8W4EGMLjpQ xZyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706128240; x=1706733040; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ltvCgfghB12MtrfTdUe+z12yA+jwvK0290cBhszdhKI=; b=DoI73Qg0VK896zVQLvg2WjlSEjbkwFkNnjch/5MbuzNiYGorCSakCk6fqYES30BWLn 4uhEn+ZAJLDxnjzS3ndubuKviDC6Ku6h3PvjnYBQorThiPoEehXIJUfj2ZAcxmxCUIfR vztp1sWEbVQPcgmli7vmp3Klx4TkJCKmdOdV/pvcbpiCht7izmfN90dRcnjkOhfxs4Ni dVmWzj0PEGpbdvrh5HVqPZEfdNIyJ2KCUingJqHhwlUI8Kt/QaHXwX8SI+xDuA44nldO AKhX8lORv1HPicrlwGnTA+hPaa88WfKGO9Pq5wfabAmpink2jtD4KgN1n5N3jD7kTv3V Ereg== X-Gm-Message-State: AOJu0YzyZwTcQW3LHv2k5ptoovgK4Aa+BGt7rBd+zEiCyUKg+/LlTRmd b+EzXsA9frpv7Tm8SP7DePbvMk3QOgwOHbMqwWAKCwA90zG43jsN X-Received: by 2002:a05:600c:4f0e:b0:40e:66ee:2ba3 with SMTP id l14-20020a05600c4f0e00b0040e66ee2ba3mr1566084wmq.29.1706128240034; Wed, 24 Jan 2024 12:30:40 -0800 (PST) Received: from [172.30.32.188] ([2001:8f8:183b:50fb::d35]) by smtp.gmail.com with ESMTPSA id r15-20020a05600c458f00b0040d62f89381sm174073wmo.35.2024.01.24.12.30.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jan 2024 12:30:39 -0800 (PST) From: Alexey Charkov <alchark@gmail.com> Date: Thu, 25 Jan 2024 00:30:06 +0400 Subject: [PATCH 3/4] arm64: dts: rockchip: enable temperature driven fan control on Rock 5B Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240125-rk-dts-additions-v1-3-5879275db36f@gmail.com> References: <20240125-rk-dts-additions-v1-0-5879275db36f@gmail.com> In-Reply-To: <20240125-rk-dts-additions-v1-0-5879275db36f@gmail.com> To: Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, Heiko Stuebner <heiko@sntech.de> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>, Dragan Simic <dsimic@manjaro.org>, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Alexey Charkov <alchark@gmail.com> X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1706128223; l=1551; i=alchark@gmail.com; s=20240125; h=from:subject:message-id; bh=u4l0RsRj4668NcOaxKO+LZ3qtMcTAwoAKZZ3yHzWIOk=; b=K97GzVwWsCS1pD9bcfThrRGqutRbFk4tSHd9NZbQ0Ca+7A4u8xqC6RR67X2kmk1+K9HW1Hdqk tHPNbAcztwbCANcKaBcaZPMlrOCQljO+X12q73wj75Tqwx/+f/IIn/3 X-Developer-Key: i=alchark@gmail.com; a=ed25519; pk=xRO8VeD3J5jhwe0za0aHt2LDumQr8cm0Ls7Jz3YGimk= X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789005209661476952 X-GMAIL-MSGID: 1789005209661476952 |
Series |
[1/4] arm64: dts: rockchip: add rfkill node for M.2 Key E WiFi on rock-5b
|
|
Commit Message
Alexey Charkov
Jan. 24, 2024, 8:30 p.m. UTC
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(-)
Comments
On 24/01/2024 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> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> > --- > 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>; > + }; > + }; > +}; > + > &i2c0 { > pinctrl-names = "default"; > pinctrl-0 = <&i2c0m2_xfer>; > @@ -738,6 +757,10 @@ regulator-state-mem { > }; > }; > > +&tsadc { > + status = "okay"; > +}; > + > &uart2 { > pinctrl-0 = <&uart2m0_xfer>; > status = "okay"; >
Hello Alexey, 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. > &i2c0 { > pinctrl-names = "default"; > pinctrl-0 = <&i2c0m2_xfer>; > @@ -738,6 +757,10 @@ regulator-state-mem { > }; > }; > > +&tsadc { > + status = "okay"; > +}; > + > &uart2 { > pinctrl-0 = <&uart2m0_xfer>; > status = "okay";
Hello Alexey, 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. >> &i2c0 { >> pinctrl-names = "default"; >> pinctrl-0 = <&i2c0m2_xfer>; >> @@ -738,6 +757,10 @@ regulator-state-mem { >> }; >> }; >> >> +&tsadc { >> + status = "okay"; >> +}; >> + >> &uart2 { >> pinctrl-0 = <&uart2m0_xfer>; >> status = "okay";
On Sun, Jan 28, 2024 at 12:27 AM Dragan Simic <dsimic@manjaro.org> wrote: > > Hello Alexey, Hello Dragan, > 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. 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? Best regards, Alexey
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.
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>; + }; + }; +}; + &i2c0 { pinctrl-names = "default"; pinctrl-0 = <&i2c0m2_xfer>; @@ -738,6 +757,10 @@ regulator-state-mem { }; }; +&tsadc { + status = "okay"; +}; + &uart2 { pinctrl-0 = <&uart2m0_xfer>; status = "okay";