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

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

ALSA: hda - VIA: Fix codec type for VT1708BCE at the right timing



Add get_codec_type() in via_new_spec() function to make sure getting
correct codec type before building mixer controls.

Signed-off-by: default avatarLydia Wang <lydiawang@viatech.com.cn>
Cc: <stable@kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 16922281
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -159,6 +159,7 @@ struct via_spec {
#endif
};

static enum VIA_HDA_CODEC get_codec_type(struct hda_codec *codec);
static struct via_spec * via_new_spec(struct hda_codec *codec)
{
	struct via_spec *spec;
@@ -169,6 +170,10 @@ static struct via_spec * via_new_spec(struct hda_codec *codec)

	codec->spec = spec;
	spec->codec = codec;
	spec->codec_type = get_codec_type(codec);
	/* VT1708BCE & VT1708S are almost same */
	if (spec->codec_type == VT1708BCE)
		spec->codec_type = VT1708S;
	return spec;
}

@@ -2203,10 +2208,6 @@ static int via_init(struct hda_codec *codec)
	for (i = 0; i < spec->num_iverbs; i++)
		snd_hda_sequence_write(codec, spec->init_verbs[i]);

	spec->codec_type = get_codec_type(codec);
	if (spec->codec_type == VT1708BCE)
		spec->codec_type = VT1708S; /* VT1708BCE & VT1708S are almost
					       same */
	/* Lydia Add for EAPD enable */
	if (!spec->dig_in_nid) { /* No Digital In connection */
		if (spec->dig_in_pin) {