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

Commit ce0e5a9e authored by Lydia Wang's avatar Lydia Wang Committed by Takashi Iwai
Browse files

ALSA: hda - VIA: Fix independent headphone no sound issue



Modify via_independent_hp_put() function to support VT1718S and VT1812
codecs, and fix independent headphone no sound issue.

Signed-off-by: default avatarLydia Wang <lydiawang@viatech.com.cn>
Cc: <stable@kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent bff5fbf5
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -1191,8 +1191,16 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
	/* Get Independent Mode index of headphone pin widget */
	/* Get Independent Mode index of headphone pin widget */
	spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
	spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
		? 1 : 0;
		? 1 : 0;
	snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, pinsel);
	if (spec->codec_type == VT1718S)
		snd_hda_codec_write(codec, nid, 0,
				    AC_VERB_SET_CONNECT_SEL, pinsel ? 2 : 0);
	else
		snd_hda_codec_write(codec, nid, 0,
				    AC_VERB_SET_CONNECT_SEL, pinsel);


	if (spec->codec_type == VT1812)
		snd_hda_codec_write(codec, 0x35, 0,
				    AC_VERB_SET_CONNECT_SEL, pinsel);
	if (spec->multiout.hp_nid && spec->multiout.hp_nid
	if (spec->multiout.hp_nid && spec->multiout.hp_nid
	    != spec->multiout.dac_nids[HDA_FRONT])
	    != spec->multiout.dac_nids[HDA_FRONT])
		snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
		snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
@@ -1211,6 +1219,8 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
		activate_ctl(codec, "Headphone Playback Switch",
		activate_ctl(codec, "Headphone Playback Switch",
			     spec->hp_independent_mode);
			     spec->hp_independent_mode);
	}
	}
	/* update jack power state */
	set_jack_power_state(codec);
	return 0;
	return 0;
}
}