At Mon, 19 May 2008 01:00:19 +0100, Tony Vroon wrote: > > --- sound/pci/hda/patch_realtek.c.orig 2008-05-17 15:07:35.000000000 +0100 > +++ sound/pci/hda/patch_realtek.c 2008-05-19 00:43:35.000000000 +0100 > @@ -8757,7 +8757,7 @@ > }, > }; > > -/* mute/unmute internal speaker according to the hp jack and mute state */ > +/* mute/unmute internal speaker according to the hp jacks and mute state */ > static void alc262_fujitsu_automute(struct hda_codec *codec, int force) > { > struct alc_spec *spec = codec->spec; > @@ -8765,13 +8765,28 @@ > > if (force || !spec->sense_updated) { > unsigned int present_int_hp, present_dock_hp; > - /* need to execute and sync at first */ > + /* sense laptop headphone jack, enable amp if required */ > snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0); > present_int_hp = snd_hda_codec_read(codec, 0x14, 0, > AC_VERB_GET_PIN_SENSE, 0); > + if ((present_int_hp & 0x80000000) != 0) > + snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0, > + HDA_AMP_MUTE, 0); > + else > + snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0, > + HDA_AMP_MUTE, HDA_AMP_MUTE); > + > + /* sense dock headphone jack, enable amp if required */ > snd_hda_codec_read(codec, 0x1B, 0, AC_VERB_SET_PIN_SENSE, 0); > present_dock_hp = snd_hda_codec_read(codec, 0x1b, 0, > AC_VERB_GET_PIN_SENSE, 0); > + if ((present_dock_hp & 0x80000000) != 0) > + snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0, > + HDA_AMP_MUTE, 0); > + else > + snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0, > + HDA_AMP_MUTE, HDA_AMP_MUTE); > + > spec->jack_present = (present_int_hp & 0x80000000) != 0; > spec->jack_present |= (present_dock_hp & 0x80000000) != 0; > spec->sense_updated = 1; I get a compile warning, "unused variable mute". Could you fix it? > @@ -8781,10 +8796,9 @@ > snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, > HDA_AMP_MUTE, HDA_AMP_MUTE); > } else { > - /* unmute internal speaker if necessary */ > - mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0); Any reason to remove this? Otherwise the internal speaker won't react together with the Master volume. Maybe a cleaner fix is to remove the bind_sw and bind_vol hacks and use vmaster instead. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel