[RFC PATCH v3 0/5] HID: spi-hid: add quad-SPI support for Romulus13

From: Jizhou Tong

Date: Thu Nov 05 2026 - 14:21:27 EST


Hi Jingyuan, Dale,

This RFC adds quad-SPI support for the Surface Laptop 7 13.8-inch
(Romulus13) touchpad to Jingyuan's v7 driver [1], on top of the two reset
GPIO error fixes sent separately.

It adds aligned transport buffers, spi-mem 1-4-4 transfers, bounded input
fragment assembly, and Romulus match data. After a device reset, Romulus
recreates the HID device so iptsd reapplies the touchpad mode without
restarting iptsd. Single-lane devices retain their ordinary SPI transfers.

Following Conor's review [2], the compatible and quad-width constraints
now extend hid-over-spi.yaml. There is no separate Romulus binding or
redundant declaration of the globally allowed pinctrl properties.

The final driver source matches the SPI-HID source in my tested downstream
SL7 kernel. Touchpad input and suspend/resume work there with the downstream
Qualcomm GENI/GPI QSPI controller and board changes. Those dependencies
are being prepared separately from this HID transport RFC.

The core, ACPI and OF modules build with W=1 against the prepared SL7
kernel build. Software tests cover header and fragment bounds, DMA buffer
alignment and allocation failures, SPI/QSPI transfer phases, reset errors,
and resume/re-probe ordering. The common binding passes schema validation
and compiled positive/negative examples, including both IRQ spellings.

Changes since v2:
- Rebase onto v7's compatible data, descriptor and PM handling.
- Drop the readiness/error-counter ABI; keep v7's removal of counters.
- Extend the common binding and remove redundant pinctrl declarations.
- Keep quad-only output framing checks out of the single-lane path.

[1] https://lore.kernel.org/all/20261024-send-upstream-v7-0-abad13174b43@xxxxxxxxxxxx/
[2] https://lore.kernel.org/all/20261028-punctured-flagpole-c7ec4cfc4609@spud/

Jizhou Tong (5):
HID: spi-hid: isolate DMA transfers from protocol buffers
HID: spi-hid: add spi-mem quad-SPI transfers
HID: spi-hid: assemble bounded fragmented input reports
dt-bindings: input: hid-over-spi: add the Surface Laptop 7 touchpad
HID: spi-hid: support the Romulus13 QSPI touchpad

.../bindings/input/hid-over-spi.yaml | 40 ++++
drivers/hid/spi-hid/Kconfig | 2 +-
drivers/hid/spi-hid/spi-hid-acpi.c | 26 +--
drivers/hid/spi-hid/spi-hid-core.c | 183 +++++++++++++++---
drivers/hid/spi-hid/spi-hid-core.h | 8 +
drivers/hid/spi-hid/spi-hid-of.c | 44 +++--
drivers/hid/spi-hid/spi-hid.h | 8 +-
7 files changed, 249 insertions(+), 62 deletions(-)


base-commit: ee9c669f9bf5fd2c24206746ded9382fe810df89
prerequisite-patch-id: b401890d766019f0677a572f18bb389cd8827721
prerequisite-patch-id: beaf91cb29f3a735559a3251092ac0ac17810b10
prerequisite-patch-id: e7eba48cebafeee52eae204c950d7c4f8386f0bd
prerequisite-patch-id: 41ca1ba441d0246d5bf6a4befb26b1c65a596b95
prerequisite-patch-id: 84023dc857708fbb763a889ac060acc7d4387264
prerequisite-patch-id: f9b381e783ceb6b608c27e3b6299c591ac9be769
prerequisite-patch-id: ae5c9959b2923b37a5a650f04e93c662b9e10592
prerequisite-patch-id: 44a8965a58c0bfb0d5cf758790f407d136451956
prerequisite-patch-id: 207558a5e93c1074b4dc1b568d70d62a9ffe542b
prerequisite-patch-id: 59919db0f4e3fbaa1908a0b311fcd53837c5aac3
prerequisite-patch-id: b3706d31329e8a5829627fd0eb795c24aeb389cd
prerequisite-patch-id: 24df0c559e4b401af9acd4bc7bad99dd4b4724d4
prerequisite-patch-id: 3163173e775b674a9f6b8b5f683e0a522e2ea4a0