SectionVerb { Value { TQ "HiFi" } EnableSequence [ cset "name='SEN_MI2S_RX Audio Mixer MultiMedia1' 1" cset "name='MultiMedia2 Mixer TX_CODEC_DMA_TX_3' 1" ] } SectionDevice."Speaker" { Comment "Internal stereo speakers (2x AW88261)" EnableSequence [ cset "name='Amplifier L PCM Playback Volume' 352" cset "name='Amplifier R PCM Playback Volume' 352" ] DisableSequence [ cset "name='Amplifier L PCM Playback Volume' 0" cset "name='Amplifier R PCM Playback Volume' 0" ] Value { PlaybackPriority 100 PlaybackPCM "hw:${CardId},0" } } SectionDevice."Mic" { Comment "Handset microphone (AMIC1, bottom edge)" # WCD9378 ADC1 -> SoundWire -> TX macro DEC0 -> TX_CODEC_DMA_TX_3. # 'TX SMIC MUX0' takes the mux item name SWR_MIC0, not the # SWR_INPUT0 widget it routes from. # # The codec-side controls only exist when the stock wcd9378 # driver owns the TX slave. With the SDCA-class prototype driver # (sdca-mobile branch) the codec bring-up happens in the kernel # on PDE power-up and the card exposes no codec controls; only # the TX macro half of the sequence applies then. If.codec { Condition { Type ControlExists Control "name='ADC1 MUX'" } True { EnableSequence [ cset "name='ADC1 MUX' CH1_AMIC1" cset "name='ADC1 Switch' 1" cset "name='ADC1 Volume' 12" cset "name='TX0 MODE' ADC_NORMAL" cset "name='TX0 SEQUENCER Switch' 1" cset "name='TX SMIC MUX0' SWR_MIC0" cset "name='TX DEC0 MUX' SWR_MIC" cset "name='TX_DEC0 Volume' 84" cset "name='TX_AIF1_CAP Mixer DEC0' 1" ] DisableSequence [ cset "name='TX_AIF1_CAP Mixer DEC0' 0" cset "name='TX0 SEQUENCER Switch' 0" cset "name='ADC1 Switch' 0" cset "name='TX SMIC MUX0' ZERO" ] } False { EnableSequence [ cset "name='TX SMIC MUX0' SWR_MIC0" cset "name='TX DEC0 MUX' SWR_MIC" cset "name='TX_DEC0 Volume' 84" cset "name='TX_AIF1_CAP Mixer DEC0' 1" ] DisableSequence [ cset "name='TX_AIF1_CAP Mixer DEC0' 0" cset "name='TX SMIC MUX0' ZERO" ] } } Value { CapturePriority 100 CapturePCM "hw:${CardId},1" } }