soundwire/SDCA: enable the four TAS2783 speakers on HP OmniBook Ultra 14 (8EB4) - #5904
Open
kaseyprichard wants to merge 2 commits into
Open
soundwire/SDCA: enable the four TAS2783 speakers on HP OmniBook Ultra 14 (8EB4)#5904kaseyprichard wants to merge 2 commits into
kaseyprichard wants to merge 2 commits into
Conversation
On the HP OmniBook Ultra 14 (board 8EB4, Panther Lake) the four TI
TAS2783 SmartAmp peripherals declare the SDCA Function Topology control
(0x05) with access mode 0x03 and no mipi-sdca-control-dc-value, so
find_sdca_function() rejects them ("function type only supported as
DisCo constant"). No SmartAmp function is created, no speaker DAI
exists and the internal speakers are silent. The RT712 on link 3 does
provide a DC value and is unaffected.
The same firmware defect was reported for the HP EliteBook X in
thesofproject#5760, where the conclusion was that the BIOS should
supply a DC value, and HP fixed that machine with a BIOS update. The
newest BIOS for 8EB4 (F.06, 2026-06-25) still ships access mode 0x03
with no DC value for the amplifiers, so machines in the field need a
fallback. Keep it minimal: a table of known peripherals (TAS2783,
mfg 0x0102 part 0x0000, is always a SmartAmp) rather than reading the
control from hardware, so functions can still be parsed before the
device is available. Happy to drop this if HP commits to a BIOS fix
for 8EB4.
Link: thesofproject#5732
Link: thesofproject#5760
Assisted-by: Claude:claude-fable-5
Signed-off-by: Kasey Prichard <kasey.prichard@gmail.com>
The HP OmniBook Ultra 14 (board 8EB4, Panther Lake, BIOS F.06) has four TI TAS2783 SmartAmp peripherals, two each on SoundWire links 1 and 2. The static DSDT declares intel-sdw-doais = 1 and intel-sdw-doaise2 = 1 for every link, but SNDW._INI then runs DCFG() on each LNKn package and overwrites those entries from NVS bytes (DAIn, DAXn, ...), and the values the driver actually reads are doais = 3, doaise2 = 0. With that ACTMCTL timing only one of the four amplifiers survives enumeration: the other three attach, answer DEVID reads, then drop off the bus within a few hundred ms and never come back, so there is no speaker output on Linux. Windows drives all four amplifiers on the same firmware. Bisecting the ACTMCTL fields at runtime shows that DOAIS = 1 together with DOAISE2 = 1 is both necessary and sufficient: with that pair all four amplifiers attach, download firmware on the first attempt and stay attached with no parity errors, and all four speakers play. DODS, CLDS and CLDE make no difference. DOAISE2 gates whether DOAIS is honoured, so neither field alone helps. Add a DMI-keyed override for the ACTMCTL fields, applied after the _DSD properties are read, and use it to force DOAIS = 1 / DOAISE2 = 1 on links 1 and 2 of this board. Other links and other boards are untouched. Link: thesofproject#5732 Assisted-by: Claude:claude-fable-5 Signed-off-by: Kasey Prichard <kasey.prichard@gmail.com>
kaseyprichard
requested review from
bardliao,
dbaluta,
kv2019i,
lgirdwood,
plbossart,
ranj063,
shumingfan and
ujfalusi
as code owners
August 31, 2026 00:24
Collaborator
|
Can one of the admins verify this patch?
|
Collaborator
|
I am pretty sure this will be fixed in the BIOS. @niranjanhyti @jim-monkey FYI |
|
@jimxbj-dot (@jim-monkey) now supporting tas2783a - Jim please comment. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the silent internal speakers on the HP OmniBook Ultra 14 (board 8EB4, Panther Lake, 4x TI TAS2783 on SoundWire links 1/2 + RT712 on link 3). Tracked in #5732 (also #5877, #5802); the SDCA half is the same defect as #5760.
Two independent problems, one patch each — see the commit messages for details:
ASoC: SDCA: fall back to SmartAmp function type for TI TAS2783— the BIOS declares the Function Topology control with access mode 3 and no DC value; upstream deliberately requires a DC value (HP Elitebook X (Panther Lake) - no sound. #5760) and HP fixed the EliteBook X via BIOS, but 8EB4 F.06 (latest) still lacks it. Minimal known-peripheral fallback; I'm fine dropping it if HP commits to a BIOS fix.soundwire: intel: override ACTMCTL DOAIS/DOAISE2 on HP OmniBook Ultra 14—SNDW._INIoverwrites the staticintel-sdw-doais/doaise2 = 1with NVS values 3/0; with those, three of four amps drop off the bus after attaching. Runtime bisect: DOAIS=1 + DOAISE2=1 is necessary and sufficient. DMI-keyed override for links 1 and 2.Tested on 7.2.2 with stock
soundwire-busandsnd-soc-tas2783-sdw, only these two changes: 4/4 amps attach and stay attached, firmware first try, PARITY 0 at boot and after streaming, Speaker PCM present, all four speakers verified individually. checkpatch--strictclean.How this was found: 28 numbered single-change experiments on the machine (most a full instrumented reboot with a captured boot log), finishing with a live runtime bisect of the ACTMCTL fields; experiments 0024–0028 then reverted everything else to prove these two patches alone suffice on pristine v7.2.2 files. The work was AI-assisted (Claude Code); both commits carry
Assisted-by:trailers perDocumentation/process/coding-assistants.rst, and I have reviewed and boot-tested everything here myself. The experiment index is in the repo README linked below.Questions: is
intel_auxdevice.cthe right home for an ACTMCTL override (vsdmi-quirks.cor a machine-driver quirk)? And should the SDCA fallback go in at all, or is 8EB4 strictly a BIOS matter?Supporting material (ACPI dumps, Windows-side comparison, UCM files): https://github.com/kaseyprichard/hp-omnibook-tas2783-sdw