ASoC: Fix missing channel fixup for codec end of ch_map

Richard Fitzgerald <rf@opensource.cirrus.com> says:

Struct snd_soc_dai_link_ch_map had a single mask member to set the
CPU channel masks. But no fixup was done to the codec end of the link.

For example if a 4-channel CPU capture DAI was made from two codecs both
supplying 2 channels, the hw_params() of the codec would be passed a
channel count of 4.

On SoundWire this could cause multiple codecs to send data in the same
bits of a frame because the unused channels were not disabled.

The changes in this series are:
- Separate channel masks for CPU and codec in struct
  snd_soc_dai_link_ch_map .

- Apply the codec channel mask as a channel count fixup if the machine
  drive has not set a TDM mask.

- Set the codec channel mask in the SoundWire machine driver.

- Remove the workaround from the cs_amp machine driver.

Link: https://patch.msgid.link/20260910114500.1586637-1-rf@opensource.cirrus.com
This commit is contained in:
Mark Brown 2026-09-14 00:37:42 +01:00
commit 0cde044bc4
5 changed files with 29 additions and 64 deletions