# Use case Configuration for bytcr-rt5640 SectionVerb { EnableSequence [ cdev "hw:bytcrrt5640" # media mixer settings # compress cset "name='media0_in Gain 0 Switch' on" cset "name='media0_in Gain 0 Volume' 0" # normal cset "name='media1_in Gain 0 Switch' on" cset "name='media1_in Gain 0 Volume' 0" # swm loopback cset "name='media2_in Gain 0 Switch' off" cset "name='media2_in Gain 0 Volume' 0%" # deep buffer cset "name='media3_in Gain 0 Switch' on" cset "name='media3_in Gain 0 Volume' 0" cset "name='media0_out mix 0 media0_in Switch' on" cset "name='media0_out mix 0 media1_in Switch' on" cset "name='media0_out mix 0 media2_in Switch' off" cset "name='media0_out mix 0 media3_in Switch' on" cset "name='media1_out mix 0 media0_in Switch' off" cset "name='media1_out mix 0 media1_in Switch' off" cset "name='media1_out mix 0 media2_in Switch' off" cset "name='media1_out mix 0 media3_in Switch' off" cset "name='pcm0_in Gain 0 Switch' on" cset "name='pcm0_in Gain 0 Volume' 0" cset "name='pcm1_in Gain 0 Switch' off" cset "name='pcm1_in Gain 0 Volume' 0%" # codec0_out settings (used if ssp2 is connected to aif1) cset "name='codec_out0 mix 0 codec_in0 Switch' off" cset "name='codec_out0 mix 0 codec_in1 Switch' off" cset "name='codec_out0 mix 0 media_loop1_in Switch' off" cset "name='codec_out0 mix 0 media_loop2_in Switch' off" cset "name='codec_out0 mix 0 pcm0_in Switch' on" cset "name='codec_out0 mix 0 pcm1_in Switch' off" cset "name='codec_out0 mix 0 sprot_loop_in Switch' off" cset "name='codec_out0 Gain 0 Switch' on" cset "name='codec_out0 Gain 0 Volume' 0" # modem_out settings (used if ssp0 is connected to aif2) cset "name='modem_out mix 0 codec_in0 Switch' off" cset "name='modem_out mix 0 codec_in1 Switch' off" cset "name='modem_out mix 0 media_loop1_in Switch' off" cset "name='modem_out mix 0 media_loop2_in Switch' off" cset "name='modem_out mix 0 pcm0_in Switch' on" cset "name='modem_out mix 0 pcm1_in Switch' off" cset "name='modem_out mix 0 sprot_loop_in Switch' off" cset "name='modem_out Gain 0 Switch' on" cset "name='modem_out Gain 0 Volume' 0" # input settings # pcm1_out settings # input used when SSP2 is connected cset "name='codec_in0 Gain 0 Switch' on" cset "name='codec_in0 Gain 0 Volume' 0" # input used when SSP0 is connected cset "name='modem_in Gain 0 Switch' on" cset "name='modem_in Gain 0 Volume' 0" cset "name='pcm1_out mix 0 codec_in0 Switch' on" cset "name='pcm1_out mix 0 modem_in Switch' on" cset "name='pcm1_out mix 0 codec_in1 Switch' off" cset "name='pcm1_out mix 0 media_loop1_in Switch' off" cset "name='pcm1_out mix 0 media_loop2_in Switch' off" cset "name='pcm1_out mix 0 pcm0_in Switch' off" cset "name='pcm1_out mix 0 pcm1_in Switch' off" cset "name='pcm1_out mix 0 sprot_loop_in Switch' off" cset "name='pcm1_out Gain 0 Switch' on" cset "name='pcm1_out Gain 0 Volume' 0" # disable codec_out1 cset "name='codec_out1 mix 0 codec_in0 Switch' off" cset "name='codec_out1 mix 0 codec_in1 Switch' off" cset "name='codec_out1 mix 0 media_loop1_in Switch' off" cset "name='codec_out1 mix 0 media_loop2_in Switch' off" cset "name='codec_out1 mix 0 pcm0_in Switch' off" cset "name='codec_out1 mix 0 pcm1_in Switch' off" cset "name='codec_out1 mix 0 sprot_loop_in Switch' off" cset "name='codec_out1 Gain 0 Switch' off" cset "name='codec_out1 Gain 0 Volume' 0%" # disable codec_in1 cset "name='codec_in1 Gain 0 Switch' off" cset "name='codec_in1 Gain 0 Volume' 0%" # disable all loops cset "name='media_loop1_out mix 0 codec_in0 Switch' off" cset "name='media_loop1_out mix 0 codec_in1 Switch' off" cset "name='media_loop1_out mix 0 media_loop1_in Switch' off" cset "name='media_loop1_out mix 0 media_loop2_in Switch' off" cset "name='media_loop1_out mix 0 pcm0_in Switch' off" cset "name='media_loop1_out mix 0 pcm1_in Switch' off" cset "name='media_loop1_out mix 0 sprot_loop_in Switch' off" cset "name='media_loop2_out mix 0 codec_in0 Switch' off" cset "name='media_loop2_out mix 0 codec_in1 Switch' off" cset "name='media_loop2_out mix 0 media_loop1_in Switch' off" cset "name='media_loop2_out mix 0 media_loop2_in Switch' off" cset "name='media_loop2_out mix 0 pcm0_in Switch' off" cset "name='media_loop2_out mix 0 pcm1_in Switch' off" cset "name='media_loop2_out mix 0 sprot_loop_in Switch' off" cset "name='sprot_loop_out mix 0 codec_in0 Switch' off" cset "name='sprot_loop_out mix 0 codec_in1 Switch' off" cset "name='sprot_loop_out mix 0 media_loop1_in Switch' off" cset "name='sprot_loop_out mix 0 media_loop2_in Switch' off" cset "name='sprot_loop_out mix 0 pcm0_in Switch' off" cset "name='sprot_loop_out mix 0 pcm1_in Switch' off" cset "name='sprot_loop_out mix 0 sprot_loop_in Switch' off" # RT5640 default output routing cset "name='OUT MIXL DAC L1 Switch' on" cset "name='OUT MIXR DAC R1 Switch' on" # uncomment for loopback mic->speakers # cset "name='SPOL MIX BST1 Switch' on" # cset "name='SPOR MIX BST1 Switch' on" # uncomment for loopback playback -> capture # cset "name='RECMIXL OUT MIXL Switch' on" # cset "name='RECMIXR OUT MIXR Switch' on" # uncomment to enable swap between AIF1 and AIF2 # warning: can only work with SSP0 firmware enabled cset "name='SDI select' 0" cset "name='DAI select' 0" #cset "name='SDI select' 1" #cset "name='DAI select' 1" cset "name='DAC2 Playback Switch' on" cset "name='DIG MIXL DAC L2 Switch' on" ] DisableSequence [ ] # ALSA PCM Value { # ALSA PCM device for HiFi PlaybackPCM "hw:bytcrrt5640" CapturePCM "hw:bytcrrt5640" } } SectionDevice."DigitalMics" { Comment "DigitalMics capture, NOT TESTED" ConflictingDevice [ "IN1-InternalMics" "IN3-InternalMics" "HeadsetMic" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='Stereo ADC2 Mux' DMIC1" cset "name='Stereo ADC MIXL ADC2 Switch' on" cset "name='Stereo ADC MIXR ADC2 Switch' on" cset "name='Internal Mic Switch' on" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Stereo ADC MIXL ADC2 Switch' off" cset "name='Stereo ADC MIXR ADC2 Switch' off" cset "name='Internal Mic Switch' off" ] Value { CaptureChannels 2 } } SectionDevice."HeadsetMic" { Comment "Headset Mic capture" ConflictingDevice [ "IN1-InternalMics" "IN3-InternalMics" "DigitalMics" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='Headset Mic Switch' on" # default for IN2 Boost seems to saturate cset "name='IN2 Boost' 1" cset "name='RECMIXL BST2 Switch' on" cset "name='RECMIXR BST2 Switch' on" cset "name='Stereo ADC1 Mux' ADC" cset "name='Stereo ADC MIXL ADC1 Switch' on" cset "name='Stereo ADC MIXR ADC1 Switch' on" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Stereo ADC MIXL ADC1 Switch' off" cset "name='Stereo ADC MIXR ADC1 Switch' off" cset "name='Headset Mic Switch' off" ] Value { CaptureChannels 2 } } SectionDevice."IN1-InternalMics" { Comment "Internal IN1 analog Mic capture" ConflictingDevice [ "DigitalMics" "HeadsetMic" "IN3-InternalMics" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='Internal Mic Switch' on" # default for IN1 Boost seems to saturate cset "name='IN1 Boost' 1" cset "name='RECMIXL BST1 Switch' on" cset "name='RECMIXR BST1 Switch' on" cset "name='RECMIXL BST3 Switch' off" cset "name='RECMIXR BST3 Switch' off" cset "name='Stereo ADC1 Mux' ADC" cset "name='Stereo ADC MIXL ADC1 Switch' on" cset "name='Stereo ADC MIXR ADC1 Switch' on" cset "name='Mono ADC L1 Mux' 1" cset "name='Mono ADC R1 Mux' 1" cset "name='Mono ADC MIXL ADC1 Switch' on" cset "name='Mono ADC MIXR ADC1 Switch' on" cset "name='Mono ADC Capture Switch' on" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Stereo ADC MIXL ADC1 Switch' off" cset "name='Stereo ADC MIXR ADC1 Switch' off" cset "name='Internal Mic Switch' off" cset "name='Mono ADC MIXL ADC1 Switch' off" cset "name='Mono ADC MIXR ADC1 Switch' off" cset "name='Mono ADC Capture Switch' off" ] Value { CaptureChannels 2 } } SectionDevice."IN3-InternalMics" { Comment "Internal IN3 analog Mic capture" ConflictingDevice [ "DigitalMics" "HeadsetMic" "IN1-InternalMics" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='Internal Mic Switch' on" # default for IN3 Boost seems to too low cset "name='IN3 Boost' 8" cset "name='RECMIXL BST1 Switch' off" cset "name='RECMIXR BST1 Switch' off" cset "name='RECMIXL BST3 Switch' on" cset "name='RECMIXR BST3 Switch' on" cset "name='Stereo ADC1 Mux' ADC" cset "name='Stereo ADC MIXL ADC1 Switch' on" cset "name='Stereo ADC MIXR ADC1 Switch' on" cset "name='Mono ADC L1 Mux' 1" cset "name='Mono ADC R1 Mux' 1" cset "name='Mono ADC MIXL ADC1 Switch' on" cset "name='Mono ADC MIXR ADC1 Switch' on" cset "name='Mono ADC Capture Switch' on" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Stereo ADC MIXL ADC1 Switch' off" cset "name='Stereo ADC MIXR ADC1 Switch' off" cset "name='Internal Mic Switch' off" cset "name='Mono ADC Capture Switch' off" ] Value { CaptureChannels 2 } } SectionDevice."Headphones" { Comment "Headphones playback" ConflictingDevice [ "Speaker" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='DAC MIXL INF1 Switch' on" cset "name='DAC MIXR INF1 Switch' on" cset "name='Stereo DAC MIXL DAC L1 Switch' on" cset "name='Stereo DAC MIXR DAC R1 Switch' on" set "name='Stereo DAC MIXL DAC L2 Switch' on" cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='HPO MIX HPVOL Switch' on" cset "name='Headphone Switch' on" cset "name='HP Channel Switch' on" cset "name='Speaker Switch' off" cset "name='HP L Playback Switch' on" cset "name='HP R Playback Switch' on" cset "name='HP Playback Volume' 29" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Headphone Switch' off" cset "name='HP Channel Switch' off" cset "name='HP L Playback Switch' off" cset "name='HP R Playback Switch' off" cset "name='HP Playback Volume' 0" ] Value { PlaybackChannels "2" } } SectionDevice."Speaker" { Comment "Speaker playback" ConflictingDevice [ "Headphones" "MonoSpeaker" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='DAC MIXL INF1 Switch' on" cset "name='DAC MIXR INF1 Switch' on" cset "name='Stereo DAC MIXL DAC L1 Switch' on" cset "name='Stereo DAC MIXR DAC R1 Switch' on" cset "name='Stereo DAC MIXL DAC L2 Switch' on" cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='SPK MIXL DAC L1 Switch' on" cset "name='SPK MIXR DAC R1 Switch' on" cset "name='SPOL MIX SPKVOL L Switch' on" cset "name='SPOR MIX SPKVOL R Switch' on" cset "name='Speaker Switch' on" cset "name='Speaker Channel Switch' on" cset "name='Headphone Switch' off" cset "name='Speaker L Playback Switch' on" cset "name='Speaker R Playback Switch' on" cset "name='Speaker Playback Volume' 29" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Speaker Switch' off" cset "name='Speaker Channel Switch' off" cset "name='Speaker L Playback Switch' off" cset "name='Speaker R Playback Switch' off" cset "name='Speaker Playback Volume' 0" ] Value { PlaybackChannels "2" } } SectionDevice."MonoSpeaker" { Comment "MonoSpeaker playback" ConflictingDevice [ "Headphones" "Speaker" ] EnableSequence [ cdev "hw:bytcrrt5640" cset "name='DAC MIXL INF1 Switch' on" cset "name='DAC MIXR INF1 Switch' on" cset "name='Stereo DAC MIXL DAC L1 Switch' on" cset "name='Stereo DAC MIXR DAC R1 Switch' on" cset "name='Stereo DAC MIXL DAC L2 Switch' on" cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='SPK MIXL DAC L1 Switch' on" cset "name='SPK MIXR DAC R1 Switch' on" cset "name='SPOL MIX SPKVOL L Switch' on" # for mono speaker we apply left on right # cset "name='SPOR MIX SPKVOL R Switch' on" cset "name='SPOL MIX SPKVOL R Switch' on" cset "name='Speaker Switch' on" cset "name='Speaker Channel Switch' on" cset "name='Headphone Switch' off" cset "name='Speaker L Playback Switch' on" cset "name='Speaker R Playback Switch' on" cset "name='Speaker Playback Volume' 29" ] DisableSequence [ cdev "hw:bytcrrt5640" cset "name='Speaker Switch' off" cset "name='Speaker Channel Switch' off" cset "name='Speaker L Playback Switch' off" cset "name='Speaker R Playback Switch' off" cset "name='Speaker Playback Volume' 0" ] Value { PlaybackChannels "2" } }