aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sound/firewire/digi00x
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2019-06-18 22:26:18 +0900
committerTakashi Iwai <tiwai@suse.de>2019-06-21 11:47:04 +0200
commitb9434540dd8f702c2cf33b82674e027cb779146e (patch)
treefd766463809b7b53de694f4d230aeac203eaf092 /sound/firewire/digi00x
parentALSA: firewire-motu: unify stop and release method for duplex streams (diff)
downloadwireguard-linux-b9434540dd8f702c2cf33b82674e027cb779146e.tar.xz
wireguard-linux-b9434540dd8f702c2cf33b82674e027cb779146e.zip
ALSA: firewire-digi00x: unify stop and release method for duplex streams
>From callbacks for pcm and rawmidi interfaces, the functions to stop and release duplex streams are called at the same time. This commit merges the two functions. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/firewire/digi00x')
-rw-r--r--sound/firewire/digi00x/digi00x-midi.c1
-rw-r--r--sound/firewire/digi00x/digi00x-pcm.c1
-rw-r--r--sound/firewire/digi00x/digi00x-stream.c14
-rw-r--r--sound/firewire/digi00x/digi00x.h1
4 files changed, 5 insertions, 12 deletions
diff --git a/sound/firewire/digi00x/digi00x-midi.c b/sound/firewire/digi00x/digi00x-midi.c
index cca888cce0d3..ca06ad318ed6 100644
--- a/sound/firewire/digi00x/digi00x-midi.c
+++ b/sound/firewire/digi00x/digi00x-midi.c
@@ -37,7 +37,6 @@ static int midi_close(struct snd_rawmidi_substream *substream)
mutex_lock(&dg00x->mutex);
--dg00x->substreams_counter;
snd_dg00x_stream_stop_duplex(dg00x);
- snd_dg00x_stream_release_duplex(dg00x);
mutex_unlock(&dg00x->mutex);
snd_dg00x_stream_lock_release(dg00x);
diff --git a/sound/firewire/digi00x/digi00x-pcm.c b/sound/firewire/digi00x/digi00x-pcm.c
index 9ed2ebdcf23a..c38fbd6ded9f 100644
--- a/sound/firewire/digi00x/digi00x-pcm.c
+++ b/sound/firewire/digi00x/digi00x-pcm.c
@@ -189,7 +189,6 @@ static int pcm_hw_free(struct snd_pcm_substream *substream)
--dg00x->substreams_counter;
snd_dg00x_stream_stop_duplex(dg00x);
- snd_dg00x_stream_release_duplex(dg00x);
mutex_unlock(&dg00x->mutex);
diff --git a/sound/firewire/digi00x/digi00x-stream.c b/sound/firewire/digi00x/digi00x-stream.c
index 3c5e1c5a2e11..7c8e7ad48d03 100644
--- a/sound/firewire/digi00x/digi00x-stream.c
+++ b/sound/firewire/digi00x/digi00x-stream.c
@@ -293,14 +293,6 @@ int snd_dg00x_stream_reserve_duplex(struct snd_dg00x *dg00x, unsigned int rate)
return 0;
}
-void snd_dg00x_stream_release_duplex(struct snd_dg00x *dg00x)
-{
- if (dg00x->substreams_counter == 0) {
- fw_iso_resources_free(&dg00x->tx_resources);
- fw_iso_resources_free(&dg00x->rx_resources);
- }
-}
-
int snd_dg00x_stream_start_duplex(struct snd_dg00x *dg00x)
{
unsigned int generation = dg00x->rx_resources.generation;
@@ -372,8 +364,12 @@ error:
void snd_dg00x_stream_stop_duplex(struct snd_dg00x *dg00x)
{
- if (dg00x->substreams_counter == 0)
+ if (dg00x->substreams_counter == 0) {
finish_session(dg00x);
+
+ fw_iso_resources_free(&dg00x->tx_resources);
+ fw_iso_resources_free(&dg00x->rx_resources);
+ }
}
void snd_dg00x_stream_update_duplex(struct snd_dg00x *dg00x)
diff --git a/sound/firewire/digi00x/digi00x.h b/sound/firewire/digi00x/digi00x.h
index 3fb1c49f6f9e..2d026b5b0079 100644
--- a/sound/firewire/digi00x/digi00x.h
+++ b/sound/firewire/digi00x/digi00x.h
@@ -143,7 +143,6 @@ int snd_dg00x_stream_init_duplex(struct snd_dg00x *dg00x);
int snd_dg00x_stream_reserve_duplex(struct snd_dg00x *dg00x, unsigned int rate);
int snd_dg00x_stream_start_duplex(struct snd_dg00x *dg00x);
void snd_dg00x_stream_stop_duplex(struct snd_dg00x *dg00x);
-void snd_dg00x_stream_release_duplex(struct snd_dg00x *dg00x);
void snd_dg00x_stream_update_duplex(struct snd_dg00x *dg00x);
void snd_dg00x_stream_destroy_duplex(struct snd_dg00x *dg00x);