The SOF technical steering committee is pleased to announce the v2.12 release of SOF.
Signed binaries for selected platforms are here https://github.com/thesofproject/sof-bin/releases (sof-bin-2025.01).
Highlights
- New platforms: NXP IMX95
- Zephyr RTOS support added: AMD ACP6.0, MediaTek 8195/86/88
- HIFI5 optimization added to multiple components: IIR core, ARIA and volume
- Zephyr loadable module (LLEXT) support extended in SOF with capability to handle libraries of loadable modules.
- Support added to mark module functions as "cold", allowing code to be run directly from DRAM and save on SRAM usage on platforms supporting the feature.
- Topology: support for new product configurations for Intel LNL/ARL/MTL and NXP IMX95.
- Topology: microphone (IIR and DRC) and speaker processing (IIR, FIR and DRC) added to Intel DSP topologies with Soundwire codecs. This builds on similar support added to HDA codec based topologies added in SOF v2.11 release.
- And as with any new release, SOF 2.12 includes multiple bug fixes and optimizations to enhance overall performance and stability.
What's Changed
- platform/xtos: remove shim.h interface as it's no longer needed by @kv2019i in #9461
- Tools: Topology2: Add topologies builds for PTL by @singalsu in #9317
- versions.json: set version to 2.11.99 by @kv2019i in #9481
- Add support for enum controls in the SOF plugin by @ranj063 in #9474
- ipc3: fixup alignment of ext data by @cujomalainey in #9464
- Tools: Testbench: Convert file component to module adapter by @singalsu in #9432
- Telemetry: change performance timing method to ccount by @tobonex in #9361
- Audio: Volume: Clear peak meter channel max values in prepare() by @singalsu in #9411
- iadk: Define pass buffer size and return error code from entry point function by @softwarecki in #9424
- LLEXT: convert most remaining Module Adapter drivers by @lyakh in #9453
- I/O Performance Measurement: Add I/O Performance Monitor by @tobonex in #9330
- zephyr: add rtos/mutex.h by @kv2019i in #9488
- Pipeline2.0: step3, make all components using API instead of direct access to bsink_list and bsource_list by @marcinszkudlinski in #9478
- zephyr: sof/lib/mm_heap.h added Zephyr version by @kv2019i in #9467
- topology2: add support for PDM DMIC with rt722 topology by @RDharageswari in #9493
- rtos: branch compiler_attributes.h for XTOS and Zephyr by @kv2019i in #9489
- xtos: move sof/lib/agent.h to application interface by @kv2019i in #9490
- Debug stream thread info compile warning fixes by @jsarha in #9482
- zephyr: update to today's "main" by @lyakh in #9455
- Add support for byte controls in the SOF plugin by @ranj063 in #9484
- smex and trace sections cleanup by @LaurentiuM1234 in #9491
- topology2: add fix to add 4ch PDM DMIC with rt722 topology by @RDharageswari in #9500
- zephyr: cpu: Suspend and resume DAIs during D3 state transitions by @tmleman in #9454
- zephyr: decouple from platform pm_runtime.h interface by @kv2019i in #9495
- Change the soc from ace30_ptl to ace30 (includes Zephyr west.yml update) by @gbernatxintel in #9475
- Code cleanups by @cujomalainey in #9517
- ipc3: override type field once comp_driver found by @cujomalainey in #9496
- rimage: use platform extra flags when signing LLEXT modules by @lyakh in #9509
- config: Enable PROBE module for PTL platform by @tmleman in #9515
- app: shell/winconsole_overlay: disable SOF telemetry by @kv2019i in #9514
- Pipeline2.0: low hanging fruits - move buffers' common params to struct sof_audio_buffer. by @marcinszkudlinski in #9499
- Tools: Testbench: Add IPC4 support by @singalsu in #9483
- SOF_GUI: Implement GUI and TUI for SOF demonstration by @alexb3103 in #9406
- xtos: move sof/lib/perf_cnt.h to application interface by @kv2019i in #9494
- buffer: init channels to 2 by @cujomalainey in #9528
- Test: Cmocka: Set component type to SOF_COMP_MODULE_ADAPTER by @singalsu in #9529
- ipc4: base_fw: Consistently use IPC4 status codes by @tmleman in #9526
- Add copier gain feature by @iganakov in #9323
- Revert "ipc3: override type field once comp_driver found" by @lyakh in #9518
- ipc4: base_fw: Enable scheduler info retrieval for secondary cores by @tmleman in #9511
- tools: mtrace-reader.py: Add option to mark chunk starts in output by @ujfalusi in #9520
- ipc4: helper: Remove hardcoded UUID map for CONFIG_LIBRARY by @ranj063 in #9516
- Fuzzer cleanup by @cujomalainey in #9527
- fuzz: add support for 64 bit builds by @cujomalainey in #9534
- Pipeline2.0: add API to access sink/src components linked to a buffer by @marcinszkudlinski in #9530
- west.yml: update Zephyr to 155f3f3ba688 by @LaurentiuM1234 in #9540
- Lib: Add to dai-legacy.h struct copier_gain_params for testbench by @singalsu in #9536
- topology2: update flags for alignment by @macchian in #9531
- Tools: Tplg_parser: Fix handling of tokens found count by @singalsu in #9538
- add support for running SOF on imx95 by @LaurentiuM1234 in #9512
- Enable Copier Gain feature for DMIC interface by @iganakov in #9537
- Tools: Topolology2: Test topologies maintenance for testbench IPC4 version by @singalsu in #9545
- debug: debug_stream: Access debug slot directly using cavstool.py by @jsarha in #9498
- regions_mm: Fix vhm allocator behavior on memory freeing by @softwarecki in #9539
- Arch: host: Cleanup mixer vs. mixin/mixout component build by @singalsu in #9544
- audio: remove unnecessary inclusion of lib/memory.h by @kv2019i in #9555
- drivers: imx: sdma: Initialize channel status by @iuliana-prodan in #9558
- rtos: add Zephyr implementation of sof/lib/memory.h by @kv2019i in #9552
- ipc: remove unnecessary inclusion of dma-trace.h by @kv2019i in #9554
- topology2: add rt713 and rt1318 support on LNL machine by @shumingfan in #9550
- audio: fix trace function names by @cujomalainey in #9556
- audio: google: constify ops drivers by @cujomalainey in #9570
- cmocka: update create to use standard alloc flow by @cujomalainey in #9569
- topology2: add rt722 codec and rt1320 amp support by @macchian in #9507
- Tools: Testbench: Add to IPC4 version UUID based components load, apply initial byte control, etc. by @singalsu in #9542
- topology2: Add support for cs42l43 SKU with host DMICs by @charleskeepax in #9553
- rtos: branch out dma.h for Zephyr and XTOS by @kv2019i in #9560
- component: fix doxygen args by @cujomalainey in #9564
- ipc4: base_fw: Return an empty list for inactive cores by @tmleman in #9581
- scripts: build-tools: Add support to build tplg1/tplg2 individually by @dbaluta in #9583
- ipc4: remove unused code by @serhiy-katsyuba-intel in #9574
- Audio: Fix Xtensa HiFi5 build for audio processing components by @singalsu in #9420
- xtos: move sof/lib/mailbox.h to application interface by @kv2019i in #9562
- Audio: TDFB: Tune: Move beamformer setup scripts to module directory by @singalsu in #9192
- Tools: Testbench: Set default trace level to info by @singalsu in #9575
- Audio: Copier: Use SOF_DIV_ROUND_UP() instead of ROUND_UP() by @singalsu in #9579
- Lib: Add to dai-legacy.h "struct dai" new member "type" by @singalsu in #9551
- app: remove ptl as integration platform by @nashif in #9577
- Tools: Testbench: Fixes to load aria, mixin and mixout components by @singalsu in #9580
- Math: FFT: Move export_twiddle.m to math library sources directory by @singalsu in #9214
- topology2: mtl: Generate topology for Everest(Es83x6) codec. by @CBala21 in #9588
- intel: ace: Enable KCPS Dynamic Clock Control for LNL and PTL by @tmleman in #9568
- Platform: Library: Move mailbox_sw_reg_read64() from posix mailbox.h by @singalsu in #9589
- Build SOF with zephyr on acp_6_0 platform by @DINESHKUMARK1 in #9578
- tools: topology1: Move IMX topologies to production by @dbaluta in #9601
- Add missing header includes to init.c and IPC3 handler by @kv2019i in #9596
- zephyr: add Zephyr version of sof/init.h by @kv2019i in #9592
- Tools: Testbench: Fix IPC4 PGA controls load by @singalsu in #9591
- pipeline: graph: Check if source_comp is NULL in pipeline_comp_reset() by @jsarha in #9586
- trace: split out trace-soflogger.h and trace-boot.h by @kv2019i in #9597
- Clean up dma-trace.h and dma-trace.c dependencies by @kv2019i in #9595
- Audio: Copier: Fix testbench HiFi3 build by @singalsu in #9606
- topology2: add support for rt721-sdw topology by @naveen-manohar in #9524
- Zephyr preproc.h implementation (OPTION B) by @kv2019i in #9603
- Audio: Aria: Fix compilation for HiFi5 by @singalsu in #9605
- app: intel_adsp_ace15_mtpm.conf: clean up board config file by @kv2019i in #9609
- Audio: Multiband-DRC: Tune: Updates to setup tool after moving then to modules, blob updates to pass a quality check by @singalsu in #9599
- Tools: Testbench: Fix ibs/obs calculation by @singalsu in #9616
- Tools: Testbench: Switch testbench to IPC4 mode by @singalsu in #9590
- app: boards: Update configuration to support ACP_6_0 SoC by @DINESHKUMARK1 in #9613
- Audio: Aria: Add tool to create configuration blobs for Aria by @singalsu in #9615
- Simplify the command line for plugin by @ranj063 in #9610
- app: intel_adsp_ace20_lnl.conf: clean up board config file by @kv2019i in #9620
- Audio: Aria: Fix handling of S24_LE format, update blob ABI headers in topologies by @singalsu in #9614
- Tools: Topology2: Build PTL nocodec topologies with 96 and 192 kHz SSP by @singalsu in #9619
- Scripts: Add ARIA and ASRC to sof-testbench4 test run by @singalsu in #9621
- audio: module: Fix passthrough module by @dbaluta in #9622
- app: intel_adsp_a*conf: continue cleanup of board files by @kv2019i in #9623
- fuzz: add coverage build by @cujomalainey in #9625
- boards: ace20/ace30: disable KCPS dynamic clock control by @abonislawski in #9628
- Support a larger range of amp feedback channel counts by @rfvirgil in #9624
- zephyr: move to strict headers builds for all targets by @kv2019i in #9627
- Audio: Volume: Add HiFi5 implementation. by @singalsu in #9419
- Topology2: add sof-lnl-rt712-rt1320x1 support by @bardliao in #9632
- Audio: DRC: Use audio_stream_copy() with pass-through configuration by @singalsu in #9626
- Tools: Testbench: Add useful script for run and profile by @singalsu in #9607
- probe: Convert to module API by @jsarha in #9629
- Pipeline2 0 - audio_buffer / sink / source api extensions and simplifications by @marcinszkudlinski in #9594
- topology2: rename sof-arl-rt722-l0-rt1320-l2 by @bardliao in #9639
- ipc4: helper: fix stream params frame format update by @iganakov in #9638
- ipc: add cache flushing and invalidation for IPC data by @tmleman in #9630
- Topology2: add 96KHz rate support for SDW jack by @bardliao in #9642
- topology2: Update I2S MAX98260a, RT5682, 2 DMICs topology for PTL platform by @udaymb in #9645
- Topology2: rename sof-lnl-rt712-rt1320x1 by @bardliao in #9635
- west.yml: update Zephyr to c50777a84311 (Zephyr Nov 11 update) by @kv2019i in #9647
- zephyr: lib/cpu.h: remove dependency to platform layer by @kv2019i in #9648
- audio: chain_dma: update build time dependencies by @kv2019i in #9651
- app: board: Add define CONFIG_COUNTER by @gbernatxintel in #9636
- platform: intel: drop PLATFORM_DEFAULT_DELAY from platform.h by @kv2019i in #9655
- Math: Optimize sofm_exp_fixed() HiFi version by @singalsu in #9631
- remove platform lib/dai.h from SOF Zephyr builds by @kv2019i in #9653
- Audio: DRC: Fix DRC enable control switch handling for HiFi4 by @singalsu in #9654
- remove idelay use and move to k_busy_wait in SOF Zephyr code by @kv2019i in #9656
- Topology2: add more configurations for Realtek Gen6 AIOC on LNL and PTL by @bardliao in #9657
- Test: Cmocka: Add unit test for function drc_inv_fixed() by @singalsu in #9649
- schedule: zephyr_domain: make LL reporting build-time configurable and change the defaults by @kv2019i in #9661
- Probe llext by @jsarha in #9643
- west.yml: update zephyr to f537cf311d7 by @tmleman in #9659
- topology2: Add support for cs42l43 SKU with four host DMICs by @simontrimmer in #9666
- Zephyr: A subset of #9522 to fix #9659 by @lyakh in #9662
- Tools: Topology2: Intel: Add enhanced speaker and DMIC processing to SDW PCs by @singalsu in #9652
- perf_cnt: improve avg/peak accuracy for component perf measurements by @kv2019i in #9664
- tools: corpus: add seed corpus root by @cujomalainey in #9673
- zephyr: lib/dma.h: limit use of platform/lib/dma.h by @kv2019i in #9667
- topology2: Support for NUM_SDW_AMP_LINKS=3 aggregation by @rfvirgil in #9665
- Audio: DRC: Some HiFi4 and HiFi3 optimizations by @singalsu in #9646
- app: boards: imx95_evk: set host and edma buffer alignment to 32 by @LaurentiuM1234 in #9676
- ext_manifest: include probe information by CONFIG_PROBE by @Shawn-Huang724 in #9675
- config: enable PIPELINE_2_0 for IPC4 fuzz testing by @tmleman in #9677
- audio: make clock control optional in SOF Zephyr builds (plus remove clk platform code for TGL as example) by @kv2019i in #9670
- Probe ipc4 info by @jsarha in #9669
- Topology2: add sof-ptl-rt722-96k support by @bardliao in #9679
- LLEXT: run non-performance critical code in DRAM by @lyakh in #9522
- fix: comp_dev: initialize buffer lists to prevent NULL dereference by @tmleman in #9689
- ace: zephyr: alloc: Use virtual memory heap for buffers by @softwarecki in #9155
- Tools: Topology2: Add pre-processing to ACE 1/2/3.x PCH DMIC topologies by @singalsu in #9690
- Math: IIR DF1: Optimizations for HiFi4 and HiFi5 by @singalsu in #9684
- Tools: Tune: TDFB: Add generate of few needed blobs by @singalsu in #9147
- ipc4: copier: unused code cleanup by @serhiy-katsyuba-intel in #9701
- Tools: Test: Audio: Fix IIR and FIR tests handling in process_test.m by @singalsu in #9685
- LLEXT: Minor improvements by @lyakh in #9703
- Couple of small debug_stream.py fixes. by @jsarha in #9693
- topology2: Add HDA with DMIC, HDMI topologies support for ACE3 architecture by @udaymb in #9696
- audio: kpb: fix potential NULL pointer dereference in device list reset by @tmleman in #9691
- Tools: Topology2: Swap gain and eqiir in DMIC capture by @singalsu in #9700
- west.yml: update zephyr to e59289d89999 by @kv2019i in #9706
- topology2: Topologies for Cirrus Logic CDB35L56 boards by @rfvirgil in #9694
- platform: intel: ace: remove all unnecessary clk.h definitions by @kv2019i in #9683
- Topology2: add sof-ptl-rt722-192k support by @bardliao in #9708
- LLEXT: libraries with multiple modules by @lyakh in #9688
- Include window offset info in data section when building binaries for AMD platforms ACP_6_3 and ACP_7_0. by @saisurya-ch in #9707
- west.yml: update zephyr to 1d40a7ee3415 (Dec 5th) by @kv2019i in #9712
- .github/zephyr: switch to HWMv2 naming of imx93_evk by @LaurentiuM1234 in #9717
- drivers: intel: remove remaining references to MN driver by @kv2019i in #9671
- platform: posix: dma: place api in iterable section by @jilaypandya in #9710
- Audio: TDFB: Tune: Updates for blobs for ALSA ucm2 control by @singalsu in #9711
- west.yml: update zephyr to 7fa8bf17563 by @tmleman in #9722
- topology2: Add support for cs42l43 SKU with two host DMICs by @rfvirgil in #9718
- [stable-v2.12] Tools: Topology2: Fix DMIC TDFB blob in sof-lnl-cs42l43-l0-2ch by @singalsu in #9744
- [stable-v2.12] rimage: fix resource leak by @abonislawski in #9743
- [stable-v2.12] versions.json: set version to 2.12.0 by @kv2019i in #9750
- [stable-v2.12] Tools: Tplg2: cavs-sdw: Enable speaker and microphone processing by @singalsu in #9752
- [stable-v2.12] zephyr: fix overflow and overlap checks in memcpy_s by @kv2019i in #9771
New Contributors
- @alexb3103 made their first contribution in #9406
- @shumingfan made their first contribution in #9550
- @charleskeepax made their first contribution in #9553
- @rfvirgil made their first contribution in #9624
- @simontrimmer made their first contribution in #9666
- @Shawn-Huang724 made their first contribution in #9675
- @jilaypandya made their first contribution in #9710
Full Changelog: v2.11...v2.12