pipeline: trigger pipelines with the same sched comp

Changes pipeline behavior to trigger pipelines with
the same scheduling component. This change allows
for properly triggering topologies with mixer.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This commit is contained in:
Tomasz Lauda 2019-04-05 10:55:43 +02:00 committed by Liam Girdwood
parent db1e17d880
commit 6e95ecefc8
1 changed files with 8 additions and 1 deletions

View File

@ -462,12 +462,19 @@ static void pipeline_comp_trigger_sched_comp(struct pipeline *p,
static int pipeline_comp_trigger(struct comp_dev *current, void *data, int dir) static int pipeline_comp_trigger(struct comp_dev *current, void *data, int dir)
{ {
struct pipeline_data *ppl_data = data; struct pipeline_data *ppl_data = data;
int is_single_ppl = comp_is_single_pipeline(current, ppl_data->start);
int is_same_sched =
pipeline_is_same_sched_comp(current->pipeline,
ppl_data->start->pipeline);
int err = 0; int err = 0;
tracev_pipe("pipeline_comp_trigger(), current->comp.id = %u, dir = %u", tracev_pipe("pipeline_comp_trigger(), current->comp.id = %u, dir = %u",
current->comp.id, dir); current->comp.id, dir);
if (!comp_is_single_pipeline(current, ppl_data->start)) { /* trigger should propagate to the connected pipelines,
* which need to be scheduled together
*/
if (!is_single_ppl && !is_same_sched) {
tracev_pipe_with_ids(current->pipeline, "pipeline_comp_trigger" tracev_pipe_with_ids(current->pipeline, "pipeline_comp_trigger"
"(), current is from another pipeline"); "(), current is from another pipeline");
return 0; return 0;