// Controls that can be set once at system startup. As the WM8994/WM1811 // outputs don't conflict with each other we set up most of our routing // statically at system startup. //NOTICE //default gain & tinyucm file are in libaudio folder. //If you want to have vendor specific configuration files, put the files in device/*product*/ //Use tinyucm.conf and default_gain.conf in target device // We need to do symmetric rates so fix the hardware at 44.1kHz and // resample. InputRate 44100 OutputRate 44100 PlaybackLink 0 CaptureLink 0 BasebandLink 1 BluetoothLink 2 //Modifier File ModifierFile "default_gain.conf" INOUT_MAP { { "Earpiece", "Builtin Mic" }, { "Speaker", "Back Mic" }, { "Headset Out", "Headset In" }, { "Headphone", "Builtin Mic" }, { "SCO Headset Out", "SCO Headset In" }, { "SCO", "SCO Headset In" }, } INPUT_CHANNEL_MAP { { "Builtin Mic", "Left" }, { "Back Mic", "Right" }, { "Headset In", "Right" }, { "SCO Headset In", "Left" }, } Core { //general { "IN1L ZC Switch", 0 }, { "IN1R ZC Switch", 0 }, { "IN2L ZC Switch", 0 }, { "IN2R ZC Switch", 0 }, { "Output ZC Switch", 0 }, { "Speaker ZC Switch", 0 }, { "Headphone ZC Switch", 0 }, // AIF1->DAC1 { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, { "DAC1 Switch", 1 }, // AIF2->DAC1 // { "DAC1L Mixer AIF2 Switch", 1 }, // { "DAC1R Mixer AIF2 Switch", 1 }, // ADC->AIF2 { "AIF2DAC2L Mixer Left Sidetone Switch", 1 }, { "AIF2DAC2L Mixer Right Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Right Sidetone Switch", 1 }, { "DAC2 Left Sidetone Volume", 12 }, { "DAC2 Right Sidetone Volume", 12 }, { "DAC2 Switch", 1 }, // DAC1->HP { "Left Headphone Mux", "DAC" }, { "Right Headphone Mux", "DAC" }, // DAC1->SPKL/R->SPKL/R Boost->SPK { "SPKL DAC1 Switch", 1 }, { "SPKR DAC1 Switch", 1 }, { "SPKL Boost SPKL Switch", 1 }, { "SPKL Boost SPKR Switch", 0 }, { "SPKR Boost SPKL Switch", 0 }, { "SPKR Boost SPKR Switch", 1 }, { "Speaker Mixer Volume", 3 }, // DAC->Output mixer->Earpiece { "Left Output Mixer DAC Switch", 1 }, { "Right Output Mixer DAC Switch", 1 }, { "Earpiece Mixer Left Output Switch", 1 }, { "Earpiece Mixer Right Output Switch", 1 }, { "Earpiece Switch", 1 }, { "LINEOUT1N Mixer Right Output Switch", 1 }, { "LINEOUT1P Mixer Left Output Switch", 1 }, // Main Mic->IN1LP/N->Input Mixer with +30dB at mixer { "IN1L PGA IN1LP Switch", 1 }, { "IN1L PGA IN1LN Switch", 1 }, { "MIXINL IN1L Volume", 1 }, { "IN1L Switch", 1 }, // Sub Mic->IN2RP/N->Input Mixer with +30dB at mixer { "IN2R PGA IN2RP Switch", 1 }, { "IN2R PGA IN2RN Switch", 1 }, { "MIXINR IN2R Volume", 1 }, { "IN2R Switch", 1 }, // Ear Mic->IN1RP/N->Input Mixer with +30dB at mixer { "IN1R PGA IN1RP Switch", 1 }, { "IN1R PGA IN1RN Switch", 1 }, { "MIXINR IN1R Volume", 1 }, { "IN1R Switch", 1 }, // Input mixer->ADC->AIF1 { "AIF1ADC1L Mixer ADC/DMIC Switch", 1 }, { "AIF1ADC1R Mixer ADC/DMIC Switch", 1 }, { "ADCL Mux", "ADC" }, // HPF on to take out some bounce // { "AIF1ADC1 HPF Switch", 1 }, // { "Sidetone HPF Switch", 1 }, // Work around core issue { "ADCL Mux", "DMIC" }, { "ADCL Mux", "ADC" }, { "ADCR Mux", "DMIC" }, { "ADCR Mux", "ADC" }, // Default all outputs off { "HP Switch", 0 }, { "SPK Switch", 0 }, { "RCV Switch", 0 }, { "LINEOUT Switch", 0 }, // Default all inputs off { "Main Mic Switch", 0 }, { "Sub Mic Switch", 0 }, { "Headset Mic Switch", 0 }, } // Default configuration for a specific output // Should really add aliasing; headset and headphone are the same thing // and we should refcount appropriately (ditto for speaker/earpiece on // some low end devices) Device "Earpiece" { Enable { { "RCV Switch", 1 }, } Disable { { "RCV Switch", 0 }, } } Device "Speaker" { Enable { { "SPK Switch", 1 }, } Disable { { "SPK Switch", 0 }, } } Device "Headset Out" { Enable { { "HP Switch", 1 }, } Disable { { "HP Switch", 0 }, } SharedDevice "Headphone" } Device "Headphone" { Enable { { "HP Switch", 1 }, } Disable { { "HP Switch", 0 }, } SharedDevice "Headset Out" } Device "SCO Headset Out" { Enable { { "AIF3ADC Mux", 1 }, { "AIF2DAC2L Mixer AIF1.1 Switch", 1 }, { "AIF2DAC2R Mixer AIF1.1 Switch", 1 }, { "AIF2ADCL Source", "Left" }, { "AIF2ADCR Source", "Left" }, } Disable { { "AIF3ADC Mux", 0 }, { "AIF2DAC2L Mixer AIF1.1 Switch", 0 }, { "AIF2DAC2R Mixer AIF1.1 Switch", 0 }, } } Device "SCO" { Enable { { "AIF3ADC Mux", 1 }, { "AIF2DAC2L Mixer AIF1.1 Switch", 1 }, { "AIF2DAC2R Mixer AIF1.1 Switch", 1 }, { "AIF2ADCL Source", "Left" }, { "AIF2ADCR Source", "Left" }, } Disable { { "AIF3ADC Mux", 0 }, { "AIF2DAC2L Mixer AIF1.1 Switch", 0 }, { "AIF2DAC2R Mixer AIF1.1 Switch", 0 }, } } Device "SCO Carkit" { Enable { { "AIF3ADC Mux", 1 }, { "AIF2DAC2L Mixer AIF1.1 Switch", 1 }, { "AIF2DAC2R Mixer AIF1.1 Switch", 1 }, { "AIF2ADCL Source", "Left" }, { "AIF2ADCR Source", "Left" }, } Disable { { "AIF3ADC Mux", 0 }, { "AIF2DAC2L Mixer AIF1.1 Switch", 0 }, { "AIF2DAC2R Mixer AIF1.1 Switch", 0 }, } } Device "Analogue Dock Out" { Enable { { "LINEOUT1N Switch", 1 }, { "LINEOUT1P Switch", 1 }, { "LINEOUT Switch", 1 }, } Disable { { "LINEOUT1N Switch", 0 }, { "LINEOUT1P Switch", 0 }, { "LINEOUT Switch", 0 }, } } Device "Builtin Mic" { Enable { { "Main Mic Switch", 1 }, { "AIF1ADCL Source", "Left" }, // { "AIF1ADCR Source", "Left" }, { "AIF2ADCL Source", "Left" }, { "AIF2ADCR Source", "Left" }, { "MIXINL IN1L Switch", 1 }, { "AIF2DAC2L Mixer Left Sidetone Switch", 1 }, { "AIF2DAC2L Mixer Right Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Right Sidetone Switch", 0 }, } Disable { { "Main Mic Switch", 0 }, { "MIXINL IN1L Switch", 0 }, } } Device "Back Mic" { Enable { { "Sub Mic Switch", 1 }, // { "AIF1ADCL Source", "Right" }, { "AIF1ADCR Source", "Right" }, { "AIF2ADCL Source", "Right" }, { "AIF2ADCR Source", "Right" }, { "MIXINR IN2R Switch", 1 }, { "AIF2DAC2L Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2L Mixer Right Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Right Sidetone Switch", 1 }, } Disable { { "Sub Mic Switch", 0 }, { "MIXINR IN2R Switch", 0 }, } } Device "Headset In" { Enable { { "Headset Mic Switch", 1 }, { "AIF1ADCL Source", "Right" }, { "AIF1ADCR Source", "Right" }, { "AIF2ADCL Source", "Right" }, { "AIF2ADCR Source", "Right" }, { "MIXINR IN1R Switch", 1 }, { "AIF2DAC2L Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2L Mixer Right Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Right Sidetone Switch", 1 }, } Disable { { "Headset Mic Switch", 0 }, { "MIXINR IN1R Switch", 0 }, } } Device "SCO Headset In" { Enable { { "AIF2ADC Mux", 1 }, { "AIF1ADCL Source", "Left" }, { "AIF1ADCR Source", "Left" }, { "AIF2ADCL Source", "Left" }, { "AIF2ADCR Source", "Left" }, { "AIF1ADC1R Mixer AIF2 Switch", 1 }, { "AIF1ADC1L Mixer AIF2 Switch", 1 }, { "AIF2DAC2L Mixer Left Sidetone Switch", 1 }, { "AIF2DAC2L Mixer Right Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Left Sidetone Switch", 0 }, { "AIF2DAC2R Mixer Right Sidetone Switch", 1 }, } Disable { { "AIF2ADC Mux", 0 }, { "AIF1ADC1R Mixer AIF2 Switch", 0 }, { "AIF1ADC1L Mixer AIF2 Switch", 0 }, } } Device "Voice Call" { Enable { { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, } Disable { { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, } } #Verb Stage #Currently just using normal and voicecall #Normal, Voicecall Verb "Normal" { Enable { { "AIF2 Mode", 1 }, { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, { "AIF2DAC Mux", "AIF3DACDAT" }, { "AIF2DAC2L Mixer AIF2 Switch", 0 }, { "AIF2DAC2R Mixer AIF2 Switch", 0 }, } Disable { { "AIF2 Mode", 0 }, // { "DAC1L Mixer AIF1.1 Switch", 0 }, // { "DAC1R Mixer AIF1.1 Switch", 0 }, { "AIF2DAC Mux", "AIF2DACDAT" }, } } Verb "Ringtone" { Enable { { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, } Disable { // { "DAC1L Mixer AIF1.1 Switch", 0 }, // { "DAC1R Mixer AIF1.1 Switch", 0 }, } } Verb "Communication" { Enable { { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, } Disable { { "DAC1L Mixer AIF1.1 Switch", 0 }, { "DAC1R Mixer AIF1.1 Switch", 0 }, } } Verb "Voicecall" { Enable { { "HP Output Mode", 0 }, { "AIF2 Mode", 0 }, { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, { "DAC1L Mixer AIF2 Switch", 1 }, { "DAC1R Mixer AIF2 Switch", 1 }, //left:0, right:1 { "AIF2DACL Source", 0 }, { "AIF2DACR Source", 0 }, { "AIF2DAC Mux", "AIF2DACDAT" }, } Disable { { "AIF2 Mode", 0 }, // { "DAC1L Mixer AIF1.1 Switch", 0 }, // { "DAC1R Mixer AIF1.1 Switch", 0 }, { "DAC1L Mixer AIF2 Switch", 0 }, { "DAC1R Mixer AIF2 Switch", 0 }, { "AIF2DACL Source", 0 }, { "AIF2DACR Source", 1 }, { "AIF2DAC Mux", "AIF2DACDAT" }, } } Verb "Loopback" { Enable { { "HP Output Mode", 0 }, { "AIF2 Mode", 0 }, { "DAC1L Mixer AIF1.1 Switch", 1 }, { "DAC1R Mixer AIF1.1 Switch", 1 }, { "DAC1L Mixer AIF2 Switch", 1 }, { "DAC1R Mixer AIF2 Switch", 1 }, //left:0, right:1 { "AIF2DACL Source", 0 }, { "AIF2DACR Source", 0 }, { "AIF2DAC Mux", "AIF2DACDAT" }, { "AIF2DAC2L Mixer AIF2 Switch", 0 }, { "AIF2DAC2R Mixer AIF2 Switch", 0 }, } Disable { { "AIF2 Mode", 0 }, // { "DAC1L Mixer AIF1.1 Switch", 0 }, // { "DAC1R Mixer AIF1.1 Switch", 0 }, { "DAC1L Mixer AIF2 Switch", 0 }, { "DAC1R Mixer AIF2 Switch", 0 }, { "AIF2DACL Source", 0 }, { "AIF2DACR Source", 1 }, { "AIF2DAC Mux", "AIF2DACDAT" }, } } ChannelSource "Left" { Enable { { "AIF1ADCL Source", "Left" }, { "AIF1ADCR Source", "Left" }, } Disable { { "AIF1ADCL Source", "Left" }, { "AIF1ADCR Source", "Right" }, } } ChannelSource "Right" { Enable { { "AIF1ADCL Source", "Right" }, { "AIF1ADCR Source", "Right" }, } Disable { { "AIF1ADCL Source", "Left" }, { "AIF1ADCR Source", "Right" }, } } ChannelSource "Stereo" { Enable { { "AIF1ADCL Source", "Left" }, { "AIF1ADCR Source", "Right" }, } Disable { { "AIF1ADCL Source", "Left" }, { "AIF1ADCR Source", "Right" }, } }