Commit e1716139 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

[ALSA] hda-intel - Show more volume-knob attributes



Show more attributs of volume-knob widgets.
Also don't put empty lines when no connection list is found.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent 9b1fffdd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -135,6 +135,7 @@ enum {
#define AC_PAR_PROC_CAP			0x10
#define AC_PAR_GPIO_CAP			0x11
#define AC_PAR_AMP_OUT_CAP		0x12
#define AC_PAR_VOL_KNB_CAP		0x13

/*
 * AC_VERB_PARAMETERS results (32bit)
+23 −9
Original line number Diff line number Diff line
@@ -305,6 +305,12 @@ static void print_codec_info(struct snd_info_entry *entry,
			snd_iprintf(buffer, " Amp-Out");
		snd_iprintf(buffer, "\n");

		/* volume knob is a special widget that always have connection
		 * list
		 */
		if (wid_type == AC_WID_VOL_KNB)
			wid_caps |= AC_WCAP_CONN_LIST;

		if (wid_caps & AC_WCAP_CONN_LIST)
			conn_len = snd_hda_get_connections(codec, nid, conn,
							   HDA_MAX_CONNECTIONS);
@@ -340,9 +346,15 @@ static void print_codec_info(struct snd_info_entry *entry,
			snd_iprintf(buffer, "\n");
			break;
		case AC_WID_VOL_KNB:
			snd_iprintf(buffer, "  Volume-Knob: 0x%x\n",
				    snd_hda_codec_read(codec, nid, 0,
					AC_VERB_GET_VOLUME_KNOB_CONTROL, 0));
			pinctls = snd_hda_param_read(codec, nid,
						     AC_PAR_VOL_KNB_CAP);
			snd_iprintf(buffer, "  Volume-Knob: delta=%d, "
				    "steps=%d, ",
				    (pinctls >> 7) & 1, pinctls & 0x7f);
			pinctls = snd_hda_codec_read(codec, nid, 0,
					AC_VERB_GET_VOLUME_KNOB_CONTROL, 0);
			snd_iprintf(buffer, "direct=%d, val=%d\n",
				    (pinctls >> 7) & 1, pinctls & 0x7f);
			break;
		case AC_WID_AUD_OUT:
		case AC_WID_AUD_IN:
@@ -365,6 +377,7 @@ static void print_codec_info(struct snd_info_entry *entry,
				curr = snd_hda_codec_read(codec, nid, 0,
					AC_VERB_GET_CONNECT_SEL, 0);
			snd_iprintf(buffer, "  Connection: %d\n", conn_len);
			if (conn_len > 0) {
				snd_iprintf(buffer, "    ");
				for (c = 0; c < conn_len; c++) {
					snd_iprintf(buffer, " 0x%02x", conn[c]);
@@ -374,6 +387,7 @@ static void print_codec_info(struct snd_info_entry *entry,
				snd_iprintf(buffer, "\n");
			}
		}
	}
	snd_hda_power_down(codec);
}