On Sun, Aug 16, 2009 at 05:22:23PM +0800, Takashi Iwai wrote: > 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? Sorry, what do you mean? The facts I explored are: - ad1884a_hp_automute() will be explicitly called by ad1884a_hp_init() - ad1884a_hp_unsol_event() is never called on plug events - I tried manually execute AC_VERB_SET_PIN_SENSE then read pin sense, it takes effect on the impedance, but pin_presence still remains 1. > > - 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? Not yet, will try it. > > - 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. Yes. Note that the 6530s I have is a test box. Another 6531s which is bought directly from market don't have this bug. > > 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. OK. Are there code examples for doing this? Thank you! Thanks, Fengguang > > thanks, > > Takashi > > > - add the 0x1c PIN_OUT quirk > > > > Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> > > --- > > 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), > > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel