[PATCH 1/1] ALSA: hda: Fixup commit 79c944ad (caused codec initialization failure)

David Henningsson david.henningsson at canonical.com
Tue Jul 27 00:10:34 CEST 2010


Commit 79c944ad caused codecs not to be detected in some cases,
found on several Realtek codecs.

Signed-off-by: David Henningsson <david.henningsson at canonical.com>
---
 sound/pci/hda/hda_codec.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 8cd5da8..710f61a 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -724,23 +724,24 @@ static int get_codec_name(struct hda_codec *codec)
  */
 static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec)
 {
-	int i, total_nodes, function_id;
+	int i, total_nodes, function_id, param_val;
 	hda_nid_t nid;
 
 	total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid);
 	for (i = 0; i < total_nodes; i++, nid++) {
-		function_id = snd_hda_param_read(codec, nid,
+		param_val = snd_hda_param_read(codec, nid,
 						AC_PAR_FUNCTION_TYPE);
+		function_id = param_val & 0xff;
 		switch (function_id) {
 		case AC_GRP_AUDIO_FUNCTION:
 			codec->afg = nid;
-			codec->afg_function_id = function_id & 0xff;
-			codec->afg_unsol = (function_id >> 8) & 1;
+			codec->afg_function_id = function_id;
+			codec->afg_unsol = (param_val >> 8) & 1;
 			break;
 		case AC_GRP_MODEM_FUNCTION:
 			codec->mfg = nid;
-			codec->mfg_function_id = function_id & 0xff;
-			codec->mfg_unsol = (function_id >> 8) & 1;
+			codec->mfg_function_id = function_id;
+			codec->mfg_unsol = (param_val >> 8) & 1;
 			break;
 		default:
 			break;
-- 
1.7.0.4


--------------040206080406060608060907--


More information about the Alsa-devel mailing list