ALSA: hda - Always read raw connections for proc output
authorTakashi Iwai <tiwai@suse.de>
Mon, 11 Jul 2011 13:42:52 +0000 (15:42 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 12 Jul 2011 05:45:01 +0000 (07:45 +0200)
In the codec proc outputs, read the raw connections instead of the
cached connection list, i.e. proc files contain only raw values.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_proc.c

index d0deab1ed510cbd5f02ad1b4a75258196a213c9f..25b90eec915a4f0995c97e591c6e1efbd177d00b 100644 (file)
@@ -308,9 +308,6 @@ int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid,
 }
 EXPORT_SYMBOL_HDA(snd_hda_get_sub_nodes);
 
-static int _hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
-                               hda_nid_t *conn_list, int max_conns);
-
 /* look up the cached results */
 static hda_nid_t *lookup_conn_list(struct snd_array *array, hda_nid_t nid)
 {
@@ -357,7 +354,7 @@ int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid,
                return -EINVAL;
 
        /* read the connection and add to the cache */
-       len = _hda_get_connections(codec, nid, list, HDA_MAX_CONNECTIONS);
+       len = snd_hda_get_raw_connections(codec, nid, list, HDA_MAX_CONNECTIONS);
        if (len < 0)
                return len;
        err = snd_hda_override_conn_list(codec, nid, len, list);
@@ -399,8 +396,19 @@ int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
 }
 EXPORT_SYMBOL_HDA(snd_hda_get_connections);
 
-static int _hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
-                            hda_nid_t *conn_list, int max_conns)
+/**
+ * snd_hda_get_raw_connections - copy connection list without cache
+ * @codec: the HDA codec
+ * @nid: NID to parse
+ * @conn_list: connection list array
+ * @max_conns: max. number of connections to store
+ *
+ * Like snd_hda_get_connections(), copy the connection list but without
+ * checking through the connection-list cache.
+ * Currently called only from hda_proc.c, so not exported.
+ */
+int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
+                               hda_nid_t *conn_list, int max_conns)
 {
        unsigned int parm;
        int i, conn_len, conns;
index e6bc16f66bceeeaff375af566c65558f05753e51..f465e07a4879cce4a634a0874cb69f6456fd33c2 100644 (file)
@@ -903,6 +903,8 @@ int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid,
                          hda_nid_t *start_id);
 int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
                            hda_nid_t *conn_list, int max_conns);
+int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
+                           hda_nid_t *conn_list, int max_conns);
 int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid,
                          const hda_nid_t **listp);
 int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int nums,
index bfe74c2fb0795b0da254d7c3bf1670a802148b91..2be57b051aa27c60145d808899cf0375b0b2f6e0 100644 (file)
@@ -636,7 +636,7 @@ static void print_codec_info(struct snd_info_entry *entry,
                        wid_caps |= AC_WCAP_CONN_LIST;
 
                if (wid_caps & AC_WCAP_CONN_LIST)
-                       conn_len = snd_hda_get_connections(codec, nid, conn,
+                       conn_len = snd_hda_get_raw_connections(codec, nid, conn,
                                                           HDA_MAX_CONNECTIONS);
 
                if (wid_caps & AC_WCAP_IN_AMP) {