summaryrefslogtreecommitdiffstats
path: root/sound/firewire/digi00x/digi00x.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/firewire/digi00x/digi00x.c')
-rw-r--r--sound/firewire/digi00x/digi00x.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sound/firewire/digi00x/digi00x.c b/sound/firewire/digi00x/digi00x.c
index 260967e54519..5bda4c4c87f0 100644
--- a/sound/firewire/digi00x/digi00x.c
+++ b/sound/firewire/digi00x/digi00x.c
@@ -45,6 +45,8 @@ static void dg00x_card_free(struct snd_card *card)
{
struct snd_dg00x *dg00x = card->private_data;
+ snd_dg00x_stream_destroy_duplex(dg00x);
+
fw_unit_put(dg00x->unit);
mutex_destroy(&dg00x->mutex);
@@ -75,6 +77,10 @@ static int snd_dg00x_probe(struct fw_unit *unit,
if (err < 0)
goto error;
+ err = snd_dg00x_stream_init_duplex(dg00x);
+ if (err < 0)
+ goto error;
+
err = snd_card_register(card);
if (err < 0)
goto error;
@@ -89,7 +95,11 @@ error:
static void snd_dg00x_update(struct fw_unit *unit)
{
- return;
+ struct snd_dg00x *dg00x = dev_get_drvdata(&unit->device);
+
+ mutex_lock(&dg00x->mutex);
+ snd_dg00x_stream_update_duplex(dg00x);
+ mutex_unlock(&dg00x->mutex);
}
static void snd_dg00x_remove(struct fw_unit *unit)