Skip to content

ASoC: SOF: Bring WoV support to ipc4 - #5878

Open
jsarha wants to merge 1 commit into
thesofproject:topic/sof-devfrom
jsarha:wov_ipc4
Open

ASoC: SOF: Bring WoV support to ipc4#5878
jsarha wants to merge 1 commit into
thesofproject:topic/sof-devfrom
jsarha:wov_ipc4

Conversation

@jsarha

@jsarha jsarha commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

I have not tested this any further than that the topology properties correctly set spcm->stream[dir].d0i3_compatible flag. That in addition to setting ipc4-pcm .d0i3_supported_in_s0ix = true , should - at least in theory - bring the same support we already have for ipc3 also to ipc4.

The correct place the enable the WoV is to put playback_compatible_d0i3 or capture_compatible_d0i3 tuple with non zero value to host-copier topology widget. For example:

		Object.Pipeline.gain-copier-capture [
			{
				index 	7

				Object.Widget.host-copier.1 {
					stream_name 'SSP0 Capture'
					pcm_id $SSP0_PCM_ID
					num_input_audio_formats 1
					num_output_audio_formats 7
					capture_compatible_d0i3 1
					Object.Base.input_audio_format [
...

I still need to come up with a setup to test this, but that will go to next week.

FYI @lgirdwood @singalsu

IPC4 topologies can mark PCM streams as D0I3-compatible using the
SOF_TKN_STREAM_PLAYBACK_COMPATIBLE_D0I3 (1200) and
SOF_TKN_STREAM_CAPTURE_COMPATIBLE_D0I3 (1201) tokens on host copier
widgets. However, the IPC4 topology path did not parse these tokens,
so the d0i3_compatible flag was never set and the DSP always went to
D3 during S0ix.

Add token definitions and parsing in sof_ipc4_widget_setup_pcm() to
read the D0I3 compatibility flag from the host copier widget tuples
into spcm->stream[dir].d0i3_compatible.

Also set d0i3_supported_in_s0ix = true in ipc4_pcm_ops so the
existing suspend_ignored logic in pcm.c applies to IPC4 streams,
allowing the DSP to remain in D0i3 during S0ix when D0I3-compatible
streams are active (e.g. wake-on-voice keyword detection).

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
lgirdwood pushed a commit to lgirdwood/sof that referenced this pull request Aug 20, 2026
Mark the WOV host-copier stream as D0I3-compatible so the kernel keeps
the capture pipeline active during S0iX system sleep.  When the WOV
trigger fires, the firmware sends SOF_IPC4_NOTIFY_PHRASE_DETECTED which
wakes the host from D0I3.

Two placement sites:
  - Object.Widget.host-copier.1: parsed by IPC4 kernel (sof_ipc4_widget_setup_pcm
    in ipc4-topology.c, see thesofproject/linux#5878)
  - Object.PCM.pcm: parsed by IPC3 kernel (topology.c)

Also adds DefineAttribute entries for capture_compatible_d0i3 and
playback_compatible_d0i3 to host-copier.conf so IPC4 alsatplg can
encode the token into the widget TLV tuple set.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
@jsarha
jsarha marked this pull request as ready for review August 20, 2026 16:43
Copilot AI lite review requested due to automatic review settings August 20, 2026 16:43
@jsarha

jsarha commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator Author

I managed to establish that this indeed works on my PTL-upx. At least if I tag a capture PCM host-copier with 'capture_compatible_d0i3 1' property, and have a capture running when suspending to s2idle, the DSP remains running. And if the DSP sends a SOF_IPC4_NOTIFY_PHRASE_DETECTED to the host, it wakes up. The reason why my first hack test did not work was that the SOF driver pauses the capture before suspending. I assume that is Ok, and the WoV should deal with the pause command correctly.

So I think this is ready for review.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends Sound Open Firmware (SOF) IPC4 topology/PCM handling to support Wake-on-Voice (WoV)-style D0i3 compatibility signaling, aligning IPC4 behavior with the existing IPC3 capability.

Changes:

  • Adds new IPC4 token groups to parse per-stream D0i3 compatibility properties from host-copier widget tuples.
  • Updates IPC4 host-copier PCM widget setup to set spcm->stream[dir].d0i3_compatible based on the new tokens.
  • Enables ipc4_pcm_ops.d0i3_supported_in_s0ix to allow DSP D0i3 during S0iX for IPC4.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
sound/soc/sof/sof-audio.h Adds new token-group IDs for IPC4 stream D0i3 compatibility parsing.
sound/soc/sof/ipc4-topology.c Defines/installs the new token groups and parses the D0i3 compatibility flag for IPC4 host-copier PCMs.
sound/soc/sof/ipc4-pcm.c Enables d0i3_supported_in_s0ix for IPC4 PCM ops.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

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.

2 participants