Commit 5ea4018e authored by Clemens Ladisch's avatar Clemens Ladisch

ALSA: dice: allow notifications during initialization

Reorganize the initialization order so that the driver can receive
notifications earlier.
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
parent a0301998
...@@ -924,10 +924,6 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id) ...@@ -924,10 +924,6 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
dice->unit = unit; dice->unit = unit;
init_waitqueue_head(&dice->hwdep_wait); 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.length = 4;
dice->notification_handler.address_callback = dice_notification; dice->notification_handler.address_callback = dice_notification;
dice->notification_handler.callback_data = dice; dice->notification_handler.callback_data = dice;
...@@ -936,9 +932,17 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id) ...@@ -936,9 +932,17 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
if (err < 0) if (err < 0)
goto err_mutex; goto err_mutex;
err = fw_iso_resources_init(&dice->resources, unit); err = dice_owner_set(dice);
if (err < 0) if (err < 0)
goto err_notification_handler; 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; dice->resources.channels_mask = 0x00000000ffffffffuLL;
err = amdtp_out_stream_init(&dice->stream, unit, 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) ...@@ -946,10 +950,6 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
if (err < 0) if (err < 0)
goto err_resources; goto err_resources;
err = dice_owner_set(dice);
if (err < 0)
goto err_stream;
card->private_free = dice_card_free; card->private_free = dice_card_free;
dice_card_strings(dice); dice_card_strings(dice);
...@@ -983,10 +983,10 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id) ...@@ -983,10 +983,10 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
return 0; return 0;
err_stream:
amdtp_out_stream_destroy(&dice->stream);
err_resources: err_resources:
fw_iso_resources_destroy(&dice->resources); fw_iso_resources_destroy(&dice->resources);
err_owner:
dice_owner_clear(dice);
err_notification_handler: err_notification_handler:
fw_core_remove_address_handler(&dice->notification_handler); fw_core_remove_address_handler(&dice->notification_handler);
err_mutex: err_mutex:
......
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