diff --git a/fleet/ampere.yaml b/fleet/ampere.yaml new file mode 100644 index 0000000..7050096 --- /dev/null +++ b/fleet/ampere.yaml @@ -0,0 +1,83 @@ +# kernel-agent manifest for ampere (CoolPi GenBook / Rockchip RK3588) +# +# Status: minimal baseline established 2026-05-16 after the +# linux-rk3588-marfrit tip @ f8f3ad9 baseline produced a black-screen +# regression on ampere (display blank, software-state OK). Bisect +# narrowed the working baseline to mainline v7.0-rc3 + 3 settled +# patches: pwm15 pinctrl + pwm-fan thermal + RK806 system-power-controller. +# +# The suspend/resume + wakeup series (sleep fixes / patch 0010 family in +# misc_patches) is WORK-IN-PROGRESS and intentionally NOT included here +# until upstream-ready. +# +# Other linux-rk3588-marfrit commits (lid switch, USB-C PD, speaker, +# 8 cherry-picks from Shawn Lin / Cristian Ciocaltea / Sebastian Reichel +# / Pedro Alves) are also DEFERRED — one or more of them caused the +# black-screen regression and the offender hasn't been identified yet. + +host: ampere +arch: arm64 +soc: rockchip/rk3588 +board: coolpi-cm5-genbook +distro: archlinux-arm + +baseline: + tree: torvalds/linux + url: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git + ref: v7.0-rc3 + upstream_compat: linux-7.0 + +# Scope-tagged patch includes. Each entry resolves to +# patches//.../.patch in marfrit/kernel-agent. +# +# pwm15 patch is technically SoC-level (rk3588-extra-pinctrl.dtsi) but +# kept under board/coolpi-genbook/ for now because the only consumer in +# the fleet is ampere (boltzmann is rk3588 too but UEFI/edk2 boot, no +# pwm15 user). Move to patches/soc/rockchip/rk3588/ once a second +# consumer shows up. +includes: + - board/coolpi-genbook/0001-arm64-dts-rockchip-rk3588-Add-pwm15-pinctrl-entries.patch + - board/coolpi-genbook/0002-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-Add-pwm.patch + - board/coolpi-genbook/0003-arm64-dts-rockchip-rk3588-coolpi-cm5-fix-power-off-b.patch + +# Explicitly NOT included (decision logged): +# - misc_patches/genbook/kernel/0010 (sleep fixes / WIP — re-evaluate +# once Markus closes the suspend/resume thread) +# - lid switch / USB-C PD / speaker / Shawn Lin pcie3 phy series / +# Collabora clk/dts/dw-dp fixes / Sebastian Reichel hdmirx +# (all currently suspect for black-screen regression; re-bisect +# individually before re-adding) + +config: + source: /proc/config.gz on running ampere kernel (7.0.0-rc3-ARCH+) + strategy: snapshot, fold to baseline, accept-new with rationale on diff + +package: + name: linux-ampere-fourier + versioning: "${baseline_ref}.kafr${pkgrel}" # e.g. 7.0rc3.kafr1 + install_mode: alongside # coexists with arch_mainline label in /boot/firmware + conflicts: [] + provides: [] + kernel_suffix: -ampere-fourier # /boot/firmware/Image-7.0.0-rc3-ampere-fourier + bootloader: extlinux # /boot/firmware/extlinux/extlinux.conf + +verify: + bar1_ssh_heartbeat: required + bar2_pkg_version: required + bar3_dtb_match: + - pwm15 pinctrl entries present in rk3588-extra-pinctrl.dtsi + - pwm-fan node bound to pwm15 with cooling-cells in coolpi-cm5-genbook.dts + - rockchip,system-power-controller property on rk806 in coolpi-cm5.dtsi + bar4_per_patch_probe: + - display: SDDM greeter visible on eDP panel (visual, manual) + - power-off: `shutdown -h now` actually cuts RK806 rails (visual: backlight off + fan stops) + - pwm-fan: thermal_zone trip_points reachable, fan spins at high load + bar5_burn_in: skip # laptop, runtime not constant + +build_host: + primary: ampere # native build; native verifies toolchain identity with ARCH+ + fallback: boltzmann # rk3588 LXD host, larger CPU pool + # No distcc per feedback_kernel_agent_no_distcc.md (2026-05-09). + +backup: + pre_install: hertz:/sparfuxdata/kernel-agent-backups/ampere/${replaced_version}/ diff --git a/patches/board/coolpi-genbook/0001-arm64-dts-rockchip-rk3588-Add-pwm15-pinctrl-entries.patch b/patches/board/coolpi-genbook/0001-arm64-dts-rockchip-rk3588-Add-pwm15-pinctrl-entries.patch new file mode 100644 index 0000000..20fbc51 --- /dev/null +++ b/patches/board/coolpi-genbook/0001-arm64-dts-rockchip-rk3588-Add-pwm15-pinctrl-entries.patch @@ -0,0 +1,59 @@ +From 49b8b79c8359b5f49461eea0b51dc82fea1e816b Mon Sep 17 00:00:00 2001 +From: Markus Fritsche +Date: Thu, 16 Apr 2026 23:52:53 +0200 +Subject: [PATCH 1/3] arm64: dts: rockchip: rk3588: Add pwm15 pinctrl entries + +Add pinctrl entries for all four mux options of the RK3588 pwm15 +controller (m0-m3) to rk3588-extra-pinctrl.dtsi, marked with +/omit-if-no-ref/ so they are only compiled in when referenced. + +Generated-by: Claude Sonnet 4.6 +Signed-off-by: Markus Fritsche +--- + .../dts/rockchip/rk3588-extra-pinctrl.dtsi | 30 +++++++++++++++++++ + 1 file changed, 30 insertions(+) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3588-extra-pinctrl.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-extra-pinctrl.dtsi +index fb48ddc04bcb..a4fec1538858 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3588-extra-pinctrl.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3588-extra-pinctrl.dtsi +@@ -342,6 +342,36 @@ pwm7m3_pins: pwm7m3-pins { + }; + }; + ++ pwm15 { ++ /omit-if-no-ref/ ++ pwm15m0_pins: pwm15m0-pins { ++ rockchip,pins = ++ /* pwm15_ir_m0 */ ++ <3 RK_PC3 11 &pcfg_pull_none>; ++ }; ++ ++ /omit-if-no-ref/ ++ pwm15m1_pins: pwm15m1-pins { ++ rockchip,pins = ++ /* pwm15_ir_m1 */ ++ <4 RK_PB3 11 &pcfg_pull_none>; ++ }; ++ ++ /omit-if-no-ref/ ++ pwm15m2_pins: pwm15m2-pins { ++ rockchip,pins = ++ /* pwm15_ir_m2 */ ++ <1 RK_PC6 11 &pcfg_pull_none>; ++ }; ++ ++ /omit-if-no-ref/ ++ pwm15m3_pins: pwm15m3-pins { ++ rockchip,pins = ++ /* pwm15_ir_m3 */ ++ <1 RK_PD7 11 &pcfg_pull_none>; ++ }; ++ }; ++ + sdio { + /omit-if-no-ref/ + sdiom0_pins: sdiom0-pins { +-- +2.54.0 + diff --git a/patches/board/coolpi-genbook/0002-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-Add-pwm.patch b/patches/board/coolpi-genbook/0002-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-Add-pwm.patch new file mode 100644 index 0000000..99d0b6f --- /dev/null +++ b/patches/board/coolpi-genbook/0002-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-Add-pwm.patch @@ -0,0 +1,81 @@ +From ed8fd7da66575a255c34d70b1ded0eb917ae0a80 Mon Sep 17 00:00:00 2001 +From: Markus Fritsche +Date: Thu, 16 Apr 2026 23:52:53 +0200 +Subject: [PATCH 2/3] arm64: dts: rockchip: rk3588-coolpi-cm5-genbook: Add + pwm-fan with thermal cooling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The CoolPi CM5 GenBook has a PWM-controlled fan connected to pwm15 +(mux m3, GPIO1_D7). Add a pwm-fan node driven at 20 kHz (50000 ns +period) with six cooling levels, and wire it into the package thermal +zone with two trip points at 55 °C and 65 °C. + +Generated-by: Claude Sonnet 4.6 +Signed-off-by: Markus Fritsche +--- + .../rockchip/rk3588-coolpi-cm5-genbook.dts | 43 +++++++++++++++++++ + 1 file changed, 43 insertions(+) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dts b/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dts +index 738637ecaf55..9819ac482855 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dts +@@ -23,6 +23,13 @@ backlight: backlight { + pwms = <&pwm6 0 25000 0>; + }; + ++ fan: pwm-fan { ++ compatible = "pwm-fan"; ++ #cooling-cells = <2>; ++ pwms = <&pwm15 0 50000 0>; ++ cooling-levels = <1 50 100 150 200 254>; ++ }; ++ + battery: battery { + compatible = "simple-battery"; + charge-full-design-microamp-hours = <9800000>; +@@ -443,3 +450,39 @@ vp2_out_edp1: endpoint@ROCKCHIP_VOP2_EP_EDP1 { + remote-endpoint = <&edp1_in_vp2>; + }; + }; ++ ++&package_thermal { ++ polling-delay = <1000>; ++ ++ trips { ++ package_fan0: package-fan0 { ++ temperature = <55000>; ++ hysteresis = <2000>; ++ type = "active"; ++ }; ++ ++ package_fan1: package-fan1 { ++ temperature = <65000>; ++ hysteresis = <2000>; ++ type = "active"; ++ }; ++ }; ++ ++ cooling-maps { ++ map0 { ++ trip = <&package_fan0>; ++ cooling-device = <&fan THERMAL_NO_LIMIT 2>; ++ }; ++ ++ map1 { ++ trip = <&package_fan1>; ++ cooling-device = <&fan 3 THERMAL_NO_LIMIT>; ++ }; ++ }; ++}; ++ ++&pwm15 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwm15m3_pins>; ++ status = "okay"; ++}; +-- +2.54.0 + diff --git a/patches/board/coolpi-genbook/0003-arm64-dts-rockchip-rk3588-coolpi-cm5-fix-power-off-b.patch b/patches/board/coolpi-genbook/0003-arm64-dts-rockchip-rk3588-coolpi-cm5-fix-power-off-b.patch new file mode 100644 index 0000000..d4f6e88 --- /dev/null +++ b/patches/board/coolpi-genbook/0003-arm64-dts-rockchip-rk3588-coolpi-cm5-fix-power-off-b.patch @@ -0,0 +1,40 @@ +From 0ce6ef5d48f2a557b5f39b9cf10903e46c0b55e9 Mon Sep 17 00:00:00 2001 +From: Markus Fritsche +Date: Thu, 16 Apr 2026 23:52:53 +0200 +Subject: [PATCH 3/3] arm64: dts: rockchip: rk3588-coolpi-cm5: fix power-off by + enabling RK806 as system power controller +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Without the system-power-controller property the rk8xx-core driver never +registers its sys_off handler (rk808_power_off), which writes the DEV_OFF +bit to RK806_SYS_CFG3 at shutdown time. As a result the RK806 PMIC does +not cut power and the board remains partially active after "poweroff" — +the heartbeat LED stops but internal activity continues. + +All other mainline RK3588 boards that use the RK806 carry this property +(NanoPC-T6, Rock 5A, OrangePi 5, Jaguar, ...). Add it to the CoolPi CM5 +PMIC node to restore proper power-off behaviour. + +Generated-by: Claude Sonnet 4.6 +Signed-off-by: Markus Fritsche +--- + arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi +index b07543315f87..83b72ec95f5a 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi +@@ -346,6 +346,7 @@ pmic@0 { + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; + gpio-controller; + #gpio-cells = <2>; ++ system-power-controller; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, + <&rk806_dvs2_null>, <&rk806_dvs3_null>; +-- +2.54.0 +