* [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and WWAN overlay for Radxa ROCK 3B
@ 2026-09-25 8:02 Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 1/2] arm64: dts: rockchip: Add PWM fan to " Adam Wermuth
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Adam Wermuth @ 2026-09-25 8:02 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Jonas Karlman, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Adam Wermuth
The Radxa ROCK 3B has a 2-pin fan header and an M.2 B-key slot
intended for 4G/5G modules, neither of which is currently described
in the mainline device tree.
Patch 1 adds the PWM fan and ties it to the CPU thermal zone. Patch 2
adds a device tree overlay for the B-key slot, enabling the USB 2.0
host controller serving the slot as well as its power, RESET# and
W_DISABLE1# controls.
Pin assignments were checked against the ROCK 3B V1.51 schematic.
Tested on a ROCK 3B with a SIMCom SIM7600G-H module and a 5V fan,
running Linux 6.12 (OpenWrt) with the same changes applied.
Changes in v2:
- Move the USB host1 enablement and the WWAN slot handling into a new
rk3568-rock-3b-wwan.dtso overlay, as the slot is not always
populated (Jonas)
- Drop phy-supply from usb2phy1_host, as the M.2 slot has no VBUS
- Put the fan patch first, as it no longer depends on the others
v1: https://lore.kernel.org/linux-rockchip/20260924071445.441822-1-adam@wermuth.pl/
Adam Wermuth (2):
arm64: dts: rockchip: Add PWM fan to Radxa ROCK 3B
arm64: dts: rockchip: Add WWAN overlay for Radxa ROCK 3B
arch/arm64/boot/dts/rockchip/Makefile | 5 ++
.../dts/rockchip/rk3568-rock-3b-wwan.dtso | 65 +++++++++++++++++++
.../boot/dts/rockchip/rk3568-rock-3b.dts | 51 +++++++++++++++
3 files changed, 121 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-rock-3b-wwan.dtso
base-commit: 23d8f49fcae5d72b77744c7f349c12462c3bb748
--
2.43.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] arm64: dts: rockchip: Add PWM fan to Radxa ROCK 3B
2026-09-25 8:02 [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and WWAN overlay for Radxa ROCK 3B Adam Wermuth
@ 2026-09-25 8:02 ` Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 2/2] arm64: dts: rockchip: Add WWAN overlay for " Adam Wermuth
2026-09-30 18:49 ` (subset) [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and " Heiko Stuebner
2 siblings, 0 replies; 4+ messages in thread
From: Adam Wermuth @ 2026-09-25 8:02 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Jonas Karlman, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Adam Wermuth
The ROCK 3B has a 2-pin fan header powered from vcc5v0_sys and
switched by a MOSFET driven from PWM8 (pwm8m0 pins). Enable the PWM
controller, describe the fan as a pwm-fan cooling device and add
active trip points to the CPU thermal zone:
- 50 C: fan at 25%
- 60 C: fan at 50-75%
- 70 C: fan at 100%
each with 5 C hysteresis. The existing passive and critical trip
points are left unchanged.
Signed-off-by: Adam Wermuth <adam@wermuth.pl>
---
.../boot/dts/rockchip/rk3568-rock-3b.dts | 51 +++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts b/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts
index 149a5306bb03..b9f09087b176 100644
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts
@@ -24,6 +24,14 @@ chosen {
stdout-path = "serial2:1500000n8";
};
+ fan: fan {
+ compatible = "pwm-fan";
+ cooling-levels = <0 64 128 192 255>;
+ fan-supply = <&vcc5v0_sys>;
+ pwms = <&pwm8 0 10000 0>;
+ #cooling-cells = <2>;
+ };
+
hdmi-con {
compatible = "hdmi-connector";
type = "a";
@@ -186,6 +194,45 @@ &cpu3 {
cpu-supply = <&vdd_cpu>;
};
+&cpu_thermal {
+ trips {
+ cpu_fan0: cpu-fan0 {
+ hysteresis = <5000>;
+ temperature = <50000>;
+ type = "active";
+ };
+
+ cpu_fan1: cpu-fan1 {
+ hysteresis = <5000>;
+ temperature = <60000>;
+ type = "active";
+ };
+
+ cpu_fan2: cpu-fan2 {
+ hysteresis = <5000>;
+ temperature = <70000>;
+ type = "active";
+ };
+ };
+
+ cooling-maps {
+ map1 {
+ trip = <&cpu_fan0>;
+ cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+ };
+
+ map2 {
+ trip = <&cpu_fan1>;
+ cooling-device = <&fan 2 3>;
+ };
+
+ map3 {
+ trip = <&cpu_fan2>;
+ cooling-device = <&fan 4 THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
&gmac0 {
assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&cru CLK_MAC0_2TOP>;
@@ -670,6 +717,10 @@ &pmu_io_domains {
status = "okay";
};
+&pwm8 {
+ status = "okay";
+};
+
&saradc {
vref-supply = <&vcca_1v8>;
status = "okay";
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] arm64: dts: rockchip: Add WWAN overlay for Radxa ROCK 3B
2026-09-25 8:02 [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and WWAN overlay for Radxa ROCK 3B Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 1/2] arm64: dts: rockchip: Add PWM fan to " Adam Wermuth
@ 2026-09-25 8:02 ` Adam Wermuth
2026-09-30 18:49 ` (subset) [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and " Heiko Stuebner
2 siblings, 0 replies; 4+ messages in thread
From: Adam Wermuth @ 2026-09-25 8:02 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Jonas Karlman, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Adam Wermuth
The M.2 B-key slot on the ROCK 3B is intended for 4G/5G modules and
is not always populated. Add a device tree overlay which enables the
slot when a module is fitted:
- The USB 2.0 data lines of the slot are routed to USB2_HOST3, served
by usb_host1_ehci/ohci through the host port of usb2phy1. The slot
has no VBUS, so no supply is attached to the PHY port.
- GPIO0_C6 (4G_PWREN_H) enables the 3.3V supply of the slot, which is
generated from vcc5v0_sys by a dedicated buck converter.
- GPIO0_D6 (4G_RESET) drives RESET# and GPIO1_B0 (4G_DISABLE) drives
W_DISABLE1# of the slot. Both are hogged in their inactive state.
Tested with a SIMCom SIM7600G-H module.
Signed-off-by: Adam Wermuth <adam@wermuth.pl>
---
arch/arm64/boot/dts/rockchip/Makefile | 5 ++
.../dts/rockchip/rk3568-rock-3b-wwan.dtso | 65 +++++++++++++++++++
2 files changed, 70 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-rock-3b-wwan.dtso
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index b677914cd3f1..8a1f24ccaa32 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -165,6 +165,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3b.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3b-wwan.dtbo
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-display-vz.dtbo
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-io-expander.dtbo
@@ -300,6 +301,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-qnap-ts433-pcb-12-10.dtb
rk3568-qnap-ts433-pcb-12-10-dtbs := rk3568-qnap-ts433.dtb \
rk3568-qnap-ts433-pcb-12-10.dtbo
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3b-wwan.dtb
+rk3568-rock-3b-wwan-dtbs := rk3568-rock-3b.dtb \
+ rk3568-rock-3b-wwan.dtbo
+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-vz-2-uhd.dtb
rk3568-wolfvision-pf5-vz-2-uhd-dtbs := rk3568-wolfvision-pf5.dtb \
rk3568-wolfvision-pf5-display-vz.dtbo \
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-rock-3b-wwan.dtso b/arch/arm64/boot/dts/rockchip/rk3568-rock-3b-wwan.dtso
new file mode 100644
index 000000000000..73a19408d61c
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3b-wwan.dtso
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device tree overlay for a WWAN module in the M.2 B-key slot
+ * of the Radxa ROCK 3B.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+&{/} {
+ vcc3v3_wwan: regulator-3v3-vcc-wwan {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&wwan_pwren_h>;
+ regulator-name = "vcc3v3_wwan";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+};
+
+&gpio0 {
+ wwan-reset-hog {
+ gpio-hog;
+ gpios = <RK_PD6 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "wwan-reset";
+ };
+};
+
+&gpio1 {
+ wwan-disable-hog {
+ gpio-hog;
+ gpios = <RK_PB0 GPIO_ACTIVE_LOW>;
+ output-low;
+ line-name = "wwan-w-disable";
+ };
+};
+
+&pinctrl {
+ wwan {
+ wwan_pwren_h: wwan-pwren-h {
+ rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+};
+
+&usb_host1_ehci {
+ status = "okay";
+};
+
+&usb_host1_ohci {
+ status = "okay";
+};
+
+&usb2phy1_host {
+ status = "okay";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: (subset) [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and WWAN overlay for Radxa ROCK 3B
2026-09-25 8:02 [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and WWAN overlay for Radxa ROCK 3B Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 1/2] arm64: dts: rockchip: Add PWM fan to " Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 2/2] arm64: dts: rockchip: Add WWAN overlay for " Adam Wermuth
@ 2026-09-30 18:49 ` Heiko Stuebner
2 siblings, 0 replies; 4+ messages in thread
From: Heiko Stuebner @ 2026-09-30 18:49 UTC (permalink / raw)
To: Adam Wermuth
Cc: Heiko Stuebner, Jonas Karlman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, devicetree, linux-arm-kernel, linux-rockchip,
linux-kernel
On Fri, 25 Sep 2026 10:02:56 +0200, Adam Wermuth wrote:
> The Radxa ROCK 3B has a 2-pin fan header and an M.2 B-key slot
> intended for 4G/5G modules, neither of which is currently described
> in the mainline device tree.
>
> Patch 1 adds the PWM fan and ties it to the CPU thermal zone. Patch 2
> adds a device tree overlay for the B-key slot, enabling the USB 2.0
> host controller serving the slot as well as its power, RESET# and
> W_DISABLE1# controls.
>
> [...]
Applied, thanks!
[1/2] arm64: dts: rockchip: Add PWM fan to Radxa ROCK 3B
commit: afcfb6982a13fb4b3e0045f96c7aa6d64063a034
Only took patch1 as the discussion in v2 did not seem finished
and doing it correctly trumps intermediate solutions, especially
adding overlays we might have trouble removing in the future.
Best regards,
--
Heiko Stuebner <heiko@sntech.de>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-09-30 18:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-25 8:02 [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and WWAN overlay for Radxa ROCK 3B Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 1/2] arm64: dts: rockchip: Add PWM fan to " Adam Wermuth
2026-09-25 8:02 ` [PATCH v2 2/2] arm64: dts: rockchip: Add WWAN overlay for " Adam Wermuth
2026-09-30 18:49 ` (subset) [PATCH v2 0/2] arm64: dts: rockchip: Add PWM fan and " Heiko Stuebner
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).