linux-stable/sound
Takashi Iwai e8ad415b7a ALSA: core: Add managed card creation
As a second step for preliminary to widen the devres usages among
sound drivers, this patch adds a new ALSA core API function,
snd_devm_card_new(), to create a snd_card object via devres.
When a card object is created by this new function, snd_card_free() is
called automatically and the card object resource gets released at the
device unbinding time.

However, the story isn't that simple.  A caveat is that we have to
call snd_card_free() at the very first of the whole resource release
procedure, in order to assure that the all exposed devices on
user-space are deleted and sync with processes accessing those devices
before releasing resources.

For achieving it, snd_card_register() adds a new devres action to
trigger snd_card_free() automatically when the given card object is a
"managed" one.  Since usually snd_card_register() is the last step of
the initialization, this should work in most cases.

With all these tricks, some drivers can get rid of the whole driver
remove callback code.

About a bit of implementation details: the patch adds two new flags to
snd_card object: managed and releasing.  The former indicates that the
object was created via snd_devm_card_new(), and the latter is used for
avoiding the double-free of snd_card_free() calls.  Both flags are
fairly internal and likely uninteresting to normal users.

Link: https://lore.kernel.org/r/20210715075941.23332-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-07-19 16:16:33 +02:00
..
ac97 ALSA: ac97: fix PM reference leak in ac97_bus_remove() 2021-05-25 08:59:08 +02:00
aoa ALSA: aoa: remove unnecessary oom message 2021-06-17 17:31:38 +02:00
arm ALSA: arm: Remove unnecessary variables 2021-06-10 09:51:21 +02:00
atmel
core ALSA: core: Add managed card creation 2021-07-19 16:16:33 +02:00
drivers ALSA: aloop: Fix spelling mistake "synchronization" -> "synchronization" 2021-07-19 15:44:30 +02:00
firewire ALSA: bebob: correct duplicated entries with TerraTec OUI 2021-07-05 19:31:12 +02:00
hda ALSA: hda: Add AlderLake-M PCI ID 2021-05-30 09:33:08 +02:00
i2c ALSA: i2c: tea6330t: Remove redundant initialization of variable err 2021-06-12 09:32:14 +02:00
isa ALSA: isa: Fix error return code in snd_cmi8330_probe() 2021-07-07 13:26:19 +02:00
mips ALSA: n64: check return value after calling platform_get_resource() 2021-06-12 09:31:13 +02:00
oss sound/oss/dmasound: Remove superfluous "break" 2021-05-27 08:24:23 +02:00
parisc ALSA: parisc: Fix assignment in if condition 2021-06-09 17:30:39 +02:00
pci ALSA: intel8x0: Skip ac97 clock measurement on VM 2021-07-12 13:13:52 +02:00
pcmcia ALSA: pcmcia: Fix assignment in if condition 2021-06-09 17:30:28 +02:00
ppc ALSA: ppc: fix error return code in snd_pmac_probe() 2021-06-16 08:52:29 +02:00
sh
soc ALSA: compress: Initialize mutex in snd_compress_new() 2021-07-15 10:22:38 +02:00
sparc ALSA: sparc: Fix assignment in if condition 2021-06-09 17:30:29 +02:00
spi
synth ALSA: emux: fix spelling mistakes 2021-07-05 19:34:22 +02:00
usb ALSA: usb-audio: Reduce latency at playback start, take#2 2021-07-07 16:45:33 +02:00
virtio ALSA: virtio: fix kernel-doc 2021-04-27 08:39:39 +02:00
x86 ALSA: x86: simplify with sync_stop PCM ops 2021-07-12 13:13:26 +02:00
xen
ac97_bus.c
Kconfig
last.c
Makefile
sound_core.c