linux_dsm_epyc7002/sound
Jerome Brunet de15d7ff5b
ASoC: dpcm: improve runtime update predictability
As it is, dpcm_runtime_update() performs the old path and new path
update of a frontend before going on to the next frontend DAI.
Depending the order of the FEs within the rtd list, the result of
the update might be different.

For example:
 * Frontend A connected to backend C, with a 48kHz playback
 * Frontend B connected to backend D, with a 44.1kHz playback
 * FE A appears before FE B in the rtd list of the card.

If we reparent BE C to FE B (disconnecting BE D):
* old path update of FE A will run first, and BE C will get hw_free()
  and shutdown()
* new path update of FE B will run after and BE C, which is stopped,
  so it will be configured at 44.1kHz, as expected

If we reparent BE D to FE A (disconnecting BE C):
* new path update of FE A will run first but since BE D is still running
  at 44.1kHz, it won't be reconfigured (no call to startup() or
  hw_params())
* old path update of FE B runs after, nothing happens
* In this case, we end up with a BE playing at 44.1kHz a stream which is
  supposed to be played at 48Khz (too slow)

To improve this situation, this patch performs all the FE old paths update
before going on to update the new paths. With this, the result should
no longer depend on the order of the FE within the card rtd list.

Please note that there might be a small performance penalty since
dpcm_process_paths() is called twice per stream direction.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2018-06-28 11:16:23 +01:00
..
ac97 ALSA: ac97: kconfig: Remove select of undefined symbol AC97 2018-02-12 08:16:39 +01:00
aoa
arm ASoC: pxa: add devicetree support 2018-06-18 12:55:16 +01:00
atmel
core docs: Fix some broken references 2018-06-15 18:10:01 -03:00
drivers docs: Fix some broken references 2018-06-15 18:10:01 -03:00
firewire treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
hda ALSA: hda - Use a macro for snd_array iteration loops 2018-04-24 13:41:53 +02:00
i2c
isa media updates for v4.18-rc1 2018-06-07 12:34:37 -07:00
mips
oss treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
parisc
pci docs: Fix some broken references 2018-06-15 18:10:01 -03:00
pcmcia
ppc
sh
soc ASoC: dpcm: improve runtime update predictability 2018-06-28 11:16:23 +01:00
sparc sound: Use octal not symbolic permissions 2018-05-28 11:27:20 +02:00
spi
synth
usb sound fixes for 4.18-rc1 2018-06-15 17:24:40 +09:00
x86 ALSA: x86: Fix potential crash at error path 2018-02-28 08:46:00 +01:00
xen ALSA: xen-front: fix a loop timeout 2018-05-31 09:11:03 +02:00
ac97_bus.c
Kconfig ALSA: xen-front: Introduce Xen para-virtualized sound frontend driver 2018-05-16 12:58:36 +02:00
last.c
Makefile ALSA: xen-front: Introduce Xen para-virtualized sound frontend driver 2018-05-16 12:58:36 +02:00
sound_core.c sound: Use octal not symbolic permissions 2018-05-28 11:27:20 +02:00