[alsa-devel] [PATCH] ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981

Takashi Iwai tiwai at suse.de
Wed Mar 31 11:48:12 CEST 2010


At Tue, 30 Mar 2010 15:08:15 -0700,
Daniel Chen wrote:
> 
> Hi,
> 
> Attached is a patch against sound-2.6 master HEAD (applicable to
> 2.6.32.y and 2.6.33.y) that clamps the 0 dB offset accordingly.

Applied now.  Thanks.


Takashi

> 
> Best,
> -Dan
> [2 0001-ALSA-hda-Fix-0-dB-offset-for-Lenovo-Thinkpad-models-.patch <text/x-diff; US-ASCII (base64)>]
> From fdf6a8727da7189f23e3cfe94140f38513144468 Mon Sep 17 00:00:00 2001
> From: Daniel T Chen <crimsun at ubuntu.com>
> Date: Tue, 30 Mar 2010 13:29:28 -0400
> Subject: [PATCH] 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 at kernel.org>
> Signed-off-by: Daniel T Chen <crimsun at ubuntu.com>
> ---
>  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 262f5b5..9cbd80c 100644
> --- a/sound/pci/hda/patch_analog.c
> +++ b/sound/pci/hda/patch_analog.c
> @@ -1904,6 +1904,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;
> -- 
> 1.7.0
> 


More information about the Alsa-devel mailing list