Skip to content

ASoC: qcom: add Surface Pro 11 TX DMIC capture - #88

Draft
ooaklee wants to merge 3 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-tx-dmic-audio
Draft

ASoC: qcom: add Surface Pro 11 TX DMIC capture#88
ooaklee wants to merge 3 commits into
jglathe:jg/ubuntu-qcom-x1e-7.2.yfrom
ooaklee:x/sp11-tx-dmic-audio

Conversation

@ooaklee

@ooaklee ooaklee commented Aug 31, 2026

Copy link
Copy Markdown

Summary

  • select the validated DIV4 direct-DMIC clocking on Surface Pro 11
  • let the Denali TX macro request the two direct-DMIC pad clocks owned by the VA macro
  • add the regular two-channel TX_CODEC_DMA_TX_3 capture route while retaining the existing low-power VA path

Dependency and status

This PR targets jg/ubuntu-qcom-x1e-7.2.y directly. It follows the Denali baseline in #82, the QSPI/touch core in #83, the pen ABI topic, and the split camera topics:

The branch itself is based directly on the release branch, so it does not merge those prerequisite heads or the broad -sp11 staging branch. It also does not replay the correction merged through #81.

This PR is a draft until the exact branch has passed the SP11 capture and non-SP11 audio checks below. Protected speaker playback remains a separate audio topic and is not required by this microphone-capture path.

Containment

  • the alternate 4.8 MHz validation and DIV4 selection are gated by the microsoft,denali root compatible
  • the VA-to-TX clock broker is used only by the exact Denali two-channel DMIC0/DMIC1 route
  • existing VA capture remains present for low-power use and comparison
  • other LPASS machines retain the existing VA divider, TX event handling, and direct-DMIC ownership
  • the board change is limited to the common Denali description and does not add the route to unrelated X1E devices
  • no speaker-protection runtime, PA profile, diagnostic ABI, global readiness state, or module parameter is included

Provenance

The divider and shared-clock commits preserve Co-authored-by: geoca <272055834+geocausa@users.noreply.github.com> from @geocausa's focused source patches, link to their immutable revisions, and append Signed-off-by: Leon Silcott <leon@boasi.io>. The Denali route commit is authored and signed by Leon Silcott.

All three commits also link back to the relevant integration commits, including 58e36b1acb04, so the contributor history remains discoverable without carrying the original broad commits wholesale.

Validation

  • git diff --check 032e174490d2..HEAD
  • strict checkpatch for all three commits
  • ARM64 ubuntu_x1e_defconfig W=1 builds of the affected LPASS common, VA-macro, and TX-macro objects
  • successful builds of both Surface Pro 11 Denali device trees
  • source audit confirms that the changed divider and cross-macro clock requests are Denali-gated
  • source audit confirms no protected-playback runtime, userspace ABI, diagnostic control, or module parameter is present

Hardware checks still required

  • boot this exact branch on an X1E Surface Pro 11
  • record from the regular two-channel TX path at 48 kHz and verify both microphone channels
  • compare the existing VA capture path and confirm it remains usable
  • repeat open/close, capture, suspend/resume, and capture-after-resume cycles
  • check kernel logs for LPASS clock, DAI, AudioReach, or underrun errors
  • run playback and capture smoke tests on at least one non-SP11 X1E device to confirm the shared LPASS paths retain their existing behavior

Denali uses a 4.8 MHz direct-DMIC rate with the VA path clocked at
19.2 MHz. Validate the sample rate against that clock so the driver
selects DIV4, matching the native Windows programming, instead of DIV2.

Keep the existing calculation on every other machine.

This is based on geoca's Windows-parity analysis in patch 0072.

Link: https://github.com/geocausa/SP11X1e-audio/blob/a1d51ecc7416a905acdad50d31600fff7f28ac1c/patches/0072-ASoC-lpass-va-macro-SP11-match-Windows-DMIC-divider.patch
Link: 58e36b1
Co-authored-by: geoca <272055834+geocausa@users.noreply.github.com>
Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 microphone array feeds the TX macro while the VA
macro owns its direct-DMIC pad clocks. Without a cross-macro clock
request, the TX capture path cannot reproduce the working firmware
sequence.

Add an LPASS-internal DMIC clock broker, register the Denali VA macro as
its provider, and request DMIC1 then DMIC0 from the TX DEC event group.
Validate the exact two-channel Denali route before changing the clocks.

Both the provider and consumer paths are gated by the microsoft,denali
root compatible. Other machines retain the existing VA and TX behavior;
the common broker remains unused on those systems.

This implementation follows geoca's Windows-parity work in patch 0078.

Link: https://github.com/geocausa/SP11X1e-audio/blob/a1d51ecc7416a905acdad50d31600fff7f28ac1c/patches/0078-ASoC-lpass-SP11-share-VA-DMIC-clock-with-TX-capture.patch
Link: 58e36b1
Co-authored-by: geoca <272055834+geocausa@users.noreply.github.com>
Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 exposes its microphone array as two 48 kHz PCM
channels. The existing VA backend covers the voice path but does not
provide the regular TX-macro host capture path.

Add a TX macro link through AudioReach TX_CODEC_DMA_TX_3 and route DMIC0
and DMIC1 through the microphone regulator. Keep the existing VA capture
link available for low-power use and hardware comparison.

Link: ab34e94
Link: 58e36b1
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#88 for combined SP11 testing.
@jglathe
jglathe force-pushed the jg/ubuntu-qcom-x1e-7.2.y branch from 87bcf07 to 4943ee7 Compare September 3, 2026 10:32
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.

1 participant