Skip to content

SP11: add protocol-9 QSPI and OF-only MSHW0485 touch - #83

Open
ooaklee wants to merge 9 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-qspi-touch-core
Open

SP11: add protocol-9 QSPI and OF-only MSHW0485 touch#83
ooaklee wants to merge 9 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-qspi-touch-core

Conversation

@ooaklee

@ooaklee ooaklee commented Aug 31, 2026

Copy link
Copy Markdown

Summary

  • re-lift protocol-9 QSPI support onto the current 7.2.2 GPI and GENI SPI drivers
  • add an OF-only direct-input driver and binding for the Surface Pro 11 MSHW0485 touchscreen
  • add the Denali QSPI DMA/controller/touch nodes for both supported SP11 variants
  • keep pen and every experimental userspace ABI out of this topic

Dependency and status

Review/merge after #82, the Denali DT baseline topic. This branch is nevertheless based directly on jg/ubuntu-qcom-x1e-7.2.y at 032e174490d2, so the shared-driver diff remains independently reviewable.

This is the release-line QSPI/touch extraction planned after the working staging correction in merged #81. It does not replay #81 or the staging branch's complete driver files. The PR remains a draft until this exact re-lift has been installed and tested on Surface Pro 11 hardware.

The default-off pen/HIDRAW/heat-frame work will follow as a separate, explicitly gated topic and is not present here.

Containment

  • GPI changes activate only for QCOM_GPI_QSPI; the existing SPI, I2C, and UART protocols are unchanged
  • GENI QSPI mode requires both the qcom,geni-qspi controller property and the microsoft,denali root compatible
  • the touch driver binds only through OF compatible microsoft,mshw0485 and rejects non-Denali machines
  • there is no ACPI match, SPI-ID fallback, module parameter, diagnostic sysfs attribute, misc device, HIDRAW endpoint, pen input, or /dev/g6ts-heat
  • the direct-touch binding and nodes describe only the fixed power/reset/interrupt wiring used on Denali

The current release base already contains DMA_PRIVATE and the GENI SPI tracepoints. This series preserves them and creates no intentional diff for either facility.

Provenance

The series keeps original authors where the source has a valid author sign-off:

  • x1e-nixos <noreply@scug.io> remains author of the QSPI DMA binding and current-tree GPI re-lift, derived from 19bed4c3b6c1
  • the GENI SPI change is a substantial current-tree re-lift authored and signed by Leon, with source credit to 65ce06ca2b00 and the final staging behavior in b1075e60d0b1; the older SPI source has no author DCO trailer, so none was invented
  • the direct touch core is a focused rewrite of the final phase55 behavior; the invalid placeholder author from that staging commit is not propagated
  • Justin White remains author of the X1P product-ID follow-up from 3fc7c5249f4a, with his original author date and sign-off preserved

Leon signs each rewritten/submitted commit as Leon Silcott <leon@boasi.io>.

Validation

  • git diff --check 032e174490d2..HEAD
  • strict checkpatch in Linux with python3-ply: no errors or checks; only the generic new-file/MAINTAINERS prompt for the new binding and driver, both already covered by the existing INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS entry
  • strict checkpatch with only that accounted FILE_PATH_CHANGES warning suppressed: no errors, warnings, or checks
  • ARM64 ubuntu_x1e_defconfig W=1 builds of drivers/dma/qcom/gpi.o, drivers/spi/spi-geni-qcom.o, and drivers/input/touchscreen/mshw0485_touch.o
  • DT binding/schema validation and yamllint for the new/updated schemas
  • qcom/x1e80100-microsoft-denali-oled.dtb builds and passes the selected checks
  • qcom/x1p64100-microsoft-denali.dtb builds and passes the selected checks
  • non-SP11 qcom/x1e80100-dell-xps13-9345.dtb builds successfully
  • source audit confirms DMA_PRIVATE and all existing GENI tracepoints remain intact
  • ABI audit confirms the touch core exposes none of the deferred pen/diagnostic interfaces

Hardware checks still required

  • boot this exact branch on an X1E or X1P Surface Pro 11
  • verify QSPI GPI descriptor mode and MSHW0485 initialization in the boot log
  • verify multitouch input, suspend/resume, and repeated touch-controller resets
  • verify a non-SP11 X1E system still boots with its normal GENI SPI/GPI paths; the Dell DTB build above is the available compile-time guard, not a hardware claim

x1e-nixos and others added 8 commits August 31, 2026 22:39
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>
@ooaklee
ooaklee marked this pull request as ready for review September 1, 2026 07:27
ooaklee added a commit to ooaklee/linux_ms_dev_kit-sp11 that referenced this pull request Sep 1, 2026
Record the two opt-in MSHW0485 feature gates in the qcom-x1e
annotations. Kconfig still defaults both options to n; this Ubuntu
flavour explicitly enables them for Denali, whose device tree must also
opt in before either endpoint registers.

Link: 4c2356a
Depends-on: jglathe#83
Signed-off-by: Leon Silcott <leon@boasi.io>
ooaklee added a commit to ooaklee/linux_ms_dev_kit-sp11 that referenced this pull request Sep 1, 2026
Integrate jglathe#83 for combined SP11 testing.
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>
ooaklee added a commit to ooaklee/linux_ms_dev_kit-sp11 that referenced this pull request Sep 2, 2026
@ooaklee

ooaklee commented Sep 2, 2026

Copy link
Copy Markdown
Author

Follow-up validation for the SP11 7.2.2 retrospective:

  • This PR head is now 4c9324a851a8.
  • The follow-up publishes the complete 64-bit Denali QSPI event-ring doorbell before channel activation; the completion workarounds remain scoped through microsoft,denali, in line with the PR SP11: integrate 7.2.x platform, IPTS pen, audio, camera, and power support #79 guardrail.
  • The combined demonstration target (sp11/ubuntu-qcom-x1e-7.2.y-target, b807d9e52ac9) and retrospective branch (sp11/ubuntu-qcom-x1e-7.2.y-target-fix-pt-2, dd928de48c03) include this change.
  • A clean Lexr container build from the pushed retrospective branch completed successfully as 7.2.2-jg-0sp11v2-qcom-x1e; both Denali DTBs and drivers/dma/qcom/gpi.ko.zst are present in the resulting bundle.

This is build/package validation. Touch and pen still require a physical boot/resume test on the Surface Pro 11.

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