From: Liam Girdwood Date: Mon, 14 Mar 2016 08:07:38 +0000 (+0000) Subject: topology: Add support for widget byte controls X-Git-Tag: v1.1.1~1 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=8372062357ae1ab5e43f7a9b52a89344f01b0c48;p=alsa-lib.git topology: Add support for widget byte controls Add support for DAPM widgets to include bytes controls. Signed-off-by: Liam Girdwood Signed-off-by: Takashi Iwai --- diff --git a/src/topology/dapm.c b/src/topology/dapm.c index 14969eed..278d6056 100644 --- a/src/topology/dapm.c +++ b/src/topology/dapm.c @@ -103,6 +103,28 @@ static int tplg_parse_dapm_enums(snd_config_t *cfg, struct tplg_elem *elem) return 0; } +static int tplg_parse_dapm_bytes(snd_config_t *cfg, struct tplg_elem *elem) +{ + snd_config_iterator_t i, next; + snd_config_t *n; + const char *value = NULL; + + tplg_dbg(" DAPM Bytes Controls: %s\n", elem->id); + + snd_config_for_each(i, next, cfg) { + n = snd_config_iterator_entry(i); + + /* get value */ + if (snd_config_get_string(n, &value) < 0) + continue; + + tplg_ref_add(elem, SND_TPLG_TYPE_BYTES, value); + tplg_dbg("\t\t %s\n", value); + } + + return 0; +} + /* move referenced controls to the widget */ static int copy_dapm_control(struct tplg_elem *elem, struct tplg_elem *ref) { @@ -567,6 +589,14 @@ int tplg_parse_dapm_widget(snd_tplg_t *tplg, continue; } + if (strcmp(id, "bytes") == 0) { + err = tplg_parse_dapm_bytes(n, elem); + if (err < 0) + return err; + + continue; + } + if (strcmp(id, "data") == 0) { if (snd_config_get_string(n, &val) < 0) return -EINVAL;