mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 07:02:29 -04:00
greybus: audio: Reduce codec->lock granularity
Earlier codec->lock protects almost complete register/unregister module function. This can be reduced to specific operations. Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
bb9986ef6b
commit
c188fdc817
@@ -933,20 +933,17 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
|
||||
card = codec->card->snd_card;
|
||||
|
||||
down_write(&card->controls_rwsem);
|
||||
mutex_lock(&gbcodec->lock);
|
||||
|
||||
if (module->num_dais) {
|
||||
dev_err(gbcodec->dev,
|
||||
"%d:DAIs not supported via gbcodec driver\n",
|
||||
module->num_dais);
|
||||
mutex_unlock(&gbcodec->lock);
|
||||
up_write(&card->controls_rwsem);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = gbaudio_init_jack(module, codec);
|
||||
if (ret) {
|
||||
mutex_unlock(&gbcodec->lock);
|
||||
up_write(&card->controls_rwsem);
|
||||
return ret;
|
||||
}
|
||||
@@ -976,12 +973,14 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
|
||||
#endif
|
||||
}
|
||||
|
||||
mutex_lock(&gbcodec->lock);
|
||||
list_add(&module->list, &gbcodec->module_list);
|
||||
mutex_unlock(&gbcodec->lock);
|
||||
|
||||
if (codec->card->instantiated)
|
||||
ret = snd_soc_dapm_new_widgets(&codec->dapm);
|
||||
dev_dbg(codec->dev, "Registered %s module\n", module->name);
|
||||
|
||||
mutex_unlock(&gbcodec->lock);
|
||||
up_write(&card->controls_rwsem);
|
||||
return ret;
|
||||
}
|
||||
@@ -1065,6 +1064,7 @@ void gbaudio_unregister_module(struct gbaudio_module_info *module)
|
||||
gbaudio_codec_cleanup(module);
|
||||
list_del(&module->list);
|
||||
dev_dbg(codec->dev, "Process Unregister %s module\n", module->name);
|
||||
mutex_unlock(&gbcodec->lock);
|
||||
|
||||
#ifdef CONFIG_SND_JACK
|
||||
/* free jack devices for this module from codec->jack_list */
|
||||
@@ -1098,7 +1098,6 @@ void gbaudio_unregister_module(struct gbaudio_module_info *module)
|
||||
|
||||
dev_dbg(codec->dev, "Unregistered %s module\n", module->name);
|
||||
|
||||
mutex_unlock(&gbcodec->lock);
|
||||
up_write(&card->controls_rwsem);
|
||||
}
|
||||
EXPORT_SYMBOL(gbaudio_unregister_module);
|
||||
|
||||
Reference in New Issue
Block a user