linux-stable/sound
Charles Keepax f3eb3d45fd
ASoC: intel: sof_sdw: Device loop should not always start at adr_index
The current loops at the top of create_sdw_dailink process the devices
on each link starting from device index adr_index. But adr_index is only
meaningful on the first on these SoundWire links, as it is the index of
the current device on that link. This means devices will be skipped on
later links.

Say for example the system looks like this:

SDW0 - Codec (Not Aggregated), Amp 1 (Aggregated, Group 1)
SDW1 - Amp 2 (Aggregated, Group 1), Amp 3 (Aggregated, Group 1)

The code should create 2 DAI links, one for the CODEC and one for the
aggregated amps. It will create the DAI link for the codec no problem.
When it creates the DAI link for Group 1 however, create_sdw_dailink
will be called with an adr_index of 1, since that is the index of Amp
1 on SDW0.  However, as the loop in create_sdw_dailink moves onto SDW1
it will again start from adr_index, skipping Amp 2. Resulting in the amp
DAI link only have amps 1 and 3 in it.

It is reasonable to start at adr_index on the first link, since
earlier devices have by definition already been processed. However,
update the code when processing later links to handle all devices.

Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230808132013.889419-9-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-08-08 18:57:23 +01:00
..
ac97
aoa ALSA: Switch i2c drivers back to use .probe() 2023-06-05 09:22:45 +02:00
arm ARM: pxa: fix missing-prototypes warnings 2023-05-26 13:33:05 +02:00
atmel
core ALSA: seq: remove redundant unsigned comparison to zero 2023-07-21 13:02:16 +02:00
drivers ALSA: pcmtest: Don't use static storage to track per device data 2023-07-10 08:52:37 +02:00
firewire ALSA: fireface: make read-only const array for model names static 2023-06-28 11:42:55 +02:00
hda ALSA: hda/i915: extend connectivity check to cover Intel ARL 2023-08-04 12:53:53 +02:00
i2c ALSA: i2c/cs8427: fix iec958 mixer control deactivation 2023-04-06 08:09:36 +02:00
isa Merge branch 'for-next' into for-linus 2023-06-26 15:23:23 +02:00
mips ALSA: mips/sgio2audio: Convert to platform remove callback returning void 2023-03-20 13:07:05 +00:00
oss
parisc
pci ASoC: SOF: Intel: add LunarLake support 2023-08-08 13:28:53 +01:00
pcmcia ALSA: add HAS_IOPORT dependencies 2023-05-22 16:43:47 +02:00
ppc ALSA: Switch i2c drivers back to use .probe() 2023-06-05 09:22:45 +02:00
sh ALSA: sh_dac_audio: Convert to platform remove callback returning void 2023-03-20 13:07:08 +00:00
soc ASoC: intel: sof_sdw: Device loop should not always start at adr_index 2023-08-08 18:57:23 +01:00
sparc ALSA: sparc/dbri: Convert to platform remove callback returning void 2023-03-20 13:09:37 +00:00
spi
synth ALSA: emu10k1: fix synthesizer pitch for E-MU cards at 44.1 kHz 2023-06-13 07:42:08 +02:00
usb ALSA: usb-audio: Update for native DSD support quirks 2023-07-26 20:04:34 +02:00
virtio
x86
xen
ac97_bus.c
Kconfig ALSA: Enable build with UML 2023-07-18 15:19:01 +01:00
last.c
Makefile
sound_core.c sound: make all 'class' structures const 2023-06-21 07:29:10 +02:00