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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.