topology: Parse name and stream name of physical DAI links

Parse name and stream name of physical links defined by text conf file
or C API. Add name and stream name to C API template of physical DAI
links.

These two fields will help topology kernel driver to find an existing
physical link to configure, since the id of links are often the default
value ZERO and useless for match.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Mengdong Lin 2016-11-06 13:14:34 +08:00 committed by Takashi Iwai
parent c33b3a0ea2
commit a182ab29c6
2 changed files with 24 additions and 1 deletions

View file

@ -622,6 +622,7 @@ int tplg_parse_link(snd_tplg_t *tplg,
link = elem->link;
link->size = elem->size;
elem_copy_text(link->name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
tplg_dbg(" Link: %s\n", elem->id);
@ -655,6 +656,16 @@ int tplg_parse_link(snd_tplg_t *tplg,
continue;
}
if (strcmp(id, "stream_name") == 0) {
if (snd_config_get_string(n, &val) < 0)
return -EINVAL;
elem_copy_text(link->stream_name, val,
SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
tplg_dbg("\t%s: %s\n", id, val);
continue;
}
if (strcmp(id, "hw_configs") == 0) {
err = parse_hw_config_refs(tplg, n, elem);
if (err < 0)
@ -1030,7 +1041,15 @@ int tplg_add_link_object(snd_tplg_t *tplg, snd_tplg_obj_template_t *t)
link = elem->link;
link->size = elem->size;
/* ID and names */
link->id = link_tpl->id;
if (link->name)
elem_copy_text(link->name, link_tpl->name,
SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
if (link->stream_name)
elem_copy_text(link->stream_name, link_tpl->stream_name,
SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
/* stream configs */
if (link_tpl->num_streams > SND_SOC_TPLG_STREAM_CONFIG_MAX)
return -EINVAL;