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

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

ALSA: hda/conexant - Don't set HP pin-control bit unconditionally



Some output pins on Conexant chips have no HP control bit, but the
auto-parser initializes these pins unconditionally with PIN_HP.

Check the pin-capability and avoid the HP bit if not supported.

Cc: <stable@kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent c16fa4f2
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -3951,9 +3951,14 @@ static void cx_auto_init_output(struct hda_codec *codec)
	int i;

	mute_outputs(codec, spec->multiout.num_dacs, spec->multiout.dac_nids);
	for (i = 0; i < cfg->hp_outs; i++)
	for (i = 0; i < cfg->hp_outs; i++) {
		unsigned int val = PIN_OUT;
		if (snd_hda_query_pin_caps(codec, cfg->hp_pins[i]) &
		    AC_PINCAP_HP_DRV)
			val |= AC_PINCTL_HP_EN;
		snd_hda_codec_write(codec, cfg->hp_pins[i], 0,
				    AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP);
				    AC_VERB_SET_PIN_WIDGET_CONTROL, val);
	}
	mute_outputs(codec, cfg->hp_outs, cfg->hp_pins);
	mute_outputs(codec, cfg->line_outs, cfg->line_out_pins);
	mute_outputs(codec, cfg->speaker_outs, cfg->speaker_pins);