]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/firewire/dice.c
ALSA: dice: allow notifications during initialization
[karo-tx-linux.git] / sound / firewire / dice.c
index 06fef4752d500d27e95f46a850ff3cf764287ad5..49b47ba09cddfd7501692b182faf10056ec83d78 100644 (file)
@@ -924,10 +924,6 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
        dice->unit = unit;
        init_waitqueue_head(&dice->hwdep_wait);
 
-       err = dice_read_params(dice);
-       if (err < 0)
-               goto err_mutex;
-
        dice->notification_handler.length = 4;
        dice->notification_handler.address_callback = dice_notification;
        dice->notification_handler.callback_data = dice;
@@ -936,9 +932,17 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
        if (err < 0)
                goto err_mutex;
 
-       err = fw_iso_resources_init(&dice->resources, unit);
+       err = dice_owner_set(dice);
        if (err < 0)
                goto err_notification_handler;
+
+       err = dice_read_params(dice);
+       if (err < 0)
+               goto err_owner;
+
+       err = fw_iso_resources_init(&dice->resources, unit);
+       if (err < 0)
+               goto err_owner;
        dice->resources.channels_mask = 0x00000000ffffffffuLL;
 
        err = amdtp_out_stream_init(&dice->stream, unit,
@@ -946,10 +950,6 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
        if (err < 0)
                goto err_resources;
 
-       err = dice_owner_set(dice);
-       if (err < 0)
-               goto err_stream;
-
        card->private_free = dice_card_free;
 
        dice_card_strings(dice);
@@ -983,10 +983,10 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
 
        return 0;
 
-err_stream:
-       amdtp_out_stream_destroy(&dice->stream);
 err_resources:
        fw_iso_resources_destroy(&dice->resources);
+err_owner:
+       dice_owner_clear(dice);
 err_notification_handler:
        fw_core_remove_address_handler(&dice->notification_handler);
 err_mutex: