diff options
author | Richard Fitzgerald <rf@opensource.cirrus.com> | 2024-04-01 10:02:08 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2024-04-02 15:54:47 +0100 |
commit | 08ea486a61451189b190c7b89e406b889cf693fa (patch) | |
tree | 521dfafdc4a675aeda82017b368a26e53ee81895 /include/sound | |
parent | 2ae143fb3a057ad7d0a5f833386116441bfd5172 (diff) | |
download | lwn-08ea486a61451189b190c7b89e406b889cf693fa.tar.gz lwn-08ea486a61451189b190c7b89e406b889cf693fa.zip |
ALSA: control: Introduce snd_ctl_find_id_mixer_locked()
Adds wrapper function snd_ctl_find_id_mixer_locked(). This is
identical to snd_ctl_find_id_mixer() except that it can be called
from code that is already holding controls_rwsem.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Link: https://msgid.link/r/20240401100210.61277-2-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/control.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/include/sound/control.h b/include/sound/control.h index 9a4f4f7138da..c1659036c4a7 100644 --- a/include/sound/control.h +++ b/include/sound/control.h @@ -167,6 +167,29 @@ snd_ctl_find_id_mixer(struct snd_card *card, const char *name) return snd_ctl_find_id(card, &id); } +/** + * snd_ctl_find_id_mixer_locked - find the control instance with the given name string + * @card: the card instance + * @name: the name string + * + * Finds the control instance with the given name and + * @SNDRV_CTL_ELEM_IFACE_MIXER. Other fields are set to zero. + * + * This is merely a wrapper to snd_ctl_find_id_locked(). + * The caller must down card->controls_rwsem before calling this function. + * + * Return: The pointer of the instance if found, or %NULL if not. + */ +static inline struct snd_kcontrol * +snd_ctl_find_id_mixer_locked(struct snd_card *card, const char *name) +{ + struct snd_ctl_elem_id id = {}; + + id.iface = SNDRV_CTL_ELEM_IFACE_MIXER; + strscpy(id.name, name, sizeof(id.name)); + return snd_ctl_find_id_locked(card, &id); +} + int snd_ctl_create(struct snd_card *card); int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn); |