diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-09-08 06:30:03 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-09-23 04:47:00 -0400 |
commit | 43001c9515cf87935c50e84b3e27b1f3b3776b5d (patch) | |
tree | 295e87add08bfec4a2a4fada76fd1cac7ac0123b /sound | |
parent | 854b66e44260320c21ebe4b8a18e189f2e45b5be (diff) |
[ALSA] hda-intel - Fix suspend/resume with MSI
Fixed suspend/resume with MSI enablement.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 6309e0c67e6a..4d2df771112e 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -1381,6 +1381,10 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state) | |||
1381 | snd_pcm_suspend_all(chip->pcm[i]); | 1381 | snd_pcm_suspend_all(chip->pcm[i]); |
1382 | snd_hda_suspend(chip->bus, state); | 1382 | snd_hda_suspend(chip->bus, state); |
1383 | azx_free_cmd_io(chip); | 1383 | azx_free_cmd_io(chip); |
1384 | if (chip->irq >= 0) | ||
1385 | free_irq(chip->irq, chip); | ||
1386 | if (!disable_msi) | ||
1387 | pci_disable_msi(chip->pci); | ||
1384 | pci_disable_device(pci); | 1388 | pci_disable_device(pci); |
1385 | pci_save_state(pci); | 1389 | pci_save_state(pci); |
1386 | return 0; | 1390 | return 0; |
@@ -1393,6 +1397,12 @@ static int azx_resume(struct pci_dev *pci) | |||
1393 | 1397 | ||
1394 | pci_restore_state(pci); | 1398 | pci_restore_state(pci); |
1395 | pci_enable_device(pci); | 1399 | pci_enable_device(pci); |
1400 | if (!disable_msi) | ||
1401 | pci_enable_msi(pci); | ||
1402 | /* FIXME: need proper error handling */ | ||
1403 | request_irq(pci->irq, azx_interrupt, IRQF_DISABLED|IRQF_SHARED, | ||
1404 | "HDA Intel", chip); | ||
1405 | chip->irq = pci->irq; | ||
1396 | pci_set_master(pci); | 1406 | pci_set_master(pci); |
1397 | azx_init_chip(chip); | 1407 | azx_init_chip(chip); |
1398 | snd_hda_resume(chip->bus); | 1408 | snd_hda_resume(chip->bus); |