All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Fengguang <wfg@linux.intel.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel <alsa-devel@alsa-project.org>
Subject: [PATCH 0/3] HDMI ELD routines and proc interface
Date: Tue, 18 Nov 2008 11:47:50 +0800	[thread overview]
Message-ID: <20081118034750.445933681@linux.intel.com> (raw)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 5942 bytes --]

Hi Takashi,

Here are the patches for separated HDMI ELD routines and proc interface.
They have undergone basic tests on a G45 board and stress test with the
patch below.

	[PATCH 1/3] introduce snd_print_pcm_rates()
	[PATCH 2/3] create hda_eld.c for ELD routines and proc interface
	[PATCH 3/3] ELD proc interface for HDMI sinks

Here are two sample outputs from the stress testing:

	monitor name
	connection_type         2-reserved
	eld_version             [0x0] reserved
	edid_version            [0x0] no CEA EDID Timing Extension block present
	manufacture_id          0x3c93
	product_id              0xc5ac
	port_id                 0x486d85d5a3bfe049
	support_hdcp            1
	support_ai              0
	audio_sync_delay        152
	speakers                [0x6f] FL/FR LFE FC RL/RR FLC/FRC RLC/RRC
	sad_count               8
	sad0_coding_type        [0x0] undefined
	sad0_channels           0
	sad0_sampling_rates     [0x0]
	sad1_coding_type        [0x0] undefined
	sad1_channels           0
	sad1_sampling_rates     [0x0]
	sad2_coding_type        [0x0] undefined
	sad2_channels           0
	sad2_sampling_rates     [0x0]
	sad3_coding_type        [0x0] undefined
	sad3_channels           0
	sad3_sampling_rates     [0x0]
	sad4_coding_type        [0x0] undefined
	sad4_channels           0
	sad4_sampling_rates     [0x0]
	sad5_coding_type        [0x0] undefined
	sad5_channels           0
	sad5_sampling_rates     [0x0]
	sad6_coding_type        [0x0] undefined
	sad6_channels           0
	sad6_sampling_rates     [0x0]
	sad7_coding_type        [0x0] undefined
	sad7_channels           0
	sad7_sampling_rates     [0x0]

	monitor name            �����p
	connection_type         Display Port
	eld_version             [0x0] reserved
	edid_version            [0x7] reserved
	manufacture_id          0x59c7
	product_id              0x3c72
	port_id                 0x323d7444a5fcbdba
	support_hdcp            0
	support_ai              1
	audio_sync_delay        268
	speakers                [0x33] FL/FR LFE RC FLC/FRC
	sad_count               14
	sad0_coding_type        [0x9] DSD (1-bit audio)
	sad0_channels           5
	sad0_sampling_rates     [0xe40] 48000 176400 192000 384000
	sad1_coding_type        [0x6] AAC-LC
	sad1_channels           2
	sad1_sampling_rates     [0x18a0] 44100 88200 384000
	sad1_max_bitrate        1024000
	sad2_coding_type        [0xc] MLP (Dolby TrueHD)
	sad2_channels           8
	sad2_sampling_rates     [0x1ec0] 48000 88200 176400 192000 384000
	sad3_coding_type        [0x8] ATRAC
	sad3_channels           3
	sad3_sampling_rates     [0x1220] 44100 176400
	sad3_max_bitrate        944000
	sad4_coding_type        [0xd] DST
	sad4_channels           3
	sad4_sampling_rates     [0xac0] 48000 88200 176400 384000
	sad5_coding_type        [0x2] AC-3
	sad5_channels           3
	sad5_sampling_rates     [0x1a60] 44100 48000 176400 384000
	sad5_max_bitrate        592000
	sad6_coding_type        [0xc] MLP (Dolby TrueHD)
	sad6_channels           3
	sad6_sampling_rates     [0xc40] 48000 192000 384000
	sad7_coding_type        [0x9] DSD (1-bit audio)
	sad7_channels           6
	sad7_sampling_rates     [0xc20] 44100 192000 384000
	sad8_coding_type        [0x5] MPEG2
	sad8_channels           1
	sad8_sampling_rates     [0x1ac0] 48000 88200 176400 384000
	sad8_max_bitrate        544000
	sad9_coding_type        [0xc] MLP (Dolby TrueHD)
	sad9_channels           7
	sad9_sampling_rates     [0x460] 44100 48000 192000
	sad10_coding_type       [0x1] LPCM
	sad10_channels          4
	sad10_sampling_rates    [0x1260] 44100 48000 176400
	sad10_sample_bits       0x40000
	sad11_coding_type       [0x6] AAC-LC
	sad11_channels          7
	sad11_sampling_rates    [0x1240] 48000 176400
	sad11_max_bitrate       408000
	sad12_coding_type       [0x0] undefined
	sad12_channels          0
	sad12_sampling_rates    [0x0]
	sad13_coding_type       [0x0] undefined
	sad13_channels          0
	sad13_sampling_rates    [0x0]

Thank you,
Fengguang
---

stress testing patch for ELD routines

 sound/pci/hda/hda_eld.c         |   30 ++++++++++++++++++++----------
 sound/pci/hda/patch_intelhdmi.c |    2 ++
 2 files changed, 22 insertions(+), 10 deletions(-)

--- sound-2.6.orig/sound/pci/hda/hda_eld.c
+++ sound-2.6/sound/pci/hda/hda_eld.c
@@ -27,6 +27,15 @@
 #include "hda_codec.h"
 #include "hda_local.h"

+static unsigned long rand;
+
+static inline unsigned char random(void)
+{
+	/* See "Numerical Recipes in C", second edition, p. 284 */
+	rand = rand * 1664525L + 1013904223L;
+	return (unsigned char) (rand >> 24);
+}
+
 enum eld_versions {
 	ELD_VER_CEA_861D	= 2,
 	ELD_VER_PARTIAL		= 31,
@@ -167,6 +176,8 @@ static unsigned char hdmi_get_eld_byte(s
 	val = snd_hda_codec_read(codec, nid, 0,
 					AC_VERB_GET_HDMI_ELDD, byte_index);

+	val = AC_ELDD_ELD_VALID | random();
+
 #ifdef BE_PARANOID
 	printk(KERN_INFO "ELD data byte %d: 0x%x\n", byte_index, val);
 #endif
@@ -277,7 +288,6 @@ static int hdmi_update_sink_eld(struct s
 	if (e->eld_ver != ELD_VER_CEA_861D &&
 	    e->eld_ver != ELD_VER_PARTIAL) {
 		snd_printd(KERN_INFO "Unknown ELD version %d\n", e->eld_ver);
-		goto out_fail;
 	}

 	e->eld_size = size;
@@ -359,9 +369,6 @@ int snd_hdmi_get_eld(struct sink_eld *el
 	int size;
 	unsigned char *buf;

-	if (!hdmi_eld_valid(codec, nid))
-		return -ENOENT;
-
 	size = snd_hdmi_get_eld_size(codec, nid);
 	if (size == 0) {
 		/* wfg: workaround for ASUS P5E-VM HDMI board */
@@ -516,6 +523,9 @@ int snd_hda_eld_proc_new(struct hda_code
 	struct snd_info_entry *entry;
 	int err;

+	/* Initialize random number generator */
+	rand = jiffies;
+
 	snprintf(name, sizeof(name), "eld#%d", codec->addr);
 	err = snd_card_proc_new(codec->bus->card, name, &entry);
 	if (err < 0)
--- sound-2.6.orig/sound/pci/hda/patch_intelhdmi.c
+++ sound-2.6/sound/pci/hda/patch_intelhdmi.c
@@ -635,6 +635,8 @@ static int patch_intel_hdmi(struct hda_c

 	init_channel_allocations();

+	hdmi_parse_eld(codec);
+
 	return 0;
 }


[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

             reply	other threads:[~2008-11-18  4:26 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-18  3:47 Wu Fengguang [this message]
2008-11-18  3:47 ` [PATCH 1/3] introduce snd_print_pcm_rates() Wu Fengguang
2008-11-18  3:47 ` [PATCH 2/3] create hda_eld.c for ELD routines and proc interface Wu Fengguang
2008-11-18  3:47 ` [PATCH 3/3] ELD proc interface for HDMI sinks Wu Fengguang
2008-11-18  7:18 ` [PATCH 0/3] HDMI ELD routines and proc interface Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081118034750.445933681@linux.intel.com \
    --to=wfg@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.