Define { MCLK 24576000 # override DMIC default definitions NUM_DMICS 0 DMIC0_ID 1 DMIC1_ID 2 DMIC0_HOST_PIPELINE_ID 13 DMIC0_DAI_PIPELINE_ID 14 DMIC0_HOST_PIPELINE_SINK 'gain.13.1' DMIC0_DAI_PIPELINE_SRC 'module-copier.14.2' DMIC0_DAI_COPIER 'dai-copier.DMIC.dmic01.capture' DMIC0_DAI_GAIN 'eqiir.14.1' DMIC0_NAME 'dmic01' DMIC0_PCM_CAPS 'Gain Capture 13' # override BE link ids NUM_HDMIS 3 HDMI1_ID 3 HDMI2_ID 4 HDMI3_ID 5 HDMI4_ID 6 SPK_ID 7 PLATFORM "none" USE_CHAIN_DMA "false" DEEP_BUFFER_PIPELINE_ID 15 DEEP_BUFFER_PCM_ID 31 DEEP_BUFFER_PIPELINE_SRC 'mixin.15.1' DEEP_BUFFER_PIPELINE_SINK 'mixout.2.1' DEEP_BUFFER_PCM_NAME 'Deepbuffer Jack Out' HEADSET_CODEC_NAME 'SSP0-Codec' HEADSET_PLAYBACK_PCM_STREAM_NAME 'Headset Playback' HEADSET_CAPTURE_PCM_STREAM_NAME 'Headset Capture' HEADSET_SSP_DAI_INDEX 0 HEADSET_HW_CONFIG_NAME 'HEADSET HWCFG' SPEAKER_CODEC_NAME 'SSP1-Codec' SPEAKER_PLAYBACK_PCM_STREAM_NAME 'Speaker Playback' SPEAKER_SSP_DAI_INDEX 1 SPEAKER_HW_CONFIG_NAME 'SPEAKER HWCFG' INCLUDE_ECHO_REF false ECHO_REF_HOST_PIPELINE_ID 7 ECHO_REF_DAI_PIPELINE_ID 8 ECHO_REF_PCM_ID 29 ECHO_REF_CORE_ID 0 # override BT default definitions BT_PB_HOST_PIPELINE_ID 9 BT_PB_DAI_PIPELINE_ID 10 BT_PB_DAI_PIPELINE_SRC "copier.host.9.1" BT_PB_PIPELINE_STREAM_NAME "dai-copier.SSP.10.1" GOOGLE_RTC_AEC_SUPPORT 0 GOOGLE_AEC_CORE_ID 0 HEADSET_PCM_NAME "Headset" HEADSET_PCM_ID 0 SPEAKER_PCM_NAME "Speakers" SPEAKER_PCM_ID 1 INCLUDE_BT_OFFLOAD true GOOGLE_AEC_HOST_PIPELINE_PRIORITY 3 GOOGLE_AEC_PIPELINE_PRIORITY 2 DMIC_PIPELINE_PRIORITY 1 ECHO_REF_PIPELINE_PRIORITY 0 } # override defaults with platform-specific config IncludeByKey.PLATFORM { "mtl" "platform/intel/mtl.conf" } # include DMIC config if needed. IncludeByKey.NUM_DMICS { "[1-4]" "platform/intel/dmic-generic.conf" } # include HDMI config if needed. IncludeByKey.NUM_HDMIS { "[3-4]" "platform/intel/hdmi-generic.conf" } # include deep buffer config if buffer size is in 1 - 1000 ms. IncludeByKey.DEEPBUFFER_FW_DMA_MS{ "([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|1000)" "platform/intel/deep-buffer.conf" } IncludeByKey.INCLUDE_ECHO_REF { "true" "platform/intel/speaker-echo-ref.conf" } # enable GOOGLE RTC AEC if needed IncludeByKey.GOOGLE_RTC_AEC_SUPPORT { "[1]" "platform/intel/google-rtc-aec-reference.conf" } IncludeByKey.INCLUDE_BT_OFFLOAD { "true" "platform/intel/bt-generic.conf" } # # List of all DAIs # #SSP Index: 0, Direction: duplex Object.Dai.SSP [ { id 0 dai_index $HEADSET_SSP_DAI_INDEX direction "duplex" name $HEADSET_CODEC_NAME default_hw_conf_id 0 sample_bits 32 io_clk $MCLK Object.Base.hw_config.1 { name $HEADSET_HW_CONFIG_NAME id 0 bclk_freq 3072000 tdm_slot_width 32 # TODO: remove this. Needs alsaptlg change. Object.Base.link_config.1 { clock_source 1 } } } { id $SPK_ID dai_index $SPEAKER_SSP_DAI_INDEX IncludeByKey.INCLUDE_ECHO_REF { "false" { direction "playback" } "true" { direction "duplex" quirks "lbm_mode" } } name $SPEAKER_CODEC_NAME default_hw_conf_id 0 sample_bits 32 io_clk $MCLK Object.Base.hw_config.1 { name $SPEAKER_HW_CONFIG_NAME 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 # PCM1 ---> gain ----> Mixin ----> Mixout ----> gain ----> SSP1 # # SSP0 ----> PCM0 # SSP1 ----> PCM1 # Pipeline ID:1 PCM ID: 0 Object.Pipeline { # playback pipelines host-copier-gain-mixin-playback [ { index 1 Object.Widget.host-copier.1 { stream_name '$HEADSET_PLAYBACK_PCM_STREAM_NAME' pcm_id $HEADSET_PCM_ID } Object.Widget.gain.1 { Object.Control.mixer.1 { name 'Pre Mixer $HEADSET_PCM_NAME Playback Volume' } } } { index 3 Object.Widget.host-copier.1 { stream_name '$SPEAKER_PLAYBACK_PCM_STREAM_NAME' pcm_id $SPEAKER_PCM_ID } Object.Widget.gain.1 { Object.Control.mixer.1 { name 'Pre Mixer $SPEAKER_PCM_NAME Playback Volume' } } } ] mixout-gain-dai-copier-playback [ { index 2 Object.Widget.dai-copier.1 { dai_index $HEADSET_SSP_DAI_INDEX dai_type "SSP" copier_type "SSP" stream_name "$HEADSET_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS } Object.Widget.gain.1 { Object.Control.mixer.1 { name 'Post Mixer $HEADSET_PCM_NAME Playback Volume' } } } { index 4 Object.Widget.dai-copier.1 { dai_index $SPEAKER_SSP_DAI_INDEX dai_type "SSP" copier_type "SSP" stream_name "$SPEAKER_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS } Object.Widget.gain.1 { Object.Control.mixer.1 { name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' } } } ] host-gateway-capture [ { index 5 Object.Widget.host-copier.1 { stream_name '$HEADSET_CAPTURE_PCM_STREAM_NAME' pcm_id $HEADSET_PCM_ID } } ] io-gateway-capture [ { index 6 direction capture Object.Widget.dai-copier."1" { dai_index $HEADSET_SSP_DAI_INDEX dai_type "SSP" type dai_out copier_type "SSP" stream_name "$HEADSET_CODEC_NAME" 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 "$HEADSET_PCM_NAME" id $HEADSET_PCM_ID direction "duplex" Object.Base.fe_dai.1 { name "$HEADSET_PCM_NAME" } Object.PCM.pcm_caps.1 { direction "playback" name "$HEADSET_PLAYBACK_PCM_STREAM_NAME" formats 'S16_LE,S24_LE,S32_LE' } Object.PCM.pcm_caps.2 { direction "capture" name "$HEADSET_CAPTURE_PCM_STREAM_NAME" formats 'S16_LE,S24_LE,S32_LE' } } { name "$SPEAKER_PCM_NAME" id $SPEAKER_PCM_ID direction "playback" Object.Base.fe_dai.1 { name "$SPEAKER_PCM_NAME" } Object.PCM.pcm_caps.1 { name "$SPEAKER_PLAYBACK_PCM_STREAM_NAME" formats 'S16_LE,S24_LE,S32_LE' } } ] Object.Base.route [ { source "gain.2.1" sink "dai-copier.SSP.$HEADSET_CODEC_NAME.playback" } { source "mixin.1.1" sink "mixout.2.1" } { source "gain.4.1" sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" } { source "mixin.3.1" sink "mixout.4.1" } { source "dai-copier.SSP.$HEADSET_CODEC_NAME.capture" sink "host-copier.$HEADSET_PCM_ID.capture" } { source "host-copier.$HEADSET_PCM_ID.playback" sink "gain.1.1" } { source "host-copier.$SPEAKER_PCM_ID.playback" sink "gain.3.1" } ]