[alsa-devel] Headphone Mic and PA

Takashi Iwai tiwai at suse.de
Mon Oct 19 11:53:21 CEST 2015


Hi David,

I'm currently checking the bug report regarding PA, and this looks
like an issue with "Headphone Mic" jack control.

The reported problem is that PA doesn't react properly when both HP
and dock line-out jacks are plugged and line-out is unplugged.  The
machine in question is Dell E7250, and I see that it has only
"Headphone Mic Jack" kctl without "Headphone Jack" kctl.  Is this the
intentional behavior?

I see the code in hda_jack.c:

int snd_hda_jack_add_kctls(struct hda_codec *codec,
			   const struct auto_pin_cfg *cfg)
{
	const hda_nid_t *p;
	int i, err;

	for (i = 0; i < cfg->num_inputs; i++) {
		/* If we have headphone mics; make sure they get the right name
		   before grabbed by output pins */
		if (cfg->inputs[i].is_headphone_mic) {
			if (auto_cfg_hp_outs(cfg) == 1)
				err = add_jack_kctl(codec, auto_cfg_hp_pins(cfg)[0],
						    cfg, "Headphone Mic");
			else
				err = add_jack_kctl(codec, cfg->inputs[i].pin,
						    cfg, "Headphone Mic");
		} else
			err = add_jack_kctl(codec, cfg->inputs[i].pin, cfg,
					    NULL);

So, the driver seems doing what it was written.  Meanwhile, the
headphone mic comes from the quirk:

	[ALC293_FIXUP_DELL1_MIC_NO_PRESENCE] = {
		.type = HDA_FIXUP_PINS,
		.v.pins = (const struct hda_pintbl[]) {
			{ 0x18, 0x01a1913d }, /* use as headphone mic, without its own jack detect */
			{ 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
			{ }
		},
		.chained = true,
		.chain_id = ALC269_FIXUP_HEADSET_MODE
	},

and this appears as if it were supposed to be a phantom jack.

The alsa-info output is found in the bugzilla
	https://bugzilla.suse.com/show_bug.cgi?id=948979


thanks,

Takashi


More information about the Alsa-devel mailing list