alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] hda-emu: Add playback/capture test to test suite
@ 2012-08-21  8:53 David Henningsson
  2012-08-21  8:53 ` [PATCH 1/5] hda-emu: Store pointers to pcm streams instead of their content David Henningsson
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: David Henningsson @ 2012-08-21  8:53 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

When I added those tests, I did not discover anything that needed
to be fixed in the driver code, but there were some additional things in
hda-emu to fix up.

David Henningsson (5):
  hda-emu: Store pointers to pcm streams instead of their content
  hda-emu: Add support for get/set converter channel count
  hda-emu: Add CX20585 to modem whitelist
  hda-emu: Add playback/capture test to test suite
  hda-emu: improve test suite summary script

 hda-emu.c           |   24 ++++++++++++------------
 hda-int.c           |   15 +++++++++++++++
 hda-parse.c         |    1 +
 include/hda-types.h |    1 +
 tester/runall.sh    |    3 ---
 tester/runner.py    |   25 ++++++++++++++++++++++---
 tester/summary.py   |    9 +++++++++
 7 files changed, 60 insertions(+), 18 deletions(-)
 delete mode 100755 tester/runall.sh

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/5] hda-emu: Store pointers to pcm streams instead of their content
  2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
@ 2012-08-21  8:53 ` David Henningsson
  2012-08-21  8:54 ` [PATCH 2/5] hda-emu: Add support for get/set converter channel count David Henningsson
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: David Henningsson @ 2012-08-21  8:53 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

The HDMI playback engine relies on the same pointer value being sent
in hdmi_pcm_open, as being given in the attach_pcm callback.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 hda-emu.c |   24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/hda-emu.c b/hda-emu.c
index 77d5a7f..b4bd8a9 100644
--- a/hda-emu.c
+++ b/hda-emu.c
@@ -504,7 +504,7 @@ void hda_log_set_user_pin_configs(unsigned int nid, unsigned int cfg)
 #define MAX_PCM_STREAMS		16
 
 static int num_pcm_streams;
-static struct hda_pcm pcm_streams[MAX_PCM_STREAMS];
+static struct hda_pcm *pcm_streams[MAX_PCM_STREAMS];
 
 #ifndef OLD_HDA_PCM
 /* get a string corresponding to the given HDA_PCM_TYPE_XXX */
@@ -529,7 +529,7 @@ void hda_list_pcms(void)
 	int i;
 
 	for (i = 0; i < num_pcm_streams; i++) {
-		struct hda_pcm *p = &pcm_streams[i];
+		struct hda_pcm *p = pcm_streams[i];
 		if (!p->stream[0].substreams && !p->stream[1].substreams)
 			continue;
 #ifdef OLD_HDA_PCM
@@ -588,26 +588,26 @@ void hda_test_pcm(int id, int op, int subid,
 	unsigned int ctls = 0;
 	int i, err;
 
-	if (id < 0 || id >= num_pcm_streams) {
+	if (id < 0 || id >= num_pcm_streams || !pcm_streams[id]) {
 		hda_log(HDA_LOG_ERR, "Invalid PCM id %d\n", id);
 		return;
 	}
-	if (!pcm_streams[id].stream[0].substreams &&
-	    !pcm_streams[id].stream[1].substreams) {
+	if (!pcm_streams[id]->stream[0].substreams &&
+	    !pcm_streams[id]->stream[1].substreams) {
 		hda_log(HDA_LOG_ERR, "Empty PCM for id %d\n", id);
 		return;
 	}
 
-	if (!pcm_streams[id].stream[dir].substreams) {
+	if (!pcm_streams[id]->stream[dir].substreams) {
 		hda_log(HDA_LOG_INFO, "No substream in PCM %s for %s\n",
-			pcm_streams[id].name,
+			pcm_streams[id]->name,
 			(dir ? "capt" : "play"));
 		return;
 	}
-	if (subid < 0 || subid >= pcm_streams[id].stream[dir].substreams) {
+	if (subid < 0 || subid >= pcm_streams[id]->stream[dir].substreams) {
 		hda_log(HDA_LOG_INFO,
 			"Invalid substream %d for PCM %s for %s\n",
-			subid, pcm_streams[id].name,
+			subid, pcm_streams[id]->name,
 			(dir ? "capt" : "play"));
 		return;
 	}
@@ -624,7 +624,7 @@ void hda_test_pcm(int id, int op, int subid,
 	runtime->format = get_alsa_format(format);
 	runtime->channels = channels;
 
-	hinfo = &pcm_streams[id].stream[dir];
+	hinfo = &pcm_streams[id]->stream[dir];
 
 	runtime->hw.channels_min = hinfo->channels_min;
 	runtime->hw.channels_max = hinfo->channels_max;
@@ -643,7 +643,7 @@ void hda_test_pcm(int id, int op, int subid,
 
 	if (op != PCM_TEST_END) {
 		hda_log(HDA_LOG_INFO, "Open PCM %s for %s\n",
-			pcm_streams[id].name,
+			pcm_streams[id]->name,
 			(dir ? "capt" : "play"));
 		snd_hda_power_up(_codec);
 		err = hinfo->ops.open(hinfo, _codec, substream);
@@ -739,7 +739,7 @@ static int attach_pcm(struct hda_bus *bus, struct hda_codec *codec,
 			hda_log(HDA_LOG_ERR, "Too many streams\n");
 			return 0;
 		}
-		pcm_streams[num_pcm_streams] = *cpcm;
+		pcm_streams[num_pcm_streams] = cpcm;
 #ifdef HAVE_HDA_ATTACH_PCM
 		cpcm->pcm = &dummy_pcm; /* just non-NULL */
 #endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/5] hda-emu: Add support for get/set converter channel count
  2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
  2012-08-21  8:53 ` [PATCH 1/5] hda-emu: Store pointers to pcm streams instead of their content David Henningsson
@ 2012-08-21  8:54 ` David Henningsson
  2012-08-21  8:54 ` [PATCH 3/5] hda-emu: Add CX20585 to modem whitelist David Henningsson
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: David Henningsson @ 2012-08-21  8:54 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

This verb is used by the HDMI playback engine.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 hda-int.c           |   15 +++++++++++++++
 include/hda-types.h |    1 +
 2 files changed, 16 insertions(+)

diff --git a/hda-int.c b/hda-int.c
index f4cbdcb..c25af56 100644
--- a/hda-int.c
+++ b/hda-int.c
@@ -786,6 +786,19 @@ static int get_gpio_sticky_mask(struct xhda_codec *codec,
 	return node->gpio_sticky;
 }
 
+static int set_cvt_channel_count(struct xhda_codec *codec,
+				struct xhda_node *node, unsigned int cmd)
+{
+	node->cvt_channel_count = cmd & 0xff;
+	return 0;
+}
+
+static int get_cvt_channel_count(struct xhda_codec *codec,
+				struct xhda_node *node, unsigned int cmd)
+{
+	return node->cvt_channel_count;
+}
+
 
 /*
  * parameters
@@ -1025,6 +1038,7 @@ static struct xhda_verb_table verb_tbl[] = {
 	{ 0x71d, set_config_def_1, "set_config_def_1" },
 	{ 0x71e, set_config_def_2, "set_config_def_2" },
 	{ 0x71f, set_config_def_3, "set_config_def_3" },
+	{ 0x72d, set_cvt_channel_count, "set_cvt_channel_count" },
 	{ 0x7ff, set_codec_reset, "set_codec_reset" },
 	{ 0xf00, get_parameters, "get_parameters" },
 	{ 0xf01, get_connect_sel, "get_connect_sel" },
@@ -1048,6 +1062,7 @@ static struct xhda_verb_table verb_tbl[] = {
 	{ 0xf1a, get_gpio_sticky_mask, "get_gpio_sticky_mask" },
 	{ 0xf1c, get_config_default, "get_config_default" },
 	{ 0xf20, get_ssid, "get_ssid" },
+	{ 0xf2d, get_cvt_channel_count, "get_cvt_channel_count" },
 	{}
 };
 
diff --git a/include/hda-types.h b/include/hda-types.h
index 2508726..3a06745 100644
--- a/include/hda-types.h
+++ b/include/hda-types.h
@@ -54,6 +54,7 @@ struct xhda_node {
 	unsigned char gpio_data, gpio_dir, gpio_mask;
 	unsigned char gpio_wake, gpio_unsol, gpio_sticky;
 	unsigned int coef_idx;
+	unsigned char cvt_channel_count;
 	struct xhda_coef_table *coef_tbl;
 	struct xhda_node *next;
 };
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/5] hda-emu: Add CX20585 to modem whitelist
  2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
  2012-08-21  8:53 ` [PATCH 1/5] hda-emu: Store pointers to pcm streams instead of their content David Henningsson
  2012-08-21  8:54 ` [PATCH 2/5] hda-emu: Add support for get/set converter channel count David Henningsson
@ 2012-08-21  8:54 ` David Henningsson
  2012-08-21  8:54 ` [PATCH 4/5] hda-emu: Add playback/capture test to test suite David Henningsson
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: David Henningsson @ 2012-08-21  8:54 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

Otherwise parsing of cx20585-dell-vostro-1015-ccert-201010-6649
won't work correctly.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 hda-parse.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/hda-parse.c b/hda-parse.c
index c57ba78..73658c5 100644
--- a/hda-parse.c
+++ b/hda-parse.c
@@ -396,6 +396,7 @@ static int in_modem_whitelist(struct xhda_codec *codec)
 	case 0x14f15045:
 	case 0x14f15047:
 	case 0x14f15051:
+	case 0x14f15069:
 		return 1;
 	}
 	return 0;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/5] hda-emu: Add playback/capture test to test suite
  2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
                   ` (2 preceding siblings ...)
  2012-08-21  8:54 ` [PATCH 3/5] hda-emu: Add CX20585 to modem whitelist David Henningsson
@ 2012-08-21  8:54 ` David Henningsson
  2012-08-21  8:54 ` [PATCH 5/5] hda-emu: improve test suite summary script David Henningsson
  2012-08-21  9:01 ` [PATCH 0/5] hda-emu: Add playback/capture test to test suite Takashi Iwai
  5 siblings, 0 replies; 7+ messages in thread
From: David Henningsson @ 2012-08-21  8:54 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 tester/runner.py |   25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/tester/runner.py b/tester/runner.py
index dc9f6fd..b585ad3 100644
--- a/tester/runner.py
+++ b/tester/runner.py
@@ -18,6 +18,7 @@
 
 import subprocess
 import os
+import re
 
 class ControlInfo():
     def __init__(self, runner, list_info):
@@ -27,7 +28,6 @@ class ControlInfo():
         self.name = carr[2]
 
     def add_info(self, get_info):
-        import re
         minmax_regex = re.compile("MIN/MAX: (\d+)/(\d+),\s+VAL:(( \\[\d+\\])+)")
         val_regex = re.compile(" \\[(\d+)\\]")
 
@@ -189,7 +189,6 @@ class HdaEmuRunner():
         dump = self.run_command("dump")
         pins = []
 
-        import re
         pinregex = re.compile("^Node (0x\w\w+) \\[Pin Complex\\].*")
         jackregex = re.compile("Pin Default.*\\[Jack\\]")
         for s in dump:
@@ -217,7 +216,6 @@ class HdaEmuRunner():
                 self.add_error("Tried to set " + c.name + " to " + str([int(x) for x in values]) + ", but got " + str(c.values) + " instead", "Error")
 
     def run_kcontrol_test(self):
-        import re
         minmax_regex = re.compile("MIN/MAX: (\d+)/(\d+),\s+VAL:(( \\[\d+\\])+)")
         val_regex = re.compile(" \\[(\d+)\\]")
 
@@ -234,11 +232,32 @@ class HdaEmuRunner():
                 self.run_set_kcontrol_test(c, [minval, minval])
                 self.run_set_kcontrol_test(c, [maxval, maxval])
 
+    def run_pcm_test(self):
+        pcm_regex = re.compile("Info: (\d+):.*play=(\d+), capt=(\d+)")
+        pcm_lines = self.run_command("PCM")
+        playback_test = False
+        for pcm_line in pcm_lines:
+            r = pcm_regex.match(pcm_line)
+            if r is None:
+                self.add_error("Invalid pcm response: " + pcm_line, "Error");
+                continue
+            pcm_devid = r.group(1)
+            play_count = r.group(2)
+            rec_count = r.group(3)
+            if play_count > 0:
+                playback_test = True
+                self.run_command("PCM " + pcm_devid + " playback")
+            if rec_count > 0:
+                self.run_command("PCM " + pcm_devid + " capture")
+        if not playback_test:
+            self.add_error("No playback PCM devices", "Error")
+
     def run_standard(self):
         self.start_process()
         self.run_command() # Initial parsing
         self.run_command("pm") # S3 test
         self.run_jack_plug_test()
         self.run_kcontrol_test()
+        self.run_pcm_test()
         self.stop_process()
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/5] hda-emu: improve test suite summary script
  2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
                   ` (3 preceding siblings ...)
  2012-08-21  8:54 ` [PATCH 4/5] hda-emu: Add playback/capture test to test suite David Henningsson
@ 2012-08-21  8:54 ` David Henningsson
  2012-08-21  9:01 ` [PATCH 0/5] hda-emu: Add playback/capture test to test suite Takashi Iwai
  5 siblings, 0 replies; 7+ messages in thread
From: David Henningsson @ 2012-08-21  8:54 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

Now you can call summary with -v or -vv to get the same functionality
as you could with the runall.sh script.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 tester/runall.sh  |    3 ---
 tester/summary.py |    9 +++++++++
 2 files changed, 9 insertions(+), 3 deletions(-)
 delete mode 100755 tester/runall.sh

diff --git a/tester/runall.sh b/tester/runall.sh
deleted file mode 100755
index d078f35..0000000
--- a/tester/runall.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-find ../codecs/canonical/ -type f | sort | xargs -n1 ./hda-emu-tester.py --file
-
diff --git a/tester/summary.py b/tester/summary.py
index cd66df7..6e94c9b 100755
--- a/tester/summary.py
+++ b/tester/summary.py
@@ -23,6 +23,12 @@ def main():
     import os.path
     import runner
 
+    import argparse
+    parser = argparse.ArgumentParser(description='Hda-emu automated test wrapper.')
+    parser.add_argument('--verbose', '-v', action='count')
+    parser_dict = parser.parse_args()
+    verbose = parser_dict.verbose
+
     os.chdir(os.path.dirname(os.path.realpath(__file__)))
     directory = "../codecs/canonical/"
     files = os.listdir(directory)
@@ -35,11 +41,14 @@ def main():
         try:
             r = runner.HdaEmuRunner()
             r.set_alsa_info_file(os.path.join(directory, f))
+            r.set_print_errors(verbose > 1)
             r.run_standard()
             if r.errors > 0 or r.warnings > 0:
                 fails += 1
                 errors += r.errors
                 warnings += r.warnings
+                if verbose > 0:
+                    print '{0} errors, {1} warnings. ({2})'.format(r.errors, r.warnings, f)
             else:
                 successes += 1
         except:
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/5] hda-emu: Add playback/capture test to test suite
  2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
                   ` (4 preceding siblings ...)
  2012-08-21  8:54 ` [PATCH 5/5] hda-emu: improve test suite summary script David Henningsson
@ 2012-08-21  9:01 ` Takashi Iwai
  5 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2012-08-21  9:01 UTC (permalink / raw)
  To: David Henningsson; +Cc: alsa-devel

At Tue, 21 Aug 2012 10:53:58 +0200,
David Henningsson wrote:
> 
> When I added those tests, I did not discover anything that needed
> to be fixed in the driver code, but there were some additional things in
> hda-emu to fix up.

Thanks, applied all patches and pushed out.


Takashi

> 
> David Henningsson (5):
>   hda-emu: Store pointers to pcm streams instead of their content
>   hda-emu: Add support for get/set converter channel count
>   hda-emu: Add CX20585 to modem whitelist
>   hda-emu: Add playback/capture test to test suite
>   hda-emu: improve test suite summary script
> 
>  hda-emu.c           |   24 ++++++++++++------------
>  hda-int.c           |   15 +++++++++++++++
>  hda-parse.c         |    1 +
>  include/hda-types.h |    1 +
>  tester/runall.sh    |    3 ---
>  tester/runner.py    |   25 ++++++++++++++++++++++---
>  tester/summary.py   |    9 +++++++++
>  7 files changed, 60 insertions(+), 18 deletions(-)
>  delete mode 100755 tester/runall.sh
> 
> -- 
> 1.7.9.5
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-08-21  9:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-21  8:53 [PATCH 0/5] hda-emu: Add playback/capture test to test suite David Henningsson
2012-08-21  8:53 ` [PATCH 1/5] hda-emu: Store pointers to pcm streams instead of their content David Henningsson
2012-08-21  8:54 ` [PATCH 2/5] hda-emu: Add support for get/set converter channel count David Henningsson
2012-08-21  8:54 ` [PATCH 3/5] hda-emu: Add CX20585 to modem whitelist David Henningsson
2012-08-21  8:54 ` [PATCH 4/5] hda-emu: Add playback/capture test to test suite David Henningsson
2012-08-21  8:54 ` [PATCH 5/5] hda-emu: improve test suite summary script David Henningsson
2012-08-21  9:01 ` [PATCH 0/5] hda-emu: Add playback/capture test to test suite Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).