Skip to content

Commit

Permalink
ALSA: dice: simplify unit probe processing
Browse files Browse the repository at this point in the history
In former commit, ALSA dice driver doesn't generate kernel warnings
when unplugging units before initializing stream data.

This commit moves the initialization to delayed registration of sound
card, to simplify unit probe processing.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
takaswie authored and tiwai committed Mar 31, 2016
1 parent 44c376b commit 0eced45
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions sound/firewire/dice/dice.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,10 @@ static void do_registration(struct work_struct *work)

dice_card_strings(dice);

err = snd_dice_stream_init_duplex(dice);
if (err < 0)
goto error;

snd_dice_create_proc(dice);

err = snd_dice_create_pcm(dice);
Expand Down Expand Up @@ -229,6 +233,7 @@ static void do_registration(struct work_struct *work)

return;
error:
snd_dice_stream_destroy_duplex(dice);
snd_dice_transaction_destroy(dice);
snd_card_free(dice->card);
dev_info(&dice->unit->device,
Expand Down Expand Up @@ -273,12 +278,6 @@ static int dice_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
init_completion(&dice->clock_accepted);
init_waitqueue_head(&dice->hwdep_wait);

err = snd_dice_stream_init_duplex(dice);
if (err < 0) {
dice_free(dice);
return err;
}

/* Allocate and register this sound card later. */
INIT_DEFERRABLE_WORK(&dice->dwork, do_registration);
schedule_registration(dice);
Expand Down

0 comments on commit 0eced45

Please sign in to comment.