From: Andrey Golovko <andrey.golovko@gmail.com>
To: Antoine Monnet <monnet.antoine@gmail.com>, linux-sound@vger.kernel.org
Cc: Shenghao Ding <shenghao-ding@ti.com>, Kevin Lu <kevin-lu@ti.com>,
Baojun Xu <baojun.xu@ti.com>, Sen Wang <sen@ti.com>,
Mark Brown <broonie@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Vijendar Mukunda <Vijendar.Mukunda@amd.com>,
Vinod Koul <vkoul@kernel.org>,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
linux-kernel@vger.kernel.org
Subject: Re: ASoC: tas2783-sdw: no stereo channel split for two mono amps -> mono output (AMD ACP SoundWire, ASUS ProArt PX13)
Date: Mon, 27 Jul 2026 11:48:40 +0300 [thread overview]
Message-ID: <20b6c100ec50c0b9eb1dd31a338dbc9e@gmail.com> (raw)
In-Reply-To: <29e8c08b-9475-4aba-bce0-6d4a45a26d3b@gmail.com>
Hi Antoine,
Confirmed on a second machine: ASUS ProArt PX13 HN7306EAC (Ryzen AI MAX+
395), Ubuntu 26.04, 7.2-rc4 based kernel, same two TAS2783 at unique_id
0x8 / 0xB plus RT721 on SoundWire link 1.
Rather than judging by ear, I used the per-amp mixer controls, which
makes the result unambiguous. Both amps at full scale ('tas2783-1/-2 Amp
Volume' = 20, 'Speaker Volume' = 200), all four 'Left/Right Spk[2]
Switch' on:
speaker-test -Dpipewire -c2 -s1 (left channel only)
- audible
- 'tas2783-2 Speaker Volume' = 0 -> complete silence
- 'tas2783-1 Speaker Volume' = 0 -> no audible change
speaker-test -Dpipewire -c2 -s2 (right channel only)
- silent, with both amps unmuted at full scale
So exactly your picture: one amp (tas2783-2) renders audio and it renders
the *left* channel, the other amp contributes nothing, and the right
channel is never reproduced. Both amps do load their own per-address
blob here (1714-1-8.bin / 1714-1-B.bin, via the fallback naming path
after the 0x-prefixed names miss), so this is not a case of the wrong
configuration being downloaded.
On the "proper mechanism" question: a good part of the plumbing already
exists, and it does not need unique_id at all.
- The machine layer already knows which amp is which. In
sound/soc/sdw_utils/soc_sdw_ti_amp.c, asoc_sdw_ti_spk_rtd_init() maps
the component name prefix to a speaker widget: tas2783-1 -> "Left
Spk", tas2783-2 -> "Right Spk", tas2783-3/-4 -> "Left/Right Spk2".
That is where the four 'Left/Right Spk[2] Switch' controls on this
board come from.
- asoc_sdw_hw_params() (sound/soc/sdw_utils/soc_sdw_utils.c) fills
dai_link->ch_maps, but for playback it deliberately hands every codec
the full mask ("Identical data will be sent to all codecs in
playback"), leaving the per-amp channel selection to the amp itself.
acp-sdw-legacy-mach, which drives this board, uses both.
So the driver could derive the channel from the same prefix index the
DAPM routing already uses, or from its entry in dai_link->ch_maps,
instead of hard-coding SoundWire addresses.
Which raises the question for TI: on TAS2783 is the channel selection
meant to come from the per-device .bin (in which case it is evidently
not taking effect on this board), or is the driver expected to program a
per-amp channel mask? Depending on the answer, either the firmware
description or tas_sdw_hw_params() needs fixing - and in the latter case
the amp's channel should come from the machine-level mapping rather than
from unique_id, which as you say is board-specific.
Happy to test patches on this hardware; I can also collect register
dumps from both amps if that helps.
Thanks,
Andrey
next prev parent reply other threads:[~2026-07-27 8:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-19 0:53 ASoC: tas2783-sdw: no stereo channel split for two mono amps -> mono output (AMD ACP SoundWire, ASUS ProArt PX13) Antoine Monnet
2026-07-27 8:48 ` Andrey Golovko [this message]
2026-07-27 11:21 ` Antoine Monnet
2026-08-07 5:21 ` Andrey Golovko
2026-08-07 9:19 ` Pierre-Louis Bossart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20b6c100ec50c0b9eb1dd31a338dbc9e@gmail.com \
--to=andrey.golovko@gmail.com \
--cc=Vijendar.Mukunda@amd.com \
--cc=baojun.xu@ti.com \
--cc=broonie@kernel.org \
--cc=kevin-lu@ti.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=monnet.antoine@gmail.com \
--cc=pierre-louis.bossart@linux.dev \
--cc=sen@ti.com \
--cc=shenghao-ding@ti.com \
--cc=vkoul@kernel.org \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.