linux_dsm_epyc7002/sound/soc
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
..
adi
amd ASoC: AMD: Configure channel 1 or channel 0 for capture 2018-06-22 15:48:26 +01:00
atmel ASoC: atmel-i2s: add driver for the new Atmel I2S controller 2018-05-29 15:37:21 +01:00
au1x treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
bcm ASoC: Remove depends on HAS_DMA in case of platform dependency 2018-04-18 11:17:09 +01:00
cirrus ASoC: cirrus: i2s: IRQ-based stream watchdog 2018-05-11 11:27:33 +09:00
codecs ASoC: tas517x: add tas5707 support 2018-06-27 12:26:41 +01:00
davinci treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
dwc
fsl ASoC: Updates for v4.18 2018-06-05 16:51:55 +02:00
generic ASoC: audio-graph-card: add hp and mic detect gpios same as simple-card 2018-06-18 12:54:38 +01:00
hisilicon ASoC: hisilicon: fix spelling mistake: "uknown" -> "unknown" 2018-05-13 10:08:11 +09:00
img treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
intel ASoC: Intel: bytcr_rt5651: Sort DMI table entries alphabetically 2018-06-27 12:11:34 +01:00
jz4740
kirkwood ASoC: Remove depends on HAS_DMA in case of platform dependency 2018-04-18 11:17:09 +01:00
mediatek treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
mxs
nuc900
omap ASoC: twl6040: make pointer dmic_codec_dev static 2018-06-18 12:54:38 +01:00
pxa Merge tag 'pxa-for-4.19-dma_slave_map' of 2018-06-25 14:05:18 +01:00
qcom ASoC: qdsp6: q6asm: remove unused struct q6asm member 2018-06-26 15:41:55 +01:00
rockchip ASoC: rockchip: add config for rockchip dmaengine pcm register 2018-06-18 12:54:38 +01:00
samsung Merge remote-tracking branches 'asoc/topic/wm8991', 'asoc/topic/wm8994', 'asoc/topic/wm8995', 'asoc/topic/wm8996' and 'asoc/topic/wm9081' into asoc-next 2018-03-28 10:31:54 +08:00
sh Merge branch 'asoc-4.18' into asoc-4.19 for amd dep 2018-06-22 15:47:23 +01:00
sirf
spear
sti
stm ASoC: stm32: sai: add iec958 controls support 2018-06-18 12:54:38 +01:00
sunxi Merge remote-tracking branches 'asoc/topic/sta529', 'asoc/topic/sti-sas', 'asoc/topic/stm32', 'asoc/topic/sun4i' and 'asoc/topic/sun8i' into asoc-next 2018-03-28 10:30:49 +08:00
tegra ASoC: tegra: fix device_node refcounting 2018-06-18 12:55:57 +01:00
txx9
uniphier ASoC: uniphier: remove redundant check of PLL ID 2018-06-22 15:46:31 +01:00
ux500
xtensa
zte ASoC: zte: remove duplicate includes 2018-05-17 15:46:22 +09:00
Kconfig
Makefile ASoC: remove codec reg_cache 2018-05-09 18:38:23 +09:00
soc-ac97.c
soc-acpi.c
soc-compress.c ASoC: compress: Fix up some trivial formatting issues 2018-05-11 12:24:31 +09:00
soc-core.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
soc-dapm.c Merge branch 'asoc-4.18' into asoc-4.19 for amd dep 2018-06-22 15:47:23 +01:00
soc-devres.c ASoC: Remove platform code now everything is componentised 2018-04-26 12:24:43 +01:00
soc-generic-dmaengine-pcm.c
soc-io.c ASoC: remove Codec related code 2018-05-09 18:39:07 +09:00
soc-jack.c ASoC: remove Codec related code 2018-05-09 18:39:07 +09:00
soc-ops.c
soc-pcm.c ASoC: dpcm: improve runtime update predictability 2018-06-28 11:16:23 +01:00
soc-topology.c ASoC: topology: Add callback for DAPM route load/unload 2018-06-18 12:16:21 +01:00
soc-utils.c