Define { MCLK 24576000 PLATFORM "none" SSP0_PCM_ID 0 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" "lnl" "platform/intel/mtl.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 ---> Crossover ---> SSP0 # | # +--------> SSP2 # # SSP0 ---> PCM0 # SSP2 ---> PCM2 Object.Pipeline.io-gateway [ { index 101 direction playback Object.Widget.dai-copier.1 { dai_index 0 dai_type "SSP" copier_type "SSP" stream_name "NoCodec-0" node_type $I2S_LINK_OUTPUT_CLASS num_input_pins 1 num_input_audio_formats 1 Object.Base.input_audio_format [ { in_bit_depth 32 in_valid_bit_depth 32 } ] num_output_audio_formats 1 Object.Base.output_audio_format [ { out_bit_depth 32 out_valid_bit_depth 32 } ] } } { index 102 direction playback Object.Widget.dai-copier.1 { dai_index 2 dai_type "SSP" copier_type "SSP" stream_name "NoCodec-2" node_type $I2S_LINK_OUTPUT_CLASS num_input_pins 1 num_input_audio_formats 1 Object.Base.input_audio_format [ { in_bit_depth 32 in_valid_bit_depth 32 } ] num_output_audio_formats 1 Object.Base.output_audio_format [ { out_bit_depth 32 out_valid_bit_depth 32 } ] } } ] Object.Pipeline.host-gateway-playback [ { index 1 Object.Widget.host-copier.1 { stream_name 'SSP0 Playback' pcm_id 0 num_input_audio_formats 3 Object.Base.input_audio_format [ { in_bit_depth 16 in_valid_bit_depth 16 } { in_bit_depth 32 in_valid_bit_depth 24 } { in_bit_depth 32 in_valid_bit_depth 32 } ] num_output_audio_formats 1 Object.Base.output_audio_format [ { out_bit_depth 32 out_valid_bit_depth 32 } ] } } ] Object.Widget.crossover [ { index 1 name "crossover.1.1" num_input_audio_formats 1 Object.Base.input_audio_format.1 { input_pin_index 0 in_bit_depth 32 in_valid_bit_depth 32 } num_output_pins 2 num_output_audio_formats 2 Object.Base.output_audio_format { 1 { output_pin_index 0 out_bit_depth 32 out_valid_bit_depth 32 } 2 { output_pin_index 1 out_bit_depth 32 out_valid_bit_depth 32 } } Object.Base.output_pin_binding.1 { output_pin_binding_name "dai-copier.SSP.NoCodec-0.playback" } Object.Base.output_pin_binding.2 { output_pin_binding_name "dai-copier.SSP.NoCodec-2.playback" } Object.Control.bytes."1" { name "crossover.1.1_bytes_control" IncludeByKey.EFX_CROSSOVER_PARAMS { "2way" "include/components/crossover/coef_2way_48000_200_0_1.conf" "3way" "include/components/crossover/coef_3way_48000_200_1000_0_1_2.conf" "4way" "include/components/crossover/coef_4way_48000_200_1000_3000_0_1_2_3.conf" } } } ] Object.Pipeline.host-gateway-capture [ { index 7 Object.Widget.host-copier.1 { stream_name 'SSP0 Capture' pcm_id 0 } } ] 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 num_output_pins 2 num_input_audio_formats 1 Object.Base.input_audio_format [ { in_bit_depth 32 in_valid_bit_depth 32 } ] num_output_audio_formats 1 Object.Base.output_audio_format [ { out_bit_depth 32 out_valid_bit_depth 32 } ] } } ] Object.Pipeline.host-gateway-capture [ { index 11 Object.Widget.host-copier.1 { stream_name 'SSP2 Capture' pcm_id 2 } } ] Object.Pipeline.io-gateway-capture [ { 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.PCM.pcm [ { name "$SSP0_PCM_NAME" id $SSP0_PCM_ID 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 'S32_LE' } } { name "$SSP2_PCM_NAME" id 2 direction "capture" Object.Base.fe_dai.1 { name "$SSP2_PCM_NAME" } Object.PCM.pcm_caps.2 { direction "capture" name "SSP2 Capture" formats 'S32_LE' } } ] Object.Base.route [ { source "dai-copier.SSP.NoCodec-0.capture" sink "host-copier.0.capture" } { source "host-copier.0.playback" sink "crossover.1.1" } { source "crossover.1.1" sink "dai-copier.SSP.NoCodec-0.playback" } { source "dai-copier.SSP.NoCodec-2.capture" sink "host-copier.2.capture" } { source "crossover.1.1" sink "dai-copier.SSP.NoCodec-2.playback" } ]