<p>> > > Actually, it works fine in Skype when using "AD1989B Analog (hw: 0,2)". I<br>
> > > was confused because I changed only "Speakers" to that device and tried<br>
> > > making a test sound. That did not work, apparently test sound goes to<br>
> > > whatever "Ringing" is set to. But when making actual calls, it works as<br>
> > > expected and I can take advantage of the Independent HP feature.<br>
> ><br>
> > Hm, there should be nothing to touch the indep-HP mixer control from<br>
> > PCM, so I have no idea why it went wrong.<br>
> ><br>
> > BTW, I guess we have still an issue regarding indep HP. When it's ON,<br>
> > should the auto-mute be disabled, no?<br>
> > Although one can disable the automute manually, it'd be maybe more<br>
> > user-friendly if the driver does it by itself.<br>
> ><br>
><br>
> The patch is below, already merged in test/hda-gen-parser branch (and<br>
> test/hda-migrate and master branch, too), as usual.<br>
></p>
<p>Does it mean that the value of the "front headphone jack" kcontrol is no longer updated when the independent headphone is switch on ?</p>
<p>><br>
> ---<br>
> From: Takashi Iwai <<a href="mailto:tiwai@suse.de">tiwai@suse.de</a>><br>
> Subject: [PATCH] ALSA: hda - Disable HP auto-mute during independent HP mode<br>
><br>
> Both the HP auto-mute and the independent HP mode conflict with each<br>
> other. Make HP auto-mute disabled (only for the affected HP jack)<br>
> during the driver is in HP independent mode.<br>
><br>
> Signed-off-by: Takashi Iwai <<a href="mailto:tiwai@suse.de">tiwai@suse.de</a>><br>
> ---<br>
> sound/pci/hda/hda_generic.c | 19 ++++++++++++++++---<br>
> 1 file changed, 16 insertions(+), 3 deletions(-)<br>
><br>
> diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c<br>
> index 63d12ef..258fb5e 100644<br>
> --- a/sound/pci/hda/hda_generic.c<br>
> +++ b/sound/pci/hda/hda_generic.c<br>
> @@ -1889,6 +1889,13 @@ static int indep_hp_put(struct snd_kcontrol *kcontrol,<br>
> *dacp = 0;<br>
> else<br>
> *dacp = spec->alt_dac_nid;<br>
> +<br>
> + /* update HP auto-mute state too */<br>
> + if (spec->hp_automute_hook)<br>
> + spec->hp_automute_hook(codec, NULL);<br>
> + else<br>
> + snd_hda_gen_hp_automute(codec, NULL);<br>
> +<br>
> ret = 1;<br>
> }<br>
> unlock:<br>
> @@ -3467,10 +3474,16 @@ static void call_update_outputs(struct hda_codec *codec)<br>
> void snd_hda_gen_hp_automute(struct hda_codec *codec, struct hda_jack_tbl *jack)<br>
> {<br>
> struct hda_gen_spec *spec = codec->spec;<br>
> + hda_nid_t *pins = spec->autocfg.hp_pins;<br>
> + int num_pins = ARRAY_SIZE(spec->autocfg.hp_pins);<br>
> +<br>
> + /* No detection for the first HP jack during indep-HP mode */<br>
> + if (spec->indep_hp_enabled) {<br>
> + pins++;<br>
> + num_pins--;<br>
> + }<br>
><br>
> - spec->hp_jack_present =<br>
> - detect_jacks(codec, ARRAY_SIZE(spec->autocfg.hp_pins),<br>
> - spec->autocfg.hp_pins);<br>
> + spec->hp_jack_present = detect_jacks(codec, num_pins, pins);<br>
> if (!spec->detect_hp || (!spec->automute_speaker && !spec->automute_lo))<br>
> return;<br>
> call_update_outputs(codec);<br>
> --<br>
> 1.8.1.1<br>
><br>
</p>