From 2a9d7f7b036cef96aa0bc652aa7d218b027cbe6e Mon Sep 17 00:00:00 2001 From: Ranjani Sridharan Date: Mon, 3 Apr 2023 09:10:35 -0700 Subject: [PATCH 1/2] topology2: ssp: Add blob version Add the SSP blob version and set it based on the platform. Co-developed-by: Jaska Uimonen Signed-off-by: Jaska Uimonen Signed-off-by: Ranjani Sridharan --- tools/topology/topology2/avs-tplg/tplg-targets.cmake | 5 +++-- tools/topology/topology2/cavs-nocodec-bt.conf | 2 ++ tools/topology/topology2/cavs-nocodec.conf | 2 ++ tools/topology/topology2/common_definitions.conf | 3 +++ .../topology2/development/tplg-targets.cmake | 5 +++-- tools/topology/topology2/include/dais/ssp.conf | 12 ++++++++++++ tools/topology/topology2/platform/intel/mtl.conf | 1 + tools/topology/topology2/platform/intel/tgl.conf | 4 ++++ 8 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 tools/topology/topology2/platform/intel/tgl.conf diff --git a/tools/topology/topology2/avs-tplg/tplg-targets.cmake b/tools/topology/topology2/avs-tplg/tplg-targets.cmake index 403f3b407a59..63ea74e7e2f1 100644 --- a/tools/topology/topology2/avs-tplg/tplg-targets.cmake +++ b/tools/topology/topology2/avs-tplg/tplg-targets.cmake @@ -40,8 +40,9 @@ DMIC1_ID=3,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,HDMI1_ID=4,HDMI2_ID=5,\ HDMI3_ID=6,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-adl-rt711-4ch.bin" # BT offload -"cavs-nocodec-bt\;sof-nocodec-bt\;PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-nocodec-bt.bin" +"cavs-nocodec-bt\;sof-nocodec-bt\;PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-nocodec-bt.bin,\ +PLATFORM=tgl" # BT offload loopback test topology (lbm) -"cavs-nocodec-bt\;sof-nocodec-bt-lbm\;BT_LOOPBACK_MODE=true,\ +"cavs-nocodec-bt\;sof-nocodec-bt-lbm\;BT_LOOPBACK_MODE=true,PLATFORM=tgl,\ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-nocodec-bt-lbm.bin" ) diff --git a/tools/topology/topology2/cavs-nocodec-bt.conf b/tools/topology/topology2/cavs-nocodec-bt.conf index 018aa4db29ea..72457c075d07 100644 --- a/tools/topology/topology2/cavs-nocodec-bt.conf +++ b/tools/topology/topology2/cavs-nocodec-bt.conf @@ -56,6 +56,8 @@ Define { # override defaults with platform-specific config IncludeByKey.PLATFORM { + "tgl" "platform/intel/tgl.conf" + "adl" "platform/intel/tgl.conf" "mtl" "platform/intel/mtl.conf" } diff --git a/tools/topology/topology2/cavs-nocodec.conf b/tools/topology/topology2/cavs-nocodec.conf index 7eb3ca8808c3..01926e220c9a 100644 --- a/tools/topology/topology2/cavs-nocodec.conf +++ b/tools/topology/topology2/cavs-nocodec.conf @@ -81,6 +81,8 @@ Define { # override defaults with platform-specific config IncludeByKey.PLATFORM { + "tgl" "platform/intel/tgl.conf" + "adl" "platform/intel/tgl.conf" "mtl" "platform/intel/mtl.conf" } diff --git a/tools/topology/topology2/common_definitions.conf b/tools/topology/topology2/common_definitions.conf index fa740341ae0d..f4d49718f559 100644 --- a/tools/topology/topology2/common_definitions.conf +++ b/tools/topology/topology2/common_definitions.conf @@ -58,4 +58,7 @@ Define { SPI_INPUT_CLASS 26 # SPI Input (DSP <-) DEEPBUFFER_FW_DMA_MS 100 # 100 ms copier dma size + + SSP_BLOB_VERSION_1_0 0x100 + SSP_BLOB_VERSION_1_5 0x105 } diff --git a/tools/topology/topology2/development/tplg-targets.cmake b/tools/topology/topology2/development/tplg-targets.cmake index fa722bf2857f..faed8382d4a1 100644 --- a/tools/topology/topology2/development/tplg-targets.cmake +++ b/tools/topology/topology2/development/tplg-targets.cmake @@ -14,10 +14,11 @@ set(TPLGS # CAVS SSP topology for TGL "cavs-nocodec\;sof-tgl-nocodec\;NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-tgl-nocodec.bin,DEEPBUFFER_FW_DMA_MS=100,\ -SSP0_MIXER_2LEVEL=1" +SSP0_MIXER_2LEVEL=1,PLATFORM=tgl" "cavs-nocodec\;sof-adl-nocodec\;NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-adl-nocodec.bin,DEEPBUFFER_FW_DMA_MS=100" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-adl-nocodec.bin,DEEPBUFFER_FW_DMA_MS=100,\ +PLATFORM=adl" # SDW topology for MTL "cavs-sdw\;mtl-sdw\;NUM_HDMIS=0" diff --git a/tools/topology/topology2/include/dais/ssp.conf b/tools/topology/topology2/include/dais/ssp.conf index c1388cdfde42..673b4d3dcfd9 100644 --- a/tools/topology/topology2/include/dais/ssp.conf +++ b/tools/topology/topology2/include/dais/ssp.conf @@ -111,6 +111,16 @@ Class.Dai."SSP" { # platform clock frequency DefineAttribute.io_clk {} + # SSP blob version + DefineAttribute.version { + constraints { + !valid_values [ + $SSP_BLOB_VERSION_1_0 + $SSP_BLOB_VERSION_1_5 + ] + } + } + attributes { !constructor [ "name" @@ -139,4 +149,6 @@ Class.Dai."SSP" { clks_control 0 frame_pulse_width 0 tdm_padding_per_slot false + # SSP_BLOB_VERSION must be defined in the top-level topology file + version $SSP_BLOB_VERSION } diff --git a/tools/topology/topology2/platform/intel/mtl.conf b/tools/topology/topology2/platform/intel/mtl.conf index f6fa1c1124c3..460c5a0ee770 100644 --- a/tools/topology/topology2/platform/intel/mtl.conf +++ b/tools/topology/topology2/platform/intel/mtl.conf @@ -1,4 +1,5 @@ # MTL-specific variable definitions Define { DMIC_DRIVER_VERSION 3 + SSP_BLOB_VERSION 0x105 } diff --git a/tools/topology/topology2/platform/intel/tgl.conf b/tools/topology/topology2/platform/intel/tgl.conf new file mode 100644 index 000000000000..8f8df2db4b7d --- /dev/null +++ b/tools/topology/topology2/platform/intel/tgl.conf @@ -0,0 +1,4 @@ +# TGL/ADL-specific variable definitions +Define { + SSP_BLOB_VERSION 0x100 +} From 88fc7646bd300a5c81ba353ec9cda0b00a7a703d Mon Sep 17 00:00:00 2001 From: Ranjani Sridharan Date: Tue, 4 Apr 2023 14:51:19 -0700 Subject: [PATCH 2/2] topology2: Move the hw_config class definition Move and rename the hw_config class to platform/intel/hw_config_cardinal_clk.conf. This hw_config is specific to Intel SSP DAI that use the cardinal clock for the mclk frequency. Ideally, this class should have immutable mclk_frequency and link clock source. But because the alsatplg compiler expects the name of the hw config class to be "hw_config" without any extensions, it is left as modifiable for now. Once the topology compiler is modified, this will be made immutable in a follow up PR. Also, introduce a new hw_config_simple.conf file that contains the hw_config definition for the HDA/DMIC/SDW type DAIs with only the ID and name attributes. Signed-off-by: Ranjani Sridharan --- tools/topology/topology2/cavs-nocodec-bt.conf | 13 ++++-- tools/topology/topology2/cavs-nocodec.conf | 18 +++++++-- tools/topology/topology2/cavs-rt5682.conf | 13 ++++-- .../topology2/cavs-sdw-src-gain-mixin.conf | 3 +- tools/topology/topology2/cavs-sdw.conf | 2 +- .../include/dais/hw_config_simple.conf | 35 ++++++++++++++++ .../platform/intel/bt-ssp-config-lbm.conf | 9 +++++ .../platform/intel/bt-ssp-config.conf | 9 +++++ .../intel/hw_config_cardinal_clk.conf} | 40 ++++++++++++++----- .../intel/ssp_aux_config.conf} | 0 tools/topology/topology2/sof-hda-generic.conf | 2 +- 11 files changed, 121 insertions(+), 23 deletions(-) create mode 100644 tools/topology/topology2/include/dais/hw_config_simple.conf rename tools/topology/topology2/{include/dais/hw_config.conf => platform/intel/hw_config_cardinal_clk.conf} (60%) rename tools/topology/topology2/{include/dais/intel/intel_ssp_aux_config.conf => platform/intel/ssp_aux_config.conf} (100%) diff --git a/tools/topology/topology2/cavs-nocodec-bt.conf b/tools/topology/topology2/cavs-nocodec-bt.conf index 72457c075d07..7954ed1142b4 100644 --- a/tools/topology/topology2/cavs-nocodec-bt.conf +++ b/tools/topology/topology2/cavs-nocodec-bt.conf @@ -3,6 +3,7 @@ + @@ -20,7 +21,7 @@ - + @@ -83,9 +84,12 @@ Object.Dai.SSP [ Object.Base.hw_config.1 { name "SSP0" id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } { @@ -101,9 +105,12 @@ Object.Dai.SSP [ Object.Base.hw_config.1 { name "SSP1" id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } ] diff --git a/tools/topology/topology2/cavs-nocodec.conf b/tools/topology/topology2/cavs-nocodec.conf index 01926e220c9a..3147fae8516c 100644 --- a/tools/topology/topology2/cavs-nocodec.conf +++ b/tools/topology/topology2/cavs-nocodec.conf @@ -3,6 +3,7 @@ + @@ -30,7 +31,7 @@ - + @@ -113,9 +114,12 @@ Object.Dai.SSP [ Object.Base.hw_config.1 { name "SSP0" id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } { @@ -131,9 +135,12 @@ Object.Dai.SSP [ Object.Base.hw_config.1 { name "SSP2" id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } ] @@ -695,9 +702,12 @@ IncludeByKey.SSP1_ENABLED { Object.Base.hw_config.1 { name "SSP1" id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } ] diff --git a/tools/topology/topology2/cavs-rt5682.conf b/tools/topology/topology2/cavs-rt5682.conf index b28b05f4402d..870401e02863 100644 --- a/tools/topology/topology2/cavs-rt5682.conf +++ b/tools/topology/topology2/cavs-rt5682.conf @@ -3,6 +3,7 @@ + @@ -27,7 +28,7 @@ - + @@ -132,9 +133,12 @@ Object.Dai.SSP [ Object.Base.hw_config.1 { name $HEADSET_HW_CONFIG_NAME id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } { @@ -157,9 +161,12 @@ Object.Dai.SSP [ Object.Base.hw_config.1 { name $SPEAKER_HW_CONFIG_NAME id 0 - mclk_freq $MCLK bclk_freq 3072000 tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } } } ] diff --git a/tools/topology/topology2/cavs-sdw-src-gain-mixin.conf b/tools/topology/topology2/cavs-sdw-src-gain-mixin.conf index 50a9f9b15d6f..cc2af063ffd3 100644 --- a/tools/topology/topology2/cavs-sdw-src-gain-mixin.conf +++ b/tools/topology/topology2/cavs-sdw-src-gain-mixin.conf @@ -4,6 +4,7 @@ + @@ -17,7 +18,7 @@ - + diff --git a/tools/topology/topology2/cavs-sdw.conf b/tools/topology/topology2/cavs-sdw.conf index 43fb1f87541e..fa11bd61e201 100644 --- a/tools/topology/topology2/cavs-sdw.conf +++ b/tools/topology/topology2/cavs-sdw.conf @@ -27,7 +27,7 @@ - + diff --git a/tools/topology/topology2/include/dais/hw_config_simple.conf b/tools/topology/topology2/include/dais/hw_config_simple.conf new file mode 100644 index 000000000000..e87daa36ed52 --- /dev/null +++ b/tools/topology/topology2/include/dais/hw_config_simple.conf @@ -0,0 +1,35 @@ +# Simple hardware config class definition for HDA/SDW/DMIC type DAIs. All attributes defined herein +# are namespaced by alsatplg to "Object.Base.hw_config.1.attribute_name" +# +# Object.Base.hw_config.1 { +# id 0 +# name "HDA0" +# } +# +# where 1 is the unique instance ID for the hw_config object within the same alsaconf +# node. + +Class.Base."hw_config" { + # + # Argument used to construct hw config (hw config ID) + # + DefineAttribute."id" {} + DefineAttribute."instance" {} + + DefineAttribute."name" { + type "string" + } + + attributes { + !constructor [ + "id" + ] + !mandatory [ + "name" + ] + # + # hw_config objects instantiated within the same alsaconf node must have unique + # 'instance' attribute + unique "instance" + } +} diff --git a/tools/topology/topology2/platform/intel/bt-ssp-config-lbm.conf b/tools/topology/topology2/platform/intel/bt-ssp-config-lbm.conf index 39f4a143c83f..afbc6c2ba267 100644 --- a/tools/topology/topology2/platform/intel/bt-ssp-config-lbm.conf +++ b/tools/topology/topology2/platform/intel/bt-ssp-config-lbm.conf @@ -22,6 +22,9 @@ Object.Dai.SSP [ tdm_slots 1 tx_slots 1 rx_slots 1 + Object.Base.link_config.1 { + clock_source 0 + } } Object.Base.hw_config.2 { id 1 @@ -37,6 +40,9 @@ Object.Dai.SSP [ tdm_slots 1 tx_slots 1 rx_slots 1 + Object.Base.link_config.1 { + clock_source 0 + } } Object.Base.hw_config.3 { id 2 @@ -51,6 +57,9 @@ Object.Dai.SSP [ tdm_slots 2 tx_slots 3 rx_slots 3 + Object.Base.link_config.1 { + clock_source 0 + } } } ] diff --git a/tools/topology/topology2/platform/intel/bt-ssp-config.conf b/tools/topology/topology2/platform/intel/bt-ssp-config.conf index 11a4919a9a4b..edce4b8d1399 100644 --- a/tools/topology/topology2/platform/intel/bt-ssp-config.conf +++ b/tools/topology/topology2/platform/intel/bt-ssp-config.conf @@ -21,6 +21,9 @@ Object.Dai.SSP [ tdm_slots 1 tx_slots 1 rx_slots 1 + Object.Base.link_config.1 { + clock_source 0 + } } Object.Base.hw_config.2 { id 1 @@ -36,6 +39,9 @@ Object.Dai.SSP [ tdm_slots 1 tx_slots 1 rx_slots 1 + Object.Base.link_config.1 { + clock_source 0 + } } Object.Base.hw_config.3 { id 2 @@ -50,6 +56,9 @@ Object.Dai.SSP [ tdm_slots 2 tx_slots 3 rx_slots 0 + Object.Base.link_config.1 { + clock_source 0 + } } } ] diff --git a/tools/topology/topology2/include/dais/hw_config.conf b/tools/topology/topology2/platform/intel/hw_config_cardinal_clk.conf similarity index 60% rename from tools/topology/topology2/include/dais/hw_config.conf rename to tools/topology/topology2/platform/intel/hw_config_cardinal_clk.conf index 96cbc7cb5ce9..463e98f97d95 100644 --- a/tools/topology/topology2/include/dais/hw_config.conf +++ b/tools/topology/topology2/platform/intel/hw_config_cardinal_clk.conf @@ -1,15 +1,16 @@ -# Hardware config class definition DAIs. All attributes defined herein +# Hardware config class definition. All attributes defined herein # are namespaced by alsatplg to "Object.Base.hw_config.NAME.attribute_name" # -# Object.Base.hw_config."NAME" { +# Object.Base.hw_config.1 { # id 0 -# mclk_freq 24000000 -# bclk_freq 4800000 -# tdm_slot_width 25 +# bclk_freq 3072000 +# tdm_slot_width 32 # } # -# where NAME is the unique instance name for the hw_config object -# within the same alsaconf node. +# where 1 is the unique instance ID for the hw_config object within the same alsaconf +# node. + + Class.Base."hw_config" { # @@ -44,7 +45,21 @@ Class.Base."hw_config" { type "string" } - DefineAttribute."bclk_freq" {} + DefineAttribute."bclk_freq" { + constraints { + # Allowed values of bclk derived from mclk_freq of 24.576MHz + !valid_values [ + "12288000" + "6144000" + "3072000" + "1536000" + "768000" + "384000" + "256000" + "128000" + ] + } + } DefineAttribute."fsync" { type "string" @@ -68,15 +83,20 @@ Class.Base."hw_config" { "name" ] # - # hw_cfg objects instantiated within the same alsaconf node must have unique + # hw_config objects instantiated within the same alsaconf node must have unique # 'instance' attribute - # unique "instance" } + Object.Base.link_config.1 { + clock_source 1 + } + #TODO: Add link flags format "I2S" + # TODO: Make this immutable + mclk_freq 24576000 mclk "codec_mclk_in" bclk "codec_consumer" fsync "codec_consumer" diff --git a/tools/topology/topology2/include/dais/intel/intel_ssp_aux_config.conf b/tools/topology/topology2/platform/intel/ssp_aux_config.conf similarity index 100% rename from tools/topology/topology2/include/dais/intel/intel_ssp_aux_config.conf rename to tools/topology/topology2/platform/intel/ssp_aux_config.conf diff --git a/tools/topology/topology2/sof-hda-generic.conf b/tools/topology/topology2/sof-hda-generic.conf index 48cffaee2856..da6d5d76607d 100644 --- a/tools/topology/topology2/sof-hda-generic.conf +++ b/tools/topology/topology2/sof-hda-generic.conf @@ -28,7 +28,7 @@ - +