diff options
| author | Takashi Iwai <tiwai@suse.de> | 2012-02-13 12:05:30 +0100 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2012-02-13 12:05:30 +0100 |
| commit | 374a69e76effdb84ef068d63759d8f990710432f (patch) | |
| tree | 3dc7c85a7c80e763b4cc45e067ef50f2cff9c76a /sound/pci/oxygen/oxygen_mixer.c | |
| parent | 8bc039a1e15a72da8426b84293723fb7181f0b5e (diff) | |
| parent | a1e0c3cf7fb07227fe1f26161d969101dba78287 (diff) | |
Merge branch 'fix/hda' into topic/hda
Necessary for working on the jack-detection suppression feature.
Diffstat (limited to 'sound/pci/oxygen/oxygen_mixer.c')
| -rw-r--r-- | sound/pci/oxygen/oxygen_mixer.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c index 26c7e8bcb22..c0dbb52d45b 100644 --- a/sound/pci/oxygen/oxygen_mixer.c +++ b/sound/pci/oxygen/oxygen_mixer.c @@ -618,9 +618,12 @@ static int ac97_volume_get(struct snd_kcontrol *ctl, mutex_lock(&chip->mutex); reg = oxygen_read_ac97(chip, codec, index); mutex_unlock(&chip->mutex); - value->value.integer.value[0] = 31 - (reg & 0x1f); - if (stereo) - value->value.integer.value[1] = 31 - ((reg >> 8) & 0x1f); + if (!stereo) { + value->value.integer.value[0] = 31 - (reg & 0x1f); + } else { + value->value.integer.value[0] = 31 - ((reg >> 8) & 0x1f); + value->value.integer.value[1] = 31 - (reg & 0x1f); + } return 0; } @@ -636,14 +639,14 @@ static int ac97_volume_put(struct snd_kcontrol *ctl, mutex_lock(&chip->mutex); oldreg = oxygen_read_ac97(chip, codec, index); - newreg = oldreg; - newreg = (newreg & ~0x1f) | - (31 - (value->value.integer.value[0] & 0x1f)); - if (stereo) - newreg = (newreg & ~0x1f00) | - ((31 - (value->value.integer.value[1] & 0x1f)) << 8); - else - newreg = (newreg & ~0x1f00) | ((newreg & 0x1f) << 8); + if (!stereo) { + newreg = oldreg & ~0x1f; + newreg |= 31 - (value->value.integer.value[0] & 0x1f); + } else { + newreg = oldreg & ~0x1f1f; + newreg |= (31 - (value->value.integer.value[0] & 0x1f)) << 8; + newreg |= 31 - (value->value.integer.value[1] & 0x1f); + } change = newreg != oldreg; if (change) oxygen_write_ac97(chip, codec, index, newreg); |
