linux/sound/soc
Maxime Ripard 58f30150ff
ASoC: core: Remove only the registered component in devm functions
The ASoC devm_ functions that register a component
(devm_snd_soc_register_component and devm_snd_dmaengine_pcm_register) will
clean their component by running snd_soc_unregister_component.

snd_soc_unregister_component will then remove all the components for the
device that was used to register the component in the first place.

However, some drivers register several components (such as a DAI and a
dmaengine PCM) on the same device, and if the dmaengine PCM is registered
first, then the DAI will be cleaned up first and
snd_dmaengine_pcm_unregister will be called next.

snd_dmaengine_pcm_unregister will then lookup the dmaengine PCM component
on the device, and if there's one unregister that component and release its
dmaengine channels. That doesn't happen in practice though since the first
call to snd_soc_unregister_component removed all the components, so we
never get the chance to release the dmaengine channels.

In order to fix this, instead of removing all the components for a given
device, we can simply remove the component that was registered in the first
place. We should have the same number of component registration than we
have components, so it should work just fine.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20200707074237.287171-1-maxime@cerno.tech
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-07-07 11:55:46 +01:00
..
adi
amd ASoC: amd: Rectifying Unbalanced pm_runtime_enable! issue 2020-07-01 14:20:00 +01:00
atmel ASoC: atomel: use snd_soc_xxx_active() 2020-05-18 16:15:04 +01:00
au1x ASoC: au1x: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:32 +00:00
bcm ASoC: bcm: use snd_soc_xxx_active() 2020-05-18 16:15:05 +01:00
cirrus ASoC: cirrus: use snd_soc_xxx_active() 2020-05-18 16:15:06 +01:00
codecs ASoC: rt5682: cancel jack_detect_work if hs_jack is set to null even soundwire mode 2020-07-01 14:20:00 +01:00
dwc ASoC: dwc: use snd_soc_xxx_active() 2020-05-18 16:15:15 +01:00
fsl ASoC: fsl_mqs: Fix unchecked return value for clk_prepare_enable 2020-06-23 11:14:22 +01:00
generic ASoC: generic: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:36 +00:00
hisilicon ASoC: hisilicon: Use the defined variable to clean code 2020-04-27 14:08:44 +01:00
img ASoC: img-i2s-out: Fix runtime PM imbalance on error 2020-05-29 13:30:04 +01:00
intel ASoC: Intel: cht_bsw_rt5672: Change bus format to I2S 2 channel 2020-06-29 20:37:18 +01:00
jz4740 ASoC: ingenic: Unconditionally depend on devicetree 2020-05-28 13:20:17 +01:00
kirkwood ASoC: kirkwood: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:39 +00:00
mediatek ASoC: mediatek: use snd_soc_xxx_active() 2020-05-18 16:15:11 +01:00
meson ASoC: meson: add missing free_irq() in error path 2020-06-09 12:04:57 +01:00
mxs ASoC: mxs-saif: Fix unused assignment 2020-04-29 14:23:19 +01:00
pxa ASoC: mmp-sspa: Fix return value check in asoc_mmp_sspa_probe() 2020-05-27 14:48:56 +01:00
qcom ASoC: qcom: Drop HAS_DMA dependency to fix link failure 2020-06-29 17:52:22 +01:00
rockchip ASoC: rockchip: add format and rate constraints on rk3399 2020-07-01 14:20:01 +01:00
samsung ASoC: samsung: s3c24xx-i2s: Fix build after removal of DAI suspend/resume 2020-04-14 12:16:22 +01:00
sh SoC: rsnd: add interrupt support for SSI BUSIF buffer 2020-05-12 10:56:21 +01:00
sirf ASoC: sirf: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:05:39 +01:00
sof ASoC: SOF: Intel: add PCI IDs for ICL-H and TGL-H 2020-06-17 20:01:02 +01:00
spear ASoC: spear: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:06:18 +01:00
sprd ASoC: sprd: use snd_compress_ops 2020-04-21 19:01:59 +01:00
sti ASoC: sti: sti_uniperif: move .suspend/.resume to component 2020-01-21 17:04:37 +00:00
stm ASoC: stm32: sai: fix sai probe 2020-04-17 19:37:14 +01:00
sunxi ASoC: sunxi: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:50 +00:00
tegra ASoC: tegra: tegra_wm8903: Use devm_snd_soc_register_card() 2020-04-28 16:40:36 +01:00
ti ASoC: ti: Fix runtime PM imbalance in omap2_mcbsp_set_clks_src 2020-05-26 17:20:22 +01:00
txx9 ASoC: txx9: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:53 +00:00
uniphier ASoC: uniphier: use snd_soc_xxx_active() 2020-05-18 16:15:14 +01:00
ux500 ASoC: ux500: mop500: Fix some refcounted resources issues 2020-05-12 17:14:34 +01:00
xilinx ASoC: xilinx: Use managed buffer allocation 2019-12-11 16:43:25 +00:00
xtensa ASoC: xtensa: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:55 +00:00
zte ASoC: zte: zx-tdm: remove redundant variables dev 2020-03-11 17:59:49 +00:00
Kconfig ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
Makefile ASoC: add soc-card.c 2020-05-30 02:11:27 +01:00
soc-ac97.c
soc-acpi.c
soc-card.c ASoC: soc-card: add snd_soc_card_remove_dai_link() 2020-05-30 02:11:42 +01:00
soc-component.c ASoC: soc-component: tidyup snd_soc_pcm_component_sync_stop() 2020-02-28 17:06:09 +00:00
soc-compress.c ASoC: soc-link: add snd_soc_link_compr_set_params() 2020-05-25 14:22:14 +01:00
soc-core.c ASoC: core: Remove only the registered component in devm functions 2020-07-07 11:55:46 +01:00
soc-dai.c ASoC: reduce verbosity of error messages for sof-dai and sof-link 2020-05-29 14:21:45 +01:00
soc-dapm.c ASoC: soc-card: add snd_soc_card_set_bias_level_post() 2020-05-30 02:11:40 +01:00
soc-devres.c ASoC: core: Remove only the registered component in devm functions 2020-07-07 11:55:46 +01:00
soc-generic-dmaengine-pcm.c ASoC: core: Remove only the registered component in devm functions 2020-07-07 11:55:46 +01:00
soc-io.c
soc-jack.c ASoC: soc-card: move snd_soc_card_jack_new() to soc-card 2020-05-30 02:11:28 +01:00
soc-link.c ASoC: reduce verbosity of error messages for sof-dai and sof-link 2020-05-29 14:21:45 +01:00
soc-ops.c ASoC: fix regwmask 2020-03-30 18:22:36 +01:00
soc-pcm.c ASoC: soc-pcm: fix checks for multi-cpu FE dailinks 2020-06-15 15:18:30 +01:00
soc-topology.c ASoC: soc-topology: use devm_snd_soc_register_dai() 2020-06-15 14:15:12 +01:00
soc-utils.c ASoC: utils: Drop superfluous ioctl PCM ops 2019-12-11 16:00:48 +00:00