Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a624ea5 authored by Mengdong Lin's avatar Mengdong Lin Committed by Takashi Iwai
Browse files

ALSA: hda - add device list & select info of display pins to codec proc file



If a display codec supports multi-stream transport on the pins, the pin's
device list length and device entries will be exposed to codec proc file.

Signed-off-by: default avatarMengdong Lin <mengdong.lin@intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent f1aa0684
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -582,6 +582,36 @@ static void print_gpio(struct snd_info_buffer *buffer,
	print_nid_array(buffer, codec, nid, &codec->nids);
}

static void print_device_list(struct snd_info_buffer *buffer,
			    struct hda_codec *codec, hda_nid_t nid)
{
	int i, curr = -1;
	u8 dev_list[AC_MAX_DEV_LIST_LEN];
	int devlist_len;

	devlist_len = snd_hda_get_devices(codec, nid, dev_list,
					AC_MAX_DEV_LIST_LEN);
	snd_iprintf(buffer, "  Devices: %d\n", devlist_len);
	if (devlist_len <= 0)
		return;

	curr = snd_hda_codec_read(codec, nid, 0,
				AC_VERB_GET_DEVICE_SEL, 0);

	for (i = 0; i < devlist_len; i++) {
		if (i == curr)
			snd_iprintf(buffer, "    *");
		else
			snd_iprintf(buffer, "     ");

		snd_iprintf(buffer,
			"Dev %02d: PD = %d, ELDV = %d, IA = %d\n", i,
			!!(dev_list[i] & AC_DE_PD),
			!!(dev_list[i] & AC_DE_ELDV),
			!!(dev_list[i] & AC_DE_IA));
	}
}

static void print_codec_info(struct snd_info_entry *entry,
			     struct snd_info_buffer *buffer)
{
@@ -751,6 +781,9 @@ static void print_codec_info(struct snd_info_entry *entry,
				    (wid_caps & AC_WCAP_DELAY) >>
				    AC_WCAP_DELAY_SHIFT);

		if (wid_type == AC_WID_PIN && codec->dp_mst)
			print_device_list(buffer, codec, nid);

		if (wid_caps & AC_WCAP_CONN_LIST)
			print_conn_list(buffer, codec, nid, wid_type,
					conn, conn_len);