summaryrefslogtreecommitdiffstats
path: root/configs/tinyucm.conf
diff options
context:
space:
mode:
Diffstat (limited to 'configs/tinyucm.conf')
-rw-r--r--configs/tinyucm.conf472
1 files changed, 472 insertions, 0 deletions
diff --git a/configs/tinyucm.conf b/configs/tinyucm.conf
new file mode 100644
index 0000000..eb83d83
--- /dev/null
+++ b/configs/tinyucm.conf
@@ -0,0 +1,472 @@
+// 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 3
+BasebandLink 1
+BluetoothLink 2
+
+//Modifier File
+ModifierFile "default_gain.conf"
+
+INOUT_MAP {
+ { "Earpiece", "Builtin Mic", "Back Mic" },
+ { "Speaker", "Builtin 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", "Left" },
+ { "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", "Mixer" },
+ { "Right Headphone Mux", "Mixer" },
+
+// 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 },
+
+// LINEOUT
+ { "LINEOUT2N Mixer Left Output Switch", 1 },
+ { "LINEOUT2P Mixer Right Output Switch", 1 },
+ { "LINEOUT1N Mixer Right Output Switch", 1 },
+ { "LINEOUT1P Mixer Left Output Switch", 1 },
+
+// Input mixer->ADC->AIF1.1
+ { "AIF1ADC1L Mixer ADC/DMIC Switch", 1 },
+ { "AIF1ADC1R Mixer ADC/DMIC 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->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 },
+
+// FM Radio->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->IN2LP/N->Input Mixer with +30dB at mixer
+ { "IN2L PGA IN2LP Switch", 1 },
+ { "IN2L PGA IN2LN Switch", 1 },
+ { "MIXINL IN2L Volume", 1 },
+ { "IN2L 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", 0 },
+
+// Work around core issue
+ { "ADCL Mux", "DMIC" },
+ { "ADCL Mux", "ADC" },
+ { "ADCR Mux", "DMIC" },
+ { "ADCR Mux", "ADC" },
+
+//AIF2ADCDAT to AIF3ADC mux
+ { "AIF3ADC Mux", 1 },
+
+// Default all outputs off
+ { "HP Switch", 0 },
+ { "SPK Switch", 0 },
+ { "RCV Switch", 0 },
+ { "LINE Switch", 0 },
+ { "HDMI Switch", 1 },
+
+// Default all inputs off
+ { "Main Mic Switch", 0 },
+ { "Sub Mic Switch", 0 },
+ { "Headset Mic Switch", 0 },
+ { "FM In 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", 0 },
+ { "AIF2ADCR Source", 0 },
+ }
+ Disable {
+ { "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", 0 },
+ { "AIF2ADCR Source", 0 },
+ }
+ Disable {
+ { "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", 0 },
+ { "AIF2ADCR Source", 0 },
+ }
+ Disable {
+ { "AIF2DAC2L Mixer AIF1.1 Switch", 0 },
+ { "AIF2DAC2R Mixer AIF1.1 Switch", 0 },
+ }
+}
+
+Device "Analogue Dock Out" {
+ Enable {
+ { "LINEOUT2N Switch", 1 },
+ { "LINEOUT2P Switch", 1 },
+ { "LINEOUT2N Mixer Left Output Switch", 1 },
+ { "LINEOUT2P Mixer Right Output Switch", 1 },
+ { "LINE Switch", 1 },
+ }
+ Disable {
+ { "LINEOUT2N Switch", 0 },
+ { "LINEOUT2P Switch", 0 },
+ { "LINE Switch", 0 },
+ }
+}
+
+Device "AUX Digital Out" {
+ Enable {
+ { "LINEOUT1N Switch", 1 },
+ { "LINEOUT1P Switch", 1 },
+ { "HDMI Switch", 1 },
+ }
+ Disable {
+ { "LINEOUT1N Switch", 1 },
+ { "LINEOUT1P Switch", 1 },
+ { "HDMI Switch", 1 },
+ }
+}
+
+Device "Builtin Mic" {
+ Enable {
+ { "Main Mic Switch", 1 },
+ { "AIF1ADCL Source", 0 },
+ { "AIF2ADCL Source", 0 },
+ { "MIXINL IN1L Switch", 1 },
+ }
+ Disable {
+ { "Main Mic Switch", 0 },
+ { "MIXINL IN1L Switch", 0 },
+ }
+}
+
+Device "Back Mic" {
+ Enable {
+ { "Sub Mic Switch", 1 },
+ { "AIF1ADCR Source", 1 },
+ { "AIF2ADCR Source", 1 },
+ { "MIXINR IN1R Switch", 1 },
+ }
+ Disable {
+ { "Sub Mic Switch", 0 },
+ { "MIXINR IN1R Switch", 0 },
+ }
+}
+
+Device "Headset In" {
+ Enable {
+ { "MIXINL IN1L Switch", 0 },
+ { "MIXINR IN1R Switch", 0 },
+ { "Headset Mic Switch", 1 },
+ { "AIF1ADCL Source", 0 },
+ { "AIF1ADCR Source", 0 },
+ { "AIF2ADCL Source", 0 },
+ { "MIXINL IN2L Switch", 1 },
+ }
+ Disable {
+ { "Headset Mic Switch", 0 },
+ { "MIXINL IN2L Switch", 0 },
+ }
+}
+
+Device "SCO Headset In" {
+ Enable {
+ { "AIF2ADC Mux", 1 },
+ { "AIF1ADCL Source", 0 },
+ { "AIF1ADCR Source", 1 },
+ { "AIF2ADCL Source", 0 },
+ { "AIF2ADCR Source", 1 },
+ { "AIF1ADC1R Mixer AIF2 Switch", 1 },
+ { "AIF1ADC1L Mixer AIF2 Switch", 1 },
+ }
+ Disable {
+ { "AIF2ADC Mux", 0 },
+ { "AIF1ADC1R Mixer AIF2 Switch", 0 },
+ { "AIF1ADC1L Mixer AIF2 Switch", 0 },
+ }
+}
+
+Device "FMRadio In" {
+ Enable {
+ { "DAC1L Mixer AIF1.1 Switch", 1 },
+ { "DAC1L Mixer AIF1.1 Switch", 1 },
+ }
+ Disable {
+ { "MIXINL Output Record Volume", 0 },
+ { "MIXINR Output Record Volume", 0 },
+ }
+}
+
+#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 {
+ { "DAC1L Mixer AIF1.1 Switch", 1 },
+ { "DAC1R Mixer AIF1.1 Switch", 1 },
+ { "AIF2DAC Mux", "AIF2DACDAT" },
+ }
+}
+
+Verb "Ringtone" {
+ Enable {
+ { "DAC1L Mixer AIF1.1 Switch", 1 },
+ { "DAC1R Mixer AIF1.1 Switch", 1 },
+ }
+ Disable {
+// { "HP Output Mode", 0 },
+// { "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 {
+// { "HP Output Mode", 0 },
+// { "DAC1L Mixer AIF1.1 Switch", 0 },
+// { "DAC1R Mixer AIF1.1 Switch", 0 },
+ }
+}
+
+Verb "Voicecall" {
+ Enable {
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 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 },
+ { "AIF2DAC Mux", "AIF2DACDAT" },
+ }
+ Disable {
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 1 },
+ { "AIF2 Mode", 0 },
+ { "DAC1L Mixer AIF2 Switch", 0 },
+ { "DAC1R Mixer AIF2 Switch", 0 },
+ { "AIF2DAC Mux", "AIF3DACDAT" },
+ }
+}
+
+Verb "FMRadio" {
+ Enable {
+ { "DAC1L Mixer AIF1.1 Switch", 1 },
+ { "DAC1R Mixer AIF1.1 Switch", 1 },
+ { "SPKR Output Switch", 1},
+ { "FM In Switch", 1 },
+ }
+ Disable {
+ { "Input Clamp", 1 },
+ { "IN2R Switch", 0}
+ { "MIXINR IN2R Switch", 0}
+ { "Right Output Mixer IN2RP Switch", 0},
+ { "Left Output Mixer IN2RN Switch", 0},
+ { "Right Output Mixer Right Input Switch", 0 },
+ { "SPKR Output Switch", 0},
+ { "FM In Switch", 0 },
+ { "Input Clamp", 0 },
+ }
+}
+
+Verb "Loopback" {
+ Enable {
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 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 },
+ { "AIF2DAC Mux", "AIF2DACDAT" },
+ }
+ Disable {
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 1 },
+ { "AIF2DAC2L Mixer Left Sidetone Switch", 1 },
+ { "AIF2DAC2L Mixer Right Sidetone Switch", 0 },
+ { "DAC1L Mixer AIF2 Switch", 0 },
+ { "DAC1R Mixer AIF2 Switch", 0 },
+ { "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" },
+ }
+}
+