diff options
author | Senthilnathan Veppur <senthilnathanx.veppur@intel.com> | 2016-07-26 08:36:50 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-08-08 06:54:59 -0400 |
commit | 3d4006cd50289d7626639488c3a6449574cceee7 (patch) | |
tree | c4d4e4c6381922d0749981090c2efa9e9edd6132 | |
parent | 8d983be820fa713785ce54caab08e74b36d9ee39 (diff) |
ASoC: Intel: Skylake: Add module processing domain support
A module can be scheduled in deferent processing domains in DSP. Topology
specifies the module domain.
Signed-off-by: Senthilnathan Veppur <senthilnathanx.veppur@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/intel/skylake/skl-messages.c | 1 | ||||
-rw-r--r-- | sound/soc/intel/skylake/skl-sst-ipc.c | 6 | ||||
-rw-r--r-- | sound/soc/intel/skylake/skl-sst-ipc.h | 1 | ||||
-rw-r--r-- | sound/soc/intel/skylake/skl-topology.c | 1 | ||||
-rw-r--r-- | sound/soc/intel/skylake/skl-tplg-interface.h | 3 |
5 files changed, 11 insertions, 1 deletions
diff --git a/sound/soc/intel/skylake/skl-messages.c b/sound/soc/intel/skylake/skl-messages.c index 2199a91d90d6..8a750b67273f 100644 --- a/sound/soc/intel/skylake/skl-messages.c +++ b/sound/soc/intel/skylake/skl-messages.c | |||
@@ -870,6 +870,7 @@ int skl_init_module(struct skl_sst *ctx, | |||
870 | msg.ppl_instance_id = mconfig->pipe->ppl_id; | 870 | msg.ppl_instance_id = mconfig->pipe->ppl_id; |
871 | msg.param_data_size = module_config_size; | 871 | msg.param_data_size = module_config_size; |
872 | msg.core_id = mconfig->core_id; | 872 | msg.core_id = mconfig->core_id; |
873 | msg.domain = mconfig->domain; | ||
873 | 874 | ||
874 | ret = skl_ipc_init_instance(&ctx->ipc, &msg, param_data); | 875 | ret = skl_ipc_init_instance(&ctx->ipc, &msg, param_data); |
875 | if (ret < 0) { | 876 | if (ret < 0) { |
diff --git a/sound/soc/intel/skylake/skl-sst-ipc.c b/sound/soc/intel/skylake/skl-sst-ipc.c index 1544564c0ad1..74dbecc3afaa 100644 --- a/sound/soc/intel/skylake/skl-sst-ipc.c +++ b/sound/soc/intel/skylake/skl-sst-ipc.c | |||
@@ -114,6 +114,11 @@ | |||
114 | #define IPC_CORE_ID(x) (((x) & IPC_CORE_ID_MASK) \ | 114 | #define IPC_CORE_ID(x) (((x) & IPC_CORE_ID_MASK) \ |
115 | << IPC_CORE_ID_SHIFT) | 115 | << IPC_CORE_ID_SHIFT) |
116 | 116 | ||
117 | #define IPC_DOMAIN_SHIFT 28 | ||
118 | #define IPC_DOMAIN_MASK 0x1 | ||
119 | #define IPC_DOMAIN(x) (((x) & IPC_DOMAIN_MASK) \ | ||
120 | << IPC_DOMAIN_SHIFT) | ||
121 | |||
117 | /* Bind/Unbind message extension register */ | 122 | /* Bind/Unbind message extension register */ |
118 | #define IPC_DST_MOD_ID_SHIFT 0 | 123 | #define IPC_DST_MOD_ID_SHIFT 0 |
119 | #define IPC_DST_MOD_ID(x) (((x) & IPC_MOD_ID_MASK) \ | 124 | #define IPC_DST_MOD_ID(x) (((x) & IPC_MOD_ID_MASK) \ |
@@ -705,6 +710,7 @@ int skl_ipc_init_instance(struct sst_generic_ipc *ipc, | |||
705 | header.extension = IPC_CORE_ID(msg->core_id); | 710 | header.extension = IPC_CORE_ID(msg->core_id); |
706 | header.extension |= IPC_PPL_INSTANCE_ID(msg->ppl_instance_id); | 711 | header.extension |= IPC_PPL_INSTANCE_ID(msg->ppl_instance_id); |
707 | header.extension |= IPC_PARAM_BLOCK_SIZE(param_block_size); | 712 | header.extension |= IPC_PARAM_BLOCK_SIZE(param_block_size); |
713 | header.extension |= IPC_DOMAIN(msg->domain); | ||
708 | 714 | ||
709 | dev_dbg(ipc->dev, "In %s primary =%x ext=%x\n", __func__, | 715 | dev_dbg(ipc->dev, "In %s primary =%x ext=%x\n", __func__, |
710 | header.primary, header.extension); | 716 | header.primary, header.extension); |
diff --git a/sound/soc/intel/skylake/skl-sst-ipc.h b/sound/soc/intel/skylake/skl-sst-ipc.h index aad527d5fc52..0334ed4af031 100644 --- a/sound/soc/intel/skylake/skl-sst-ipc.h +++ b/sound/soc/intel/skylake/skl-sst-ipc.h | |||
@@ -91,6 +91,7 @@ struct skl_ipc_init_instance_msg { | |||
91 | u16 param_data_size; | 91 | u16 param_data_size; |
92 | u8 ppl_instance_id; | 92 | u8 ppl_instance_id; |
93 | u8 core_id; | 93 | u8 core_id; |
94 | u8 domain; | ||
94 | }; | 95 | }; |
95 | 96 | ||
96 | struct skl_ipc_bind_unbind_msg { | 97 | struct skl_ipc_bind_unbind_msg { |
diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c index 1300e4b9e7d1..c13fbefe6abf 100644 --- a/sound/soc/intel/skylake/skl-topology.c +++ b/sound/soc/intel/skylake/skl-topology.c | |||
@@ -1656,6 +1656,7 @@ static int skl_tplg_widget_load(struct snd_soc_component *cmpnt, | |||
1656 | mconfig->max_in_queue = dfw_config->max_in_queue; | 1656 | mconfig->max_in_queue = dfw_config->max_in_queue; |
1657 | mconfig->max_out_queue = dfw_config->max_out_queue; | 1657 | mconfig->max_out_queue = dfw_config->max_out_queue; |
1658 | mconfig->is_loadable = dfw_config->is_loadable; | 1658 | mconfig->is_loadable = dfw_config->is_loadable; |
1659 | mconfig->domain = dfw_config->proc_domain; | ||
1659 | skl_tplg_fill_fmt(mconfig->in_fmt, dfw_config->in_fmt, | 1660 | skl_tplg_fill_fmt(mconfig->in_fmt, dfw_config->in_fmt, |
1660 | MODULE_MAX_IN_PINS); | 1661 | MODULE_MAX_IN_PINS); |
1661 | skl_tplg_fill_fmt(mconfig->out_fmt, dfw_config->out_fmt, | 1662 | skl_tplg_fill_fmt(mconfig->out_fmt, dfw_config->out_fmt, |
diff --git a/sound/soc/intel/skylake/skl-tplg-interface.h b/sound/soc/intel/skylake/skl-tplg-interface.h index 1b531c165a91..bd8b4ae43557 100644 --- a/sound/soc/intel/skylake/skl-tplg-interface.h +++ b/sound/soc/intel/skylake/skl-tplg-interface.h | |||
@@ -210,7 +210,8 @@ struct skl_dfw_module { | |||
210 | u32 is_dynamic_in_pin:1; | 210 | u32 is_dynamic_in_pin:1; |
211 | u32 is_dynamic_out_pin:1; | 211 | u32 is_dynamic_out_pin:1; |
212 | u32 is_loadable:1; | 212 | u32 is_loadable:1; |
213 | u32 rsvd3:11; | 213 | u32 proc_domain:1; |
214 | u32 rsvd3:10; | ||
214 | 215 | ||
215 | struct skl_dfw_pipe pipe; | 216 | struct skl_dfw_pipe pipe; |
216 | struct skl_dfw_module_fmt in_fmt[MAX_IN_QUEUE]; | 217 | struct skl_dfw_module_fmt in_fmt[MAX_IN_QUEUE]; |