Force SPI PIO on MacBook8,1 so the built-in keyboard works - #9735
Force SPI PIO on MacBook8,1 so the built-in keyboard works#9735jeissonneira wants to merge 1 commit into
Conversation
The installer already loads applespi for this model, but DesignWare DMA on 00:15.0 never completes GSPI transfers, so the keyboard and trackpad time out with -110. Blacklist the builtin dw_dmac_pci initcall so spi-pxa2xx uses PIO, and default sleep to s2idle because deep/S3 wedges the same device until reboot.
|
Independent confirmation on a second MacBook8,1, plus some register-level measurements of why the DMA path is dead — in case they help the review or the upstream quirk. Setup: MacBook8,1 (A1534), Omarchy 4.0.0.alpha, kernel Result after cold boot: What the failure looks like at the register level (driver bound, applespi retrying, read from a small probe module):
Upstream is converging on the same answer: fourdollars' series "spi: pxa2xx: MacBook8,1 quirk, runtime PM, and LPSS S3 resume state fixes" (v14, 2026-07-18) adds the DMI quirk in-kernel. Until that reaches Arch's |
Summary
On MacBook8,1 (12-inch Early 2015) the installer already loads
applespiand the PXA SPI modules. That is not enough. The GSPI controller (00:15.4) does transfers through the companion DesignWare DMA engine (00:15.0), and on this board those DMA transfers never complete.applespitimes out with-110, IRQ 21 stays at zero, and the built-in keyboard and trackpad never work. #1954.Force the controller into PIO and it probes immediately.
dw_dmac_pciis builtin, so the switch is a kernel parameter:Deep/S3 then wedges the same SPI device until reboot, so sleep defaults to
s2idle.Same shape as the ASUS Panther Lake backlight leaf: detect the machine, write a Limine drop-in. No new package. No vendored C.
Changes
install/hardware/apple/fix-spi-keyboard.sh— on MacBook8,1 only, write/etc/limine-entry-tool.d/macbook81-spi-pio.conf. Other SPI MacBooks are unchanged.1788318101.shfor existing installs. Idempotent. Rebuilds the UKI. No-ops on anything that is not MacBook8,1.test/shell.d/macbook81-spi-pio-test.shTested
MacBook8,1 (A1534, Early 2015), Core M-5Y31, Omarchy 4.0.2, kernel 7.1.9-arch1-2. Keyboard and trackpad work at LUKS, at the login screen, and after lid close.
The same PIO cmdline is what matthiasjg documented on #1954; the original reporter and two other MacBook8,1s confirmed it.
Speakers, camera, and Bluetooth stay out of this PR.
Fixes #1954