diff options
author | Daniel T Chen <crimsun@ubuntu.com> | 2010-03-30 17:29:28 (GMT) |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-03-31 09:47:14 (GMT) |
commit | b8e80cf386419453678b01bef830f53445ebb15d (patch) | |
tree | 4b987b27f823c46412411aa17e821dbb5954a4b7 /sound | |
parent | 1f85d72d2c9c9a1d6d32cf325936bc224ad5d591 (diff) | |
download | linux-b8e80cf386419453678b01bef830f53445ebb15d.tar.xz |
ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981
BugLink: https://launchpad.net/bugs/551606
The OR's hardware distorts at PCM 100% because it does not correspond to
0 dB. Fix this in patch_ad1981() for all models using the Thinkpad
quirk.
Reported-by: Jane Silber
Cc: <stable@kernel.org>
Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_analog.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index e6d1bdf..af34606 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c @@ -1896,6 +1896,14 @@ static int patch_ad1981(struct hda_codec *codec) case AD1981_THINKPAD: spec->mixers[0] = ad1981_thinkpad_mixers; spec->input_mux = &ad1981_thinkpad_capture_source; + /* set the upper-limit for mixer amp to 0dB for avoiding the + * possible damage by overloading + */ + snd_hda_override_amp_caps(codec, 0x11, HDA_INPUT, + (0x17 << AC_AMPCAP_OFFSET_SHIFT) | + (0x17 << AC_AMPCAP_NUM_STEPS_SHIFT) | + (0x05 << AC_AMPCAP_STEP_SIZE_SHIFT) | + (1 << AC_AMPCAP_MUTE_SHIFT)); break; case AD1981_TOSHIBA: spec->mixers[0] = ad1981_hp_mixers; |