sof/tools/topology/topology2/cavs-nocodec-multicore.conf

782 lines
15 KiB
Plaintext

<searchdir:include>
<searchdir:include/common>
<searchdir:include/components>
<searchdir:include/dais>
<searchdir:include/pipelines/cavs>
<searchdir:platform>
<searchdir:platform/intel>
<vendor-token.conf>
<manifest.conf>
<pdm_config.conf>
<tokens.conf>
<virtual.conf>
<host-gateway-capture.conf>
<io-gateway-capture.conf>
<host-copier-gain-mixin-playback.conf>
<mixout-gain-dai-copier-playback.conf>
<gain-module-copier.conf>
<gain-capture.conf>
<gain-copier-capture.conf>
<dai-copier-eqiir-module-copier-capture.conf>
<mixout-mixin.conf>
<data.conf>
<pcm.conf>
<pcm_caps.conf>
<fe_dai.conf>
<ssp.conf>
<dmic.conf>
<intel/hw_config_cardinal_clk.conf>
<manifest.conf>
<route.conf>
<intel/common_definitions.conf>
<dai-copier.conf>
<module-copier.conf>
<pipeline.conf>
<dai.conf>
<host.conf>
<kpb.conf>
<input_pin_binding.conf>
<output_pin_binding.conf>
<input_audio_format.conf>
<output_audio_format.conf>
<dmic-default.conf>
Define {
MCLK 24576000
PLATFORM "none"
SSP0_CORE_ID 0
SSP1_CORE_ID 1
SSP2_CORE_ID 2
NUM_DMICS 0
# override DMIC default definitions
DMIC0_HOST_PIPELINE_ID 20
DMIC0_DAI_PIPELINE_ID 21
DMIC0_HOST_PIPELINE_SINK 'gain.20.1'
DMIC0_DAI_PIPELINE_SRC 'module-copier.21.2'
DMIC0_DAI_COPIER 'dai-copier.DMIC.NoCodec-6.capture'
DMIC0_DAI_GAIN 'eqiir.21.1'
DMIC0_PCM_CAPS 'Gain Capture 20'
DMIC1_PCM_CAPS 'DMIC1 WOV Capture'
DMIC0_NAME 'NoCodec-6'
DMIC1_NAME 'NoCodec-7'
DMIC0_PCM_0_NAME "DMIC SFX1"
DMIC0_PCM_1_NAME "DMIC SFX2"
DMIC0_PCM_0_PCM_ID 27
DMIC0_PCM_1_PCM_ID 28
SSP0_PCM_NAME "Port0"
SSP1_PCM_NAME "Port1"
SSP2_PCM_NAME "Port2"
}
# override defaults with platform-specific config
IncludeByKey.PLATFORM {
"tgl" "platform/intel/tgl.conf"
"adl" "platform/intel/tgl.conf"
"mtl" "platform/intel/mtl.conf"
}
# include DMIC config if needed.
IncludeByKey.NUM_DMICS {
"[1-4]" "platform/intel/dmic-generic.conf"
}
#
# List of all DAIs
#
Object.Dai.SSP [
{
id 0
dai_index 0
direction "duplex"
name NoCodec-0
default_hw_conf_id 0
sample_bits 32
quirks "lbm_mode"
io_clk $MCLK
Object.Base.hw_config.1 {
name "SSP0"
id 0
bclk_freq 3072000
tdm_slot_width 32
# TODO: remove this. Needs alsaptlg change.
Object.Base.link_config.1 {
clock_source 1
}
}
}
{
id 2
dai_index 2
direction "duplex"
name NoCodec-2
default_hw_conf_id 0
sample_bits 32
quirks "lbm_mode"
io_clk $MCLK
Object.Base.hw_config.1 {
name "SSP2"
id 0
bclk_freq 3072000
tdm_slot_width 32
# TODO: remove this. Needs alsaptlg change.
Object.Base.link_config.1 {
clock_source 1
}
}
}
]
#
# Pipeline definitions
#
# PCM0 ---> gain ---> Mixin ---> Mixout ---> gain ---> SSP0 (core SSP0_CORE_ID)
# PCM1 ---> gain ---> Mixin ---> Mixout ---> gain ---> SSP1 (core SSP1_CORE_ID)
# PCM2 ---> gain ---> Mixin ---> Mixout ---> gain ---> SSP2 (core SSP2_CORE_ID)
# SSP0 ---> PCM0
# SSP1 ---> PCM1
# SSP2 ---> PCM2
# Pipeline ID:1 PCM ID: 0
Object.Pipeline.host-copier-gain-mixin-playback [
{
index 1
core $SSP0_CORE_ID
Object.Widget.host-copier.1 {
core_id $SSP0_CORE_ID
stream_name 'SSP0 Playback'
pcm_id 0
}
Object.Widget.gain.1 {
core_id $SSP0_CORE_ID
Object.Control.mixer.1 {
name 'Pre Mixer $SSP0_PCM_NAME Playback Volume'
}
}
}
{
index 5
core $SSP2_CORE_ID
Object.Widget.host-copier.1 {
core_id $SSP2_CORE_ID
stream_name 'SSP2 Playback'
pcm_id 2
}
Object.Widget.gain.1 {
core_id $SSP2_CORE_ID
Object.Control.mixer.1 {
name 'Pre Mixer $SSP2_PCM_NAME Playback Volume'
}
}
Object.Widget.mixin.1 {
core_id $SSP2_CORE_ID
}
}
]
Object.Pipeline.mixout-gain-dai-copier-playback [
{
index 14
core $SSP0_CORE_ID
Object.Widget.dai-copier.1 {
core_id $SSP0_CORE_ID
dai_index 0
dai_type "SSP"
copier_type "SSP"
stream_name "NoCodec-0"
node_type $I2S_LINK_OUTPUT_CLASS
}
Object.Widget.gain.1 {
core_id $SSP0_CORE_ID
Object.Control.mixer.1 {
name 'Post Mixer $SSP0_PCM_NAME Playback Volume'
}
}
}
{
index 6
core $SSP2_CORE_ID
Object.Widget.dai-copier.1 {
core_id $SSP2_CORE_ID
dai_index 2
dai_type "SSP"
copier_type "SSP"
stream_name "NoCodec-2"
node_type $I2S_LINK_OUTPUT_CLASS
}
Object.Widget.gain.1 {
core_id $SSP2_CORE_ID
Object.Control.mixer.1 {
name 'Post Mixer $SSP2_PCM_NAME Playback Volume'
}
}
Object.Widget.mixout.1 {
core_id $SSP2_CORE_ID
}
}
]
Object.Pipeline.host-gateway-capture [
{
index 7
Object.Widget.host-copier.1 {
stream_name 'SSP0 Capture'
pcm_id 0
}
}
{
index 11
Object.Widget.host-copier.1 {
stream_name 'SSP2 Capture'
pcm_id 2
}
}
]
Object.Pipeline.io-gateway-capture [
{
index 8
direction capture
Object.Widget.dai-copier."1" {
dai_index 0
dai_type "SSP"
type dai_out
copier_type "SSP"
stream_name "NoCodec-0"
node_type $I2S_LINK_INPUT_CLASS
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]
}
}
{
index 12
direction capture
Object.Widget.dai-copier."1" {
dai_index 2
dai_type "SSP"
type dai_out
copier_type "SSP"
stream_name "NoCodec-2"
node_type $I2S_LINK_INPUT_CLASS
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]
}
}
]
IncludeByKey.PASSTHROUGH {
"false" {
Object.Pipeline.gain-module-copier [
{
index 19
core_id $DMIC_CORE_ID
direction "capture"
Object.Widget.pipeline.1 {
stream_name $DMIC0_DAI_COPIER
core $DMIC_CORE_ID
}
Object.Widget.module-copier.1 {
stream_name 'Gain Capture 19'
num_input_audio_formats 2
num_output_audio_formats 2
Object.Base.audio_format.1 {
in_bit_depth 32
in_valid_bit_depth 32
out_bit_depth 32
out_valid_bit_depth 32
}
Object.Base.audio_format.2 {
in_channels 4
in_bit_depth 32
in_valid_bit_depth 32
out_channels 4
out_bit_depth 32
out_valid_bit_depth 32
in_ch_cfg $CHANNEL_CONFIG_3_POINT_1
in_ch_map $CHANNEL_MAP_3_POINT_1
out_ch_cfg $CHANNEL_CONFIG_3_POINT_1
out_ch_map $CHANNEL_MAP_3_POINT_1
}
}
Object.Widget.gain.1 {
num_input_audio_formats 2
num_output_audio_formats 2
Object.Base.audio_format.1 {
in_bit_depth 32
in_valid_bit_depth 32
out_bit_depth 32
out_valid_bit_depth 32
}
Object.Base.audio_format.2 {
in_channels 4
in_bit_depth 32
in_valid_bit_depth 32
out_channels 4
out_bit_depth 32
out_valid_bit_depth 32
in_ch_cfg $CHANNEL_CONFIG_3_POINT_1
in_ch_map $CHANNEL_MAP_3_POINT_1
out_ch_cfg $CHANNEL_CONFIG_3_POINT_1
out_ch_map $CHANNEL_MAP_3_POINT_1
}
Object.Control.mixer.1 {
name 'Pre Demux $DMIC0_PCM_0_NAME Capture Volume'
}
}
}
]
Object.Pipeline.gain-capture [
{
format $FORMAT
core_id $DMIC_CORE_ID
index 18
Object.Widget.pipeline.1 {
stream_name "$DMIC0_PCM_0_NAME"
core $DMIC_CORE_ID
}
Object.Widget.host-copier.1 {
stream_name "Gain Capture 18"
pcm_id $DMIC0_PCM_0_PCM_ID
num_input_audio_formats 2
num_output_audio_formats 2
Object.Base.audio_format.1 {
in_bit_depth 32
in_valid_bit_depth 32
out_bit_depth 32
out_valid_bit_depth 32
}
Object.Base.audio_format.2 {
in_channels 4
in_bit_depth 32
in_valid_bit_depth 32
out_channels 4
out_bit_depth 32
out_valid_bit_depth 32
in_ch_cfg $CHANNEL_CONFIG_3_POINT_1
in_ch_map $CHANNEL_MAP_3_POINT_1
out_ch_cfg $CHANNEL_CONFIG_3_POINT_1
out_ch_map $CHANNEL_MAP_3_POINT_1
}
}
Object.Widget.gain.1 {
num_input_audio_formats 2
num_output_audio_formats 2
Object.Base.audio_format.1 {
in_bit_depth 32
in_valid_bit_depth 32
out_bit_depth 32
out_valid_bit_depth 32
}
Object.Base.audio_format.2 {
in_channels 4
in_bit_depth 32
in_valid_bit_depth 32
out_channels 4
out_bit_depth 32
out_valid_bit_depth 32
in_ch_cfg $CHANNEL_CONFIG_3_POINT_1
in_ch_map $CHANNEL_MAP_3_POINT_1
out_ch_cfg $CHANNEL_CONFIG_3_POINT_1
out_ch_map $CHANNEL_MAP_3_POINT_1
}
Object.Control.mixer.1 {
name 'Post Demux $DMIC0_PCM_0_NAME Capture Volume'
}
}
}
{
format $FORMAT
index 22
core_id $DMIC_CORE_ID
Object.Widget.pipeline.1 {
stream_name "$DMIC0_PCM_1_NAME"
core $DMIC_CORE_ID
}
Object.Widget.host-copier.1 {
stream_name "Gain Capture 22"
pcm_id $DMIC0_PCM_1_PCM_ID
num_input_audio_formats 2
num_output_audio_formats 2
Object.Base.audio_format.1 {
in_bit_depth 32
in_valid_bit_depth 32
out_bit_depth 32
out_valid_bit_depth 32
}
Object.Base.audio_format.2 {
in_channels 4
in_bit_depth 32
in_valid_bit_depth 32
out_channels 4
out_bit_depth 32
out_valid_bit_depth 32
in_ch_cfg $CHANNEL_CONFIG_3_POINT_1
in_ch_map $CHANNEL_MAP_3_POINT_1
out_ch_cfg $CHANNEL_CONFIG_3_POINT_1
out_ch_map $CHANNEL_MAP_3_POINT_1
}
}
Object.Widget.gain.1 {
num_input_audio_formats 2
num_output_audio_formats 2
Object.Base.audio_format.1 {
in_bit_depth 32
in_valid_bit_depth 32
out_bit_depth 32
out_valid_bit_depth 32
}
Object.Base.audio_format.2 {
in_channels 4
in_bit_depth 32
in_valid_bit_depth 32
out_channels 4
out_bit_depth 32
out_valid_bit_depth 32
in_ch_cfg $CHANNEL_CONFIG_3_POINT_1
in_ch_map $CHANNEL_MAP_3_POINT_1
out_ch_cfg $CHANNEL_CONFIG_3_POINT_1
out_ch_map $CHANNEL_MAP_3_POINT_1
}
Object.Control.mixer.1 {
name 'Post Demux $DMIC0_PCM_1_NAME Capture Volume'
}
}
}
]
}
}
Object.PCM.pcm [
{
name "$SSP0_PCM_NAME"
id 0
direction "duplex"
Object.Base.fe_dai.1 {
name "$SSP0_PCM_NAME"
}
Object.PCM.pcm_caps.1 {
direction "playback"
name "SSP0 Playback"
formats 'S16_LE,S24_LE,S32_LE'
}
Object.PCM.pcm_caps.2 {
direction "capture"
name "SSP0 Capture"
formats 'S16_LE,S24_LE,S32_LE'
}
}
{
name "$SSP2_PCM_NAME"
id 2
direction "duplex"
Object.Base.fe_dai.1 {
name "$SSP2_PCM_NAME"
}
Object.PCM.pcm_caps.1 {
direction "playback"
name "SSP2 Playback"
formats 'S16_LE,S24_LE,S32_LE'
}
Object.PCM.pcm_caps.2 {
direction "capture"
name "SSP2 Capture"
formats 'S16_LE,S24_LE,S32_LE'
}
}
]
IncludeByKey.PASSTHROUGH {
"false" {
Object.PCM.pcm [
{
name "$DMIC0_PCM_0_NAME"
id $DMIC0_PCM_0_PCM_ID
direction "capture"
Object.Base.fe_dai."$DMIC0_PCM_0_NAME" {}
Object.PCM.pcm_caps."capture" {
name "Gain Capture 18"
# only 32-bit capture supported now
formats 'S32_LE'
channels_min $NUM_DMICS
channels_max $NUM_DMICS
}
}
{
name "$DMIC0_PCM_1_NAME"
id $DMIC0_PCM_1_PCM_ID
direction "capture"
Object.Base.fe_dai."$DMIC0_PCM_1_NAME" {}
Object.PCM.pcm_caps."capture" {
name "Gain Capture 22"
# only 32-bit capture supported now
formats 'S32_LE'
channels_min $NUM_DMICS
channels_max $NUM_DMICS
}
}
]
}
}
Object.Base.route [
{
source "gain.14.1"
sink "dai-copier.SSP.NoCodec-0.playback"
}
{
source "mixin.1.1"
sink "mixout.14.1"
}
{
source "gain.6.1"
sink "dai-copier.SSP.NoCodec-2.playback"
}
{
source "mixin.5.1"
sink "mixout.6.1"
}
{
source "dai-copier.SSP.NoCodec-0.capture"
sink "host-copier.0.capture"
}
{
source "dai-copier.SSP.NoCodec-2.capture"
sink "host-copier.2.capture"
}
{
source 'host-copier.0.playback'
sink 'gain.1.1'
}
{
source 'host-copier.2.playback'
sink 'gain.5.1'
}
]
IncludeByKey.PASSTHROUGH {
"false" {
Object.Base.route [
{
source $DMIC0_DAI_PIPELINE_SRC
sink gain.19.1
}
{
source module-copier.19.1
sink gain.18.1
}
{
source module-copier.19.1
sink gain.22.1
}
{
source "gain.18.1"
sink "host-copier.$DMIC0_PCM_0_PCM_ID.capture"
}
{
source "gain.22.1"
sink "host-copier.$DMIC0_PCM_1_PCM_ID.capture"
}
]
}
}
# There is pinmux conflict between SSP1 and DMIC on MTL RVP,
# so include SSP1 pipelines conditionally.
IncludeByKey.SSP1_ENABLED {
"true" {
Object.Dai.SSP [
{
id 1
dai_index 1
direction "duplex"
name NoCodec-1
default_hw_conf_id 0
sample_bits 32
quirks "lbm_mode"
io_clk $MCLK
Object.Base.hw_config.1 {
name "SSP1"
id 0
bclk_freq 3072000
tdm_slot_width 32
# TODO: remove this. Needs alsaptlg change.
Object.Base.link_config.1 {
clock_source 1
}
}
}
]
Object.Pipeline.host-copier-gain-mixin-playback [
{
index 3
core $SSP1_CORE_ID
Object.Widget.host-copier.1 {
core_id $SSP1_CORE_ID
stream_name 'SSP1 Playback'
pcm_id 1
}
Object.Widget.gain.1 {
core_id $SSP1_CORE_ID
Object.Control.mixer.1 {
name 'Pre Mixer $SSP1_PCM_NAME Playback Volume'
}
}
Object.Widget.mixin.1 {
core_id $SSP1_CORE_ID
}
}
]
Object.Pipeline.mixout-gain-dai-copier-playback [
{
index 4
core $SSP1_CORE_ID
Object.Widget.dai-copier.1 {
core_id $SSP1_CORE_ID
dai_index 1
dai_type "SSP"
copier_type "SSP"
stream_name "NoCodec-1"
node_type $I2S_LINK_OUTPUT_CLASS
}
Object.Widget.gain.1 {
core_id $SSP1_CORE_ID
Object.Control.mixer.1 {
name 'Post Mixer $SSP1_PCM_NAME Playback Volume'
}
}
Object.Widget.mixout.1 {
core_id $SSP1_CORE_ID
}
}
]
Object.Pipeline.host-gateway-capture [
{
index 9
Object.Widget.host-copier.1 {
stream_name 'SSP1 Capture'
pcm_id 1
}
}
]
Object.Pipeline.io-gateway-capture [
{
index 10
direction capture
Object.Widget.dai-copier."1" {
dai_index 1
dai_type "SSP"
type dai_out
copier_type "SSP"
stream_name "NoCodec-1"
node_type $I2S_LINK_INPUT_CLASS
Object.Base.input_audio_format [
{
in_bit_depth 32
in_valid_bit_depth 32
}
]
Object.Base.output_audio_format [
{
out_bit_depth 32
out_valid_bit_depth 32
}
]
}
}
]
Object.PCM.pcm [
{
name "$SSP1_PCM_NAME"
id 1
direction "duplex"
Object.Base.fe_dai.1 {
name "$SSP1_PCM_NAME"
}
Object.PCM.pcm_caps.1 {
direction "playback"
name "SSP1 Playback"
formats 'S16_LE,S24_LE,S32_LE'
}
Object.PCM.pcm_caps.2 {
direction "capture"
name "SSP1 Capture"
formats 'S16_LE,S24_LE,S32_LE'
}
}
]
Object.Base.route [
{
source "mixin.3.1"
sink "mixout.4.1"
}
{
source "gain.4.1"
sink "dai-copier.SSP.NoCodec-1.playback"
}
{
source "dai-copier.SSP.NoCodec-1.capture"
sink "host-copier.1.capture"
}
{
source 'host-copier.1.playback'
sink 'gain.3.1'
}
]
}
}