From dc91ec0391879cf479705b7ebb23b4e323b9711d Mon Sep 17 00:00:00 2001 From: Charlie Carpinteri Date: Sun, 19 Apr 2026 13:00:47 +1000 Subject: [PATCH] rockchip-rk3588: add Rock 5 ITX PWM fan control overlay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Rock 5 ITX DTB defines the PWM fan as /pwm-fan without a labelled phandle, so the existing rockchip-rk3588-fanctrl overlay (which targets &fan) has no effect on this board. The default cooling-levels in the Rock 5 ITX DTB start at 0, which means the fan receives no PWM signal at idle and falls back to running at full speed regardless of temperature. This overlay patches /pwm-fan directly using target-path, replacing the cooling-levels with a curve that starts at 1 (near-silent at idle) and adds rockchip,temp-trips to ramp the fan gradually across four steps at 45°C, 50°C, 55°C, and 65°C. Tested on Rock 5 ITX running Armbian with linux-vendor-rk35xx 6.1. --- .../kernel/archive/rockchip64-6.12/overlay/Makefile | 1 + .../rockchip64-6.12/overlay/README.rockchip-overlays | 12 ++++++++++++ .../overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso | 12 ++++++++++++ .../kernel/archive/rockchip64-6.18/overlay/Makefile | 1 + .../overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso | 12 ++++++++++++ patch/kernel/archive/rockchip64-7.0/overlay/Makefile | 1 + .../overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso | 12 ++++++++++++ 7 files changed, 51 insertions(+) create mode 100644 patch/kernel/archive/rockchip64-6.12/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso create mode 100644 patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso create mode 100644 patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso diff --git a/patch/kernel/archive/rockchip64-6.12/overlay/Makefile b/patch/kernel/archive/rockchip64-6.12/overlay/Makefile index a0f92f1822..1850f199e4 100644 --- a/patch/kernel/archive/rockchip64-6.12/overlay/Makefile +++ b/patch/kernel/archive/rockchip64-6.12/overlay/Makefile @@ -56,6 +56,7 @@ dtbo-$(CONFIG_ARCH_ROCKCHIP) += \ rockchip-rk3568-hk-uart1.dtbo \ rockchip-rk3568-rock-3a-disable-uart2.dtbo \ rockchip-rk3588-fanctrl.dtbo \ + rockchip-rk3588-rock-5-itx-pwm-fan.dtbo \ rockchip-rk3588-sata0.dtbo \ rockchip-rk3588-sata1.dtbo \ rockchip-rk3588-sata2.dtbo \ diff --git a/patch/kernel/archive/rockchip64-6.12/overlay/README.rockchip-overlays b/patch/kernel/archive/rockchip64-6.12/overlay/README.rockchip-overlays index a0cc179c15..094d908044 100644 --- a/patch/kernel/archive/rockchip64-6.12/overlay/README.rockchip-overlays +++ b/patch/kernel/archive/rockchip64-6.12/overlay/README.rockchip-overlays @@ -292,3 +292,15 @@ Some NanoPC-T6 boards use a A3A444 eMMC chip. Under heavy I/O load when running in HS400 mode, this will often result in I/O errors. Reducing the eMMC frequency from the default 200000000 Hz to 150000000 Hz improves stability and eliminates the I/O errors. + +********************************** +Details for Rock 5 ITX overlays: + +### rockchip-rk3588-rock-5-itx-pwm-fan + +The Rock 5 ITX DTB defines the fan as a /pwm-fan node without a labelled phandle, +so the generic rockchip-rk3588-fanctrl overlay (which targets &fan) does not apply. +This overlay patches the /pwm-fan node directly, fixing the default cooling-levels +which start at 0 — causing the fan to receive no PWM signal at idle and default to +full speed. The corrected curve starts at 1 (near-silent) and ramps through four +steps tied to temperature trip points (45°C / 50°C / 55°C / 65°C). diff --git a/patch/kernel/archive/rockchip64-6.12/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso b/patch/kernel/archive/rockchip64-6.12/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso new file mode 100644 index 0000000000..09baea31a3 --- /dev/null +++ b/patch/kernel/archive/rockchip64-6.12/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target-path = "/pwm-fan"; + __overlay__ { + cooling-levels = <1 64 128 192 255>; + rockchip,temp-trips = <45000 1 50000 2 55000 3 65000 4>; + }; + }; +}; diff --git a/patch/kernel/archive/rockchip64-6.18/overlay/Makefile b/patch/kernel/archive/rockchip64-6.18/overlay/Makefile index b6e1105266..fe615d57f3 100644 --- a/patch/kernel/archive/rockchip64-6.18/overlay/Makefile +++ b/patch/kernel/archive/rockchip64-6.18/overlay/Makefile @@ -67,6 +67,7 @@ dtbo-$(CONFIG_ARCH_ROCKCHIP) += \ rockchip-rk3568-hk-uart1.dtbo \ rockchip-rk3568-rock-3a-disable-uart2.dtbo \ rockchip-rk3588-fanctrl.dtbo \ + rockchip-rk3588-rock-5-itx-pwm-fan.dtbo \ rockchip-rk3588-sata0.dtbo \ rockchip-rk3588-sata1.dtbo \ rockchip-rk3588-sata2.dtbo \ diff --git a/patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso b/patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso new file mode 100644 index 0000000000..09baea31a3 --- /dev/null +++ b/patch/kernel/archive/rockchip64-6.18/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target-path = "/pwm-fan"; + __overlay__ { + cooling-levels = <1 64 128 192 255>; + rockchip,temp-trips = <45000 1 50000 2 55000 3 65000 4>; + }; + }; +}; diff --git a/patch/kernel/archive/rockchip64-7.0/overlay/Makefile b/patch/kernel/archive/rockchip64-7.0/overlay/Makefile index b6e1105266..fe615d57f3 100644 --- a/patch/kernel/archive/rockchip64-7.0/overlay/Makefile +++ b/patch/kernel/archive/rockchip64-7.0/overlay/Makefile @@ -67,6 +67,7 @@ dtbo-$(CONFIG_ARCH_ROCKCHIP) += \ rockchip-rk3568-hk-uart1.dtbo \ rockchip-rk3568-rock-3a-disable-uart2.dtbo \ rockchip-rk3588-fanctrl.dtbo \ + rockchip-rk3588-rock-5-itx-pwm-fan.dtbo \ rockchip-rk3588-sata0.dtbo \ rockchip-rk3588-sata1.dtbo \ rockchip-rk3588-sata2.dtbo \ diff --git a/patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso b/patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso new file mode 100644 index 0000000000..09baea31a3 --- /dev/null +++ b/patch/kernel/archive/rockchip64-7.0/overlay/rockchip-rk3588-rock-5-itx-pwm-fan.dtso @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target-path = "/pwm-fan"; + __overlay__ { + cooling-levels = <1 64 128 192 255>; + rockchip,temp-trips = <45000 1 50000 2 55000 3 65000 4>; + }; + }; +};