[alsa-devel] [PATCH 2/2 V2] ALSA: hda - Add cache connection info
Takashi Iwai
tiwai at suse.de
Mon Jun 24 14:07:20 CEST 2013
At Mon, 24 Jun 2013 09:10:19 -0400,
Wang Xingchao wrote:
>
> Pin's connection list may change dynamically with hot-plug event
> on Intel Haswell chip. Users would see connections be "0" in codec#.
> when play audio on this pin, software choose connections from cache.
> So add Cache connection info to avoid confuse.
>
> Signed-off-by: Wang Xingchao <xingchao.wang at linux.intel.com>
> ---
> sound/pci/hda/hda_proc.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/sound/pci/hda/hda_proc.c b/sound/pci/hda/hda_proc.c
> index 0fee8fa..403589c 100644
> --- a/sound/pci/hda/hda_proc.c
> +++ b/sound/pci/hda/hda_proc.c
> @@ -504,6 +504,8 @@ static void print_conn_list(struct snd_info_buffer *buffer,
> int conn_len)
> {
> int c, curr = -1;
> + const hda_nid_t *list;
> + int cache_len;
>
> if (conn_len > 1 &&
> wid_type != AC_WID_AUD_MIX &&
> @@ -511,7 +513,7 @@ static void print_conn_list(struct snd_info_buffer *buffer,
> wid_type != AC_WID_POWER)
> curr = snd_hda_codec_read(codec, nid, 0,
> AC_VERB_GET_CONNECT_SEL, 0);
> - snd_iprintf(buffer, " Connection: %d\n", conn_len);
> + snd_iprintf(buffer, " Raw Connection: %d\n", conn_len);
Don't change the existing entry. It'll break the user-space tools
that read the proc contents.
> if (conn_len > 0) {
> snd_iprintf(buffer, " ");
> for (c = 0; c < conn_len; c++) {
> @@ -521,6 +523,19 @@ static void print_conn_list(struct snd_info_buffer *buffer,
> }
> snd_iprintf(buffer, "\n");
> }
> +
> + /* Get Cache connections info */
> + cache_len = snd_hda_get_conn_list(codec, nid, &list);
> + if (cache_len != conn_len
> + || memcmp(list, conn, conn_len)) {
> + snd_iprintf(buffer, " Cache Connection: %d\n", conn_len);
Must be cache_len.
Also "Cache connection" might be a bit misleading. In this case, it's
not cached but used as alternative in driver. "In-driver connection"
or such? English-native people can give better advice...
> + if (cache_len > 0) {
> + snd_iprintf(buffer, " ");
> + for (c = 0; c < conn_len; c++)
Must be cache_len, too.
thanks,
Takashi
> + snd_iprintf(buffer, " 0x%02x", list[c]);
> + snd_iprintf(buffer, "\n");
> + }
> + }
> }
>
> static void print_gpio(struct snd_info_buffer *buffer,
> --
> 1.8.1.2
>
More information about the Alsa-devel
mailing list