[ALSA] hda-intel - Fix suspend/resume with MSI
authorTakashi Iwai <tiwai@suse.de>
Fri, 8 Sep 2006 10:30:03 +0000 (12:30 +0200)
committerJaroslav Kysela <perex@suse.cz>
Sat, 23 Sep 2006 08:47:00 +0000 (10:47 +0200)
Fixed suspend/resume with MSI enablement.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
sound/pci/hda/hda_intel.c

index 6309e0c67e6ae4fd0d7549b199e0f014e89da3b1..4d2df771112e06f34dbe3c8844f2308627b31fba 100644 (file)
@@ -1381,6 +1381,10 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state)
                snd_pcm_suspend_all(chip->pcm[i]);
        snd_hda_suspend(chip->bus, state);
        azx_free_cmd_io(chip);
+       if (chip->irq >= 0)
+               free_irq(chip->irq, chip);
+       if (!disable_msi)
+               pci_disable_msi(chip->pci);
        pci_disable_device(pci);
        pci_save_state(pci);
        return 0;
@@ -1393,6 +1397,12 @@ static int azx_resume(struct pci_dev *pci)
 
        pci_restore_state(pci);
        pci_enable_device(pci);
+       if (!disable_msi)
+               pci_enable_msi(pci);
+       /* FIXME: need proper error handling */
+       request_irq(pci->irq, azx_interrupt, IRQF_DISABLED|IRQF_SHARED,
+                   "HDA Intel", chip);
+       chip->irq = pci->irq;
        pci_set_master(pci);
        azx_init_chip(chip);
        snd_hda_resume(chip->bus);