From e881e3cebbfe73d97df068c2ed2b57df6f67cacf Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 11 Nov 2026 12:43:08 +0000 Subject: [PATCH 1/3] topology2: bt-ssp-config: enable rx_slots on 48 kHz hw_config.3 Enable rx_slots=3 alongside tx_slots=3 on the 48 kHz 2-channel SSP2-BT hardware configuration (hw_config.3) so full-duplex 48 kHz Bluetooth SSP offload streams can capture and play back simultaneously. Signed-off-by: Liam Girdwood --- tools/topology/topology2/platform/intel/bt-ssp-config.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/topology/topology2/platform/intel/bt-ssp-config.conf b/tools/topology/topology2/platform/intel/bt-ssp-config.conf index 2c527b55dcb4..964d7a170d5a 100644 --- a/tools/topology/topology2/platform/intel/bt-ssp-config.conf +++ b/tools/topology/topology2/platform/intel/bt-ssp-config.conf @@ -59,7 +59,7 @@ Object.Dai.SSP [ fsync_freq 48000 tdm_slots 2 tx_slots 3 - rx_slots 0 + rx_slots 3 # link_config ignored for Date: Wed, 11 Nov 2026 12:43:08 +0000 Subject: [PATCH 2/3] topology2: hda-generic, ace3: add SSP2-BT offload topologies Include SSP and Bluetooth offload definitions in sof-hda-generic.conf when ADD_BT=true without altering existing non-BT topologies. Add dedicated SSP2-BT offload topology targets (BT_PCM_ID=20, BT_PCM_NAME=Bluetooth, ADD_BT=true) for ACE 1.5/2.0 and ACE 3.0 HDA platforms (sof-hda-generic-ace1-bt, sof-hda-generic-ace3-bt, sof-hda-generic-ace3-2ch-bt, sof-hda-generic-ace3-4ch-bt) as well as ACE 3.0 / Wildcat Lake RT722 4ch SoundWire platforms (sof-ptl-rt722-4ch-bt and sof-wcl-rt722-4ch-bt). Signed-off-by: Liam Girdwood --- .../production/tplg-targets-ace3.cmake | 9 ++++++++ .../production/tplg-targets-hda-generic.cmake | 23 +++++++++++++++++++ tools/topology/topology2/sof-hda-generic.conf | 9 +++++++- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/tools/topology/topology2/production/tplg-targets-ace3.cmake b/tools/topology/topology2/production/tplg-targets-ace3.cmake index 1be9cfe603fa..df9f256fb867 100644 --- a/tools/topology/topology2/production/tplg-targets-ace3.cmake +++ b/tools/topology/topology2/production/tplg-targets-ace3.cmake @@ -108,6 +108,14 @@ SDW_JACK_OUT_STREAM=Playback-SimpleJack,SDW_JACK_IN_STREAM=Capture-SimpleJack,\ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-rt722-4ch.bin,DMIC0_ENHANCED_CAPTURE=true,\ EFX_DMIC0_TDFB_PARAMS=line4_pass,EFX_DMIC0_DRC_PARAMS=dmic_default" +"cavs-sdw\;sof-ptl-rt722-4ch-bt\;PLATFORM=ptl,SDW_DMIC=1,NUM_SDW_AMP_LINKS=1,NUM_DMICS=4,\ +PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,DMIC0_ID=5,DMIC1_ID=6,HDMI1_ID=7,HDMI2_ID=8,HDMI3_ID=9,\ +SDW_AMP_FEEDBACK=false,SDW_SPK_STREAM=Playback-SmartAmp,SDW_DMIC_STREAM=Capture-SmartMic,\ +SDW_JACK_OUT_STREAM=Playback-SimpleJack,SDW_JACK_IN_STREAM=Capture-SimpleJack,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-rt722-4ch-bt.bin,DMIC0_ENHANCED_CAPTURE=true,\ +EFX_DMIC0_TDFB_PARAMS=line4_pass,EFX_DMIC0_DRC_PARAMS=dmic_default,\ +BT_PCM_ID=20,BT_ID=10,BT_PCM_NAME=Bluetooth,ADD_BT=true" + # DMIC WoV feature topology; platform-agnostic, shared across PTL/WCL "dmic-wov-feature\;sof-dmic-4ch-wov\;PLATFORM=none,NUM_DMICS=4,\ DMIC0_ID=5,DMIC1_ID=6,DMIC1_ENABLE=false,DMIC1_RATE=16000,INCLUDE_WOV=true" @@ -374,4 +382,5 @@ list(APPEND SYMLINKS "sof-wcl-dmic-4ch-id3\;sof-ptl-dmic-4ch-id3" "sof-wcl-dmic-4ch-id4\;sof-ptl-dmic-4ch-id4" "sof-wcl-dmic-4ch-id5\;sof-ptl-dmic-4ch-id5" +"sof-wcl-rt722-4ch-bt\;sof-ptl-rt722-4ch-bt" ) diff --git a/tools/topology/topology2/production/tplg-targets-hda-generic.cmake b/tools/topology/topology2/production/tplg-targets-hda-generic.cmake index 72872d110a4d..cd15f2067dca 100644 --- a/tools/topology/topology2/production/tplg-targets-hda-generic.cmake +++ b/tools/topology/topology2/production/tplg-targets-hda-generic.cmake @@ -123,4 +123,27 @@ EFX_DMIC0_TDFB_PARAMS=line4_pass,EFX_DMIC0_DRC_PARAMS=dmic_default" PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-ace3-2ch-dax.bin,\ DMIC0_ENHANCED_CAPTURE=true,EFX_DMIC0_TDFB_PARAMS=line2_generic_pm10deg,\ EFX_DMIC0_DRC_PARAMS=dmic_default,DOLBY_DAX_CORE_ID=1" + +# Bluetooth SSP2-BT offload topologies for ACE1/ACE2 and ACE3 HDA platforms +"sof-hda-generic\;sof-hda-generic-ace1-bt\;PLATFORM=mtl,HDA_CONFIG=mix,HDA_MIC_ENHANCED_CAPTURE=true,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-ace1-bt.bin,\ +BT_PCM_ID=20,BT_ID=8,BT_PCM_NAME=Bluetooth,ADD_BT=true,\ +EFX_HDA_MIC_TDFB_PARAMS=line2_pass,EFX_HDA_MIC_DRC_PARAMS=passthrough" + +"sof-hda-generic\;sof-hda-generic-ace3-bt\;PLATFORM=ptl,HDA_CONFIG=mix,HDA_MIC_ENHANCED_CAPTURE=true,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-ace3-bt.bin,\ +BT_PCM_ID=20,BT_ID=8,BT_PCM_NAME=Bluetooth,ADD_BT=true,\ +EFX_HDA_MIC_TDFB_PARAMS=line2_pass,EFX_HDA_MIC_DRC_PARAMS=passthrough" + +"sof-hda-generic\;sof-hda-generic-ace3-2ch-bt\;PLATFORM=ptl,HDA_CONFIG=mix,NUM_DMICS=2,\ +BT_PCM_ID=20,BT_ID=8,BT_PCM_NAME=Bluetooth,ADD_BT=true,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-ace3-2ch-bt.bin,\ +DMIC0_ENHANCED_CAPTURE=true,EFX_DMIC0_TDFB_PARAMS=line2_generic_pm10deg,\ +EFX_DMIC0_DRC_PARAMS=dmic_default" + +"sof-hda-generic\;sof-hda-generic-ace3-4ch-bt\;PLATFORM=ptl,HDA_CONFIG=mix,NUM_DMICS=4,\ +PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ +BT_PCM_ID=20,BT_ID=8,BT_PCM_NAME=Bluetooth,ADD_BT=true,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-ace3-4ch-bt.bin,DMIC0_ENHANCED_CAPTURE=true,\ +EFX_DMIC0_TDFB_PARAMS=line4_pass,EFX_DMIC0_DRC_PARAMS=dmic_default" ) diff --git a/tools/topology/topology2/sof-hda-generic.conf b/tools/topology/topology2/sof-hda-generic.conf index fddf1c76f7b6..a306699fb30c 100644 --- a/tools/topology/topology2/sof-hda-generic.conf +++ b/tools/topology/topology2/sof-hda-generic.conf @@ -40,13 +40,15 @@ + - + + @@ -55,6 +57,7 @@ Define { HDA_CONFIG "none" PLATFORM "none" NUM_DMICS 0 + ADD_BT false # doesn't it need to define DMIC0_HOST_PIPELINE_SINK and DMIC0_DAI_PIPELINE_SRC? DMIC0_HOST_PIPELINE_SINK 'host-copier.6.capture' DMIC0_DAI_PIPELINE_SRC 'module-copier.12.2' @@ -70,6 +73,10 @@ IncludeByKey.PLATFORM { "ptl" "platform/intel/ptl.conf" } +IncludeByKey.ADD_BT { + "true" "platform/intel/bt-generic.conf" +} + # include HDA config if needed. IncludeByKey.HDA_CONFIG { "mix" "cavs-mixin-mixout-hda.conf" From 84e9247e88ecc8144d6745edb4afe9d7ab2b0f3b Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Wed, 11 Nov 2026 12:43:08 +0000 Subject: [PATCH 3/3] app/boards: ace15_mtpm: enable CONFIG_DMA_DW_FIFO_PARTITION Enable CONFIG_DMA_DW_FIFO_PARTITION=y on ACE 1.5 (MTL/ARL-S) matching CAVS 2.5 so dw_dma_setup() partitions the LP-GPDMA hardware FIFO instead of leaving FIFO partition sizes at zero, preventing immediate SSP2-BT GATEWAY_UNDERRUN_DETECTED errors. Signed-off-by: Liam Girdwood --- app/boards/intel_adsp_ace15_mtpm.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/app/boards/intel_adsp_ace15_mtpm.conf b/app/boards/intel_adsp_ace15_mtpm.conf index 65cf5a620db1..a967959f531c 100644 --- a/app/boards/intel_adsp_ace15_mtpm.conf +++ b/app/boards/intel_adsp_ace15_mtpm.conf @@ -72,6 +72,7 @@ CONFIG_DAI_DMIC_HAS_MULTIPLE_LINE_SYNC=y CONFIG_DAI_DMIC_HW_IOCLK=38400000 CONFIG_DAI_INIT_PRIORITY=70 CONFIG_DMA_DW_LLI_POOL_SIZE=50 +CONFIG_DMA_DW_FIFO_PARTITION=y CONFIG_DMA_INTEL_ADSP_GPDMA=y CONFIG_MEMORY_WIN_2_SIZE=12288 CONFIG_MM_DRV_INTEL_ADSP_TLB_REMAP_UNUSED_RAM=y