ACP7.0 SoundWire: two TAS2783 amps, only one channel reproduced?
Kel Modderman <[email protected]>
| Newsgroups | gmane.linux.sound |
|---|---|
| Message-ID | <CAFcu4SY1cRs4WD7=ZaD0s_ybYXO2=d-ZMG+dSeotktuPrz2YUg@mail.gmail.com> |
Hi,
I have an HP OmniBook X Flip 14-kc0xxx (board 8EA1) with AMD ACP 7.0
(1022:15e2 rev 0x70, subsystem 103c:8ea1), and I am trying to get its
speakers working with assistance from claude. I have got most of the way
there but I am stuck on one point, and I would be grateful for your advice
on whether the layout I am using is the right one.
The machine has:
link 1, uid 0 - Realtek RT712 SDCA (headset jack and microphones)
link 0, uid 9 - TI TAS2783
link 0, uid C - TI TAS2783
Two local changes were needed to get a card at all:
1. The BIOS reports acp-audio-config-flag = 16
(FLAG_AMD_LEGACY_ONLY_DMIC), so snd_amd_acp_find_config() returns a
value that neither acp70_pci_probe() nor pci-ps.c accepts, and the ACP
ends up with no driver bound and nothing in dmesg. Adding the board to
acp70_acpi_flag_override_table solves that.
2. There is no entry in snd_soc_acpi_amd_acp70_sdw_machines[] matching
this topology, so I added one.
With those two changes the card is built correctly. The headset jack, the
microphones and the UCM profile all work, and both amplifiers load their
firmware from ti/audio/tas2783/8EA1-0-0-0x{9,C}.bin without errors.
My problem is that only one channel of the stream is ever reproduced. I
measured this with the machine's own microphones rather than by ear, so
the numbers are repeatable:
amps on group_position 0 and 1:
only the position-0 amp plays, and only stream channel 0
the same, but swapped over:
only the (new) position-0 amp plays, and only stream channel 0
both amps on group_position 0:
both amps play, but both play stream channel 0
So both amplifiers are healthy - either one on its own reproduces the
whole signal when it sits on position 0 - but stream channel 1 is never
reproduced, whatever layout I use. Nothing changes if I use the other
firmware variant (8EA1-1-0-0x{9,C}.bin).
I modelled the two-position layout on acp70_rt721_l1u0_tas2783x2_l1u8b,
and the shared-position layout on tas2783_2_adr, which pairs two devices
per position with /* left */ and /* right */ comments.
So my question is really a simple one: is a two-TAS2783 configuration on
ACP 7.0 expected to work, and if so, what should the machine entry look
like? I am probably missing something obvious.
I am happy to test patches or collect any further information you would
find useful - I have the hardware in front of me and can rebuild modules
quickly. I can also send the two patches I am carrying if that is helpful.
This is on 7.1, and I checked the relevant files against the current master
and the sound tree's for-next as well.
Thanks very much for your time,
Thanks, Kel