summaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/audio_codec.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/greybus/audio_codec.c')
-rw-r--r--drivers/staging/greybus/audio_codec.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/staging/greybus/audio_codec.c b/drivers/staging/greybus/audio_codec.c
index d7679e6bc364..9b98e9c282da 100644
--- a/drivers/staging/greybus/audio_codec.c
+++ b/drivers/staging/greybus/audio_codec.c
@@ -64,7 +64,8 @@ static int gbaudio_module_disable(struct gbaudio_codec_info *codec,
if (module_state == GBAUDIO_CODEC_SHUTDOWN) {
dev_dbg(codec->dev, "%s: module already configured\n",
module->name);
- goto func_exit;
+ mutex_unlock(&codec->lock);
+ return 0;
}
/* find the dai */
@@ -72,8 +73,8 @@ static int gbaudio_module_disable(struct gbaudio_codec_info *codec,
if (!data) {
dev_err(codec->dev, "%s:%s DATA connection missing\n",
dai_name, module->name);
- ret = -ENODEV;
- goto func_exit;
+ mutex_unlock(&codec->lock);
+ return -ENODEV;
}
if (codec_state > GBAUDIO_CODEC_HWPARAMS) {
data_cport = data->connection->intf_cport_id;
@@ -162,7 +163,8 @@ static int gbaudio_module_enable(struct gbaudio_codec_info *codec,
if (module_state == codec_state) {
dev_dbg(codec->dev, "%s: module already configured\n",
module->name);
- goto func_exit;
+ mutex_unlock(&codec->lock);
+ return 0;
}
/* find the dai */
@@ -170,8 +172,8 @@ static int gbaudio_module_enable(struct gbaudio_codec_info *codec,
if (!data) {
dev_err(codec->dev, "%s:%s DATA connection missing\n",
dai_name, module->name);
- ret = -ENODEV;
- goto func_exit;
+ mutex_unlock(&codec->lock);
+ return -ENODEV;
}
/* register cport */
@@ -754,8 +756,8 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
if (!data) {
dev_err(dai->dev, "%s:%s DATA connection missing\n",
dai->name, module->name);
- ret = -ENODEV;
- goto func_exit;
+ mutex_unlock(&codec->lock);
+ return -ENODEV;
}
if (!mute && !stream) {/* start playback */
@@ -792,9 +794,8 @@ static int gbcodec_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
module->name, mute ? "Mute" : "Unmute",
stream ? "Capture" : "Playback", ret);
-func_exit:
mutex_unlock(&codec->lock);
- return 0;
+ return ret;
}
static struct snd_soc_dai_ops gbcodec_dai_ops = {