Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d4006cd authored by Senthilnathan Veppur's avatar Senthilnathan Veppur Committed by Mark Brown
Browse files

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: default avatarSenthilnathan Veppur <senthilnathanx.veppur@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8d983be8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -870,6 +870,7 @@ int skl_init_module(struct skl_sst *ctx,
	msg.ppl_instance_id = mconfig->pipe->ppl_id;
	msg.param_data_size = module_config_size;
	msg.core_id = mconfig->core_id;
	msg.domain = mconfig->domain;

	ret = skl_ipc_init_instance(&ctx->ipc, &msg, param_data);
	if (ret < 0) {
+6 −0
Original line number Diff line number Diff line
@@ -114,6 +114,11 @@
#define IPC_CORE_ID(x)			(((x) & IPC_CORE_ID_MASK) \
					<< IPC_CORE_ID_SHIFT)

#define IPC_DOMAIN_SHIFT                28
#define IPC_DOMAIN_MASK                 0x1
#define IPC_DOMAIN(x)                   (((x) & IPC_DOMAIN_MASK) \
					<< IPC_DOMAIN_SHIFT)

/* Bind/Unbind message extension register */
#define IPC_DST_MOD_ID_SHIFT		0
#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,
	header.extension = IPC_CORE_ID(msg->core_id);
	header.extension |= IPC_PPL_INSTANCE_ID(msg->ppl_instance_id);
	header.extension |= IPC_PARAM_BLOCK_SIZE(param_block_size);
	header.extension |= IPC_DOMAIN(msg->domain);

	dev_dbg(ipc->dev, "In %s primary =%x ext=%x\n", __func__,
			 header.primary, header.extension);
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ struct skl_ipc_init_instance_msg {
	u16 param_data_size;
	u8 ppl_instance_id;
	u8 core_id;
	u8 domain;
};

struct skl_ipc_bind_unbind_msg {
+1 −0
Original line number Diff line number Diff line
@@ -1656,6 +1656,7 @@ static int skl_tplg_widget_load(struct snd_soc_component *cmpnt,
	mconfig->max_in_queue = dfw_config->max_in_queue;
	mconfig->max_out_queue = dfw_config->max_out_queue;
	mconfig->is_loadable = dfw_config->is_loadable;
	mconfig->domain = dfw_config->proc_domain;
	skl_tplg_fill_fmt(mconfig->in_fmt, dfw_config->in_fmt,
						MODULE_MAX_IN_PINS);
	skl_tplg_fill_fmt(mconfig->out_fmt, dfw_config->out_fmt,
+2 −1
Original line number Diff line number Diff line
@@ -210,7 +210,8 @@ struct skl_dfw_module {
	u32 is_dynamic_in_pin:1;
	u32 is_dynamic_out_pin:1;
	u32 is_loadable:1;
	u32 rsvd3:11;
	u32 proc_domain:1;
	u32 rsvd3:10;

	struct skl_dfw_pipe pipe;
	struct skl_dfw_module_fmt in_fmt[MAX_IN_QUEUE];