Commit 39e522a5 authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai

ALSA: firewire-motu: code refactoring for initialization/destruction of AMDTP stream

This commit is a preparation to support AMDTP domain.
Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 5f9625a5
...@@ -300,62 +300,52 @@ void snd_motu_stream_stop_duplex(struct snd_motu *motu) ...@@ -300,62 +300,52 @@ void snd_motu_stream_stop_duplex(struct snd_motu *motu)
} }
} }
static int init_stream(struct snd_motu *motu, enum amdtp_stream_direction dir) static int init_stream(struct snd_motu *motu, struct amdtp_stream *s)
{ {
int err;
struct amdtp_stream *stream;
struct fw_iso_resources *resources; struct fw_iso_resources *resources;
enum amdtp_stream_direction dir;
int err;
if (dir == AMDTP_IN_STREAM) { if (s == &motu->tx_stream) {
stream = &motu->tx_stream;
resources = &motu->tx_resources; resources = &motu->tx_resources;
dir = AMDTP_IN_STREAM;
} else { } else {
stream = &motu->rx_stream;
resources = &motu->rx_resources; resources = &motu->rx_resources;
dir = AMDTP_OUT_STREAM;
} }
err = fw_iso_resources_init(resources, motu->unit); err = fw_iso_resources_init(resources, motu->unit);
if (err < 0) if (err < 0)
return err; return err;
err = amdtp_motu_init(stream, motu->unit, dir, motu->spec->protocol); err = amdtp_motu_init(s, motu->unit, dir, motu->spec->protocol);
if (err < 0) { if (err < 0)
amdtp_stream_destroy(stream);
fw_iso_resources_destroy(resources); fw_iso_resources_destroy(resources);
}
return err; return err;
} }
static void destroy_stream(struct snd_motu *motu, static void destroy_stream(struct snd_motu *motu, struct amdtp_stream *s)
enum amdtp_stream_direction dir)
{ {
struct amdtp_stream *stream; amdtp_stream_destroy(s);
struct fw_iso_resources *resources;
if (dir == AMDTP_IN_STREAM) { if (s == &motu->tx_stream)
stream = &motu->tx_stream; fw_iso_resources_destroy(&motu->tx_resources);
resources = &motu->tx_resources; else
} else { fw_iso_resources_destroy(&motu->rx_resources);
stream = &motu->rx_stream;
resources = &motu->rx_resources;
}
amdtp_stream_destroy(stream);
fw_iso_resources_destroy(resources);
} }
int snd_motu_stream_init_duplex(struct snd_motu *motu) int snd_motu_stream_init_duplex(struct snd_motu *motu)
{ {
int err; int err;
err = init_stream(motu, AMDTP_IN_STREAM); err = init_stream(motu, &motu->tx_stream);
if (err < 0) if (err < 0)
return err; return err;
err = init_stream(motu, AMDTP_OUT_STREAM); err = init_stream(motu, &motu->rx_stream);
if (err < 0) if (err < 0)
destroy_stream(motu, AMDTP_IN_STREAM); destroy_stream(motu, &motu->tx_stream);
return err; return err;
} }
...@@ -366,8 +356,8 @@ int snd_motu_stream_init_duplex(struct snd_motu *motu) ...@@ -366,8 +356,8 @@ int snd_motu_stream_init_duplex(struct snd_motu *motu)
*/ */
void snd_motu_stream_destroy_duplex(struct snd_motu *motu) void snd_motu_stream_destroy_duplex(struct snd_motu *motu)
{ {
destroy_stream(motu, AMDTP_IN_STREAM); destroy_stream(motu, &motu->rx_stream);
destroy_stream(motu, AMDTP_OUT_STREAM); destroy_stream(motu, &motu->tx_stream);
motu->substreams_counter = 0; motu->substreams_counter = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment