[Intel-gfx] [PATCH V2 4/4] ALSA HDA: Force HDMI pins enabled

Wang Xingchao xingchao.wang at intel.com
Tue Jul 31 04:47:05 CEST 2012


There's one issue for HDMI pins, even the related pin will be enabled
when the stream is active but the GPU registers show the PIN is not in
active state, so we force all pins in active state and donot close it
when the stream is closed.

Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
---
 sound/pci/hda/patch_hdmi.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index ad319d4..64cc9e0 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -421,13 +421,17 @@ static void hdmi_write_dip_byte(struct hda_codec *codec, hda_nid_t pin_nid,
 
 static void hdmi_init_pin(struct hda_codec *codec, hda_nid_t pin_nid)
 {
+	/* Force all output Pins enabled */
+	snd_printk(KERN_DEBUG "HDMI: enable all output\n");
+	snd_hda_codec_write(codec, pin_nid, 0,
+			    AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40);
+
 	/* Unmute */
-	if (get_wcaps(codec, pin_nid) & AC_WCAP_OUT_AMP)
+	if (get_wcaps(codec, pin_nid) & AC_WCAP_OUT_AMP) {
+		snd_printk(KERN_DEBUG "HDMI: unmute pin %d\n", pin_nid);
 		snd_hda_codec_write(codec, pin_nid, 0,
 				AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
-	/* Disable pin out until stream is active*/
-	snd_hda_codec_write(codec, pin_nid, 0,
-			    AC_VERB_SET_PIN_WIDGET_CONTROL, 0);
+	}
 }
 
 static int hdmi_get_channel_count(struct hda_codec *codec, hda_nid_t cvt_nid)
@@ -1190,9 +1194,6 @@ static int generic_hdmi_playback_pcm_cleanup(struct hda_pcm_stream *hinfo,
 
 		pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
 					    AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
-		snd_hda_codec_write(codec, per_pin->pin_nid, 0,
-				    AC_VERB_SET_PIN_WIDGET_CONTROL,
-				    pinctl & ~PIN_OUT);
 		snd_hda_spdif_ctls_unassign(codec, pin_idx);
 	}
 
-- 
1.7.9.5




More information about the Intel-gfx mailing list