Skip to content

Input: re-lift guarded SP11 QSPI and direct touch - #33

Merged
ooaklee merged 12 commits into
sp11/ubuntu-qcom-x1e-7.2.y-betafrom
sp11/beta-qspi-touch
Sep 2, 2026
Merged

Input: re-lift guarded SP11 QSPI and direct touch#33
ooaklee merged 12 commits into
sp11/ubuntu-qcom-x1e-7.2.y-betafrom
sp11/beta-qspi-touch

Conversation

@ooaklee

@ooaklee ooaklee commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Summary

Re-lift the guarded protocol-9 QSPI and MSHW0485 direct-touch stack from upstream-review PR jglathe#83 onto the current beta base, then retain the three 7.2.2 follow-up fixes for event-pointer width, paired live-mask reads, and runtime-resume state restoration.

Containment

  • protocol-9 completion workarounds require microsoft,denali
  • the touchscreen binds only through its OF compatible and known X1E/X1P product IDs
  • no userspace pen ABI is enabled in this topic
  • non-Denali GPI and GENI SPI paths retain their existing behavior

Provenance

The series preserves x1e-nixos and Justin White as authors for their substantive commits, with the remaining extraction and containment commits attributed to Leon Silcott. Full review evidence remains in jglathe#83.

Validation

  • beta integration validator: pass
  • strict checkpatch: 0 errors; warnings and checks remain visible
  • git diff --check: pass
  • the focused predecessor and 7.2.2 follow-up branches completed targeted build validation

Direct touch, suspend/resume, recovery, and X1E/X1P parity require testing from the complete beta build.

x1e-nixos and others added 12 commits September 2, 2026 19:35
Define the protocol selector used by the protocol-9 GENI QSPI engine.

Link: 19bed4c
Signed-off-by: x1e-nixos <noreply@scug.io>
Signed-off-by: Leon Silcott <leon@boasi.io>
Add the transfer-ring handling needed by the protocol-9 GENI engine
used for the Surface Pro 11 touchscreen. Keep the existing SPI, I2C,
and UART paths unchanged and preserve DMA_PRIVATE.

Re-lift the hardware-tested implementation onto the current 7.2.2 driver.

Link: 19bed4c
Signed-off-by: x1e-nixos <noreply@scug.io>
Signed-off-by: Leon Silcott <leon@boasi.io>
Document the opt-in controller property used by Microsoft Denali to select
the protocol-9 GENI firmware and QSPI GPI DMA channels.

Signed-off-by: Leon Silcott <leon@boasi.io>
Re-lift the Surface Pro 11 QSPI path onto the current GENI SPI driver.
Select it only when the Denali machine and qcom,geni-qspi property agree.
Leave the common controller path unchanged and preserve the existing GENI
tracepoints.

Support the paired TX-command/RX-data transaction used by MSHW0485 without
exposing the staging branch's laboratory controls or BIOS-reference API.

Link: 65ce06c
Link: b1075e6
Signed-off-by: Leon Silcott <leon@boasi.io>
Describe the OF-only HID-over-SPI touchscreen used by Microsoft Denali,
including its interrupt, reset, power, and SPI requirements.

Signed-off-by: Leon Silcott <leon@boasi.io>
Add the direct touch-input core for the HID-over-SPI controller found on
Microsoft Surface Pro 11. Bind only to microsoft,mshw0485 on Denali and use
the fixed GPIO power/reset sequence described by DT.

Keep the experimental policy alternatives fixed in-kernel. Do not expose
the staging diagnostic attributes or module parameters. Do not include the
separate pen, heat-frame misc device, or HIDRAW interfaces.

Link: b1075e6
Signed-off-by: Leon Silcott <leon@boasi.io>
Enable the protocol-9 QSPI engine and GPI DMA channels only on Microsoft
Denali, then describe the MSHW0485 touchscreen and its control GPIOs.

Link: b1075e6
Signed-off-by: Leon Silcott <leon@boasi.io>
Accept the Surface Pro 11 X1P touchscreen product ID alongside the existing
X1E product ID when validating the MSHW0485 device descriptor.

Link: 3fc7c52
Signed-off-by: Justin White <kyjus25@gmail.com>
Signed-off-by: Leon Silcott <leon@boasi.io>
The event ring is allocated and published before either QSPI channel
reaches ACTIVE_STATE. Using the active-channel predicate for the upper
doorbell write therefore publishes only the low half of a 64-bit DMA
address and can corrupt the completion stream.

Detect a configured Denali QSPI channel for event-ring publication, and
cache the root compatible so the SP11 completion workarounds remain
gated away from common GPI users.

Signed-off-by: Leon Silcott <leon@boasi.io>
The Denali event ring is configured before its QSPI channels enter ACTIVE_STATE and remains relevant while the pair transitions through recovery. Use the configured Denali QSPI predicate when reading the upper event-ring pointer half, matching its doorbell publication without changing common GPI clients.

Signed-off-by: Leon Silcott <leon@boasi.io>
The hardware-qualified SP11 path arms the broader QSPI completion masks around paired reads and restores the initial masks afterward. Do not promote the retired Windows-init experiment into generic QSPI transfers, where there is no matching restoration and completion state can leak into later reads.

Signed-off-by: Leon Silcott <leon@boasi.io>
Signed-off-by: Leon Silcott <leon@boasi.io>
@ooaklee
ooaklee merged commit 8c129b4 into sp11/ubuntu-qcom-x1e-7.2.y-beta Sep 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants