[alsa-devel] [PATCH v2] topology: Fix issue in parsing routes when generating topology binary

fuweix.tang at intel.com fuweix.tang at intel.com
Fri May 5 09:57:20 CEST 2017


From: Fuwei Tang <fuweix.tang at intel.com>

We missed parsing the index value, which is used as a use case indicator, when
processing the route objects.

This patch fixes the bug.

Signed-off-by: Fuwei Tang <fuweix.tang at intel.com>
Tested-by: Subhransu S. Prusty <subhransu.s.prusty at intel.com>
---
 src/topology/dapm.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/topology/dapm.c b/src/topology/dapm.c
index 13aa1c4..6af750b 100644
--- a/src/topology/dapm.c
+++ b/src/topology/dapm.c
@@ -381,7 +381,7 @@ done:
 }
 
 
-static int tplg_parse_routes(snd_tplg_t *tplg, snd_config_t *cfg)
+static int tplg_parse_routes(snd_tplg_t *tplg, snd_config_t *cfg, int index)
 {
 	snd_config_iterator_t i, next;
 	snd_config_t *n;
@@ -399,7 +399,7 @@ static int tplg_parse_routes(snd_tplg_t *tplg, snd_config_t *cfg)
 		elem = tplg_elem_new_route(tplg);
 		if (!elem)
 			return -ENOMEM;
-
+		elem->index = index;
 		line = elem->route;
 
 		err = tplg_parse_line(val, line);
@@ -419,7 +419,8 @@ int tplg_parse_dapm_graph(snd_tplg_t *tplg, snd_config_t *cfg,
 	snd_config_iterator_t i, next;
 	snd_config_t *n;
 	int err;
-	const char *graph_id;
+	const char *graph_id, *val = NULL;
+	int index;
 
 	if (snd_config_get_type(cfg) != SND_CONFIG_TYPE_COMPOUND) {
 		SNDERR("error: compound is expected for dapm graph definition\n");
@@ -436,8 +437,14 @@ int tplg_parse_dapm_graph(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
+		if (strcmp(id, "index") == 0) {
+			if (snd_config_get_string(n, &val) < 0)
+				return -EINVAL;
+			index = atoi(val);
+		}
+
 		if (strcmp(id, "lines") == 0) {
-			err = tplg_parse_routes(tplg, n);
+			err = tplg_parse_routes(tplg, n, index);
 			if (err < 0) {
 				SNDERR("error: failed to parse dapm graph %s\n",
 					graph_id);
-- 
2.7.4



More information about the Alsa-devel mailing list