[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