From dfd8c9faac9912d1d87d6221fccf73cd70f01ca3 Mon Sep 17 00:00:00 2001 From: Daniel Hillenbrand Date: Tue, 19 Jun 2012 16:28:47 +0200 Subject: add tinyucm for audio --- configs/tinyucm.conf | 396 +++++++++++++++++++++++++++++++++++++++++++++++++++ p51xx-common.mk | 1 + 2 files changed, 397 insertions(+) create mode 100644 configs/tinyucm.conf 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" }, + } +} + diff --git a/p51xx-common.mk b/p51xx-common.mk index dd6e665..ea376db 100755 --- a/p51xx-common.mk +++ b/p51xx-common.mk @@ -40,6 +40,7 @@ PRODUCT_COPY_FILES += \ # Audio PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/tinyucm.conf:system/etc/tinyucm.conf \ $(LOCAL_PATH)/configs/Volume.db:system/etc/Volume.db # GPS -- cgit v1.1