From 1f9ded8b638070194c222626e6197b1b321c0c6c Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 28 Oct 2026 21:39:47 +0000 Subject: [PATCH 1/5] platform: add CONFIG_ACE_VERSION_2_0_OR_LATER The copier DAI and IPC4 DAI code checks ACE_VERSION > ACE_VERSION_1_5 for the gateway handling that changed after ACE 1.5, which makes it include sof/platform.h for the ACE version header. Add a hidden Kconfig option that is set for ACE 2.0 and later, matching how zephyr/Kconfig already tests the ACE version, and use it instead. No functional change. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Liam Girdwood --- src/audio/copier/copier_dai.c | 4 ++-- src/ipc/ipc4/dai.c | 12 ++++++------ src/ipc/ipc4/helper.c | 2 +- src/platform/Kconfig | 8 ++++++++ 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index 95faafcb031d..34327205771f 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -339,7 +339,7 @@ __cold int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, break; case ipc4_alh_link_output_class: case ipc4_alh_link_input_class: -#if ACE_VERSION > ACE_VERSION_1_5 +#if CONFIG_ACE_VERSION_2_0_OR_LATER dai.type = SOF_DAI_INTEL_HDA; dai.is_config_blob = true; cd->gtw_type = ipc4_gtw_link; @@ -347,7 +347,7 @@ __cold int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, dai.type = SOF_DAI_INTEL_ALH; dai.is_config_blob = true; cd->gtw_type = ipc4_gtw_alh; -#endif /* ACE_VERSION > ACE_VERSION_1_5 */ +#endif /* CONFIG_ACE_VERSION_2_0_OR_LATER */ ret = copier_alh_assign_dai_index(dev, gtw_cfg_data, node_id, &dai, dai_index, &dai_count); if (ret) diff --git a/src/ipc/ipc4/dai.c b/src/ipc/ipc4/dai.c index 27c8ee8b6f56..af7d2ebfe895 100644 --- a/src/ipc/ipc4/dai.c +++ b/src/ipc/ipc4/dai.c @@ -42,7 +42,7 @@ void dai_set_link_hda_config(uint16_t *link_config, struct ipc_config_dai *common_config, const void *spec_config) { -#if ACE_VERSION > ACE_VERSION_1_5 +#if CONFIG_ACE_VERSION_2_0_OR_LATER const struct ipc4_audio_format *gtw_fmt = common_config->gtw_fmt; union hdalink_cfg link_cfg; @@ -76,7 +76,7 @@ void dai_set_link_hda_config(uint16_t *link_config, return; } *link_config = link_cfg.full; -#endif /* ACE_VERSION > ACE_VERSION_1_5 */ +#endif /* CONFIG_ACE_VERSION_2_0_OR_LATER */ } int dai_config_dma_channel(struct dai_data *dd, struct comp_dev *dev, const void *spec_config) @@ -90,13 +90,13 @@ int dai_config_dma_channel(struct dai_data *dd, struct comp_dev *dev, const void COMPILER_FALLTHROUGH; case SOF_DAI_INTEL_DMIC: channel = 0; -#if ACE_VERSION > ACE_VERSION_1_5 +#if CONFIG_ACE_VERSION_2_0_OR_LATER if (dai->host_dma_config[0]->pre_allocated_by_host) channel = dai->host_dma_config[0]->dma_channel_id; #endif break; case SOF_DAI_INTEL_HDA: -#if ACE_VERSION > ACE_VERSION_1_5 +#if CONFIG_ACE_VERSION_2_0_OR_LATER if (copier_cfg->gtw_cfg.node_id.f.dma_type == ipc4_alh_link_output_class || copier_cfg->gtw_cfg.node_id.f.dma_type == ipc4_alh_link_input_class) { struct processing_module *mod = comp_mod(dev); @@ -114,7 +114,7 @@ int dai_config_dma_channel(struct dai_data *dd, struct comp_dev *dev, const void } break; } -#endif /* ACE_VERSION > ACE_VERSION_1_5 */ +#endif /* CONFIG_ACE_VERSION_2_0_OR_LATER */ channel = copier_cfg->gtw_cfg.node_id.f.v_index; break; case SOF_DAI_INTEL_ALH: @@ -123,7 +123,7 @@ int dai_config_dma_channel(struct dai_data *dd, struct comp_dev *dev, const void */ channel = 0; break; -#if ACE_VERSION > ACE_VERSION_1_5 +#if CONFIG_ACE_VERSION_2_0_OR_LATER case SOF_DAI_INTEL_UAOL: channel = 0; if (dai->host_dma_config[0]->pre_allocated_by_host) diff --git a/src/ipc/ipc4/helper.c b/src/ipc/ipc4/helper.c index a5f35a3bc60e..474a8b38b1b8 100644 --- a/src/ipc/ipc4/helper.c +++ b/src/ipc/ipc4/helper.c @@ -1555,7 +1555,7 @@ __cold int ipc4_add_comp_dev(struct comp_dev *dev) int ipc4_find_dma_config(struct ipc_config_dai *dai, uint8_t *data_buffer, uint32_t size) { -#if ACE_VERSION > ACE_VERSION_1_5 +#if CONFIG_ACE_VERSION_2_0_OR_LATER uint32_t *dma_config_id = GET_IPC_DMA_CONFIG_ID(data_buffer, size); if (*dma_config_id != GTW_DMA_CONFIG_ID) diff --git a/src/platform/Kconfig b/src/platform/Kconfig index 33b4a33a13bb..bb3b4920a405 100644 --- a/src/platform/Kconfig +++ b/src/platform/Kconfig @@ -344,6 +344,14 @@ config ACE_VERSION_4_0 help Select for ACE version 4.0 +config ACE_VERSION_2_0_OR_LATER + bool + default y if ACE && !ACE_VERSION_1_5 + help + ACE version 2.0 or later. Lets code that differs between ACE 1.5 + and later versions test the version without including the + platform headers. + config HP_MEMORY_BANKS int "HP memory banks count" depends on CAVS From 6ab972ed1ec4ba6358c0fde389e334a301bb802f Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 28 Oct 2026 21:50:40 +0000 Subject: [PATCH 2/5] copier, ipc4: drop sof/platform.h from the DAI code The copier DAI and IPC4 DAI code only included sof/platform.h for ACE_VERSION, which they no longer use. No functional change. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Liam Girdwood --- src/audio/copier/copier_dai.c | 2 -- src/ipc/ipc4/dai.c | 1 - src/ipc/ipc4/helper.c | 1 - 3 files changed, 4 deletions(-) diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index 34327205771f..508972b4773c 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -5,8 +5,6 @@ // Author: Baofeng Tian #include -/* ACE_VERSION, see the ALH case below */ -#include #include #include #include diff --git a/src/ipc/ipc4/dai.c b/src/ipc/ipc4/dai.c index af7d2ebfe895..71e9e72f9233 100644 --- a/src/ipc/ipc4/dai.c +++ b/src/ipc/ipc4/dai.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/src/ipc/ipc4/helper.c b/src/ipc/ipc4/helper.c index 474a8b38b1b8..2646eda346ac 100644 --- a/src/ipc/ipc4/helper.c +++ b/src/ipc/ipc4/helper.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include From 7ab5f60c11e88eb7c7d1de223b4a39ad32ec3870 Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 28 Oct 2026 21:56:14 +0000 Subject: [PATCH 3/5] audio: do not include the platform memory map in processing components The DRC, multiband DRC and SRC sources only use __cold from sof/lib/memory.h, so include sof/lib/cold.h instead. asrc_farrow.c and src.c use nothing from it. No functional change. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Liam Girdwood --- src/audio/asrc/asrc_farrow.c | 1 - src/audio/drc/drc.c | 2 +- src/audio/multiband_drc/multiband_drc.c | 2 +- src/audio/multiband_drc/multiband_drc_ipc4.c | 2 +- src/audio/src/src.c | 1 - src/audio/src/src_common.c | 2 +- src/audio/src/src_ipc4.c | 2 +- 7 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/audio/asrc/asrc_farrow.c b/src/audio/asrc/asrc_farrow.c index 00883bb279ba..0c747e1a2f6a 100644 --- a/src/audio/asrc/asrc_farrow.c +++ b/src/audio/asrc/asrc_farrow.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include "asrc_farrow.h" diff --git a/src/audio/drc/drc.c b/src/audio/drc/drc.c index 0324986894a1..9390ac4b69ae 100644 --- a/src/audio/drc/drc.c +++ b/src/audio/drc/drc.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/audio/multiband_drc/multiband_drc.c b/src/audio/multiband_drc/multiband_drc.c index 5b0bee5bfba9..49f34053009e 100644 --- a/src/audio/multiband_drc/multiband_drc.c +++ b/src/audio/multiband_drc/multiband_drc.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/audio/multiband_drc/multiband_drc_ipc4.c b/src/audio/multiband_drc/multiband_drc_ipc4.c index ac2a7a7426aa..03dd7e54d371 100644 --- a/src/audio/multiband_drc/multiband_drc_ipc4.c +++ b/src/audio/multiband_drc/multiband_drc_ipc4.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include "multiband_drc.h" diff --git a/src/audio/src/src.c b/src/audio/src/src.c index 741ea606dc96..ff8c928c8a59 100644 --- a/src/audio/src/src.c +++ b/src/audio/src/src.c @@ -10,7 +10,6 @@ */ #include -#include #include #include "src_common.h" diff --git a/src/audio/src/src_common.c b/src/audio/src/src_common.c index 348a1a9b1acc..12d9cf55f5c8 100644 --- a/src/audio/src/src_common.c +++ b/src/audio/src/src_common.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/audio/src/src_ipc4.c b/src/audio/src/src_ipc4.c index 87826919a0df..b5dea2f621f1 100644 --- a/src/audio/src/src_ipc4.c +++ b/src/audio/src/src_ipc4.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include From 79638e91d2a634951943c078feaf907f8429d17a Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 28 Oct 2026 21:56:14 +0000 Subject: [PATCH 4/5] audio: drop unused kernel includes Drop rtos/interrupt.h, rtos/timer.h, rtos/wait.h and rtos/userspace_helper.h from the audio sources that use nothing from them, and sof/lib_manager.h from modules.c. pipeline-stream.c includes rtos/timer.h, whose timestamp helpers it uses, instead of rtos/wait.h. The pipeline graph, the pipeline scheduler, the copier and the xrun code keep the includes whose IRQ locking and timer helpers they still use. No functional change. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Liam Girdwood --- src/audio/buffers/comp_buffer.c | 1 - src/audio/component.c | 1 - src/audio/copier/copier.c | 2 -- src/audio/copier/copier_host.c | 1 - src/audio/google/google_rtc_audio_processing.c | 1 - src/audio/module_adapter/library/kpb_service_bridge.c | 1 - src/audio/module_adapter/library/native_system_service.c | 1 - src/audio/module_adapter/module/modules.c | 2 -- src/audio/module_adapter/module_adapter_ipc4.c | 1 - src/audio/pipeline/pipeline-graph.c | 1 - src/audio/pipeline/pipeline-schedule.c | 1 - src/audio/pipeline/pipeline-stream.c | 3 +-- 12 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/audio/buffers/comp_buffer.c b/src/audio/buffers/comp_buffer.c index 3d7b937b533b..af33bfd06ef0 100644 --- a/src/audio/buffers/comp_buffer.c +++ b/src/audio/buffers/comp_buffer.c @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/component.c b/src/audio/component.c index 9a1623099fef..02797941d6b6 100644 --- a/src/audio/component.c +++ b/src/audio/component.c @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/copier/copier.c b/src/audio/copier/copier.c index 581e8390c7e5..e8976ec9add6 100644 --- a/src/audio/copier/copier.c +++ b/src/audio/copier/copier.c @@ -18,10 +18,8 @@ #include #include #include -#include #include #include -#include #include #include #include diff --git a/src/audio/copier/copier_host.c b/src/audio/copier/copier_host.c index 35c33383d12a..c3ab0208a5d0 100644 --- a/src/audio/copier/copier_host.c +++ b/src/audio/copier/copier_host.c @@ -9,7 +9,6 @@ #include #include #include -#include #include "copier.h" #include "host_copier.h" diff --git a/src/audio/google/google_rtc_audio_processing.c b/src/audio/google/google_rtc_audio_processing.c index 66fdb605a23e..8e372f492bf0 100644 --- a/src/audio/google/google_rtc_audio_processing.c +++ b/src/audio/google/google_rtc_audio_processing.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/module_adapter/library/kpb_service_bridge.c b/src/audio/module_adapter/library/kpb_service_bridge.c index 79c492755e6f..574ce73431ce 100644 --- a/src/audio/module_adapter/library/kpb_service_bridge.c +++ b/src/audio/module_adapter/library/kpb_service_bridge.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/module_adapter/library/native_system_service.c b/src/audio/module_adapter/library/native_system_service.c index 24091c1c3c91..a6b6b373f967 100644 --- a/src/audio/module_adapter/library/native_system_service.c +++ b/src/audio/module_adapter/library/native_system_service.c @@ -19,7 +19,6 @@ #include #include #include -#include #define RSIZE_MAX 0x7FFFFFFF #define IADK_NOTIFICATION_HEADER_SIZE 48 diff --git a/src/audio/module_adapter/module/modules.c b/src/audio/module_adapter/module/modules.c index 589a25e33887..0f04ba980b26 100644 --- a/src/audio/module_adapter/module/modules.c +++ b/src/audio/module_adapter/module/modules.c @@ -7,10 +7,8 @@ #include #include -#include #include #include -#include #include /* Intel module adapter is an extension to SOF module adapter component that allows to integrate diff --git a/src/audio/module_adapter/module_adapter_ipc4.c b/src/audio/module_adapter/module_adapter_ipc4.c index a4b8425cb995..2455e28ff146 100644 --- a/src/audio/module_adapter/module_adapter_ipc4.c +++ b/src/audio/module_adapter/module_adapter_ipc4.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/pipeline/pipeline-graph.c b/src/audio/pipeline/pipeline-graph.c index cc656bc89024..27d56e12af7f 100644 --- a/src/audio/pipeline/pipeline-graph.c +++ b/src/audio/pipeline/pipeline-graph.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/pipeline/pipeline-schedule.c b/src/audio/pipeline/pipeline-schedule.c index 3b14ec4d2ea6..3893cd227c9b 100644 --- a/src/audio/pipeline/pipeline-schedule.c +++ b/src/audio/pipeline/pipeline-schedule.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/pipeline/pipeline-stream.c b/src/audio/pipeline/pipeline-stream.c index b339e70aaf81..9b015f26cb4d 100644 --- a/src/audio/pipeline/pipeline-stream.c +++ b/src/audio/pipeline/pipeline-stream.c @@ -9,9 +9,8 @@ #include #include #include -#include +#include #include -#include #include #include #include From d5549ca1696e81509dd390636813557f2a5b41cb Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 28 Oct 2026 22:01:49 +0000 Subject: [PATCH 5/5] volume: keep the peak meter mailbox write out of volume.h peak_vol_update() writes the peak meter to the IPC4 mailbox registers, and is only called from volume.c. Defining it in volume.h made every volume source include sof/lib/mailbox.h and, through it, the platform memory map. Move it to volume.c, under CONFIG_COMP_PEAK_VOL like its only caller, and include sof/lib/mailbox.h in volume.c and volume_ipc4.c, the two sources that write the mailbox. No functional change. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Liam Girdwood --- src/audio/volume/volume.c | 9 +++++++++ src/audio/volume/volume.h | 9 --------- src/audio/volume/volume_ipc4.c | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/audio/volume/volume.c b/src/audio/volume/volume.c index a449190c60ad..ab2026c8bba2 100644 --- a/src/audio/volume/volume.c +++ b/src/audio/volume/volume.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -47,6 +48,14 @@ LOG_MODULE_REGISTER(volume, CONFIG_SOF_LOG_LEVEL); #include "volume_uuid.h" #include "volume.h" +#if CONFIG_COMP_PEAK_VOL +static inline void peak_vol_update(struct vol_data *cd) +{ + /* update peakvol in mailbox */ + mailbox_sw_regs_write(cd->mailbox_offset, &cd->peak_regs, sizeof(cd->peak_regs)); +} +#endif + #if CONFIG_FORMAT_S16LE /** * \brief Used to find nearest zero crossing frame for 16 bit format. diff --git a/src/audio/volume/volume.h b/src/audio/volume/volume.h index f2122ac23579..c7830f7a1c3a 100644 --- a/src/audio/volume/volume.h +++ b/src/audio/volume/volume.h @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -290,14 +289,6 @@ static inline vol_scale_func vol_get_processing_function(struct comp_dev *dev, } #endif -static inline void peak_vol_update(struct vol_data *cd) -{ -#if CONFIG_COMP_PEAK_VOL - /* update peakvol in mailbox */ - mailbox_sw_regs_write(cd->mailbox_offset, &cd->peak_regs, sizeof(cd->peak_regs)); -#endif -} - #ifdef UNIT_TEST void sys_comp_module_volume_interface_init(void); #endif diff --git a/src/audio/volume/volume_ipc4.c b/src/audio/volume/volume_ipc4.c index 78043a834c8a..7ca9b90c1ef6 100644 --- a/src/audio/volume/volume_ipc4.c +++ b/src/audio/volume/volume_ipc4.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include