Skip to contentSkip to conversation

ALSA: VIA HDA: Fix independent headphone no sound issue

PATCH In review Lydia Wang 2 participants 2 messages Mar 21, 2011 Sound

lore
Share & tools
lore

Lydia Wang

author
#0 lore raw

PATCH 6/16 ALSA: VIA HDA: Fix independent headphone no sound issue

From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: 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.

---
 sound/pci/hda/patch_via.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
sound/pci/hda/patch_via.c +11 -2
@@ -740,8 +740,15 @@
 	/* Get Independent Mode index of headphone pin widget */
 	spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
 		? 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
 	    != spec->multiout.dac_nids[HDA_FRONT])
 		snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
@@ -761,6 +768,8 @@
 		activate_ctl(codec, "Headphone Playback Switch",
 			     spec->hp_independent_mode);
 	}
+	/* update jack power state */
+	set_widgets_power_state(codec);
 	return 0;
 }
#1 lore raw

At Mon, 21 Mar 2011 15:28:04 +0800,

Quoted 6 lines · Lydia Wang

From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: 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.

This is also another issue that I'd like to fix before refactoring. There are many complaints about the silent output on VT codecs...

Takashi

Quoted 36 lines
---
 sound/pci/hda/patch_via.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
sound/pci/hda/patch_via.c +11 -2
@@ -740,8 +740,15 @@
 	/* Get Independent Mode index of headphone pin widget */
 	spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
 		? 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
 	    != spec->multiout.dac_nids[HDA_FRONT])
 		snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
@@ -761,6 +768,8 @@
 		activate_ctl(codec, "Headphone Playback Switch",
 			     spec->hp_independent_mode);
 	}
+	/* update jack power state */
+	set_widgets_power_state(codec);
 	return 0;
 }