summaryrefslogtreecommitdiffstats
path: root/sound/firewire/motu/motu-midi.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/firewire/motu/motu-midi.c')
-rw-r--r--sound/firewire/motu/motu-midi.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/firewire/motu/motu-midi.c b/sound/firewire/motu/motu-midi.c
index 3b205386ed24..a463730c72bc 100644
--- a/sound/firewire/motu/motu-midi.c
+++ b/sound/firewire/motu/motu-midi.c
@@ -18,8 +18,11 @@ static int midi_open(struct snd_rawmidi_substream *substream)
mutex_lock(&motu->mutex);
- motu->substreams_counter++;
- err = snd_motu_stream_start_duplex(motu, 0);
+ err = snd_motu_stream_reserve_duplex(motu, 0);
+ if (err >= 0) {
+ ++motu->substreams_counter;
+ err = snd_motu_stream_start_duplex(motu);
+ }
mutex_unlock(&motu->mutex);
@@ -35,8 +38,9 @@ static int midi_close(struct snd_rawmidi_substream *substream)
mutex_lock(&motu->mutex);
- motu->substreams_counter--;
+ --motu->substreams_counter;
snd_motu_stream_stop_duplex(motu);
+ snd_motu_stream_release_duplex(motu);
mutex_unlock(&motu->mutex);