mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 03:33:59 +08:00
ALSA: firewire-motu: code refactoring for initialization/destruction of AMDTP stream
This commit is a preparation to support AMDTP domain. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
5f9625a5ba
commit
39e522a5a4
@ -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)
|
|||||||
*/
|
*/
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user