Browse Source

[ALSA] hda-codec - Get subsystem ID from AFG/MFG

Modules: HDA Codec driver

Get subsytem ID from AFG/MFG if not obtained from the root node.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 20 years ago
parent
commit
86284e458b
2 changed files with 9 additions and 0 deletions
  1. 7 0
      sound/pci/hda/hda_codec.c
  2. 2 0
      sound/pci/hda/hda_codec.h

+ 7 - 0
sound/pci/hda/hda_codec.c

@@ -518,6 +518,13 @@ int snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr,
 		return -ENODEV;
 	}
 
+	if (! codec->subsystem_id) {
+		hda_nid_t nid = codec->afg ? codec->afg : codec->mfg;
+		codec->subsystem_id = snd_hda_codec_read(codec, nid, 0,
+							 AC_VERB_GET_SUBSYSTEM_ID,
+							 0);
+	}
+
 	codec->preset = find_codec_preset(codec);
 	if (! *bus->card->mixername)
 		snd_hda_get_codec_name(codec, bus->card->mixername,

+ 2 - 0
sound/pci/hda/hda_codec.h

@@ -79,6 +79,8 @@ enum {
 #define AC_VERB_GET_GPIO_MASK			0x0f16
 #define AC_VERB_GET_GPIO_DIRECTION		0x0f17
 #define AC_VERB_GET_CONFIG_DEFAULT		0x0f1c
+/* f20: AFG/MFG */
+#define AC_VERB_GET_SUBSYSTEM_ID		0x0f20
 
 /*
  * SET verbs