The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Andrey Golovko <andrey.golovko@gmail.com>
To: Antoine Monnet <antoine@montane.tech>, 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>,
	Robin Everaars <robineveraars@pm.me>,
	Ville Saarinen <wiza@saarinenkoti.fi>,
	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: Thu, 13 Aug 2026 00:33:29 +0300	[thread overview]
Message-ID: <cc1960d677a7f5a5c86d48c3037c0aa6@gmail.com> (raw)
In-Reply-To: <778f017a-e1c2-4ab6-9968-6e4c6285180b@montane.tech>

Antoine,

your patch from 27 July is still the only working stereo fix for these
boards, and it is now the only one left: Ville withdrew his series on
11 August and asked that the tags go to Robin and to you, and nobody
else has posted anything. It has never been sent as a formal [PATCH],
so as things stand it cannot be applied by anyone.

I think it should be, and I would like to know how you want that to
happen.

Where it has been tested
========================

  - your machine, ASUS ProArt PX13 HN7306EA (the original report);
  - mine, ASUS ProArt PX13 HN7306EAC: Tested-by sent on 7 August, and
    re-confirmed yesterday on a current broonie/sound for-next kernel --
    speaker-test -c2 -s1 is the physically left speaker, -s2 the right,
    with no audible level imbalance between them;
  - Robin's board, same amp pair, where the one-channel-mask approach was
    independently established and measured.

Robin has asked for Reported-by: and Suggested-by: on the channel-mask
patch, since his 5 August report and the follow-up measurement
established both the approach and the positional behaviour of
sdw_compute_slave_ports().

Two options
===========

Either you post it yourself as a proper [PATCH] -- which I would prefer,
it is your work -- or, if you would rather not spend time on it, I am
happy to send it with your authorship intact:

  From: Antoine Monnet <antoine@montane.tech>
  Reported-by: Robin Everaars <robineveraars@pm.me>
  Suggested-by: Robin Everaars <robineveraars@pm.me>
  Tested-by: Andrey Golovko <andrey@golovko.me>

Just say which, and if the second, whether you want anything changed
first. I will not send anything under your name without your word.

One thing worth putting in the changelog
========================================

The name_prefix -> BIT(n) mapping reads as if the bit chose the channel,
and it does not. As Robin measured, inverting the two masks between the
amps does not move the audio: sdw_compute_slave_ports() advances the
payload offset by hweight32(ch_mask) and never looks at which bit is
set, so a one-channel mask fixes mono by defeating mirror mode, and L/R
then follows codec order in the DAI link, which on these boards happens
to match the speakers.

That is worth a sentence in the commit message so nobody later reads the
mapping as an ABI promise. It does not make the patch less correct -- the
split it produces is right on three machines -- but it is the honest
description of why it works.

For completeness on the SDCA-correct alternative that Pierre-Louis raised:
Ville measured that UDMPU23 ClusterIndex is simply not implemented on his
TAS2783 revision, answering COMMAND_IGNORED to writes and to a plain read
alike, so that route is closed at least on that silicon. TI have not
commented on the intended mechanism.

Unrelated, but you followed it: the "no audio after s2idle resume" problem
you reported in July is understood and patched. After S0i3 the amplifier
comes back with PDE23 at PS3, and a data port cannot complete channel
preparation while the Function is powered down; the power-up only ever
happened in hw_params(), which a resumed stream never calls again. Patch:

  https://lore.kernel.org/all/20260813001500.9218-1-andrey.golovko@gmail.com/

Thanks,
Andrey

      parent reply	other threads:[~2026-08-12 21:33 UTC|newest]

Thread overview: 6+ 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
2026-07-27 11:21   ` Antoine Monnet
2026-08-07  5:21     ` Andrey Golovko
2026-08-07  9:19       ` Pierre-Louis Bossart
2026-08-12 21:33     ` Andrey Golovko [this message]

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=cc1960d677a7f5a5c86d48c3037c0aa6@gmail.com \
    --to=andrey.golovko@gmail.com \
    --cc=Vijendar.Mukunda@amd.com \
    --cc=antoine@montane.tech \
    --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=pierre-louis.bossart@linux.dev \
    --cc=robineveraars@pm.me \
    --cc=sen@ti.com \
    --cc=shenghao-ding@ti.com \
    --cc=vkoul@kernel.org \
    --cc=wiza@saarinenkoti.fi \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox