linux/sound/soc
Pierre-Louis Bossart 21a00fb337
ASoC: soc-link: introduce exit() callback
Some machine drivers allocate or request resources with
snd_soc_link_init() phase of the card probe. These resources need to
be properly released when removing a card, and this patch suggests a
dual exit() callback.

The exit() is invoked in soc_remove_pcm_runtime(), which is not
completely symmetric with the init() invoked in soc_init_pcm_runtime().

Alternate solutions were considered, e.g. adding a .remove() callback
for the platform driver, but that's not symmetrical at all and would
be difficult to handle if there are more than one dailink implementing
an .init(). We looked also into using .remove_dai_link() callback, but
that would also be imbalanced.

Note that because of the error handling in snd_soc_bind_card(), which
jumps to probe_end, there is no way to guarantee the exit() is invoked
with resources allocated in the init(). Prior to releasing those
resources, implementations of the exit() callback shall check the
resources are valid.

Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Curtis Malainey <curtis@malainey.com>
Link: https://lore.kernel.org/r/20200622154241.29053-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-06-23 12:25:37 +01:00
..
adi
amd ASoC: amd: Removing unnecessary instance initialization 2020-06-18 13:14:25 +01:00
atmel ASoC: atmel: rename to snd_soc_component_read() 2020-06-22 15:13:39 +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 Merge series "ASoC: merge snd_soc_component_read() and snd_soc_component_read32()" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: 2020-06-22 15:36:06 +01:00
dwc ASoC: dwc: use snd_soc_xxx_active() 2020-05-18 16:15:15 +01:00
fsl ASoC: soc-component: merge snd_soc_component_read() and snd_soc_component_read32() 2020-06-22 15:13:36 +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-parallel-out: Fix a reference count leak 2020-06-15 20:58:35 +01:00
intel ASoC: Intel: broadwell: simplify card names for SOF uses 2020-06-17 20:58:32 +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: soc-component: merge snd_soc_component_read() and snd_soc_component_read32() 2020-06-22 15:13:36 +01:00
mxs ASoC: mxs-saif: Fix unused assignment 2020-04-29 14:23:19 +01:00
pxa ASoC: pxa: rename to snd_soc_component_read() 2020-06-22 15:13:38 +01:00
qcom ASoC: qcom: Kconfig: Tweak dependencies on SND_SOC_SDM845 2020-06-19 12:07:01 +01:00
rockchip ASoC: rockchip: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:45 +00:00
samsung ASoC: samsung: Add driver for Aries boards 2020-06-15 20:58:30 +01:00
sh SoC: rsnd: add interrupt support for SSI BUSIF buffer 2020-05-12 10:56:21 +01:00
sirf
sof ASoC: SOF: Intel: hda: Clear RIRB status before reading WP 2020-06-15 15:18:34 +01:00
spear
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: Fix reference count leaks. 2020-06-17 14:04:02 +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: add back the hack for a too small resource_size_t 2020-04-21 20:01:50 +02: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 treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile ASoC: soc-component: merge soc-io.c into soc-component.c 2020-06-15 18:21:26 +01:00
soc-ac97.c ASoC: soc-component: merge snd_soc_component_read() and snd_soc_component_read32() 2020-06-22 15:13:36 +01:00
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: use io_mutex correctly 2020-06-22 15:13:37 +01:00
soc-compress.c ASoC: soc-pcm/compress: reduce verbosity on mapping ok messages 2020-06-15 17:12:11 +01:00
soc-core.c ASoC: soc-link: introduce exit() callback 2020-06-23 12:25:37 +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-component: merge snd_soc_component_read() and snd_soc_component_read32() 2020-06-22 15:13:36 +01:00
soc-devres.c ASoC: soc-devres: add devm_snd_soc_register_dai() 2020-06-15 14:15:11 +01:00
soc-generic-dmaengine-pcm.c ASoC: dmaengine_pcm: export soc_component_to_pcm 2020-06-12 14:18:02 +01:00
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: soc-link: introduce exit() callback 2020-06-23 12:25:37 +01:00
soc-ops.c ASoC: soc-component: merge snd_soc_component_read() and snd_soc_component_read32() 2020-06-22 15:13:36 +01:00
soc-pcm.c Merge series "ASoC: improve core dmesg logs and verbosity" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>: 2020-06-15 20:58:46 +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