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

Commit ffd0e56c authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Fix headphone-detection on some machines with STAC/IDT codecs



When the headphone can have no unique DAC, the current code doesn't
check the HP-detection although it should.  Put the hp-detection check
before the DAC check to fix this bug.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent d523b0c8
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -3076,6 +3076,11 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
	unsigned int wid_caps;

	for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) {
		if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) {
			wid_caps = get_wcaps(codec, pins[i]);
			if (wid_caps & AC_WCAP_UNSOL_CAP)
				spec->hp_detect = 1;
		}
		nid = dac_nids[i];
		if (!nid)
			continue;
@@ -3119,11 +3124,6 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
			err = create_controls_idx(codec, name, idx, nid, 3);
			if (err < 0)
				return err;
			if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) {
				wid_caps = get_wcaps(codec, pins[i]);
				if (wid_caps & AC_WCAP_UNSOL_CAP)
					spec->hp_detect = 1;
			}
		}
	}
	return 0;