aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/als4000.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-10-11 12:52:53 -0400
committerJaroslav Kysela <perex@suse.cz>2006-10-22 04:51:10 -0400
commit30b35399ceb2398d05837863476dcb12f12f3a82 (patch)
tree14a7cfad1c5d28d207bb1be8addb86ead33f7b63 /sound/pci/als4000.c
parentc06134d73cdc02bb8ab1fad180f6da1f28d2e049 (diff)
[ALSA] Various fixes for suspend/resume of ALSA PCI drivers
- Check the return value of pci_enable_device() and request_irq() in the suspend. If any error occurs there, disable the device using snd_card_disconnect(). - Call pci_set_power_state() properly with pci_choose_state(). - Fix the order to call pci_set_power_state(). - Removed obsolete house-made PM codes in some drivers. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/als4000.c')
-rw-r--r--sound/pci/als4000.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sound/pci/als4000.c b/sound/pci/als4000.c
index 15fc3929b5f7..8fb55d3b454b 100644
--- a/sound/pci/als4000.c
+++ b/sound/pci/als4000.c
@@ -804,9 +804,9 @@ static int snd_als4000_suspend(struct pci_dev *pci, pm_message_t state)
804 snd_pcm_suspend_all(chip->pcm); 804 snd_pcm_suspend_all(chip->pcm);
805 snd_sbmixer_suspend(chip); 805 snd_sbmixer_suspend(chip);
806 806
807 pci_set_power_state(pci, PCI_D3hot);
808 pci_disable_device(pci); 807 pci_disable_device(pci);
809 pci_save_state(pci); 808 pci_save_state(pci);
809 pci_set_power_state(pci, pci_choose_state(pci, state));
810 return 0; 810 return 0;
811} 811}
812 812
@@ -816,9 +816,14 @@ static int snd_als4000_resume(struct pci_dev *pci)
816 struct snd_card_als4000 *acard = card->private_data; 816 struct snd_card_als4000 *acard = card->private_data;
817 struct snd_sb *chip = acard->chip; 817 struct snd_sb *chip = acard->chip;
818 818
819 pci_restore_state(pci);
820 pci_enable_device(pci);
821 pci_set_power_state(pci, PCI_D0); 819 pci_set_power_state(pci, PCI_D0);
820 pci_restore_state(pci);
821 if (pci_enable_device(pci) < 0) {
822 printk(KERN_ERR "als4000: pci_enable_device failed, "
823 "disabling device\n");
824 snd_card_disconnect(card);
825 return -EIO;
826 }
822 pci_set_master(pci); 827 pci_set_master(pci);
823 828
824 snd_als4000_configure(chip); 829 snd_als4000_configure(chip);