|
@@ -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);
|