ALSA: hda - Move azx_first_init() into azx_probe_continue()
authorTakashi Iwai <tiwai@suse.de>
Thu, 30 May 2013 14:07:09 +0000 (22:07 +0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 6 Jun 2013 15:31:52 +0000 (17:31 +0200)
This is a preliminary work for the upcoming Haswell HDMI audio fixes.

azx_first_init() function can be safely called after the f/w loader,
since the f/w loader doesn't require the sound hardware initialization
beforehand.  Moving it into azx_probe_continue() cleans up the code
flow a bit.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
sound/pci/hda/hda_intel.c

index aa4d4d7..3e3126b 100644 (file)
@@ -3006,7 +3006,6 @@ static void azx_notifier_unregister(struct azx *chip)
                unregister_reboot_notifier(&chip->reboot_notifier);
 }
 
-static int azx_first_init(struct azx *chip);
 static int azx_probe_continue(struct azx *chip);
 
 #ifdef SUPPORT_VGA_SWITCHEROO
@@ -3033,8 +3032,7 @@ static void azx_vs_set_state(struct pci_dev *pci,
                        snd_printk(KERN_INFO SFX
                                   "%s: Start delayed initialization\n",
                                   pci_name(chip->pci));
-                       if (azx_first_init(chip) < 0 ||
-                           azx_probe_continue(chip) < 0) {
+                       if (azx_probe_continue(chip) < 0) {
                                snd_printk(KERN_ERR SFX
                                           "%s: initialization error\n",
                                           pci_name(chip->pci));
@@ -3735,11 +3733,6 @@ static int azx_probe(struct pci_dev *pci,
        }
 
        probe_now = !chip->disabled;
-       if (probe_now) {
-               err = azx_first_init(chip);
-               if (err < 0)
-                       goto out_free;
-       }
 
 #ifdef CONFIG_SND_HDA_PATCH_LOADER
        if (patch[dev] && *patch[dev]) {
@@ -3776,6 +3769,10 @@ static int azx_probe_continue(struct azx *chip)
        int dev = chip->dev_index;
        int err;
 
+       err = azx_first_init(chip);
+       if (err < 0)
+               goto out_free;
+
 #ifdef CONFIG_SND_HDA_INPUT_BEEP
        chip->beep_mode = beep_mode[dev];
 #endif