diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-10-11 12:52:53 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-10-22 04:51:10 -0400 |
commit | 30b35399ceb2398d05837863476dcb12f12f3a82 (patch) | |
tree | 14a7cfad1c5d28d207bb1be8addb86ead33f7b63 /sound/pci/atiixp_modem.c | |
parent | c06134d73cdc02bb8ab1fad180f6da1f28d2e049 (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/atiixp_modem.c')
-rw-r--r-- | sound/pci/atiixp_modem.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c index c5dda1bf3d46..dc54f2c68ed7 100644 --- a/sound/pci/atiixp_modem.c +++ b/sound/pci/atiixp_modem.c | |||
@@ -1128,9 +1128,9 @@ static int snd_atiixp_suspend(struct pci_dev *pci, pm_message_t state) | |||
1128 | snd_atiixp_aclink_down(chip); | 1128 | snd_atiixp_aclink_down(chip); |
1129 | snd_atiixp_chip_stop(chip); | 1129 | snd_atiixp_chip_stop(chip); |
1130 | 1130 | ||
1131 | pci_set_power_state(pci, PCI_D3hot); | ||
1132 | pci_disable_device(pci); | 1131 | pci_disable_device(pci); |
1133 | pci_save_state(pci); | 1132 | pci_save_state(pci); |
1133 | pci_set_power_state(pci, pci_choose_state(pci, state)); | ||
1134 | return 0; | 1134 | return 0; |
1135 | } | 1135 | } |
1136 | 1136 | ||
@@ -1140,9 +1140,14 @@ static int snd_atiixp_resume(struct pci_dev *pci) | |||
1140 | struct atiixp_modem *chip = card->private_data; | 1140 | struct atiixp_modem *chip = card->private_data; |
1141 | int i; | 1141 | int i; |
1142 | 1142 | ||
1143 | pci_restore_state(pci); | ||
1144 | pci_enable_device(pci); | ||
1145 | pci_set_power_state(pci, PCI_D0); | 1143 | pci_set_power_state(pci, PCI_D0); |
1144 | pci_restore_state(pci); | ||
1145 | if (pci_enable_device(pci) < 0) { | ||
1146 | printk(KERN_ERR "atiixp-modem: pci_enable_device failed, " | ||
1147 | "disabling device\n"); | ||
1148 | snd_card_disconnect(card); | ||
1149 | return -EIO; | ||
1150 | } | ||
1146 | pci_set_master(pci); | 1151 | pci_set_master(pci); |
1147 | 1152 | ||
1148 | snd_atiixp_aclink_reset(chip); | 1153 | snd_atiixp_aclink_reset(chip); |