Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01d4825d authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Don't pick up invalid HP pins in alc_subsystem_id()



alc_subsystem_id() tries to pick up a headphone pin if not configured,
but this caused side-effects as the problem in commit
15870f05.

This patch fixes the driver behavior to pick up invalid HP pins; at least,
the pins that are listed as the primary outputs aren't taken any more.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent f8f25ba3
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1332,15 +1332,20 @@ static int alc_subsystem_id(struct hda_codec *codec,
	 *	        when the external headphone out jack is plugged"
	 */
	if (!spec->autocfg.hp_pins[0]) {
		hda_nid_t nid;
		tmp = (ass >> 11) & 0x3;	/* HP to chassis */
		if (tmp == 0)
			spec->autocfg.hp_pins[0] = porta;
			nid = porta;
		else if (tmp == 1)
			spec->autocfg.hp_pins[0] = porte;
			nid = porte;
		else if (tmp == 2)
			spec->autocfg.hp_pins[0] = portd;
			nid = portd;
		else
			return 1;
		for (i = 0; i < spec->autocfg.line_outs; i++)
			if (spec->autocfg.line_out_pins[i] == nid)
				return 1;
		spec->autocfg.hp_pins[0] = nid;
	}
	alc_init_auto_hp(codec);