Files
kernel-agent/patches/board/coolpi-cm5-genbook/0008-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-Add-lid-switch-and-USB3-PHY-lane-config.patch
T
claude-noether a6549605f0 phase 2 ask #1: bootstrap ampere kernel-agent recipe (CoolPi GenBook RK3588)
Brings the second customized fleet host into kernel-agent's
scope-tagged tree. Sibling PR coming in marfrit-packages with the
arch/linux-ampere-fourier/ PKGBUILD + flat patch + config + extlinux
hook (build-tree-ready form).

Issue #6 ask #1 only — VP9 enablement (ask #2) and AV1 dec integration
(ask #3) are explicitly deferred to a separate session per the user's
direction. The ampere.yaml manifest documents what's excluded and why.

## Patches promoted

Six patches from boltzmann:~/src/misc_patches/genbook/kernel/ get
scope-tagged into kernel-agent's tree:

  soc/rockchip/rk3588/
    0001-...Add-pwm15-pinctrl-entries.patch         (prereq for 0002)
  module/coolpi-cm5/
    0003-...Fix-power-off-by-enabling-RK806-as-system-power-controller.patch
  board/coolpi-cm5-genbook/
    0002-...Add-pwm-fan.patch
    0004-...Enable-speaker-output-via-audio-graph-card.patch
    0005-...Enable-USB-C-PD-charging-via-FUSB302.patch
    0008-...Add-lid-switch-and-USB3-PHY-lane-config.patch

Each new scope dir gets a README.md documenting what it carries and
why the scope-level granularity makes sense (pwm15 is SoC-wide,
RK806 power-off is SoM-level not board-level, the rest are
board-specific GenBook quirks).

Note on uncommitted-modifications flag in issue body: patches 0001-0004
have working-tree-only changes in misc_patches that fix malformed
'From: PATCH 000X/000Y' headers (placeholder text instead of an
RFC-2822 author identity). The working-tree versions with proper
'From: Markus Fritsche <mfritsche@localhost>' headers are what we ship
here — the unfixed-on-disk variants would fail patch -i header parsing
on stricter implementations and are user-side cleanup that hasn't been
committed back to misc_patches yet. Markus can commit the cleanup
to that personal repo separately; this PR's ingestion does not depend
on it.

Patches 0006 (HAVE_GCC_PLUGINS Kconfig), 0009 (Bluetooth btrtl),
0010 (multi-driver suspend/wakeup) from the misc_patches series are
intentionally NOT promoted here — they need different scope tags
(arch/arm64/, driver/bluetooth/, soc/rockchip/rk3588/ + driver/ split)
and will follow when their respective campaigns demand them. The
ampere.yaml manifest documents the explicit-defer for each.

## fleet/ampere.yaml manifest

Same shape as fleet/fresnel.yaml. Baseline pinned at marfrit/linux-rockchip
branch linux-rk3588-marfrit @ f8f3ad934433 (the working tree on
boltzmann; 18 commits ahead of v7.0-rc3, current 2026-05-15 tip).
Six scope-tagged patch includes per the apply-order in the package
(pwm15 pinctrl must precede the pwm-fan node consumer).

## ampere-specific bootloader path

Documented in manifest. ampere boots from /boot/firmware/ (vfat
partition on mmcblk0p1), not /boot/ (root partition) like fresnel.
The marfrit-packages PKGBUILD's extlinux-add hook needs to write to
/boot/firmware/extlinux/extlinux.conf, not /boot/extlinux/.

## ampere as 2nd aarch64 build host

Per the README update in PR #7, ampere is now a secondary aarch64
build host. The manifest's build_host: section pins ampere as
self-hosting primary for its own kernel, with boltzmann as secondary
and fermi as fallback. This is the first manifest that has its own
host listed as the primary build target — not ideologically pretty,
but pragmatic: native arch, same uarch, full RAM, no cross-compile
step, no need to wake another host.
2026-05-15 16:03:00 +00:00

95 lines
3.0 KiB
Diff

From: Markus Fritsche <mfritsche@localhost>
Date: Tue, 24 Mar 2026 00:00:00 +0000
Subject: [PATCH] arm64: dts: rockchip: rk3588-coolpi-cm5-genbook: add lid switch and USB3 PHY lane config
The GenBook laptop has two features missing from the mainline DTS:
1. Lid switch (MH248 hall-effect sensor on GPIO0_PB0)
The lid state is reported via a gpio-keys node using SW_LID / EV_SW.
The GPIO is active-low (low = lid closed) and pulled up.
wakeup-source is set so that opening the lid can wake the system from
suspend. A sensor pinctrl group is added for the GPIO configuration.
2. usbdp_phy1 lane mux (rockchip,dp-lane-mux = <2 3>)
The RK3588 usbdp_phy1 is a combo USB3 + DisplayPort PHY shared between
the USB3 host1 port (USB-A connector) and the DisplayPort output on the
GenBook board. Lanes 0+1 carry USB3 SuperSpeed to the USB-A socket;
lanes 2+3 are routed to the DP connector.
Without this property the phy-rockchip-usbdp driver selects
UDPHY_MODE_USB and configures all four lanes as USB3. That conflicts
with the physical routing on this board: lanes 2+3 are not connected to
the USB-A socket, so the 4-lane USB3 training fails silently and the
USB3 host1 DWC3 controller (usb_host1_xhci) cannot enumerate devices.
Setting rockchip,dp-lane-mux = <2 3> restricts USB3 to lanes 0+1,
matching the physical wiring, and enables correct SuperSpeed operation
on the USB-A port.
The USB2 EHCI host1 controller (usb_host1_ehci) shares the USB power
domain with usb_host1_xhci. A stalled USB3 DWC3 probe can delay
power-domain activation in a way that prevents the EHCI hub (which
carries the integrated webcam) from being enumerated. With the correct
lane mux both controllers probe cleanly and the webcam is detected.
Generated-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Markus Fritsche <mfritsche@localhost>
---
1 file changed, 23 insertions(+)
--- a/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dts
@@ -8,6 +8,7 @@
#include <dt-bindings/leds/common.h>
#include <dt-bindings/soc/rockchip,vop2.h>
+#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/usb/pd.h>
#include "rk3588-coolpi-cm5.dtsi"
@@ -166,6 +167,21 @@
pinctrl-0 = <&typec5v_pwren>;
vin-supply = <&vcc5v0_sys>;
};
+
+ gpio-key-lid {
+ compatible = "gpio-keys";
+ pinctrl-names = "default";
+ pinctrl-0 = <&mh248_irq_gpio>;
+
+ lid {
+ debounce-interval = <20>;
+ gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;
+ label = "Lid";
+ linux,code = <SW_LID>;
+ linux,input-type = <EV_SW>;
+ wakeup-source;
+ };
+ };
};
&edp1 {
@@ -431,6 +447,12 @@
rockchip,pins = <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
+
+ sensor {
+ mh248_irq_gpio: mh248-irq-gpio {
+ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
};
&pwm6 {
@@ -512,6 +534,7 @@
};
&usbdp_phy1 {
+ rockchip,dp-lane-mux = <2 3>;
status = "okay";
};