Skip to content

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

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

ooaklee wants to merge 734 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

jglathe and others added 30 commits August 30, 2026 10:33
remove the delete-node statement, no longer needed

refers-to: d68d93c

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
fix typo

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Follow the example of other DP controllers and also eDP controller on
SC7280 and move mdss_dp3_out endpoint declaration to the SoC
DTSI. This slightly reduces the boilerplate in the platform DT files and
also reduces the difference between DP and eDP controllers.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
… lanes on type-c

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
At the moment, we indirectly rely on the boot firmware to set up the
pinctrl for the eDP HPD line coming from the internal display. If the boot
firmware does not configure the display (e.g. because a different display
is selected for output in the UEFI settings), then the display fails to
come up and there are several errors in the kernel log:

 [drm:dpu_encoder_phys_vid_wait_for_commit_done:544] [dpu error]vblank timeout: 80020041
 [drm:dpu_kms_wait_for_commit_done:524] [dpu error]wait for commit done returned -110
 [drm:dpu_encoder_frame_done_timeout:2715] [dpu error]enc40 frame done timeout
 ...

Fix this by adding the missing pinctrl for gpio119 (func1/edp0_hot and
bias-disable according to the ACPI DSDT), which is defined as
&edp0_hpd_default template in x1e80100.dtsi.

Fixes: 6516961 ("arm64: dts: qcom: Add support for X1-based Asus Zenbook A14")
Tested-by: Aleksandrs Vinarskis <alex.vinarskis@gmail.com>    # FHD OLED
Reviewed-by: Aleksandrs Vinarskis <alex.vinarskis@gmail.com>
Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
…for eDP HPD

At the moment, we indirectly rely on the boot firmware to set up the
pinctrl for the eDP HPD line coming from the internal display. If the boot
firmware does not configure the display (e.g. because a different display
is selected for output in the UEFI settings), then the display fails to
come up and there are several errors in the kernel log:

 [drm:dpu_encoder_phys_vid_wait_for_commit_done:544] [dpu error]vblank timeout: 80020041
 [drm:dpu_kms_wait_for_commit_done:524] [dpu error]wait for commit done returned -110
 [drm:dpu_encoder_frame_done_timeout:2715] [dpu error]enc40 frame done timeout
 ...

Fix this by adding the missing pinctrl for gpio119 (func1/edp0_hot and
bias-disable according to the ACPI DSDT), which is defined as
&edp0_hpd_default template in x1e80100.dtsi.

Fixes: 7d1cbe2 ("arm64: dts: qcom: Add X1E78100 ThinkPad T14s Gen 6")
Tested-by: Christopher Obbard <christopher.obbard@linaro.org>
Reviewed-by: Christopher Obbard <christopher.obbard@linaro.org>
Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on Lenovo Thinkpad T14s OLED
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
amend the following files for the new mdss_dp3_out definition:

arch/arm64/boot/dts/qcom/x1-acer-swift-14.dtsi
arch/arm64/boot/dts/qcom/x1-asus-vivobook-s15.dtsi
arch/arm64/boot/dts/qcom/x1-hp-omnibook-x14.dtsi
arch/arm64/boot/dts/qcom/x1p42100-lenovo-ideapad-5-2in1.dts
arch/arm64/boot/dts/qcom/x1p42100-lenovo-ideapad-slim5x.dts

refers-to: 24f44be

also add the edp0_hpd_default pinctrl on dp3.

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
slim5x: i2c0: correct pinctrl-0
5-2in1: add commented- out dedicated driver atna40ct01

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
… 3 15Q8X10

add x126100 chip designation and compatible
add initial device tree

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
…ncept ISO

needs to boot and have efivars - use Thinkpad T14s as compatible
also added Vivobook 15 x1p42100
also added HP Omnibook X 14-fe1
also added Thinkbook 16
also added Acer Swift Go 14
also added Surface Pro 12"

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
fix typos in tlmm definition

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
since calculating tlmmgpio was unsuccessfful, use the common known one: tlmm 3

remove all possible touchpads except for the actual detected one, @38
disable all sophisticated pinctrl, only on the i2c devices

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
shared with keyboard, f yeah

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
since its apparently shared with the keyboard, disable it for now
there needs to be a mux driver which does the handling for it

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
required for 6.17

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
add dependency for python3-libfdt
add stubble-script hwids/finddtbs.py as debian/scripts/misc/find-dtbs.py

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
… T14s

T14s is powerful, but the fan doesn't cool it enough for full load.
Tone it down to the experimentally determined limits
QMP Combo PHYs default to USB3DP lane routing, which can break static setups like
DP-to-HDMI bridges by misallocating lanes to USB3.
Revive the optional "qcom,combo-initial-mode" DT property [1] to explicitly
set the initial mode ("usb3dp", "dp", "usb3"). In static configs (no mode-switch
or orientation-switch props), honor it and skip lane inference to avoid overrides.
This simplifies HDMI enablement on undocumented Snapdragon X laptops while
preserving dynamic Type-C behavior.

[1]: https://lore.kernel.org/r/20250821-topic-x1e80100-hdmi-v1-2-f14ad9430e88@linaro.org

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Microsoft Surface Pro 12 is using this (well, my definition of it), changed to
Stephan Gerhold's one.

Remove the edp0_hpd_default reference from Thinkbook 16 as TLMM 119 is used by the HDMI bridge
as enable pin.

Link: https://lore.kernel.org/r/20250822-x1e80100-add-edp-hpd-v2-1-6310176239a6@linaro.org

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
…to dp controller, fix backlight"

now duplicate template, therefore remove it

Link: https://lore.kernel.org/r/20250822-x1e80100-add-edp-hpd-v2-1-6310176239a6@linaro.org

This reverts commit 22f5ffacc9cd4f5a5074b863223f80bc0f0d6b33.
…lt pinctrl

seems to be needed

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Relates-to commit 8c0b058.

Signed-off-by: James Addison <jay@jp-hosting.net>
adding the remaining commits of 20251101-asus_usbc_dp-v1-0-9fd4eb9935e8@hotmail.com
... but on the generalized x1-asus-vivobook-s15.dtsi

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
this works with Ubuntu kernel builds that don't know the SPRCHRGD in QSEECOM

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
ooaklee and others added 2 commits August 31, 2026 22:49
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 referenced this pull request in ooaklee/linux_ms_dev_kit-sp11 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.

@ooaklee

ooaklee commented Oct 4, 2026

Copy link
Copy Markdown
Author

Withdrawing this older 7.2.2-era submission version without merging while we continue qualification of the repaired 7.2.5 source on the fork. Current source/dependency review is tracked in ooaklee/linux_ms_dev_kit-sp11#51, ooaklee/linux_ms_dev_kit-sp11#61 and the combined candidate ooaklee/linux_ms_dev_kit-sp11#68. These are review vehicles, not an upstream-ready replacement or proof of equivalence to this old PR head.

The current combined source is 8ba2b75713feb5c72bbc11dd8cce4048e23cdeea, ABI 7.2.5-jg-0sp11v8-qcom-x1e; see the experimental v8 release. Ordinary-use results on one X1E/OLED unit are recorded, but the release remains experimental and the detailed hardware, lifecycle, deviation, CI and provenance gates in ooaklee/linux_ms_dev_kit-sp11#68 remain open.

This PR's branch and exact head 4c9324a851a8, authored history, discussion and test evidence are retained unchanged. Closing is administrative supersession, not a merge, an acceptance decision, or a claim that the old and current trees are identical. Beta and the repository default are unchanged.

The two additional deferred GPI corrections are explicitly deferred, not removed from an accepted fix list. V8's existing working GPI/touch implementation remains intact; the known residual risks and separate width-cast disposition are not waived.

The inherited QSPI/GENI/touch and opt-in pen-ABI prerequisites are carried by ooaklee/linux_ms_dev_kit-sp11#51. ooaklee/linux_ms_dev_kit-sp11#61 covers an additional GPI ordering port only; it does not replace the complete touch/pen series.

Fresh focused upstream submissions will preserve the contributing authors, source links and dependencies after exact combined acceptance and the appropriate shared-driver checks. Fork-only integration scripts/workflows and repository policy will be excluded. PR #79 remains open as the maintainer's coordination/provenance thread.

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.