]> git.alsa-project.org Git - alsa-lib.git/commitdiff
topology: Parse ignore_suspend flag
authorCezary Rojewski <cezary.rojewski@intel.com>
Wed, 27 Mar 2019 14:45:04 +0000 (15:45 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sun, 29 Jan 2023 17:55:29 +0000 (18:55 +0100)
XXX_VOICE_WAKEUP also known as 'ignore_suspend' is already processed by
kernel in soc-topology, but there is no way of setting it via topology
file like it's the case for other flags. Fix this by adding it to pcm,
dai and link parsing mechanism.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@intel.com>
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/topology/pcm.c

index 76085d05a36d3328abb67c9ca0d3f14d5ee9b4af..b1e5dc592c3b18ed4757817aa36a8430a4051c52 100644 (file)
@@ -929,6 +929,15 @@ int tplg_parse_pcm(snd_tplg_t *tplg, snd_config_t *cfg,
                        continue;
                }
 
+               if (strcmp(id, "ignore_suspend") == 0) {
+                       err = parse_flag(n,
+                               SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP,
+                               &pcm->flag_mask, &pcm->flags);
+                       if (err < 0)
+                               return err;
+                       continue;
+               }
+
                /* private data */
                if (strcmp(id, "data") == 0) {
                        err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
@@ -1066,6 +1075,15 @@ int tplg_parse_dai(snd_tplg_t *tplg, snd_config_t *cfg,
                        continue;
                }
 
+               if (strcmp(id, "ignore_suspend") == 0) {
+                       err = parse_flag(n,
+                               SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP,
+                               &dai->flag_mask, &dai->flags);
+                       if (err < 0)
+                               return err;
+                       continue;
+               }
+
                /* private data */
                if (strcmp(id, "data") == 0) {
                        err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
@@ -1220,6 +1238,15 @@ int tplg_parse_link(snd_tplg_t *tplg, snd_config_t *cfg,
                        continue;
                }
 
+               if (strcmp(id, "ignore_suspend") == 0) {
+                       err = parse_flag(n,
+                               SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP,
+                               &link->flag_mask, &link->flags);
+                       if (err < 0)
+                               return err;
+                       continue;
+               }
+
                /* private data */
                if (strcmp(id, "data") == 0) {
                        err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);