summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Maziarz <piotrx.maziarz@linux.intel.com>2020-08-31 11:08:57 +0200
committerJaroslav Kysela <perex@perex.cz>2020-08-31 13:03:01 +0200
commitf1435207a2fbe35bf616c6d58eecd8801dbe5642 (patch)
tree78163038fa5784c6b34871086370c8431eee56ae
parent11d4a5aa721dce2c3f7430996caf244a73dd5099 (diff)
downloadalsa-lib-f1435207a2fbe35bf616c6d58eecd8801dbe5642.tar.gz
topology: decode: Add enum control texts as separate element
Texts are separate sections that should referenced by enum control. Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com> Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/topology/ctl.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/topology/ctl.c b/src/topology/ctl.c
index 02e482e7..1f398461 100644
--- a/src/topology/ctl.c
+++ b/src/topology/ctl.c
@@ -1088,11 +1088,19 @@ int tplg_add_enum(snd_tplg_t *tplg, struct snd_tplg_enum_template *enum_ctl,
}
if (enum_ctl->texts != NULL) {
+ struct tplg_elem *texts = tplg_elem_new_common(tplg, NULL,
+ enum_ctl->hdr.name, SND_TPLG_TYPE_TEXT);
+
+ texts->texts->num_items = num_items;
for (i = 0; i < num_items; i++) {
- if (enum_ctl->texts[i] != NULL)
- snd_strlcpy(ec->texts[i], enum_ctl->texts[i],
- SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
+ if (!enum_ctl->texts[i])
+ continue;
+ snd_strlcpy(ec->texts[i], enum_ctl->texts[i],
+ SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
+ snd_strlcpy(texts->texts->items[i], enum_ctl->texts[i],
+ SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
}
+ tplg_ref_add(elem, SND_TPLG_TYPE_TEXT, enum_ctl->hdr.name);
}
if (enum_ctl->values != NULL) {