Skip to content

ASoC: SOF: Intel: Fix pipeline state transitions for aggregate DAIs#5765

Open
ujfalusi wants to merge 1 commit into
thesofproject:topic/sof-devfrom
ujfalusi:peter/sof/pr/aggregated-sdw-trigger
Open

ASoC: SOF: Intel: Fix pipeline state transitions for aggregate DAIs#5765
ujfalusi wants to merge 1 commit into
thesofproject:topic/sof-devfrom
ujfalusi:peter/sof/pr/aggregated-sdw-trigger

Conversation

@ujfalusi

@ujfalusi ujfalusi commented May 7, 2026

Copy link
Copy Markdown
Collaborator

For aggregate DAIs (num_cpus > 1) the pre_trigger/post_trigger callbacks
send pipeline state IPCs per-DAI without considering that multiple DAIs
may share the same pipeline. This causes premature state transitions
where the pipeline goes RUNNING before all link DMAs have started, or
individual DAIs send redundant IPCs for shared pipelines.

Fix this by checking the HDA stream running state in post_trigger:

  • START/PAUSE_RELEASE: defer RUNNING IPC until all DAIs sharing the
    same pipeline have their link DMA streams running
  • STOP/SUSPEND/PAUSE_PUSH: use pipeline state dedup so the PAUSED IPC
    is sent once regardless of how many DAIs share the pipeline

The running-state check naturally handles all aggregate topologies:
shared pipelines, independent pipelines, and mixed cases without
requiring per-pipeline counters.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants