diff options
author | Jeeja KP <jeeja.kp@intel.com> | 2017-03-24 23:10:34 +0530 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-04-12 16:57:52 +0100 |
commit | b8c722ddd548186db3f62e64f727af4db1cf9517 (patch) | |
tree | f3ea8cdd1de91f3470225ad44e2f800e70e13224 /sound/soc/intel/skylake/skl-topology.h | |
parent | 5f75b19ef99054736aa80b70dbdf2f7a86a22007 (diff) | |
download | linux-b8c722ddd548186db3f62e64f727af4db1cf9517.tar.bz2 |
ASoC: Intel: Skylake: Add support for deferred DSP module bind
Module at the end of DSP pipeline that needs to be connected to a module
in another pipeline are represented as a PGA(leaf node) and in PGA event
handler these modules are bound/unbounded. Modules other than PGA leaf
can be connected directly or via switch to a module in another pipeline.
Example: reference path.
To support the deferred DSP module bind, following changes are done:
o When the path is enabled, the destination module that needs to be
bound may not be initialized. If the module is not initialized, add
these modules in a deferred bind list.
o When the destination module is initialized, check for these modules
in deferred bind list. If found, bind them.
o When the destination module is deleted, Unbind the modules.
o When the source module is deleted, remove the entry from the deferred
bind list.
Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/intel/skylake/skl-topology.h')
-rw-r--r-- | sound/soc/intel/skylake/skl-topology.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/soc/intel/skylake/skl-topology.h b/sound/soc/intel/skylake/skl-topology.h index 8536d03a7778..cc64d6bdb4f6 100644 --- a/sound/soc/intel/skylake/skl-topology.h +++ b/sound/soc/intel/skylake/skl-topology.h @@ -336,6 +336,12 @@ struct skl_pipeline { struct list_head node; }; +struct skl_module_deferred_bind { + struct skl_module_cfg *src; + struct skl_module_cfg *dst; + struct list_head node; +}; + static inline struct skl *get_skl_ctx(struct device *dev) { struct hdac_ext_bus *ebus = dev_get_drvdata(dev); |