Skip to content

SP11: integrate 7.2.x enablement and G6 HEAT pen support + volume rocker - #79

Open
ooaklee wants to merge 1447 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:sp11/integration-7.2.x
Open

SP11: integrate 7.2.x enablement and G6 HEAT pen support + volume rocker#79
ooaklee wants to merge 1447 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:sp11/integration-7.2.x

Conversation

@ooaklee

@ooakleeooaklee commented Aug 21, 2026

Copy link
Copy Markdown

Summary

  • Introduces the SP11 in-tree enablement:
    • Touchscreen — in-tree phase55/MSHW0485 driver
    • Foundational pen support — G6 HEAT pen pipeline on top of the MSHW0485 G6 HEAT frame export (userspace pen processing)
    • Full volume rocker support — both volume-up and volume-down working on-device
    • Plus the wsa884x PA-recovery profile, DP/DWC3 fixes, and 7.2.x kernel/Ubuntu tracking
    • Power profilesplatform_profile framework now works on the DT-only SP11 (non-ACPI kobject fallback) with CPU frequency capping and a SP11 low-power default, hardware-verified on 7.2.0-jg-0sp11v8 (ooaklee PR Update on build methods, Ubuntu Mainline toolchain, Pop!-OS installer ISO #16, merged into this head)
    • Native audio — Golden v33 audio parity from geocausa: Windows-parity protected SP/SPVI graph with VI+CPS feedback (pull mode), TOP_CFG1 materialisation, WSA protection-clock lifecycle, and SoundWire feedback-port Offset2 parity, hardware-verified on 7.2.0-jg-0sp11v10 (ASoC: qcom: port SP11 Golden v33 audio parity from geocausa ooaklee/linux_ms_dev_kit-sp11#17, merged into this head)
  • This is a broad integration PR covering the SP11 platform stack, kernel/Ubuntu tracking, and the G6 HEAT userspace pen pipeline.

Highlights

  • G6 HEAT pen support in mshw0485:
    • input: touchscreen: mshw0485: dump G6 report descriptor for pen analysis — captures the G6 report layout used during pen analysis.
    • input: touchscreen: mshw0485: add pen support — adds the initial pen handling path.
    • input: touchscreen: mshw0485: add report diagnostics — adds diagnostics for incoming touchscreen/pen reports.
    • Input: mshw0485: add continuous Windows V06 heat feedback — maintains continuous V06 heat feedback.
    • Input: mshw0485: export G6 HEAT frames for pen processing — exports G6 HEAT frames for userspace pen processing.
  • X1 Elite / SP11 enablement includes the SP11/Denali device-tree work, the in-tree MSHW0485 touchscreen, volume-rocker wiring, SPI-HID support, display/DP updates, and the SP11 speaker-amplifier profile.
  • Kernel and Ubuntu integration tracks the 7.2.x line and its packaging/configuration work, including the 7.2-rc5-jg-0 changelog update, X1E configuration changes, ukify-related packaging, and named SP11 integration builds.
  • Power profile enablement (platform_profile on non-ACPI systems):
    • ACPI: platform_profile: support systems without ACPI — module-local kobject fallback so the framework loads on DT-only boots (acpi_disabled) and preserves the legacy /sys/firmware/acpi/platform_profile path ppd 0.30 hardcodes.
    • surface: platform_profile: add CPU frequency capping and SP11 low-power default — FREQ_QOS_MAX per SCMI cpufreq policy, late-policy notifier, SP11 default-low-power boot baseline, power_supply notifier framework, probe ordering fix.
    • Hardware-verified on 7.2.0-jg-0sp11v8-qcom-x1e: profiles list via the kernel driver, switching works (power-saver/performance/balanced), freq QoS active.
  • Other dominant areas are QCOM arm64 device trees, Ubuntu packaging/configuration, platform drivers, DRM/display, media/camera, networking/Bluetooth, and core-kernel integration.

Changes by area

CategoryCountRepresentative subjects
G6 HEAT pen support (mshw0485)5input: touchscreen: mshw0485: add report diagnostics
Input: mshw0485: add continuous Windows V06 heat feedback
Input: mshw0485: export G6 HEAT frames for pen processing
DRM/MSM and display65drm/msm: dp: Delay applying clock defaults until PHY is fully enabled
drm/msm/dp: Work around bogus maximum link rate
HID: spi-hid: add panel follower support
Media/camera/video36media: venus: core: Add SC8280XP resource struct
media: qcom: iris: fix variable mismatch
media: venus: guard SC8280XP resources when Iris is enabled
Input (excluding the G6 pen series)12arm64: qcom: x1-denali: add in-tree MSHW0485 touchscreen (phase55)
Merge sp11/qcom-x1e-7.2-rc5-touchscreen-intree into sp11/integration-7.2-rc5
checkpatch: fix style findings in in-tree touchscreen delta
Sound/audio11ASoC: codecs: lpass-va-macro: Switch to PM clock framework for runtime PM
ASoC: codecs: lpass-wsa-macro: Guard optional NPL clock rate programming
ASoC: wsa884x: recover PA faults and apply SP11 2S 4-ohm profile
arm64 DTS/DTB QCOM383arm64: dts: qcom: x1-denali: add volume rocker support
arm64: dts: qcom: x1-microsoft-denali: wire volume-down rocker to PM8550 GPIO 8
arm64: dts: qcom: x1-microsoft-denali: move autorepeat before key subnodes
Ubuntu config/changelog/ukify626Ubuntu: update changelog to 7.2-rc5-jg-0
debian.qcom-x1e: add SPI_HID annotations for touchscreen
debian.qcom-x1e: name SP11 v7 integration build
Net/Bluetooth18Bluetooth: hci_qca: Drop unused event during BT on
wifi: ath12k: Add support for disabling rfkill via devicetree
ath11k: add odd device id "0xffff 0x1103" for HP Omnibook 5 module
Drivers/platform enablement82usb: typec: mux: ps883x: add a delay after writing config regs
usb: dwc3: add reinit-phy-on-resume quirk
spi: geni-qcom: Add QSPI 1-4-4 mode support
Documentation1Documentation: Correction in HID output_report callback description.
Other/core kernel199ci: track sp11/integration-7.2.x only
Merge pull request #15 from ooaklee/sp11/ci-track-7.2.x-only
Merge sp11/integration-7.2.x-pen into sp11/integration-7.2.x

Notes

  • This integration line is intentionally broad and proposes the complete SP11 7.2.x line rather than a surgical subsystem change.
  • The base branch is 1 commit ahead; that base commit is not included in the proposed head.
  • The recent merged PRs in this repository are generally smaller and focused, so this description keeps the wider integration scope explicit and factual.

Validation

Links

jglatheand others added 30 commits August 7, 2026 22:23
…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>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
found in Lenovo Ideapad Slim 3 15Q8X10
raw EDID:
00 ff ff ff ff ff ff 00 09 e5 ea 0c 00 00 00 00
0c 22 01 04 a5 21 15 78 03 af e5 97 5e 58 92 28
1f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 9c 3e 80 c8 70 b0 3c 40 30 20
36 00 49 ce 10 00 00 1a 00 00 00 fd 00 28 3c 4c
4c 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 42
4f 45 20 43 51 0a 20 20 20 20 20 20 00 00 00 fc
00 4e 56 31 35 33 57 55 4d 2d 4e 34 31 0a 01 63
70 20 79 02 00 81 00 15 74 1a 00 00 03 01 28 3c
00 00 53 4a 53 4a 3c 00 00 00 00 80 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 e3 90
Detailed Timing Descriptors:
DTD 1:
1920x1200 60.002995 Hz 16:10 75.604 kHz 160.280000 MHz (329 mm x 206 mm)
Hfront 48 Hsync 32 Hback 120 Hpol P
Vfront 3 Vsync 6 Vback 51 Vpol N
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
…iants
LCD: Panel is CMN N140JCE-EL1, selecting the odd backlight PWM like on
ThinkBook 16 G7 QOY
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
like on Thinkbook 16 and Ideapad 5
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
seem to be problematic
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
as tested out by Anthony Ruhier and Val Packett [1]
[1]: https://lore.kernel.org/all/a5efb372-1a2a-4262-abc8-49bbeffa6961@packett.cool/
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
name change from x1e80100 and x1p42100
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
There is a small window where the device can suspend after
pm_runtime_enable() and before pm_runtime_forbid(), causing an
unnecessary suspend/resume cycle while the PHY is not yet registered.
Move pm_runtime_forbid() before pm_runtime_enable() to eliminate
this race.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
add Purwa-specific dts
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Put the firmware paths into the separate dts
also correct the gpu firmware path to consistent naming.
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
…ible for older kernels
Add this compatible to get efivars on kernels that are not aware
of the sp11 in scm.
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
rfkill should be disabled according to the Surface Pro 11's DSDT.
https://lore.kernel.org/all/20250113074810.29729-3-quic_lingbok@quicinc.com/
has added support to read the ACPI bitflag when ACPI is supported.
Document the disable-rfkill property to expose one specific feature
(DISABLE_RFKILL_BIT) for devices described with a DT, so that the
feature can be disabled.
Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Signed-off-by: Dale Whinham <daleyo@gmail.com>
Some devices (e.g. Microsoft Surface Pro 11) indicate that the rfkill
feature should be disabled by means of an ACPI bitflag.
If ACPI is not being used (i.e. booting using a devicetree) then this
property will not be read and therefore rfkill may be enabled and
the ath12k will be hard-blocked with no way to disable it.
Add a devicetree property that allows us to disable the rfkill feature.
Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Signed-off-by: Dale Whinham <daleyo@gmail.com>
Disable rfkill as it is supposed to be according to the ath12k feature
flags in the Microsoft Surface Pro 11 ACPI DSDT.
Signed-off-by: Dale Whinham <daleyo@gmail.com>
Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Allows MAC address setting via dtbloader.
define PCI_VENDOR_ID_HP_BOGUS	0xffff
Qualcomm FastConnect 6900 Wi-Fi 6E Dual Band Simultaneous (DBS) WiFiCx Network Adapter
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
For some devices, Wi-Fi is entirely hard blocked by default making
the Wi-Fi radio unusable, except if rfkill is disabled as expected
on those models.
Commit c6a7c0b ("wifi: ath12k: Add Support for enabling or
disabling specific features based on ACPI bitflag") added a way to
support features set via ACPI, including the DISABLE_RFKILL bit.
Add a disable-rfkill property to expose the DISABLE_RFKILL bit
equivalent for devices described by a Devicetree instead of ACPI.
Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Reference the ieee80211.yaml schema to allow disable-rfkill to
be used for models that need to disable the rfkill feature,
otherwise the Wi-Fi radio is unusable.
This is required by the Surface Pro 11 with WCN7850.
Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
in the spirit of sp12
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
add rfkill, mac addresses, pcie4 pinctrl
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
previously was /usr/lib/, /usr/share/
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
When booting in EL2 Linux takes ownership of the SMMUv3 and needs a
40-bit address space on /soc so that PCIe (and other masters) can
actually reach RAM above 32 GB.
Add the necessary #address-cells/#size-cells + dma-ranges/ranges
inside the existing x1-el2.dtso. Suppress the avoid_default_addr_size
warning that this naturally triggers on an overlay that touches the
SoC bus node.
Link: https://lore.kernel.org/all/aSl48gV9laFb-MR1@linaro.org/
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
EDID:
00 ff ff ff ff ff ff 00 0d ae 76 14 00 00 00 00
1c 21 01 04 a5 1e 13 78 03 ee 95 a3 54 4c 99 26
0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 42 3c 80 a0 70 b0 24 40 30 20
a6 00 2d bc 10 00 00 18 00 00 00 fd 00 28 3c 4a
4a 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 43
4d 4e 0a 20 20 20 20 20 20 20 20 20 00 00 00 fe
00 4e 31 34 30 4a 43 45 2d 45 4c 31 0a 20 00 1b
Detailed Timing Descriptors:
DTD 1: 1920x1200 60.002801 Hz 8:5 74.163 kHz 154.260000 MHz (301 mm x 188 mm)
Hfront 48 Hsync 32 Hback 80 Hpol N
Vfront 10 Vsync 6 Vback 20 Vpol N
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Add bindings for Embedded Controller (EC) in Dell XPS 13 9345 (platform
codename 'tributo'). It may be partially or fully compatible with EC
found in Snapdragon-based Dell Latitude, Inspiron ('thena').
Signed-off-by: Aleksandrs Vinarskis <alex@vinarskis.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Introduce EC driver for Dell XPS 13 9345 (codename 'tributo') which may
partially of fully compatible with Snapdragon-based Dell Latitude,
Inspiron ('thena'). Primary function of this driver is unblock EC's
thermal management, specifically to provide it with necessary
information to control device fans, peripherals power.
The driver was developed primarily by analyzing ACPI DSDT's _DSM and
i2c dumps of communication between SoC and EC. Changes to Windows
driver's behavior include increasing temperature feed loop from ~50ms
to 100ms here.
While Xps's EC is rather complex and controls practically all device
peripherals including touch row's brightness and special keys such as
mic mute, these do not go over this particular i2c interface.
Not yet implemented features:
- On lid-close IRQ event is registered. Windows performs what to
appears to be thermistor constants readout, though its not obvious
what it used for.
- According to ACPI's _DSM there is a method to readout fans' RPM.
- Initial thermistor constants were sniffed from Windows, these can be
likely fine tuned for better cooling performance.
- There is additional temperature reading that Windows sents to EC but
more rare than others, likely SoC T_j / TZ98 or TZ4. This is the only
thermal zone who's reading can exceed 115C without triggering thermal
shutdown.
- Given similarities between 'tributo' and 'thena' platforms, including
EC i2c address, driver can be potentially extended to support both.
Signed-off-by: Aleksandrs Vinarskis <alex@vinarskis.com>
ooakleeand others added 13 commits August 18, 2026 22:32
…tegration
Merge upstream jg/ubuntu-qcom-x1e-7.2.y (7.2.0) into SP11 integration
sp11/integration-7.2.x: non-rc integration line (7.2.0-jg-0sp11v7)
The sp11/integration-7.2-rc branch was retired; the non-rc 7.2.x line is
the sole integration branch.
…550 GPIO 8
The SP11 volume-down end of the rocker is PM8550 GPIO 8 (active-low,
pull-up), matching the volume-up pattern on GPIO 6. The PMK8550
pon_resin is not wired to the rocker on this hardware, so drop the
KEY_VOLUMEDOWN override that never produced events and keep resin
disabled. Enable gpio-keys autorepeat for hold-to-repeat behavior.
…nodes
DT requires properties to precede subnodes; the autorepeat property was
placed after key-vol-down which fails the DTC check. Move it up with the
other gpio-keys properties.
The G6 TouchPenProcessor panel streams a raw heatmap and the driver
reimplements the touch pipeline in-kernel, but the pen path is currently
not exposed at all. Dump the 1484-byte report descriptor read during init
so the pen digitizer collections and report layout can be analyzed.
Register a separate direct pen input device using the logical ranges from the digitizer collection. Parse report 0x01 into proximity, tip, barrel, eraser, position, pressure, and tilt events.
Keep pen input available while the heatmap touch path waits for readiness, release both input devices across lifecycle transitions, and remove the temporary report descriptor dump.
Expose exact raw HEAT and opaque sideband reports through a versioned misc-device stream so the evidence-backed Windows heat-processor architecture can run in userspace without adding speculative kernel pen events.
Keep A5 feedback limited to observed cycle timing and typed live sequence/FastHostId state, and center the native fallback tilt in its signed HID range.
Comment threaddebian.qcom-x1e/changelog
@ooakleeooaklee changed the title SP11: integrate 7.2.x enablement and G6 HEAT pen supportSP11: integrate 7.2.x enablement and G6 HEAT pen support + volume rockerAug 22, 2026
@jglathe

Copy link
Copy Markdown
Owner

Oh wow that's a lot. Thank you for posting, also need to go through this to understand what /why. Usually these changes should go upstream, I know that's way harder. But someone has to bite the bullet. For documentation and re-use, the PR can land here. And after review I'll integrate it, since this is the best way to preserve the work with in the evolution of the kernel.

@ooaklee
ooakleeforce-pushed the sp11/integration-7.2.x branch from a962406 to 5b95348CompareAugust 22, 2026 07:12
…er default
The Surface Pro 11 (X1E80100) runs hot and drains battery under Linux
even when idle, because the default cpufreq policy (schedutil with no
frequency ceiling) allows the CPU to sustain high frequencies that
Windows "Recommended" mode prevents through per-QoS maximum policies,
core parking, and fan-profile selection.
Windows power-profile analysis (captured via Surface ETW and WPR traces
on the SP11) demonstrates that Windows "Recommended" mode — the cool
idle baseline — holds the CPU at ~750 MHz average, 0.8% utility, and
~4.1 W system power at ~30 °C, compared to ~1172 MHz, 1.4% utility,
and ~5.9 W in "Best Performance" mode. The analysis also establishes
that mode selection changes heterogeneous per-QoS maximum policies,
core parking behaviour, and firmware fan profiles (2/3/4 for
Recommended/Better/Best) — not just EPP.
The existing surface_platform_profile driver (PR #7) already maps
Linux platform-profile choices to SAM TMP thermal profiles and SAM FAN
fan profiles. However, it does not touch cpufreq, so switching to
power-saver mode has no effect on CPU frequency ceilings.
This change adds the missing CPU-frequency side:
1. FREQ_QOS_MAX requests for every cpufreq policy. When the user
selects LOW_POWER (power-saver), each policy is capped to the
highest OPP at or below 2.515 GHz — matching the Windows
power-saver frequency ceiling observed across the three SCMI
performance domains. BALANCED, BALANCED_PERFORMANCE, and
PERFORMANCE restore the full frequency range.
2. A cpufreq policy notifier (CPUFREQ_POLICY_NOTIFIER) that catches
policies created after the profile driver probes (the driver uses
PROBE_PREFER_ASYNCHRONOUS). Late-arriving policies immediately
receive the active cap if the current profile is LOW_POWER.
3. A `default-low-power` software-node property for the SP11 node
group in surface_aggregator_registry.c. When set, the driver
applies LOW_POWER during probe — capping CPU frequency, selecting
SAM BatterySaver thermal mode, and setting fan profile 1 — so the
SP11 boots into a cool baseline matching the user's goal of
"reducing heat by default" on both AC and battery.
4. A power_supply notifier framework (no-op for now) that will
support future AC/DC profile auto-switching. Windows differentiates
EPP by power source (33 AC / 50 DC), but SCMI cpufreq does not yet
expose EPP; the default is therefore source-neutral (LOW_POWER on
both AC and DC).
5. Registration of the platform-profile sysfs interface is moved to
the end of probe to prevent userspace from writing profiles before
QoS requests and notifiers are fully initialised.
The frequency cap, default-low-power property, and SP11-specific node
are confined to the SP11 node group; other Surface devices retain the
existing fan-only profile node and are unaffected.
Validation: ARM64 object compilation passes with zero warnings;
checkpatch reports 0 errors, 0 warnings. Hardware verification should
confirm matched Windows/Linux temperature, frequency, fan-RPM, and
power behaviour using powerprofilesctl, turbostat, and
/sys/firmware/acpi/platform_profile.
Windows capture and analysis data:
https://github.com/ooaklee/sp11-windows-capture
(analysis/profile-comparison-20260820/)
Ref: ooaklee/linux-surface-pro-11-oe#38
Ref: dwhinham/linux-surface-pro-11#28
Comment threaddebian.qcom-x1e/config/annotations Outdated
@ooaklee

Copy link
Copy Markdown
Author

Oh wow that's a lot. Thank you for posting, also need to go through this to understand what /why.

Thanks, I appreciate your time going through it. If you want information on the what/why, my ADRs should help.

Usually these changes should go upstream, I know that's way harder. But someone has to bite the bullet. For documentation and re-use, the PR can land here. And after review I'll integrate it, since this is the best way to preserve the work with in the evolution of the kernel.

If you're ever free and willing to teach/show me how you usually do it, I don't mind helping next time.

Thanks again @jglathe

The legacy sysfs interface at /sys/firmware/acpi/platform_profile is
hardcoded by userspace (power-profiles-daemon). On systems where ACPI
is disabled (e.g. device-tree based ARM64 platforms such as the Surface
Pro 11), the ACPI subsystem never creates the "acpi" kobject, so
platform_profile_init() bailed with -EOPNOTSUPP and the whole
framework (plus dependent drivers such as surface_platform_profile)
never loaded.
Use a module-local kobject instead: when acpi_kobj is NULL, create the
"acpi" directory under /sys/firmware ourselves so the legacy interface
remains available. Update all sysfs_notify/update_group/create_group/
remove_group call sites to use the local kobject, and clean it up on
module exit only when we created it.
Bump to v8 for the platform_profile non-ACPI framework fix
(05d634c) so the rebuilt kernel packages are installable
over the installed v7.
ooakleeand others added 3 commits August 23, 2026 10:23
…iles
surface: platform_profile: add CPU frequency capping and SP11 low-power default
…ound
* ASoC: qcom: add SP11 audio transport definitions
Add the AudioReach topology tokens, WSA8845 binding properties, and SoundWire transport metadata needed by the Surface Pro 11 VI and CPS feedback paths.
Port the promoted Golden v32 source state from geocausa/SP11X1e-audio to the 7.2.0 qcom-x1e tree while retaining the newer SoundWire initialization API.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* ASoC: qcom: reconstruct SP11 protected pull graph
Port the protected integrated AudioReach graph, Windows pull-mode startup and lifecycle, calibration, volume and mute transactions, and VI/CPS backend handling used by the Surface Pro 11 Golden v32 baseline.
This is the promoted geocausa/SP11X1e-audio source state reconciled onto the 7.2.0 qcom-x1e tree. The generic shared-memory pull implementation conflicts with the evidence-locked SP11 transaction ordering and is superseded here.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* ASoC: codecs: port SP11 WSA Golden v32 lifecycle
Carry the promoted Surface Pro 11 WSA8845 and LPASS WSA macro state: VPHX 2S detection, the 4-ohm G_18_DB profile, PA fault recovery, VI/CPS DAIs, Windows codec initialization and three-state clock-stop lifecycle, SIMPLE transport fields, and post-PA protection-clock sequencing.
Port the Golden v32 source from geocausa/SP11X1e-audio. The Windows-observed supply and register policy supersedes the earlier local 0021/0022 framing while retaining its 2S, 4-ohm, and bounded recovery behavior.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* soundwire: qcom: add SP11 VI and CPS transport parity
Add per-slave transport overrides, shared physical master-port allocation, extended SIMPLE register programming, Golden v32 active Offset2 handling, and CPS controller wake and packetization for Surface Pro 11 feedback ports.
Port the promoted geocausa/SP11X1e-audio behavior to 7.2.0 while retaining the newer null-safe SoundWire stream teardown.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* ASoC: qcom: x1e80100: wire SP11 VI and CPS backends
Add the Surface Pro 11 WSA VI protection and CPS feedback backend lifecycle, fixed formats, channel maps, and AudioReach readiness gates from the geocausa Golden v32 reconstruction.
Retain the 7.2.0 Dell XPS 13 channel-map configuration while applying it consistently to the new TX preparation path.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* arm64: dts: qcom: denali: wire SP11 VI and CPS audio
Add the Golden v32 WSA VI and CPS dai-links, indexed WSA8845 DAIs, native VISENSE masks, and per-speaker CPS transport offsets for the Surface Pro 11 OLED boot target.
Keep the existing Denali touchscreen, 2.4 MHz DMIC, volume keys, firmware paths, USB, Wi-Fi, and power-management state unchanged. The experimental baseline1 board target is intentionally not added.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* arm64: dts: qcom: denali: use 4.8 MHz DMIC clock per geocausa SP11 audio findings
Replace the earlier 2.4 MHz override with geocausa's Windows-matched 4.8 MHz value. This also matches the upstream jg/ubuntu-qcom-x1e-7.2.y branch.
Re-validate the microphone path on hardware because the previous UCM tuning was performed against the 2.4 MHz clock.
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
* debian.qcom-x1e: changelog for 7.2.0-jg-0sp11v9
Bump the SP11 package release for the geocausa Golden v32 audio port, covering the protected AudioReach pull-mode graph, VI/CPS feedback transport, WSA8845 lifecycle fixes, SoundWire parity, and the 4.8 MHz DMIC clock.
* Remove render parity suffix
* ASoC: lpass-wsa-macro: materialize SP11 Windows TOP_CFG1
Native Windows writes WSA macro TOP_CFG1=0x03 after each enabled VI pair. The SP11 cache policy can leave the physical register unwritten.
This is observable before SP_VI: Golden v32 produced first-valid TAP2 in I,V,I,V physical-lane order, while native Windows produced V,I,V,I. Materializing TOP_CFG1=0x03 on Denali changes the producer to Windows V,I,V,I without changing q6apm/SP_VI channel mapping.
An SP_VI channel reorder was rejected as a double correction, reproducing the right-amplifier err0=0x20 fault/static at 40/50%. Keep the correction at the WSA producer boundary.
Ported from geocausa/SP11X1e-audio patches/0072 (Golden v33 promotion, 2026-08-24).
Signed-off-by: SP11 Audio Reverse Engineering <sp11-audio@local>
* debian.qcom-x1e: changelog for 7.2.0-jg-0sp11v10
---------
Signed-off-by: Leon Silcott <lnsilcott@gmail.com>
Signed-off-by: SP11 Audio Reverse Engineering <sp11-audio@local>
* Surface Pro 11 v11: support X1P MSHW0485 touchscreen product ID
(0x0c80) alongside the X1E (0x0c83); descriptor validation now
accepts both
* Surface Pro 11 v11: skip the SAM battery provider on Denali;
Qualcomm battmgr is the authoritative battery source there
* debian: add v11 touchscreen changelog entry
---------
Signed-off-by: Justin White <kyjus25@gmail.com>
Sign up for freeto 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.

20 participants

@ooaklee@jglathe@jayaddison@JeromeDeBretagne@dwhinham@alexVinarskis@jprakash-qc@QuinAsura@harrisonvanderbyl@steev@ekanshibu@olav-st@strongtz@stephan-gh@masneyb@williamlarson-canonical@quic-manafm@jspingu@3thanRam@quic-kdybcio