mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 21:57:43 +00:00
staging: greybus: audio_helper: Use snd_ctl_remove_id()
Use the standard snd_ctl_remove_id() helper function instead of open code. This allows us to reduce the manual card->rwsem lock in the caller side. Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Johan Hovold <johan@kernel.org> Cc: Alex Elder <elder@kernel.org> Cc: greybus-dev@lists.linaro.org Link: https://lore.kernel.org/r/20230718141304.1032-3-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
d4e99962d1
commit
6eca691475
1 changed files with 4 additions and 16 deletions
|
@ -149,7 +149,6 @@ static int gbaudio_remove_controls(struct snd_card *card, struct device *dev,
|
|||
for (i = 0; i < num_controls; i++) {
|
||||
const struct snd_kcontrol_new *control = &controls[i];
|
||||
struct snd_ctl_elem_id id;
|
||||
struct snd_kcontrol *kctl;
|
||||
|
||||
if (prefix)
|
||||
snprintf(id.name, sizeof(id.name), "%s %s", prefix,
|
||||
|
@ -161,17 +160,10 @@ static int gbaudio_remove_controls(struct snd_card *card, struct device *dev,
|
|||
id.device = control->device;
|
||||
id.subdevice = control->subdevice;
|
||||
id.index = control->index;
|
||||
kctl = snd_ctl_find_id(card, &id);
|
||||
if (!kctl) {
|
||||
dev_err(dev, "Failed to find %s\n", control->name);
|
||||
continue;
|
||||
}
|
||||
err = snd_ctl_remove(card, kctl);
|
||||
if (err < 0) {
|
||||
err = snd_ctl_remove_id(card, &id);
|
||||
if (err < 0)
|
||||
dev_err(dev, "%d: Failed to remove %s\n", err,
|
||||
control->name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -181,11 +173,7 @@ int gbaudio_remove_component_controls(struct snd_soc_component *component,
|
|||
unsigned int num_controls)
|
||||
{
|
||||
struct snd_card *card = component->card->snd_card;
|
||||
int err;
|
||||
|
||||
down_write(&card->controls_rwsem);
|
||||
err = gbaudio_remove_controls(card, component->dev, controls,
|
||||
num_controls, component->name_prefix);
|
||||
up_write(&card->controls_rwsem);
|
||||
return err;
|
||||
return gbaudio_remove_controls(card, component->dev, controls,
|
||||
num_controls, component->name_prefix);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue