forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/sound/firewire/digi00x/digi00x-midi.c
....@@ -1,9 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * digi00x-midi.h - a part of driver for Digidesign Digi 002/003 family
34 *
45 * Copyright (c) 2014-2015 Takashi Sakamoto
5
- *
6
- * Licensed under the terms of the GNU General Public License, version 2.
76 */
87
98 #include "digi00x.h"
....@@ -18,8 +17,13 @@
1817 return err;
1918
2019 mutex_lock(&dg00x->mutex);
21
- dg00x->substreams_counter++;
22
- err = snd_dg00x_stream_start_duplex(dg00x, 0);
20
+ err = snd_dg00x_stream_reserve_duplex(dg00x, 0, 0, 0);
21
+ if (err >= 0) {
22
+ ++dg00x->substreams_counter;
23
+ err = snd_dg00x_stream_start_duplex(dg00x);
24
+ if (err < 0)
25
+ --dg00x->substreams_counter;
26
+ }
2327 mutex_unlock(&dg00x->mutex);
2428 if (err < 0)
2529 snd_dg00x_stream_lock_release(dg00x);
....@@ -32,7 +36,7 @@
3236 struct snd_dg00x *dg00x = substream->rmidi->private_data;
3337
3438 mutex_lock(&dg00x->mutex);
35
- dg00x->substreams_counter--;
39
+ --dg00x->substreams_counter;
3640 snd_dg00x_stream_stop_duplex(dg00x);
3741 mutex_unlock(&dg00x->mutex);
3842