Skip to content

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

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

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>
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