summaryrefslogtreecommitdiffstats
path: root/configs/tinyucm.conf
diff options
context:
space:
mode:
Diffstat (limited to 'configs/tinyucm.conf')
-rw-r--r--configs/tinyucm.conf396
1 files changed, 396 insertions, 0 deletions
diff --git a/configs/tinyucm.conf b/configs/tinyucm.conf
new file mode 100644
index 0000000..f040eb2
--- /dev/null
+++ b/configs/tinyucm.conf
@@ -0,0 +1,396 @@
+// 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 {
+ { "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" },
+ { "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 "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 },
+ }
+ Disable {
+ { "Main Mic Switch", 0 },
+ { "MIXINL IN1L 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 },
+ }
+ 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 },
+ }
+ Disable {
+ { "AIF2ADC Mux", 0 },
+ { "AIF1ADC1R Mixer AIF2 Switch", 0 },
+ { "AIF1ADC1L Mixer AIF2 Switch", 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 {
+ { "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 },
+//left:0, right:1
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 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 {
+ { "AIF2 Mode", 0 },
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 1 },
+// { "DAC1L Mixer AIF1.1 Switch", 0 },
+// { "DAC1R Mixer AIF1.1 Switch", 0 },
+ { "DAC1L Mixer AIF2 Switch", 0 },
+ { "DAC1R Mixer AIF2 Switch", 0 },
+ { "AIF2DAC Mux", "AIF2DACDAT" },
+ }
+}
+
+Verb "Loopback" {
+ Enable {
+ { "HP Output Mode", 0 },
+ { "AIF2 Mode", 0 },
+//left:0, right:1
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 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" },
+ { "AIF2DAC2L Mixer AIF2 Switch", 0 },
+ { "AIF2DAC2R Mixer AIF2 Switch", 0 },
+ }
+ Disable {
+ { "AIF2 Mode", 0 },
+ { "AIF2DACL Source", 0 },
+ { "AIF2DACR Source", 1 },
+// { "DAC1L Mixer AIF1.1 Switch", 0 },
+// { "DAC1R Mixer AIF1.1 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" },
+ }
+}
+