Repository navigation
Conversation
Add topology2 support for generating and deploying IPC3 topology files alongside the existing IPC4 production set. Describe the Yoga Book RT5677 SSP2 playback, capture, low-latency and deep-buffer paths while preserving the Cherry Trail memory, scheduler and hardware configuration required by the legacy IPC3 firmware. Signed-off-by: Maurizio Casciano <mauriziocasciano7@gmail.com> (cherry picked from commit fb12497) Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
SOF IPC3 derives the DAI channel count from the population count of the active TDM slot mask. The original topology enabled all four frame slots with mask 0xf while exposing two-channel PCM streams, so STREAM_PCM_PARAMS failed with -EINVAL. Keep the required four-slot, 25-bit frame geometry but activate only the two stereo slots with mask 0x3. Use the defined default_hw_config_id attribute and add a general topology artifact verifier. The verifier checks PCM and backend-link properties and accepts command-line overrides for use with other configurations. Tested on a Lenovo Yoga Book YB1-X91L with PCM0 playback and capture in S16_LE, S24_LE and S32_LE at 48 kHz stereo, plus PCM1 deep-buffer playback. Signed-off-by: Maurizio Casciano <mauriziocasciano7@gmail.com> (cherry picked from commit 7c26d2b) Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
There was a problem hiding this comment.
🟡 Changes recommended
The verifier rejects matching nonzero hardware configuration IDs and accepts mismatched default references.
1 open finding
What changed in this PR
Forward-ports Cherry Trail RT5677 IPC3 support to topology2 for the Lenovo Yoga Book.
Changes:
- Adds board topology and reusable IPC3 pipeline components.
- Separates IPC3 ABI generation, build outputs, and deployment from IPC4.
- Adds artifact verification and usage documentation.
| File | Description |
|---|---|
| tools/topology/topology2/verify-topology.py | Verifies compiled backend-link and PCM contracts. |
| tools/topology/topology2/README.md | Documents Cherry Trail support and verification. |
| tools/topology/topology2/production/tplg-targets-ipc3.cmake | Registers the RT5677 IPC3 target. |
| tools/topology/topology2/production/CMakeLists.txt | Builds IPC3 targets separately. |
| tools/topology/topology2/platform/intel/cht-hw-config.conf | Defines Cherry Trail SSP configuration attributes. |
| tools/topology/topology2/include/pipelines/ipc3/volume-playback.conf | Adds host volume playback pipelines. |
| tools/topology/topology2/include/pipelines/ipc3/volume-dai-capture.conf | Adds combined DAI-to-host capture. |
| tools/topology/topology2/include/pipelines/ipc3/pipeline-common.conf | Defines shared IPC3 pipeline attributes. |
| tools/topology/topology2/include/pipelines/ipc3/mixer-volume-dai-playback.conf | Adds mixer-to-DAI playback. |
| tools/topology/topology2/include/components/widget-common.conf | Adds optional IPC3 period counts. |
| tools/topology/topology2/include/components/ipc3/mixer.conf | Defines the IPC3 mixer widget. |
| tools/topology/topology2/include/components/buffer.conf | Adds Cherry Trail-compatible buffer capabilities. |
| tools/topology/topology2/CMakeLists.txt | Generates IPC3 ABI data and separates deployment. |
| tools/topology/topology2/cht-rt5677.conf | Defines board routing, SSP2 settings, and stereo PCMs. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| ) | ||
|
|
||
| hw = record[676 : 676 + HW_CONFIG_SIZE] | ||
| if u32(hw, 0) != HW_CONFIG_SIZE or u32(hw, 4) != 0: |
PR 11279: test resultsRun date: 2026-10-07 17:58 UTC Tested commit: c093ab6e6ae0c3aff0fcccb944fd21b3301274ec |
| # The frame has four slots, but the stereo stream uses slots 0 and 1. | ||
| # IPC3 derives the DAI channel count from these active-slot masks. | ||
| tx_slots 3 | ||
| rx_slots 3 |
There was a problem hiding this comment.
this patch fixes the first patch, should be squashed. No point of adding a broken build just to fix it right away.
| @@ -0,0 +1,365 @@ | |||
| #!/usr/bin/env python3 | |||
| # SPDX-License-Identifier: BSD-3-Clause | |||
| """Verify PCM and backend-link properties in a compiled topology.""" | |||
There was a problem hiding this comment.
and this has nothing to do with the ' topology2: ipc3: fix Yoga Book stereo slot masks `
|
|
||
| Supported platforms: | ||
|
|
||
| * `cht` — Intel Cherry Trail / Atom (IPC3; currently Yoga Book RT5677 only) |
There was a problem hiding this comment.
I wonder how this will scale?
It is true that we will have a single IPC3 topology built via tplg-targets-ipc3.cmake, but afaik there is no real distinction between cht/apl/tgl when it comes to topology content, it is just that the kernel uses the platform in topology name.
If we add a missing IPC3 topology for a TGL/ADL device, will this still stands?
I would not add any platform or worst, device specific comment or reference for generic things.
| # Topology2 source targeting firmware that uses the SOF IPC3 protocol. | ||
| set(IPC3_TPLGS | ||
| # Lenovo Yoga Book YB1-X91F/L: Cherry Trail SSP2 with RT5677 AIF1. | ||
| "cht-rt5677\;sof-cht-rt5677" |
There was a problem hiding this comment.
this is several patch condensed as one, but I guess it is fine
|
Too many issues @ujfalusi @lgirdwood , I'll let original developer follow-up if he wants this is main. FYI @MaurizioCasciano |
|
Hi @kv2019i thanks for notifying me. Not sure I did understand what needs to be done/fixed. |
|
@MaurizioCasciano Please submit this change to "main" branch and address the comments raised in this PR. There were some conflicts when applying your change to main, so you can take this PR as the starting point. |

Forward port #11129
This was a bit of a process gap. We shouldn't normally merge patches to stable branches that don't first go via "main", but in this case this happened. The new topologies are already released in 2026.09.2, so let's forward-port these to main.
The tools/topology/topology2/verify-topology.py needs more work, but we can do that in a follow-up.