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