| From b8e80cf386419453678b01bef830f53445ebb15d Mon Sep 17 00:00:00 2001 |
| From: Daniel T Chen <crimsun@ubuntu.com> |
| Date: Tue, 30 Mar 2010 13:29:28 -0400 |
| Subject: ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981 |
| |
| From: Daniel T Chen <crimsun@ubuntu.com> |
| |
| commit b8e80cf386419453678b01bef830f53445ebb15d upstream. |
| |
| 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 |
| Signed-off-by: Daniel T Chen <crimsun@ubuntu.com> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| sound/pci/hda/patch_analog.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| --- a/sound/pci/hda/patch_analog.c |
| +++ b/sound/pci/hda/patch_analog.c |
| @@ -1789,6 +1789,14 @@ static int patch_ad1981(struct hda_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; |