diff options
Diffstat (limited to 'sound/pci/via82xx_modem.c')
| -rw-r--r-- | sound/pci/via82xx_modem.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c index 5ab1cf3d434b..feb27c966256 100644 --- a/sound/pci/via82xx_modem.c +++ b/sound/pci/via82xx_modem.c | |||
| @@ -1032,9 +1032,10 @@ static int snd_via82xx_suspend(struct pci_dev *pci, pm_message_t state) | |||
| 1032 | snd_via82xx_channel_reset(chip, &chip->devs[i]); | 1032 | snd_via82xx_channel_reset(chip, &chip->devs[i]); |
| 1033 | synchronize_irq(chip->irq); | 1033 | synchronize_irq(chip->irq); |
| 1034 | snd_ac97_suspend(chip->ac97); | 1034 | snd_ac97_suspend(chip->ac97); |
| 1035 | pci_set_power_state(pci, PCI_D3hot); | 1035 | |
| 1036 | pci_disable_device(pci); | 1036 | pci_disable_device(pci); |
| 1037 | pci_save_state(pci); | 1037 | pci_save_state(pci); |
| 1038 | pci_set_power_state(pci, pci_choose_state(pci, state)); | ||
| 1038 | return 0; | 1039 | return 0; |
| 1039 | } | 1040 | } |
| 1040 | 1041 | ||
| @@ -1044,9 +1045,14 @@ static int snd_via82xx_resume(struct pci_dev *pci) | |||
| 1044 | struct via82xx_modem *chip = card->private_data; | 1045 | struct via82xx_modem *chip = card->private_data; |
| 1045 | int i; | 1046 | int i; |
| 1046 | 1047 | ||
| 1047 | pci_restore_state(pci); | ||
| 1048 | pci_enable_device(pci); | ||
| 1049 | pci_set_power_state(pci, PCI_D0); | 1048 | pci_set_power_state(pci, PCI_D0); |
| 1049 | pci_restore_state(pci); | ||
| 1050 | if (pci_enable_device(pci) < 0) { | ||
| 1051 | printk(KERN_ERR "via82xx-modem: pci_enable_device failed, " | ||
| 1052 | "disabling device\n"); | ||
| 1053 | snd_card_disconnect(card); | ||
| 1054 | return -EIO; | ||
| 1055 | } | ||
| 1050 | pci_set_master(pci); | 1056 | pci_set_master(pci); |
| 1051 | 1057 | ||
| 1052 | snd_via82xx_chip_init(chip); | 1058 | snd_via82xx_chip_init(chip); |
