diff options
Diffstat (limited to 'sound/pci/oxygen/oxygen_mixer.c')
-rw-r--r-- | sound/pci/oxygen/oxygen_mixer.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c index 9a7c880eddbd..d0bef09a6999 100644 --- a/sound/pci/oxygen/oxygen_mixer.c +++ b/sound/pci/oxygen/oxygen_mixer.c | |||
@@ -518,6 +518,8 @@ static void mute_ac97_ctl(struct oxygen *chip, unsigned int control) | |||
518 | value = oxygen_read_ac97(chip, 0, priv_idx); | 518 | value = oxygen_read_ac97(chip, 0, priv_idx); |
519 | if (!(value & 0x8000)) { | 519 | if (!(value & 0x8000)) { |
520 | oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000); | 520 | oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000); |
521 | if (chip->model->ac97_switch) | ||
522 | chip->model->ac97_switch(chip, priv_idx, 0x8000); | ||
521 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, | 523 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, |
522 | &chip->controls[control]->id); | 524 | &chip->controls[control]->id); |
523 | } | 525 | } |
@@ -544,6 +546,8 @@ static int ac97_switch_put(struct snd_kcontrol *ctl, | |||
544 | change = newreg != oldreg; | 546 | change = newreg != oldreg; |
545 | if (change) { | 547 | if (change) { |
546 | oxygen_write_ac97(chip, codec, index, newreg); | 548 | oxygen_write_ac97(chip, codec, index, newreg); |
549 | if (codec == 0 && chip->model->ac97_switch) | ||
550 | chip->model->ac97_switch(chip, index, newreg & 0x8000); | ||
547 | if (index == AC97_LINE) { | 551 | if (index == AC97_LINE) { |
548 | oxygen_write_ac97_masked(chip, 0, CM9780_GPIO_STATUS, | 552 | oxygen_write_ac97_masked(chip, 0, CM9780_GPIO_STATUS, |
549 | newreg & 0x8000 ? | 553 | newreg & 0x8000 ? |