summaryrefslogtreecommitdiff
path: root/sound/soc/intel/avs/topology.h
diff options
context:
space:
mode:
authorCezary Rojewski <cezary.rojewski@intel.com>2022-03-31 16:52:38 +0300
committerMark Brown <broonie@kernel.org>2022-04-19 14:03:55 +0300
commiteee475bb1ca71e963a51c20cc0f3e7c7b1cd2ba0 (patch)
treef5c004934d41074e184ed01c7eabe1e27ca70802 /sound/soc/intel/avs/topology.h
parent276b83c807a2bc2a8d9874a92b7fb7811c2df8b2 (diff)
downloadlinux-eee475bb1ca71e963a51c20cc0f3e7c7b1cd2ba0.tar.xz
ASoC: Intel: avs: Parse path and path templates tuples
Path template is similar to path description found in skylake-driver and it describes how given path shall look like in runtime - number of modules and pipelines that shape it and how they are laid out. It is tied to DAPM widget's (representing either a FE or a BE) private data. Depending on the number of audio formats supported, each path template may carry one or more descriptions of given path. During runtime, when audio format is known, description matching said format is selected and used when instantiating path on ADSP firmware side through IPCs. Add parsing helpers to support loading such information from the topology file. Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20220331135246.993089-7-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/intel/avs/topology.h')
-rw-r--r--sound/soc/intel/avs/topology.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/sound/soc/intel/avs/topology.h b/sound/soc/intel/avs/topology.h
index 0a19302cef1a..3067d63cfcf7 100644
--- a/sound/soc/intel/avs/topology.h
+++ b/sound/soc/intel/avs/topology.h
@@ -33,6 +33,8 @@ struct avs_tplg {
u32 num_pplcfgs;
struct avs_tplg_binding *bindings;
u32 num_bindings;
+
+ struct list_head path_tmpl_list;
};
struct avs_tplg_library {
@@ -128,8 +130,33 @@ struct avs_tplg_binding {
u8 is_sink;
};
+struct avs_tplg_path_template_id {
+ u32 id;
+ char tplg_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+};
+
+struct avs_tplg_path_template {
+ u32 id;
+
+ struct list_head path_list;
+
+ struct avs_tplg *owner;
+ /* Driver path templates management. */
+ struct list_head node;
+};
+
struct avs_tplg_path {
u32 id;
+
+ /* Path format requirements. */
+ struct avs_audio_format *fe_fmt;
+ struct avs_audio_format *be_fmt;
+
+ struct list_head ppl_list;
+
+ struct avs_tplg_path_template *owner;
+ /* Path template path-variants management. */
+ struct list_head node;
};
struct avs_tplg_pipeline {