Skip to content

ARM: dts: tegra30-microsoft-surface-rt: Fix WM8962 SPKVDD supply - #140

Closed
blakegordon wants to merge 1 commit into
grate-driver:masterfrom
blakegordon:fix-surface-rt-wm8962-spkvdd
Closed

ARM: dts: tegra30-microsoft-surface-rt: Fix WM8962 SPKVDD supply#140
blakegordon wants to merge 1 commit into
grate-driver:masterfrom
blakegordon:fix-surface-rt-wm8962-spkvdd

Conversation

@blakegordon

Copy link
Copy Markdown

Summary

Fix silent audio on Microsoft Surface RT by wiring the WM8962 Class-D speaker
amplifier supplies (SPKVDD1/2) to the board 5 V rail instead of 1.8 V.

Problem

On postmarketOS with linux-postmarketos-grate, the WM8962 codec probes
successfully and ALSA playback appears to work, but no sound is produced from
the internal speakers or headphones. During playback, mixer routes and Class-D
enable bits look correct in software.

dmesg reports on every playback attempt:

wm8962: ASoC error (-16) at register 0x30 (ADDITIONAL_CONTROL_4)
wm8962: DC servo timed out

Root cause

Per the WM8962 datasheet, SPKVDD must be in the 2.5 V–5.5 V range for the
Class-D speaker outputs (SPKOUTL/R). The device tree currently assigns both
SPKVDD1-supply and SPKVDD2-supply to vdd_1v8_sys (1.8 V), which is below
the minimum operating voltage for the speaker amplifier.

Digital and analog core supplies correctly remain on 1.8 V; only the speaker
amplifier rails need the higher voltage.

Fix

Point SPKVDD1-supply and SPKVDD2-supply at vdd_5v0_sys, which is already
modeled in the device tree and used by other board peripherals (backlight, USB
VBUS, etc.).

The EFI variant (tegra30-microsoft-surface-rt-efi.dts) includes this file, so
no separate change is required there.

Testing

  • Rebuild/install kernel with this DTS change on Surface RT
  • Verify internal speaker output with speaker-test -Dhw:1,0
  • Verify headphone output
  • Confirm dmesg no longer reports WM8962 register 0x30 errors / DC servo timeouts during playback

Tested-by: Blake Gordon blakegordon@berkeley.edu (pending kernel rebuild)

References

  • WM8962 datasheet: SPKVDD range 2.5 V–5.5 V
  • Device: Microsoft Surface RT, postmarketOS, linux-postmarketos-grate-7.0.1-r0
  • Related prior work: Surface: wm8962 missing supplies #108 (WM8962 supply properties)

The WM8962 Class-D speaker outputs require SPKVDD in the 2.5V-5.5V range.
The device tree currently wires SPKVDD1/2 to vdd_1v8_sys (1.8V), below the
minimum. On postmarketOS/grate the codec probes and playback succeeds in
software, but no sound is produced and dmesg reports ASoC error (-16) at
register 0x30 and DC servo timeouts.

Use vdd_5v0_sys for SPKVDD1/2; digital/analog core supplies stay at 1.8V.

Signed-off-by: Blake Gordon <blakegordon@berkeley.edu>
@digetx

digetx commented Jun 23, 2026

Copy link
Copy Markdown
Member

Technically, the change is correct, SPKVDD should be 5v. But in practice both 5v and 1.8v regulators are defined as always-on in device-tree and driver doesn't care about actual voltages, hence the change shall have no practical effect and shouldn't fix anything.

@blakegordon

Copy link
Copy Markdown
Author

Thanks for the feedback. We can close the P/R since testing reveals no improvement in getting sound from the device.

(P.S. Any suggestions on that? It's unclear to me whether sound is working for other people running postmarket on Surface RT....)

@digetx

digetx commented Jul 5, 2026

Copy link
Copy Markdown
Member

You may try to find from where that error originates in the code

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