summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-09-22 15:30:42 +0200
committerJaroslav Kysela <perex@suse.cz>2006-09-23 10:48:40 +0200
commitf0063c4489a00ed5395378ef80a7edea4272f20b (patch)
tree7317be5ca915b882580474ff7f36631271356df7
parent8b0c4149e82170ebc44b96e9ed96545f8ebd7c81 (diff)
downloadlinux-f0063c4489a00ed5395378ef80a7edea4272f20b.tar.gz
linux-f0063c4489a00ed5395378ef80a7edea4272f20b.tar.bz2
linux-f0063c4489a00ed5395378ef80a7edea4272f20b.zip
[ALSA] intel8x0m - Free irq in suspend
Free the irq handler in suspend and reacquire in resume as well as intel8x0 audio driver does. Some devices may change the irq line dynamically during suspend/resume. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--sound/pci/intel8x0m.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c
index 91850281f89b..268e2f7241ea 100644
--- a/sound/pci/intel8x0m.c
+++ b/sound/pci/intel8x0m.c
@@ -1045,6 +1045,8 @@ static int intel8x0m_suspend(struct pci_dev *pci, pm_message_t state)
for (i = 0; i < chip->pcm_devs; i++)
snd_pcm_suspend_all(chip->pcm[i]);
snd_ac97_suspend(chip->ac97);
+ if (chip->irq >= 0)
+ free_irq(chip->irq, chip);
pci_disable_device(pci);
pci_save_state(pci);
return 0;
@@ -1058,6 +1060,9 @@ static int intel8x0m_resume(struct pci_dev *pci)
pci_restore_state(pci);
pci_enable_device(pci);
pci_set_master(pci);
+ request_irq(pci->irq, snd_intel8x0_interrupt, IRQF_DISABLED|IRQF_SHARED,
+ card->shortname, chip);
+ chip->irq = pci->irq;
snd_intel8x0_chip_init(chip, 0);
snd_ac97_resume(chip->ac97);