Skip to contentSkip to conversation

assorted HDMI cleanups

PATCH In review Wu Fengguang 2 participants 7 messages Nov 19, 2008 Sound

lore
Share & tools
lore
#0 lore raw

cover assorted HDMI cleanups

Hi Takashi,

Here are 5 HDMI cleanup patches, some renames the code and others renames the user visible output messages. The new output goes like:

dmesg

	[ 5742.169578] detected monitor <9d><80>t connection type Display Port
	[ 5742.169580] available speakers: FL/FR LFE FLC/FRC
	[ 5742.169582] supports coding type MLP (Dolby TrueHD): channels = 7, rates = 48000 176400
	[ 5742.169585] supports coding type AC-3: channels = 1, rates = 48000 88200 192000, max bitrate = 1208000
	[ 5742.169588] supports coding type AC-3: channels = 2, rates = 48000 384000, max bitrate = 960000
	[ 5742.169591] supports coding type ATRAC: channels = 5, rates = 48000 88200 384000, max bitrate = 224000

/proc/asound/card0/eld\#3

	monitor name            ���
	connection_type         Display Port
	eld_version             [0xb] reserved
	edid_version            [0x3] CEA-861-B, C or D
	manufacture_id          0xee5a
	product_id              0x923c
	port_id                 0x18b263a03e17d1b5
	support_hdcp            1
	support_ai              1
	audio_sync_delay        216
	speakers                [0x23] FL/FR LFE FLC/FRC
	sad_count               4
	sad0_coding_type        [0xc] MLP (Dolby TrueHD)
	sad0_channels           7
	sad0_rates              [0x240] 48000 176400
	sad1_coding_type        [0x2] AC-3
	sad1_channels           1
	sad1_rates              [0x4c0] 48000 88200 192000
	sad1_max_bitrate        1208000
	sad2_coding_type        [0x2] AC-3
	sad2_channels           2
	sad2_rates              [0x1840] 48000 384000
	sad2_max_bitrate        960000
	sad3_coding_type        [0x8] ATRAC
	sad3_channels           5
	sad3_rates              [0x8c0] 48000 88200 384000
	sad3_max_bitrate        224000

Thanks,
Fengguang

_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

#1 lore raw

PATCH 1/5 hda: minor code cleanups

Some minor code cleanups.

---
 sound/pci/hda/hda_eld.c         |    2 +-
 sound/pci/hda/patch_intelhdmi.c |   18 +++++++++---------
 2 files changed, 10 insertions(+), 10 deletions(-)
sound/pci/hda/patch_intelhdmi.c +9 -9
@@ -85,7 +85,7 @@ struct hdmi_audio_infoframe {
 	u8 CXT04;
 	u8 CA;
 	u8 LFEPBL01_LSV36_DM_INH7;
-	u8 reserved[5];	/* PB6  - PB10 */
+	u8 reserved[5];	/* PB6 - PB10 */
 };
 
 /*
@@ -160,7 +160,7 @@ static struct cea_channel_speaker_alloca
 { .ca_index = 0x00,  .speakers = {   0,    0,   0,   0,   0,    0,  FR,  FL } },
 				 /* 2.1 */
 { .ca_index = 0x01,  .speakers = {   0,    0,   0,   0,   0,  LFE,  FR,  FL } },
-				 /* dolby surround */
+				 /* Dolby Surround */
 { .ca_index = 0x02,  .speakers = {   0,    0,   0,   0,  FC,    0,  FR,  FL } },
 { .ca_index = 0x03,  .speakers = {   0,    0,   0,   0,  FC,  LFE,  FR,  FL } },
 { .ca_index = 0x04,  .speakers = {   0,    0,   0,  RC,   0,    0,  FR,  FL } },
@@ -287,7 +287,7 @@ static void hdmi_set_channel_count(struc
 
 	if (chs != hdmi_get_channel_count(codec))
 		snd_printd(KERN_INFO "Channel count expect=%d, real=%d\n",
-				chs, hdmi_get_channel_count(codec));
+					chs, hdmi_get_channel_count(codec));
 }
 
 static void hdmi_debug_channel_mapping(struct hda_codec *codec)
@@ -300,7 +300,7 @@ static void hdmi_debug_channel_mapping(s
 		slot = snd_hda_codec_read(codec, CVT_NID, 0,
 						AC_VERB_GET_HDMI_CHAN_SLOT, i);
 		printk(KERN_DEBUG "ASP channel %d => slot %d\n",
-				slot >> 4, slot & 0x7);
+						slot >> 4, slot & 0x7);
 	}
 #endif
 }
@@ -316,7 +316,7 @@ static void hdmi_parse_eld(struct hda_co
 
 
 /*
- * Audio Infoframe routines
+ * Audio InfoFrame routines
  */
 
 static void hdmi_debug_dip_size(struct hda_codec *codec)
@@ -547,8 +547,8 @@ static void intel_hdmi_unsol_event(struc
  */
 
 static int intel_hdmi_playback_pcm_open(struct hda_pcm_stream *hinfo,
-				     struct hda_codec *codec,
-				     struct snd_pcm_substream *substream)
+					struct hda_codec *codec,
+					struct snd_pcm_substream *substream)
 {
 	struct intel_hdmi_spec *spec = codec->spec;
 
@@ -556,8 +556,8 @@ static int intel_hdmi_playback_pcm_open(
 }
 
 static int intel_hdmi_playback_pcm_close(struct hda_pcm_stream *hinfo,
-				      struct hda_codec *codec,
-				      struct snd_pcm_substream *substream)
+					 struct hda_codec *codec,
+					 struct snd_pcm_substream *substream)
 {
 	struct intel_hdmi_spec *spec = codec->spec;
 
sound/pci/hda/hda_eld.c +1 -1
@@ -132,7 +132,7 @@ static char *cea_audio_coding_type_names
 /*
  * The following two lists are shared between
  * 	- HDMI audio InfoFrame (source to sink)
- * 	- CEA E-EDID extension (sink to source)
+ * 	- CEA E-EDID Extension (sink to source)
  */
 
 /*
#3 lore raw

PATCH 3/5 hda: minor output message cleanups

In reply to Wu Fengguang

Some minor user visible message cleanups.

---
 sound/pci/hda/hda_eld.c |   15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
sound/pci/hda/hda_eld.c +6 -9
@@ -118,7 +118,7 @@ static char *cea_audio_coding_type_names
 	/*  6 */ "AAC-LC",
 	/*  7 */ "DTS",
 	/*  8 */ "ATRAC",
-	/*  9 */ "DSD (1-bit audio)",
+	/*  9 */ "DSD (One Bit Audio)",
 	/* 10 */ "E-AC-3/DD+ (Dolby Digital Plus)",
 	/* 11 */ "DTS-HD",
 	/* 12 */ "MLP (Dolby TrueHD)",
@@ -395,7 +395,7 @@ static void hdmi_show_short_audio_desc(s
 	printk(KERN_INFO "channels: %d\n", a->channels);
 
 	snd_print_pcm_rates(a->rates, buf, sizeof(buf));
-	printk(KERN_INFO "sampling frequencies: %s\n", buf);
+	printk(KERN_INFO "sampling rates: %s\n", buf);
 
 	if (a->format == AUDIO_CODING_TYPE_LPCM)
 		printk(KERN_INFO "sample bits: 0x%x\n", a->sample_bits);
@@ -413,11 +413,9 @@ void snd_print_channel_allocation(int sp
 
 	for (i = 0, j = 0; i < ARRAY_SIZE(cea_speaker_allocation_names); i++) {
 		if (spk_alloc & (1 << i))
-			j += snprintf(buf + j, buflen - j,  "%s ",
+			j += snprintf(buf + j, buflen - j,  " %s",
 					cea_speaker_allocation_names[i]);
 	}
-	if (j)
-		j--;	/* skip last space */
 	buf[j] = '\0';	/* necessary when j == 0 */
 }
 
@@ -464,11 +462,10 @@ static void hdmi_print_sad_info(int i, s
 	snd_iprintf(buffer, "sad%d_channels\t\t%d\n", i, a->channels);
 
 	snd_print_pcm_rates(a->rates, buf, sizeof(buf));
-	snd_iprintf(buffer, "sad%d_sampling_rates\t[0x%x] %s\n",
-			i, a->rates, buf);
+	snd_iprintf(buffer, "sad%d_rates\t\t[0x%x]%s\n", i, a->rates, buf);
 
 	if (a->format == AUDIO_CODING_TYPE_LPCM)
-		snd_iprintf(buffer, "sad%d_sample_bits\t0x%x\n",
+		snd_iprintf(buffer, "sad%d_bits\t\t0x%x\n",
 							i, a->sample_bits);
 
 	if (a->max_bitrate)
@@ -501,7 +498,7 @@ static void hdmi_print_eld_info(struct s
 	snd_iprintf(buffer, "audio_sync_delay\t%d\n", e->aud_synch_delay);
 
 	snd_print_channel_allocation(e->spk_alloc, buf, sizeof(buf));
-	snd_iprintf(buffer, "speakers\t\t[0x%x] %s\n", e->spk_alloc, buf);
+	snd_iprintf(buffer, "speakers\t\t[0x%x]%s\n", e->spk_alloc, buf);
 
 	snd_iprintf(buffer, "sad_count\t\t%d\n", e->sad_count);
 
#2 lore raw

PATCH 2/5 hda: rename sink_eld to hdmi_eld

In reply to Wu Fengguang

Rename struct sink_eld to hdmi_eld.

---
 sound/pci/hda/hda_eld.c         |   14 +++++++-------
 sound/pci/hda/hda_local.h       |   10 +++++-----
 sound/pci/hda/patch_intelhdmi.c |    8 ++++----
 3 files changed, 16 insertions(+), 16 deletions(-)
sound/pci/hda/hda_eld.c +7 -7
@@ -267,8 +267,8 @@ static void hdmi_update_short_audio_desc
 /*
  * Be careful, ELD buf could be totally rubbish!
  */
-static int hdmi_update_sink_eld(struct sink_eld *e,
-				const unsigned char *buf, int size)
+static int hdmi_update_eld(struct hdmi_eld *e,
+			   const unsigned char *buf, int size)
 {
 	int mnl;
 	int i;
@@ -351,7 +351,7 @@ int snd_hdmi_get_eld_size(struct hda_cod
 						 AC_DIPSIZE_ELD_BUF);
 }
 
-int snd_hdmi_get_eld(struct sink_eld *eld,
+int snd_hdmi_get_eld(struct hdmi_eld *eld,
 		     struct hda_codec *codec, hda_nid_t nid)
 {
 	int i;
@@ -380,7 +380,7 @@ int snd_hdmi_get_eld(struct sink_eld *el
 	for (i = 0; i < size; i++)
 		buf[i] = hdmi_get_eld_byte(codec, nid, i);
 
-	ret = hdmi_update_sink_eld(eld, buf, size);
+	ret = hdmi_update_eld(eld, buf, size);
 
 	kfree(buf);
 	return ret;
@@ -421,7 +421,7 @@ void snd_print_channel_allocation(int sp
 	buf[j] = '\0';	/* necessary when j == 0 */
 }
 
-void snd_hdmi_show_eld(struct sink_eld *e)
+void snd_hdmi_show_eld(struct hdmi_eld *e)
 {
 	int i;
 	char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE];
@@ -482,7 +482,7 @@ static void hdmi_print_sad_info(int i, s
 static void hdmi_print_eld_info(struct snd_info_entry *entry,
 				struct snd_info_buffer *buffer)
 {
-	struct sink_eld *e = entry->private_data;
+	struct hdmi_eld *e = entry->private_data;
 	char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE];
 	int i;
 
@@ -509,7 +509,7 @@ static void hdmi_print_eld_info(struct s
 		hdmi_print_sad_info(i, e->sad + i, buffer);
 }
 
-int snd_hda_eld_proc_new(struct hda_codec *codec, struct sink_eld *eld)
+int snd_hda_eld_proc_new(struct hda_codec *codec, struct hdmi_eld *eld)
 {
 	char name[32];
 	struct snd_info_entry *entry;
sound/pci/hda/hda_local.h +5 -5
@@ -462,7 +462,7 @@ struct cea_sad {
 /*
  * ELD: EDID Like Data
  */
-struct sink_eld {
+struct hdmi_eld {
 	int	eld_size;
 	int	baseline_len;
 	int	eld_ver;	/* (eld_ver == 0) indicates invalid ELD */
@@ -481,13 +481,13 @@ struct sink_eld {
 };
 
 int snd_hdmi_get_eld_size(struct hda_codec *codec, hda_nid_t nid);
-int snd_hdmi_get_eld(struct sink_eld *, struct hda_codec *, hda_nid_t);
-void snd_hdmi_show_eld(struct sink_eld *eld);
+int snd_hdmi_get_eld(struct hdmi_eld *, struct hda_codec *, hda_nid_t);
+void snd_hdmi_show_eld(struct hdmi_eld *eld);
 
 #ifdef CONFIG_PROC_FS
-int snd_hda_eld_proc_new(struct hda_codec *codec, struct sink_eld *eld);
+int snd_hda_eld_proc_new(struct hda_codec *codec, struct hdmi_eld *eld);
 #else
-inline int snd_hda_eld_proc_new(struct hda_codec *codec, struct sink_eld *eld)
+inline int snd_hda_eld_proc_new(struct hda_codec *codec, struct hdmi_eld *eld)
 {
 	return 0;
 }
sound/pci/hda/patch_intelhdmi.c +4 -4
@@ -42,7 +42,7 @@
 struct intel_hdmi_spec {
 	struct hda_multi_out multiout;
 	struct hda_pcm pcm_rec;
-	struct sink_eld sink;
+	struct hdmi_eld sink_eld;
 };
 
 static struct hda_verb pinout_enable_verb[] = {
@@ -308,7 +308,7 @@ static void hdmi_debug_channel_mapping(s
 static void hdmi_parse_eld(struct hda_codec *codec)
 {
 	struct intel_hdmi_spec *spec = codec->spec;
-	struct sink_eld *eld = &spec->sink;
+	struct hdmi_eld *eld = &spec->sink_eld;
 
 	if (!snd_hdmi_get_eld(eld, codec, PIN_NID))
 		snd_hdmi_show_eld(eld);
@@ -411,7 +411,7 @@ static int hdmi_setup_channel_allocation
 					 struct hdmi_audio_infoframe *ai)
 {
 	struct intel_hdmi_spec *spec = codec->spec;
-	struct sink_eld *eld = &spec->sink;
+	struct hdmi_eld *eld = &spec->sink_eld;
 	int i;
 	int spk_mask = 0;
 	int channels = 1 + (ai->CC02_CT47 & 0x7);
@@ -663,7 +663,7 @@ static int patch_intel_hdmi(struct hda_c
 	codec->spec = spec;
 	codec->patch_ops = intel_hdmi_patch_ops;
 
-	snd_hda_eld_proc_new(codec, &spec->sink);
+	snd_hda_eld_proc_new(codec, &spec->sink_eld);
 
 	init_channel_allocations();
 
#5 lore raw

PATCH 5/5 hda: compact ELD output messages

In reply to Wu Fengguang

Strip out some ELD printk messages that end user won't care, and make the output compact.

---
 sound/pci/hda/hda_eld.c |   58 ++++++++++++++++----------------------
 1 file changed, 25 insertions(+), 33 deletions(-)
sound/pci/hda/hda_eld.c +25 -33
@@ -389,22 +389,27 @@ int snd_hdmi_get_eld(struct hdmi_eld *el
 static void hdmi_show_short_audio_desc(struct cea_sad *a)
 {
 	char buf[SND_PRINT_RATES_ADVISED_BUFSIZE];
+	char buf2[8 + SND_PRINT_BITS_ADVISED_BUFSIZE] = ", bits =";
 
-	printk(KERN_INFO "coding type: %s\n",
-					cea_audio_coding_type_names[a->format]);
-	printk(KERN_INFO "channels: %d\n", a->channels);
+	if (!a->format)
+		return;
 
 	snd_print_pcm_rates(a->rates, buf, sizeof(buf));
-	printk(KERN_INFO "sampling rates: %s\n", buf);
 
 	if (a->format == AUDIO_CODING_TYPE_LPCM)
-		printk(KERN_INFO "sample bits: 0x%x\n", a->sample_bits);
-
-	if (a->max_bitrate)
-		printk(KERN_INFO "max bitrate: %d\n", a->max_bitrate);
-
-	if (a->profile)
-		printk(KERN_INFO "profile: %d\n", a->profile);
+		snd_print_pcm_rates(a->sample_bits, buf2 + 8, sizeof(buf2 - 8));
+	else if (a->max_bitrate)
+		snprintf(buf2, sizeof(buf2),
+				", max bitrate = %d", a->max_bitrate);
+	else
+		buf2[0] = '\0';
+
+	printk(KERN_INFO "supports coding type %s:"
+			" channels = %d, rates =%s%s\n",
+			cea_audio_coding_type_names[a->format],
+			a->channels,
+			buf,
+			buf2);
 }
 
 void snd_print_channel_allocation(int spk_alloc, char *buf, int buflen)
@@ -422,29 +427,16 @@ void snd_print_channel_allocation(int sp
 void snd_hdmi_show_eld(struct hdmi_eld *e)
 {
 	int i;
-	char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE];
 
-	printk(KERN_INFO "ELD buffer size  is %d\n", e->eld_size);
-	printk(KERN_INFO "ELD baseline len is %d*4\n", e->baseline_len);
-	printk(KERN_INFO "vendor block len is %d\n",
-					e->eld_size - e->baseline_len * 4 - 4);
-	printk(KERN_INFO "ELD version      is %s\n",
-					eld_versoin_names[e->eld_ver]);
-	printk(KERN_INFO "CEA EDID version is %s\n",
-				cea_edid_version_names[e->cea_edid_ver]);
-	printk(KERN_INFO "manufacture id   is 0x%x\n", e->manufacture_id);
-	printk(KERN_INFO "product id       is 0x%x\n", e->product_id);
-	printk(KERN_INFO "port id          is 0x%llx\n", (long long)e->port_id);
-	printk(KERN_INFO "HDCP support     is %d\n", e->support_hdcp);
-	printk(KERN_INFO "AI support       is %d\n", e->support_ai);
-	printk(KERN_INFO "SAD count        is %d\n", e->sad_count);
-	printk(KERN_INFO "audio sync delay is %x\n", e->aud_synch_delay);
-	printk(KERN_INFO "connection type  is %s\n",
-				eld_connection_type_names[e->conn_type]);
-	printk(KERN_INFO "monitor name     is %s\n", e->monitor_name);
-
-	snd_print_channel_allocation(e->spk_alloc, buf, sizeof(buf));
-	printk(KERN_INFO "speaker allocations: (0x%x)%s\n", e->spk_alloc, buf);
+	printk(KERN_INFO "detected monitor %s at connection type %s\n",
+			e->monitor_name,
+			eld_connection_type_names[e->conn_type]);
+
+	if (e->spk_alloc) {
+		char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE];
+		snd_print_channel_allocation(e->spk_alloc, buf, sizeof(buf));
+		printk(KERN_INFO "available speakers:%s\n", buf);
+	}
 
 	for (i = 0; i < e->sad_count; i++)
 		hdmi_show_short_audio_desc(e->sad + i);
#4 lore raw

PATCH 4/5 hda: make global snd_print_pcm_bits()

In reply to Wu Fengguang

Introduce a global function snd_print_pcm_bits() and use it in the ELD code.

---
 sound/pci/hda/hda_eld.c   |   10 ++++++----
 sound/pci/hda/hda_local.h |    3 +++
 sound/pci/hda/hda_proc.c  |   22 ++++++++++++++++------
 3 files changed, 25 insertions(+), 10 deletions(-)
sound/pci/hda/hda_proc.c +16 -6
@@ -107,23 +107,33 @@ void snd_print_pcm_rates(int pcm, char *
 static void print_pcm_rates(struct snd_info_buffer *buffer, unsigned int pcm)
 {
 	char buf[SND_PRINT_RATES_ADVISED_BUFSIZE];
+
 	pcm &= AC_SUPPCM_RATES;
 	snd_iprintf(buffer, "    rates [0x%x]:", pcm);
 	snd_print_pcm_rates(pcm, buf, sizeof(buf));
 	snd_iprintf(buffer, "%s\n", buf);
 }
 
-static void print_pcm_bits(struct snd_info_buffer *buffer, unsigned int pcm)
+void snd_print_pcm_bits(int pcm, char *buf, int buflen)
 {
 	static unsigned int bits[] = { 8, 16, 20, 24, 32 };
-	int i;
+	int i, j;
+
+	for (i = 0, j = 0; i < ARRAY_SIZE(bits); i++)
+		if (pcm & (1 << i))
+			j += snprintf(buf + j, buflen - j,  " %d", bits[i]);
+
+	buf[j] = '\0'; /* necessary when j == 0 */
+}
+
+static void print_pcm_bits(struct snd_info_buffer *buffer, unsigned int pcm)
+{
+	char buf[SND_PRINT_BITS_ADVISED_BUFSIZE];
 
 	pcm = (pcm >> 16) & 0xff;
 	snd_iprintf(buffer, "    bits [0x%x]:", pcm);
-	for (i = 0; i < ARRAY_SIZE(bits); i++)
-		if (pcm & (1 << i))
-			snd_iprintf(buffer, " %d", bits[i]);
-	snd_iprintf(buffer, "\n");
+	snd_print_pcm_bits(pcm, buf, sizeof(buf));
+	snd_iprintf(buffer, "%s\n", buf);
 }
 
 static void print_pcm_formats(struct snd_info_buffer *buffer,
sound/pci/hda/hda_eld.c +6 -4
@@ -455,7 +455,7 @@ void snd_hdmi_show_eld(struct hdmi_eld *
 static void hdmi_print_sad_info(int i, struct cea_sad *a,
 				struct snd_info_buffer *buffer)
 {
-	char buf[80];
+	char buf[SND_PRINT_RATES_ADVISED_BUFSIZE];
 
 	snd_iprintf(buffer, "sad%d_coding_type\t[0x%x] %s\n",
 			i, a->format, cea_audio_coding_type_names[a->format]);
@@ -464,9 +464,11 @@ static void hdmi_print_sad_info(int i, s
 	snd_print_pcm_rates(a->rates, buf, sizeof(buf));
 	snd_iprintf(buffer, "sad%d_rates\t\t[0x%x]%s\n", i, a->rates, buf);
 
-	if (a->format == AUDIO_CODING_TYPE_LPCM)
-		snd_iprintf(buffer, "sad%d_bits\t\t0x%x\n",
-							i, a->sample_bits);
+	if (a->format == AUDIO_CODING_TYPE_LPCM) {
+		snd_print_pcm_bits(a->sample_bits, buf, sizeof(buf));
+		snd_iprintf(buffer, "sad%d_bits\t\t[0x%x]%s\n",
+							i, a->sample_bits, buf);
+	}
 
 	if (a->max_bitrate)
 		snd_iprintf(buffer, "sad%d_max_bitrate\t%d\n",
sound/pci/hda/hda_local.h +3 -0
@@ -287,6 +287,9 @@ static inline int snd_hda_codec_proc_new
 #define SND_PRINT_RATES_ADVISED_BUFSIZE	80
 void snd_print_pcm_rates(int pcm, char *buf, int buflen);
 
+#define SND_PRINT_BITS_ADVISED_BUFSIZE	16
+void snd_print_pcm_bits(int pcm, char *buf, int buflen);
+
 /*
  * Misc
  */
#6 lore raw
In reply to Wu Fengguang

At Wed, 19 Nov 2008 15:13:58 +0800,

Quoted 37 lines · Wu Fengguang

Hi Takashi,

Here are 5 HDMI cleanup patches, some renames the code and others renames the user visible output messages. The new output goes like:

dmesg

	[ 5742.169578] detected monitor <9d><80>t connection type Display Port
	[ 5742.169580] available speakers: FL/FR LFE FLC/FRC
	[ 5742.169582] supports coding type MLP (Dolby TrueHD): channels = 7, rates = 48000 176400
	[ 5742.169585] supports coding type AC-3: channels = 1, rates = 48000 88200 192000, max bitrate = 1208000
	[ 5742.169588] supports coding type AC-3: channels = 2, rates = 48000 384000, max bitrate = 960000
	[ 5742.169591] supports coding type ATRAC: channels = 5, rates = 48000 88200 384000, max bitrate = 224000

/proc/asound/card0/eld\#3

	monitor name            ���
	connection_type         Display Port
	eld_version             [0xb] reserved
	edid_version            [0x3] CEA-861-B, C or D
	manufacture_id          0xee5a
	product_id              0x923c
	port_id                 0x18b263a03e17d1b5
	support_hdcp            1
	support_ai              1
	audio_sync_delay        216
	speakers                [0x23] FL/FR LFE FLC/FRC
	sad_count               4
	sad0_coding_type        [0xc] MLP (Dolby TrueHD)
	sad0_channels           7
	sad0_rates              [0x240] 48000 176400
	sad1_coding_type        [0x2] AC-3
	sad1_channels           1
	sad1_rates              [0x4c0] 48000 88200 192000
	sad1_max_bitrate        1208000
Quoted 8 lines
	sad2_coding_type        [0x2] AC-3
	sad2_channels           2
	sad2_rates              [0x1840] 48000 384000
	sad2_max_bitrate        960000
	sad3_coding_type        [0x8] ATRAC
	sad3_channels           5
	sad3_rates              [0x8c0] 48000 88200 384000
	sad3_max_bitrate        224000

Looks good. Applied now.
Thanks!

Takashi
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel