diff options
| -rw-r--r-- | sound/pci/maestro3.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c index b64e78139d63..b56e33676780 100644 --- a/sound/pci/maestro3.c +++ b/sound/pci/maestro3.c | |||
| @@ -849,6 +849,7 @@ struct snd_m3 { | |||
| 849 | struct snd_kcontrol *master_switch; | 849 | struct snd_kcontrol *master_switch; |
| 850 | struct snd_kcontrol *master_volume; | 850 | struct snd_kcontrol *master_volume; |
| 851 | struct tasklet_struct hwvol_tq; | 851 | struct tasklet_struct hwvol_tq; |
| 852 | unsigned int in_suspend; | ||
| 852 | 853 | ||
| 853 | #ifdef CONFIG_PM | 854 | #ifdef CONFIG_PM |
| 854 | u16 *suspend_mem; | 855 | u16 *suspend_mem; |
| @@ -884,6 +885,7 @@ static DEFINE_PCI_DEVICE_TABLE(snd_m3_ids) = { | |||
| 884 | MODULE_DEVICE_TABLE(pci, snd_m3_ids); | 885 | MODULE_DEVICE_TABLE(pci, snd_m3_ids); |
| 885 | 886 | ||
| 886 | static struct snd_pci_quirk m3_amp_quirk_list[] __devinitdata = { | 887 | static struct snd_pci_quirk m3_amp_quirk_list[] __devinitdata = { |
| 888 | SND_PCI_QUIRK(0x0E11, 0x0094, "Compaq Evo N600c", 0x0c), | ||
| 887 | SND_PCI_QUIRK(0x10f7, 0x833e, "Panasonic CF-28", 0x0d), | 889 | SND_PCI_QUIRK(0x10f7, 0x833e, "Panasonic CF-28", 0x0d), |
| 888 | SND_PCI_QUIRK(0x10f7, 0x833d, "Panasonic CF-72", 0x0d), | 890 | SND_PCI_QUIRK(0x10f7, 0x833d, "Panasonic CF-72", 0x0d), |
| 889 | SND_PCI_QUIRK(0x1033, 0x80f1, "NEC LM800J/7", 0x03), | 891 | SND_PCI_QUIRK(0x1033, 0x80f1, "NEC LM800J/7", 0x03), |
| @@ -1613,6 +1615,11 @@ static void snd_m3_update_hw_volume(unsigned long private_data) | |||
| 1613 | outb(0x88, chip->iobase + SHADOW_MIX_REG_MASTER); | 1615 | outb(0x88, chip->iobase + SHADOW_MIX_REG_MASTER); |
| 1614 | outb(0x88, chip->iobase + HW_VOL_COUNTER_MASTER); | 1616 | outb(0x88, chip->iobase + HW_VOL_COUNTER_MASTER); |
| 1615 | 1617 | ||
| 1618 | /* Ignore spurious HV interrupts during suspend / resume, this avoids | ||
| 1619 | mistaking them for a mute button press. */ | ||
| 1620 | if (chip->in_suspend) | ||
| 1621 | return; | ||
| 1622 | |||
| 1616 | if (!chip->master_switch || !chip->master_volume) | 1623 | if (!chip->master_switch || !chip->master_volume) |
| 1617 | return; | 1624 | return; |
| 1618 | 1625 | ||
| @@ -2424,6 +2431,7 @@ static int m3_suspend(struct pci_dev *pci, pm_message_t state) | |||
| 2424 | if (chip->suspend_mem == NULL) | 2431 | if (chip->suspend_mem == NULL) |
| 2425 | return 0; | 2432 | return 0; |
| 2426 | 2433 | ||
| 2434 | chip->in_suspend = 1; | ||
| 2427 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); | 2435 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); |
| 2428 | snd_pcm_suspend_all(chip->pcm); | 2436 | snd_pcm_suspend_all(chip->pcm); |
| 2429 | snd_ac97_suspend(chip->ac97); | 2437 | snd_ac97_suspend(chip->ac97); |
| @@ -2497,6 +2505,7 @@ static int m3_resume(struct pci_dev *pci) | |||
| 2497 | snd_m3_hv_init(chip); | 2505 | snd_m3_hv_init(chip); |
| 2498 | 2506 | ||
| 2499 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); | 2507 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); |
| 2508 | chip->in_suspend = 0; | ||
| 2500 | return 0; | 2509 | return 0; |
| 2501 | } | 2510 | } |
| 2502 | #endif /* CONFIG_PM */ | 2511 | #endif /* CONFIG_PM */ |
