Commit 79c944ad caused codecs not to be detected in some cases, found on several Realtek codecs.
Signed-off-by: David Henningsson david.henningsson@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;