Re: ASoC: tas2783-sdw: no stereo channel split for two mono amps -> mono output (AMD ACP SoundWire, ASUS ProArt PX13)

Charles Keepax <[email protected]>
Newsgroups org.kernel.vger.linux-sound,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Thu, Aug 13, 2026 at 08:56:26AM +0000, Ville Saarinen wrote:
> > 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.
> 
> Since this is headed for a changelog: the conclusion is right, but the
> stated reason was not something I had measured. COMMAND_IGNORED was my
> word, in an earlier mail, and it was an overstatement -- the host never
> sees it. find_response_code() (drivers/soundwire/bus.c) maps
> SDW_CMD_IGNORED to -ENODATA, and a control the peripheral does not
> implement arrives as -ENODATA too, so the return code cannot tell a
> deferral from an absence.
> 
> Charles, this is why you are on Cc: the same assumption is the premise
> of the .deferrable annotation on UDMPU23 Cluster Index in the patch you
> picked up, and it does not survive the measurement below.
> 
> The discriminator is Entity 0 Function Status bit 7 (FUNCTION_BUSY),
> which a deferred command sets until the Function finishes. I have now
> read it, on this board's two amps, via the SoundWire debugfs raw command
> interface -- sdw_nread_no_pm()/sdw_nwrite_no_pm(), so the driver's
> regmap is not in the path and readable_reg/mbq_size cannot colour the
> result:
> 
>   UDMPU23 Cluster Index, read:            -ENODATA
>   UDMPU23 Cluster Index, write:           -ENODATA
>   Function Status, 20 reads after each:   0x63, unchanged, ~200 us/read
>                                           FUNCTION_BUSY never set
> 
> in three states -- idle at PDE23 PS3, during playback at PS0, and forced
> to PS0 through PDE23 -- and identically on both amps.
> 
> Controls, so the result is falsifiable in both directions: PDE23 Actual
> Power State reads correctly, and a PDE23 Requested Power State write is
> accepted and moves Actual to PS0, so reads and writes both reach the
> device. A deliberately absent entity (0x3D) returns -ENODATA in every
> one of those states, indistinguishable from Cluster Index.
> 
> So the control is not deferring, powered or unpowered, on read or on
> write. "Not implemented" remains an inference rather than a datasheet,
> and a deferral shorter than one Function Status round trip (~200 us)
> would have been missed, but the deferral reading is the one thing this
> does rule out -- and that reading is what the .deferrable annotation
> encodes.

I am not sure I totally follow this, so apologies if I am getting
the wrong end of the stick, but this sounds like the solution
here is don't use a register in the driver that isn't implemented
in the device.

Thanks,
Charles
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.