[alsa-devel] [PATCH] hda: enable speaker output for Compaq 6530s/6531s

Takashi Iwai tiwai at suse.de
Sun Aug 16 11:22:23 CEST 2009


At Sun, 16 Aug 2009 16:53:17 +0800,
Wu Fengguang wrote:
> 
> There are 3 causes to the silence of Compaq 6530s' internal speaker:
> - HP pin 0x11 always return 0xffff,ffff (pin_presence=1),
>   which automutes the speaker at module loading time.

This is odd.  Is the sense-trigger issued before reading the pin sense?

> - HP pin 0x11 won't emit unsol events on jack plug/unplug,
>   so the speaker have no chance to be unmuted.

Can it be fixed with enable_msi=1 option?

> - pin 0x1c must be set to PIN_OUT mode to make the speaker work
>   this is the most weird part - line-in pin 0x1c and speaker pin 0x16
>   seem to be unrelated.

Hm, sounds strange.

> Fix the problems by
> - add "Speaker" and "Headphone" mixers to allow hand tuning by user

It's a bit buggy because the auto-mute feature can turn on/off these
silently.  If any, these controls have to be notified at changing the
state via plugging.


thanks,

Takashi

> - add the 0x1c PIN_OUT quirk
> 
> Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
> ---
>  sound/pci/hda/patch_analog.c |    8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> --- sound-2.6.orig/sound/pci/hda/patch_analog.c	2009-08-05 09:40:13.000000000 +0800
> +++ sound-2.6/sound/pci/hda/patch_analog.c	2009-08-16 16:49:39.000000000 +0800
> @@ -3717,6 +3717,8 @@ static struct snd_kcontrol_new ad1884a_l
>  	HDA_CODEC_VOLUME("Master Playback Volume", 0x21, 0x0, HDA_OUTPUT),
>  	HDA_CODEC_MUTE("Master Playback Switch", 0x21, 0x0, HDA_OUTPUT),
>  	HDA_CODEC_MUTE("Dock Playback Switch", 0x12, 0x0, HDA_OUTPUT),
> +	HDA_CODEC_MUTE("Headphone Playback Switch", 0x11, 0x0, HDA_OUTPUT),
> +	HDA_CODEC_MUTE("Speaker Playback Switch", 0x16, 0x0, HDA_OUTPUT),
>  	HDA_CODEC_VOLUME("PCM Playback Volume", 0x20, 0x5, HDA_INPUT),
>  	HDA_CODEC_MUTE("PCM Playback Switch", 0x20, 0x5, HDA_INPUT),
>  	HDA_CODEC_VOLUME("Mic Playback Volume", 0x20, 0x00, HDA_INPUT),
> @@ -3837,8 +3839,10 @@ static struct hda_verb ad1884a_laptop_ve
>  	{0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
>  	{0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
>  	/* Port-F pin */
> -	{0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
> +	{0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
>  	{0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
> +	/* required for compaq 6530s speaker output */
> +	{0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
>  	/* Port-C pin - internal mic-in */
>  	{0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
>  	{0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */
> @@ -4003,6 +4007,8 @@ static struct snd_pci_quirk ad1884a_cfg_
>  	SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE),
>  	SND_PCI_QUIRK(0x103c, 0x3037, "HP 2230s", AD1884A_LAPTOP),
>  	SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE),
> +	SND_PCI_QUIRK(0x103c, 0x30e8, "HP Compaq 6530s", AD1884A_LAPTOP),
> +	SND_PCI_QUIRK(0x103c, 0x30e9, "HP Compaq 6531s", AD1884A_LAPTOP),
>  	SND_PCI_QUIRK_MASK(0x103c, 0xfff0, 0x3070, "HP", AD1884A_MOBILE),
>  	SND_PCI_QUIRK_MASK(0x103c, 0xfff0, 0x30d0, "HP laptop", AD1884A_LAPTOP),
>  	SND_PCI_QUIRK_MASK(0x103c, 0xfff0, 0x30e0, "HP laptop", AD1884A_LAPTOP),
> 


More information about the Alsa-devel mailing list