diff options
Diffstat (limited to 'sound/firewire/digi00x/digi00x.c')
-rw-r--r-- | sound/firewire/digi00x/digi00x.c | 12 |
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) |