Merge "configs: add initial value for "VA_CDC_DMA_TX_0 SampleRate""
diff --git a/configs/atoll/atoll.mk b/configs/atoll/atoll.mk
index 9a457b7..7b056bb 100644
--- a/configs/atoll/atoll.mk
+++ b/configs/atoll/atoll.mk
@@ -280,7 +280,7 @@
 
 #timeout crash duration set to 20sec before system is ready.
 #timeout duration updates to default timeout of 5sec once the system is ready.
-PRODUCT_PRODUCT_PROPERTIES += \
+PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.hal.boot.timeout.ms=20000
 
 #split a2dp DSP supported encoder list
diff --git a/configs/bengal/audio_policy_configuration.xml b/configs/bengal/audio_policy_configuration.xml
old mode 100644
new mode 100755
index 8e2c1ee..1b4ac35
--- a/configs/bengal/audio_policy_configuration.xml
+++ b/configs/bengal/audio_policy_configuration.xml
@@ -209,6 +209,12 @@
                         channelMasks="AUDIO_CHANNEL_INDEX_MASK_4"/>
                 </mixPort>
                 <mixPort name="hifi_input" role="sink" />
+                <mixPort name="fast input" role="sink"
+                         flags="AUDIO_INPUT_FLAG_FAST">
+                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
+                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
+                </mixPort>
             </mixPorts>
 
             <devicePorts>
@@ -364,13 +370,15 @@
                        sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,USB Device In,USB Headset In"/>
                 <route type="mix" sink="quad mic"
                        sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
-		<route type="mix" sink="BT A2DP Out"
+                <route type="mix" sink="BT A2DP Out"
                        sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
                 <route type="mix" sink="BT A2DP Headphones"
                        sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
                 <route type="mix" sink="BT A2DP Speaker"
                        sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
                 <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
+                <route type="mix" sink="fast input"
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
             </routes>
 
         </module>
diff --git a/configs/bengal/bengal.mk b/configs/bengal/bengal.mk
index e7c1a6f..37a0ed0 100644
--- a/configs/bengal/bengal.mk
+++ b/configs/bengal/bengal.mk
@@ -285,7 +285,7 @@
 
 #timeout crash duration set to 20sec before system is ready.
 #timeout duration updates to default timeout of 5sec once the system is ready.
-PRODUCT_PRODUCT_PROPERTIES += \
+PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.hal.boot.timeout.ms=20000
 
 #enable dsp gapless mode by default
diff --git a/configs/kona/kona.mk b/configs/kona/kona.mk
index 03dc953..09067e4 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -277,6 +277,11 @@
 PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.offload.gapless.enabled=true
 
+#timeout crash duration set to 20sec before system is ready.
+#timeout duration updates to default timeout of 5sec once the system is ready.
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.hal.boot.timeout.ms=20000
+
 #enable pbe effects
 PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.safx.pbe.enabled=false
diff --git a/configs/lahaina/lahaina.mk b/configs/lahaina/lahaina.mk
index 669f73c..8d9bf2c 100644
--- a/configs/lahaina/lahaina.mk
+++ b/configs/lahaina/lahaina.mk
@@ -168,7 +168,10 @@
     vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_cdp.xml \
     vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_configs.xml \
     vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_configs_stock.xml \
-    vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_tuning_mixer.txt
+    vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_tuning_mixer.txt \
+    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/default_volume_tables.xml \
+    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/r_submix_audio_policy_configuration.xml \
+    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_policy_volumes.xml
 
 #Copy generic APM XML file to common folder for runtime copy
 PRODUCT_COPY_FILES += \
diff --git a/configs/lahaina/mixer_paths.xml b/configs/lahaina/mixer_paths.xml
index 8a6389d..82caaa6 100644
--- a/configs/lahaina/mixer_paths.xml
+++ b/configs/lahaina/mixer_paths.xml
@@ -340,9 +340,15 @@
     <ctl name="DSD_R Switch" value="0" />
 
     <!-- TX Controls -->
+    <!-- Enable these switches at the end of a path -->
+    <ctl name="ADC2_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="0" />
+
     <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
     <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
-    <ctl name="ADC2_MIXER Switch" value="0" />
     <ctl name="ADC2 MUX" value="ZERO" />
     <ctl name="DEC0_BCS Switch" value="0" />
     <ctl name="TX_AIF1_CAP Mixer DEC0" value="0" />
@@ -377,6 +383,10 @@
     <ctl name="TX DEC7 MUX" value="SWR_MIC" />
     <ctl name="TX DMIC MUX7" value="ZERO" />
     <ctl name="TX SMIC MUX7" value="ZERO" />
+    <ctl name="SWR_MIC0 HIFI PortMap" value="ZERO" />
+    <ctl name="SWR_MIC1 HIFI PortMap" value="ZERO" />
+    <ctl name="SWR_MIC2 HIFI PortMap" value="ZERO" />
+    <ctl name="SWR_MIC3 HIFI PortMap" value="ZERO" />
 
     <!-- Volume controls -->
     <ctl name="WSA_RX0 Digital Volume" value="84" />
@@ -2409,12 +2419,12 @@
         <ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
         <ctl name="DEC0_BCS Switch" value="1" />
         <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
         <ctl name="BCS Channel" value="CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic1">
@@ -2422,8 +2432,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic2">
@@ -2431,8 +2441,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC1" />
-        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC1 HIFI PortMap" value="SWRM_TX1_CH2" />
+        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic3">
@@ -2440,8 +2450,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC2" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX1_CH3" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic4">
@@ -2449,8 +2459,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC3" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX1_CH4" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker">
@@ -2902,10 +2912,10 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX1_CH3" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker-dmic-endfire">
@@ -2916,10 +2926,10 @@
         <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
         <ctl name="TX DEC1 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX1" value="SWR_MIC0" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX1_CH4" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic-endfire">
@@ -2995,10 +3005,10 @@
         <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX1_CH4" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic-broadside">
@@ -3022,12 +3032,12 @@
         <ctl name="TX SMIC MUX1" value="SWR_MIC11" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC8" />
         <ctl name="TX SMIC MUX3" value="SWR_MIC10" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX3_CH3" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker-tmic">
@@ -3041,12 +3051,12 @@
         <ctl name="TX SMIC MUX1" value="SWR_MIC11" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC8" />
         <ctl name="TX SMIC MUX3" value="SWR_MIC10" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX3_CH3" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="voice-speaker-tmic">
@@ -3068,14 +3078,14 @@
         <ctl name="TX SMIC MUX2" value="SWR_MIC8" />
         <ctl name="TX SMIC MUX3" value="SWR_MIC10" />
         <ctl name="TX SMIC MUX4" value="SWR_MIC9" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX3_CH3" />
         <ctl name="SWR_MIC1 HIFI PortMap" value="SWRM_TX3_CH2" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker-qmic-liquid">
@@ -3150,10 +3160,10 @@
         <ctl name="TX SMIC MUX6" value="SWR_MIC1" />
         <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
         <ctl name="TX_AIF1_CAP Mixer DEC6" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="voice-tty-vco-handset-mic">
diff --git a/configs/lahaina/mixer_paths_cdp.xml b/configs/lahaina/mixer_paths_cdp.xml
index 63a3b4f..789c6a0 100644
--- a/configs/lahaina/mixer_paths_cdp.xml
+++ b/configs/lahaina/mixer_paths_cdp.xml
@@ -327,15 +327,21 @@
     <ctl name="DSD_R Switch" value="0" />
 
     <!-- TX Controls -->
-    <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
-    <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
+    <!-- Enable these switches at the end of a path -->
     <ctl name="ADC1_MIXER Switch" value="0" />
     <ctl name="ADC2_MIXER Switch" value="0" />
+    <ctl name="ADC3_MIXER Switch" value="0" />
+    <ctl name="ADC4_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="0" />
+
+    <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+    <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
     <ctl name="ADC2 MUX" value="ZERO" />
     <ctl name="DEC0_BCS Switch" value="0" />
-    <ctl name="ADC3_MIXER Switch" value="0" />
     <ctl name="ADC3 MUX" value="ZERO" />
-    <ctl name="ADC4_MIXER Switch" value="0" />
     <ctl name="ADC4 MUX" value="ZERO" />
     <ctl name="TX_AIF1_CAP Mixer DEC0" value="0" />
     <ctl name="TX_AIF1_CAP Mixer DEC1" value="0" />
@@ -379,10 +385,6 @@
     <ctl name="SWR_MIC1 HIFI PortMap" value="ZERO" />
     <ctl name="SWR_MIC2 HIFI PortMap" value="ZERO" />
     <ctl name="SWR_MIC3 HIFI PortMap" value="ZERO" />
-    <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="0" />
-    <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="0" />
-    <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="0" />
-    <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="0" />
 
     <!-- Volume controls -->
     <ctl name="WSA_RX0 Digital Volume" value="84" />
@@ -2275,41 +2277,41 @@
         <ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
         <ctl name="DEC0_BCS Switch" value="1" />
         <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
         <ctl name="BCS Channel" value="CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="amic3">
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC1" />
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP3" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="amic4">
         <ctl name="TX DEC5 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX5" value="SWR_MIC2" />
         <ctl name="TX_AIF1_CAP Mixer DEC5" value="1" />
-        <ctl name="ADC3_MIXER Switch" value="1" />
         <ctl name="ADC3 MUX" value="INP4" />
         <ctl name="ADC3 ChMap" value="SWRM_TX1_CH3" />
         <ctl name="HDR34 MUX" value="NO_HDR34" />
+        <ctl name="ADC3_MIXER Switch" value="1" />
     </path>
 
     <path name="amic5">
         <ctl name="TX DEC3 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX3" value="SWR_MIC3" />
         <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
-        <ctl name="ADC4_MIXER Switch" value="1" />
-        <ctl name="ADC4 MUX" value="INP5" />
         <ctl name="ADC4 ChMap" value="SWRM_TX1_CH4" />
+        <ctl name="ADC4 MUX" value="INP5" />
+        <ctl name="ADC4_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic1">
@@ -2317,8 +2319,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic2">
@@ -2326,8 +2328,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC1" />
-        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC1 HIFI PortMap" value="SWRM_TX1_CH2" />
+        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic3">
@@ -2335,8 +2337,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC2" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX1_CH3" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic4">
@@ -2344,8 +2346,8 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC3" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX1_CH4" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker">
@@ -2793,10 +2795,10 @@
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC2" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX1_CH3" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker-dmic-endfire">
@@ -2807,10 +2809,10 @@
         <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
         <ctl name="TX DEC1 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX1" value="SWR_MIC0" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX1_CH4" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic-endfire">
@@ -2886,10 +2888,10 @@
         <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX1_CH4" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic-broadside">
@@ -2913,12 +2915,12 @@
         <ctl name="TX SMIC MUX1" value="SWR_MIC11" />
         <ctl name="TX SMIC MUX2" value="SWR_MIC8" />
         <ctl name="TX SMIC MUX3" value="SWR_MIC10" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX3_CH3" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker-tmic">
@@ -2944,14 +2946,14 @@
         <ctl name="TX SMIC MUX2" value="SWR_MIC8" />
         <ctl name="TX SMIC MUX3" value="SWR_MIC10" />
         <ctl name="TX SMIC MUX4" value="SWR_MIC9" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
         <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
         <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
         <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX3_CH3" />
         <ctl name="SWR_MIC1 HIFI PortMap" value="SWRM_TX3_CH2" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="speaker-qmic-liquid">
diff --git a/configs/lahaina/mixer_paths_qrd.xml b/configs/lahaina/mixer_paths_qrd.xml
index 19284f4..ff3d0f9 100644
--- a/configs/lahaina/mixer_paths_qrd.xml
+++ b/configs/lahaina/mixer_paths_qrd.xml
@@ -340,9 +340,12 @@
     <ctl name="DSD_R Switch" value="0" />
 
     <!-- TX Controls -->
+    <!-- Enable these switches at the end of a path -->
+    <ctl name="ADC1_MIXER Switch" value="0" />
+    <ctl name="ADC2_MIXER Switch" value="0" />
+
     <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
     <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
-    <ctl name="ADC2_MIXER Switch" value="0" />
     <ctl name="ADC2 MUX" value="ZERO" />
     <ctl name="DEC0_BCS Switch" value="0" />
     <ctl name="TX_AIF1_CAP Mixer DEC0" value="0" />
@@ -2405,9 +2408,10 @@
     <!-- These are actual sound device specific mixer settings -->
     <path name="amic1">
         <ctl name="TX DEC2 MUX" value="SWR_MIC" />
-        <ctl name="TX SMIC MUX2" value="ADC0" />
+        <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
         <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+        <ctl name="ADC1 ChMap" value="SWRM_TX1_CH1" />
         <ctl name="ADC1_MIXER Switch" value="1" />
     </path>
 
@@ -2417,22 +2421,24 @@
         <ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
         <ctl name="DEC0_BCS Switch" value="1" />
         <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
         <ctl name="BCS Channel" value="CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
 
     <path name="amic3">
-        <ctl name="TX DEC2 MUX" value="SWR_MIC" />
-        <ctl name="TX SMIC MUX2" value="ADC2" />
         <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+        <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+        <ctl name="TX SMIC MUX2" value="SWR_MIC1" />
         <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
+        <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="ADC2 MUX" value="INP3" />
+        <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="dmic1">
@@ -3128,8 +3134,8 @@
         <ctl name="TX SMIC MUX6" value="ADC1" />
         <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
         <ctl name="TX_AIF1_CAP Mixer DEC6" value="1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="voice-tty-vco-handset-mic">
@@ -3662,5 +3668,4 @@
         <path name="incall_music_uplink2" />
     </path>
 
-
 </mixer>
diff --git a/configs/lahaina/sound_trigger_mixer_paths.xml b/configs/lahaina/sound_trigger_mixer_paths.xml
index c0f0f0e..dcee657 100644
--- a/configs/lahaina/sound_trigger_mixer_paths.xml
+++ b/configs/lahaina/sound_trigger_mixer_paths.xml
@@ -95,6 +95,10 @@
     <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="0" />
     <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="0" />
     <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="0" />
+    <ctl name="SWR_MIC0 LP PortMap" value="ZERO" />
+    <ctl name="SWR_MIC1 LP PortMap" value="ZERO" />
+    <ctl name="SWR_MIC2 LP PortMap" value="ZERO" />
+    <ctl name="SWR_MIC3 LP PortMap" value="ZERO" />
 
     <path name="listen-voice-wakeup-1">
         <ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
@@ -244,9 +248,9 @@
         <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
         <ctl name="VA DEC0 MUX" value="SWR_MIC" />
         <ctl name="VA SMIC MUX0" value="SWR_MIC11" />
-        <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC3 LP PortMap" value="SWRM_TX3_CH4" />
         <ctl name="VA_DEC0 Volume" value="99" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="listen-ape-handset-mic-preproc">
@@ -261,12 +265,12 @@
         <ctl name="VA DEC1 MUX" value="SWR_MIC" />
         <ctl name="VA SMIC MUX0" value="SWR_MIC11" />
         <ctl name="VA SMIC MUX1" value="SWR_MIC8" />
-        <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
-        <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC3 LP PortMap" value="SWRM_TX3_CH4" />
+        <ctl name="SWR_MIC0 LP PortMap" value="SWRM_TX3_CH1" />
         <ctl name="VA_DEC0 Volume" value="99" />
         <ctl name="VA_DEC1 Volume" value="99" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="listen-ape-handset-tmic">
@@ -280,15 +284,15 @@
         <ctl name="VA SMIC MUX0" value="SWR_MIC11" />
         <ctl name="VA SMIC MUX1" value="SWR_MIC8" />
         <ctl name="VA SMIC MUX2" value="SWR_MIC9" />
-        <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
-        <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
-        <ctl name="SWR_MIC1 HIFI PortMap" value="SWRM_TX3_CH2" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC3 LP PortMap" value="SWRM_TX3_CH4" />
+        <ctl name="SWR_MIC0 LP PortMap" value="SWRM_TX3_CH1" />
+        <ctl name="SWR_MIC1 LP PortMap" value="SWRM_TX3_CH2" />
         <ctl name="VA_DEC0 Volume" value="99" />
         <ctl name="VA_DEC1 Volume" value="99" />
         <ctl name="VA_DEC2 Volume" value="99" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="listen-ape-handset-qmic">
@@ -305,30 +309,30 @@
         <ctl name="VA SMIC MUX1" value="SWR_MIC8" />
         <ctl name="VA SMIC MUX2" value="SWR_MIC9" />
         <ctl name="VA SMIC MUX3" value="SWR_MIC10" />
-        <ctl name="SWR_MIC3 HIFI PortMap" value="SWRM_TX3_CH4" />
-        <ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX3_CH1" />
-        <ctl name="SWR_MIC1 HIFI PortMap" value="SWRM_TX3_CH2" />
-        <ctl name="SWR_MIC2 HIFI PortMap" value="SWRM_TX3_CH3" />
-        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
-        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC3 LP PortMap" value="SWRM_TX3_CH4" />
+        <ctl name="SWR_MIC0 LP PortMap" value="SWRM_TX3_CH1" />
+        <ctl name="SWR_MIC1 LP PortMap" value="SWRM_TX3_CH2" />
+        <ctl name="SWR_MIC2 LP PortMap" value="SWRM_TX3_CH3" />
         <ctl name="VA_DEC0 Volume" value="99" />
         <ctl name="VA_DEC1 Volume" value="99" />
         <ctl name="VA_DEC2 Volume" value="99" />
         <ctl name="VA_DEC3 Volume" value="99" />
+        <ctl name="SWR_MIC3 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC1 SWR_DMIC_MIXER Switch" value="1" />
+        <ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
     </path>
 
     <path name="listen-ape-headset-mic">
         <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
         <ctl name="VA DEC0 MUX" value="SWR_MIC" />
         <ctl name="VA SMIC MUX0" value="SWR_MIC1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
         <ctl name="ADC2_BCS Disable" value="1" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="echo-reference">
diff --git a/configs/lahaina/sound_trigger_mixer_paths_cdp.xml b/configs/lahaina/sound_trigger_mixer_paths_cdp.xml
index 3c2047d..a59a874 100644
--- a/configs/lahaina/sound_trigger_mixer_paths_cdp.xml
+++ b/configs/lahaina/sound_trigger_mixer_paths_cdp.xml
@@ -177,97 +177,81 @@
     <path name="listen-voice-wakeup-1 port">
         <ctl name="LSM1 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-2 port">
         <ctl name="LSM2 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-3 port">
         <ctl name="LSM3 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-4 port">
         <ctl name="LSM4 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-5 port">
         <ctl name="LSM5 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-6 port">
         <ctl name="LSM6 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-7 port">
         <ctl name="LSM7 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-8 port">
         <ctl name="LSM8 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-1 preproc port">
         <ctl name="LSM1 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-2 preproc port">
         <ctl name="LSM2 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-3 preproc port">
         <ctl name="LSM3 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-4 preproc port">
         <ctl name="LSM4 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-5 preproc port">
         <ctl name="LSM5 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-6 preproc port">
         <ctl name="LSM6 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-7 preproc port">
         <ctl name="LSM7 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-8 preproc port">
         <ctl name="LSM8 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-ape-handset-mic">
@@ -372,11 +356,12 @@
         <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
         <ctl name="VA DEC0 MUX" value="SWR_MIC" />
         <ctl name="VA SMIC MUX0" value="SWR_MIC1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
         <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
         <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_BCS Disable" value="1" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="echo-reference">
diff --git a/configs/lahaina/sound_trigger_mixer_paths_qrd.xml b/configs/lahaina/sound_trigger_mixer_paths_qrd.xml
index 4707578..e2b9324 100644
--- a/configs/lahaina/sound_trigger_mixer_paths_qrd.xml
+++ b/configs/lahaina/sound_trigger_mixer_paths_qrd.xml
@@ -155,97 +155,81 @@
     <path name="listen-voice-wakeup-1 port">
         <ctl name="LSM1 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-2 port">
         <ctl name="LSM2 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-3 port">
         <ctl name="LSM3 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-4 port">
         <ctl name="LSM4 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-5 port">
         <ctl name="LSM5 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-6 port">
         <ctl name="LSM6 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-7 port">
         <ctl name="LSM7 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-8 port">
         <ctl name="LSM8 Port" value="VA_CDC_DMA_TX_0" />
         <ctl name="LPI Enable" value="1" />
-        <ctl name="ADC2_BCS Disable" value="1" />
     </path>
 
     <path name="listen-voice-wakeup-1 preproc port">
         <ctl name="LSM1 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-2 preproc port">
         <ctl name="LSM2 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-3 preproc port">
         <ctl name="LSM3 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-4 preproc port">
         <ctl name="LSM4 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-5 preproc port">
         <ctl name="LSM5 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-6 preproc port">
         <ctl name="LSM6 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-7 preproc port">
         <ctl name="LSM7 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-voice-wakeup-8 preproc port">
         <ctl name="LSM8 Port" value="ADM_LSM_TX" />
         <ctl name="LPI Enable" value="0" />
-        <ctl name="ADC2_BCS Disable" value="0" />
     </path>
 
     <path name="listen-ape-handset-mic">
@@ -300,10 +284,13 @@
     <path name="listen-ape-headset-mic">
         <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
         <ctl name="VA DEC0 MUX" value="SWR_MIC" />
-        <ctl name="VA SMIC MUX0" value="ADC1" />
-        <ctl name="ADC2_MIXER Switch" value="1" />
+        <ctl name="VA SMIC MUX0" value="SWR_MIC1" />
         <ctl name="ADC2 MUX" value="INP2" />
         <ctl name="VA_DEC0 MODE" value="ADC_LOW_PWR" />
+        <ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
+        <ctl name="HDR12 MUX" value="NO_HDR12" />
+        <ctl name="ADC2_BCS Disable" value="1" />
+        <ctl name="ADC2_MIXER Switch" value="1" />
     </path>
 
     <path name="echo-reference">
diff --git a/configs/lito/lito.mk b/configs/lito/lito.mk
index d17fcde..f0f764c 100644
--- a/configs/lito/lito.mk
+++ b/configs/lito/lito.mk
@@ -301,7 +301,7 @@
 
 #timeout crash duration set to 20sec before system is ready.
 #timeout duration updates to default timeout of 5sec once the system is ready.
-PRODUCT_PRODUCT_PROPERTIES += \
+PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.hal.boot.timeout.ms=20000
 
 #enable pbe effects
diff --git a/configs/msmnile/msmnile.mk b/configs/msmnile/msmnile.mk
index 49b7718..c7f5359 100644
--- a/configs/msmnile/msmnile.mk
+++ b/configs/msmnile/msmnile.mk
@@ -276,7 +276,7 @@
 
 #timeout crash duration set to 20sec before system is ready.
 #timeout duration updates to default timeout of 5sec once the system is ready.
-PRODUCT_PRODUCT_PROPERTIES += \
+PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.hal.boot.timeout.ms=20000
 
 #enable dsp gapless mode by default
diff --git a/configs/trinket/audio_policy_configuration.xml b/configs/trinket/audio_policy_configuration.xml
old mode 100644
new mode 100755
index 0de0b22..aec4edb
--- a/configs/trinket/audio_policy_configuration.xml
+++ b/configs/trinket/audio_policy_configuration.xml
@@ -210,6 +210,12 @@
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
                 </mixPort>
                 <mixPort name="hifi_input" role="sink" />
+                <mixPort name="fast input" role="sink"
+                         flags="AUDIO_INPUT_FLAG_FAST">
+                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
+                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
+                </mixPort>
             </mixPorts>
 
             <devicePorts>
@@ -370,6 +376,8 @@
                 <route type="mix" sink="BT A2DP Speaker"
                        sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
                 <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
+                <route type="mix" sink="fast input"
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
             </routes>
 
         </module>
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 5f10ca7..492519d 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -2618,29 +2618,19 @@
 #define PLATFORM_INFO_XML_PATH          "audio_platform_info.xml"
 #define PLATFORM_INFO_XML_BASE_STRING   "audio_platform_info"
 
-#ifdef LINUX_ENABLED
-static const char *kConfigLocationList[] =
-        {"/etc"};
-#else
-static const char *kConfigLocationList[] =
-        {"/vendor/etc"};
-#endif
-static const int kConfigLocationListSize =
-        (sizeof(kConfigLocationList) / sizeof(kConfigLocationList[0]));
-
 bool audio_extn_utils_resolve_config_file(char file_name[MIXER_PATH_MAX_LENGTH])
 {
     char full_config_path[MIXER_PATH_MAX_LENGTH];
-    for (int i = 0; i < kConfigLocationListSize; i++) {
-        snprintf(full_config_path,
-                 MIXER_PATH_MAX_LENGTH,
-                 "%s/%s",
-                 kConfigLocationList[i],
-                 file_name);
-        if (F_OK == access(full_config_path, 0)) {
-            strlcpy(file_name, full_config_path, MIXER_PATH_MAX_LENGTH);
-            return true;
-        }
+    char vendor_config_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+
+    /* Get path for audio configuration files in vendor */
+    audio_get_vendor_config_path(vendor_config_path,
+        sizeof(vendor_config_path));
+    snprintf(full_config_path, sizeof(full_config_path),
+        "%s/%s", vendor_config_path, file_name);
+    if (F_OK == access(full_config_path, 0)) {
+        strlcpy(file_name, full_config_path, MIXER_PATH_MAX_LENGTH);
+        return true;
     }
     return false;
 }
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 0594b7b..251352b 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4418,10 +4418,8 @@
     /* This adjustment accounts for buffering after app processor.
      * It is based on estimated DSP latency per use case, rather than exact.
      */
-    pthread_mutex_lock(&adev->lock);
-    dsp_frames = platform_render_latency(out->dev, out->usecase) *
+    dsp_frames = platform_render_latency(out) *
         out->sample_rate / 1000000LL;
-    pthread_mutex_unlock(&adev->lock);
 
     pthread_mutex_lock(&out->position_query_lock);
     written_frames = out->written /
@@ -5386,9 +5384,7 @@
                          1000) / (out->config.rate);
         else
             period_ms = 0;
-        pthread_mutex_lock(&adev->lock);
-        latency = period_ms + platform_render_latency(out->dev, out->usecase)/1000;
-        pthread_mutex_unlock(&adev->lock);
+        latency = period_ms + platform_render_latency(out) / 1000;
     } else {
         latency = (out->config.period_count * out->config.period_size * 1000) /
            (out->config.rate);
@@ -5867,19 +5863,21 @@
             ret = voice_extn_compress_voip_start_output_stream(out);
         else
             ret = start_output_stream(out);
-        pthread_mutex_unlock(&adev->lock);
         /* ToDo: If use case is compress offload should return 0 */
         if (ret != 0) {
             out->standby = true;
+            pthread_mutex_unlock(&adev->lock);
             goto exit;
         }
         out->started = 1;
         out->last_fifo_valid = false; // we're coming out of standby, last_fifo isn't valid.
-        if (last_known_cal_step != -1) {
+
+        if ((last_known_cal_step != -1) && (adev->platform != NULL)) {
             ALOGD("%s: retry previous failed cal level set", __func__);
-            audio_hw_send_gain_dep_calibration(last_known_cal_step);
+            platform_send_gain_dep_cal(adev->platform, last_known_cal_step);
             last_known_cal_step = -1;
         }
+        pthread_mutex_unlock(&adev->lock);
 
         if ((out->is_iec61937_info_available == true) &&
             (audio_extn_passthru_is_passthrough_stream(out))&&
@@ -6324,10 +6322,8 @@
 
                 // This adjustment accounts for buffering after app processor.
                 // It is based on estimated DSP latency per use case, rather than exact.
-                pthread_mutex_lock(&adev->lock);
-                frames_temp = platform_render_latency(out->dev, out->usecase) *
+                frames_temp = platform_render_latency(out) *
                               out->sample_rate / 1000000LL;
-                pthread_mutex_unlock(&adev->lock);
                 if (signed_frames >= frames_temp)
                     signed_frames -= frames_temp;
 
@@ -7225,10 +7221,8 @@
         unsigned int avail;
         if (pcm_get_htimestamp(in->pcm, &avail, &timestamp) == 0) {
             *frames = in->frames_read + avail;
-            pthread_mutex_lock(&adev->lock);
             *time = timestamp.tv_sec * 1000000000LL + timestamp.tv_nsec
-                    - platform_capture_latency(in->dev, in->usecase) * 1000LL;
-            pthread_mutex_unlock(&adev->lock);
+                    - platform_capture_latency(in) * 1000LL;
             ret = 0;
         }
     }
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 73d8b74..4ee49c4 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -5821,12 +5821,14 @@
 }
 
 /* Delay in Us, only to be used for PCM formats */
-int64_t platform_render_latency(struct audio_device *adev __unused,
-                                audio_usecase_t usecase)
+int64_t platform_render_latency(struct stream_out *out)
 {
     int64_t delay = 0LL;
 
-    switch (usecase) {
+    if (!out)
+        return delay;
+
+    switch (out->usecase) {
         case USECASE_AUDIO_PLAYBACK_DEEP_BUFFER:
             delay = DEEP_BUFFER_PLATFORM_DELAY;
             break;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 97f2732..8bd2bbf 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1612,8 +1612,6 @@
     sizeof(msm_device_to_be_id) / sizeof(msm_device_to_be_id[0]);
 #endif
 
-static int snd_device_delay_ms[SND_DEVICE_MAX] = {0};
-
 #define DEEP_BUFFER_PLATFORM_DELAY (29*1000LL)
 #define PCM_OFFLOAD_PLATFORM_DELAY (30*1000LL)
 #define LOW_LATENCY_PLATFORM_DELAY (13*1000LL)
@@ -2264,7 +2262,6 @@
         hw_interface_table[dev] = NULL;
         operator_specific_device_table[dev] = NULL;
         external_specific_device_table[dev] = NULL;
-        snd_device_delay_ms[dev] = 0;
         /* Init island cfg and power mode */
         my_data->island_cfg[dev].mixer_ctl = NULL;
         my_data->power_mode_cfg[dev].mixer_ctl = NULL;
@@ -8885,26 +8882,6 @@
     return NULL;
 }
 
-void platform_set_snd_device_delay(snd_device_t snd_device, int delay_ms)
-{
-    if ((snd_device < SND_DEVICE_MIN) || (snd_device >= SND_DEVICE_MAX)) {
-        ALOGE("%s: Invalid snd_device = %d", __func__, snd_device);
-        return;
-    }
-
-    snd_device_delay_ms[snd_device] = delay_ms;
-}
-
-/* return delay in Us */
-int64_t platform_get_snd_device_delay(snd_device_t snd_device)
-{
-    if ((snd_device < SND_DEVICE_MIN) || (snd_device >= SND_DEVICE_MAX)) {
-        ALOGE("%s: Invalid snd_device = %d", __func__, snd_device);
-        return 0;
-    }
-    return 1000LL * (int64_t)snd_device_delay_ms[snd_device];
-}
-
 void platform_set_audio_source_delay(audio_source_t audio_source, int delay_ms)
 {
     if ((audio_source < AUDIO_SOURCE_DEFAULT) ||
@@ -8928,14 +8905,14 @@
     return 1000LL * audio_source_delay_ms[audio_source];
 }
 
-/* Delay in Us */
 /* Delay in Us, only to be used for PCM formats */
-int64_t platform_render_latency(struct audio_device *adev, audio_usecase_t usecase)
+int64_t platform_render_latency(struct stream_out *out)
 {
     int64_t delay = 0LL;
-    struct audio_usecase *uc_info;
 
-    switch (usecase) {
+    if (!out)
+        return delay;
+    switch (out->usecase) {
         case USECASE_AUDIO_PLAYBACK_DEEP_BUFFER:
         case USECASE_AUDIO_PLAYBACK_MEDIA:
         case USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE:
@@ -8963,32 +8940,20 @@
             break;
     }
 
-    uc_info = get_usecase_from_list(adev, usecase);
-
-    if (uc_info != NULL) {
-        if (uc_info->type == PCM_PLAYBACK)
-            delay += platform_get_snd_device_delay(uc_info->out_snd_device);
-        else
-            ALOGE("%s: Invalid uc_info->type %d", __func__, uc_info->type);
-    }
-
+    /* out->device could be used to add delay time if it's necessary */
     return delay;
 }
 
-int64_t platform_capture_latency(struct audio_device *adev, audio_usecase_t usecase)
+int64_t platform_capture_latency(struct stream_in *in)
 {
     int64_t delay = 0LL;
-    struct audio_usecase *uc_info;
 
-    uc_info = get_usecase_from_list(adev, usecase);
+    if (!in)
+        return delay;
 
-    if (uc_info != NULL) {
-        if (uc_info->type == PCM_CAPTURE)
-            delay += platform_get_snd_device_delay(uc_info->in_snd_device);
-        else
-            ALOGE("%s: Invalid uc_info->type %d", __func__, uc_info->type);
-    }
+    delay = platform_get_audio_source_delay(in->source);
 
+    /* in->device could be used to add delay time if it's necessary */
     return delay;
 }
 
diff --git a/hal/platform_api.h b/hal/platform_api.h
index c3efd3c..7039d5d 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -236,8 +236,8 @@
 int platform_update_lch(void *platform, struct voice_session *session,
                         enum voice_lch_mode lch_mode);
 /* returns the latency for a usecase in Us */
-int64_t platform_render_latency(struct audio_device* adev, audio_usecase_t usecase);
-int64_t platform_capture_latency(struct audio_device* adev, audio_usecase_t usecase);
+int64_t platform_render_latency(struct stream_out *out);
+int64_t platform_capture_latency(struct stream_in *in);
 int platform_update_usecase_from_source(int source, audio_usecase_t usecase);
 
 bool platform_listen_device_needs_event(snd_device_t snd_device);
@@ -419,7 +419,6 @@
                                   int controller, int stream);
 int platform_get_display_port_ctl_index(int controller, int stream);
 bool platform_is_call_proxy_snd_device(snd_device_t snd_device);
-void platform_set_snd_device_delay(snd_device_t snd_device, int delay_ms);
 void platform_set_audio_source_delay(audio_source_t audio_source, int delay_ms);
 
 int platform_get_audio_source_index(const char *audio_source_name);
diff --git a/hal/platform_info.c b/hal/platform_info.c
index 76239ac..4ad5a5c 100644
--- a/hal/platform_info.c
+++ b/hal/platform_info.c
@@ -80,7 +80,6 @@
     CUSTOM_MTMX_IN_PARAMS,
     CUSTOM_MTMX_PARAM_IN_CH_INFO,
     MMSECNS,
-    SND_DEV_DELAY,
     AUDIO_SOURCE_DELAY,
 } section_t;
 
@@ -118,7 +117,6 @@
 static void process_custom_mtmx_in_params(const XML_Char **attr);
 static void process_custom_mtmx_param_in_ch_info(const XML_Char **attr);
 static void process_fluence_mmsecns(const XML_Char **attr);
-static void process_snd_device_delay(const XML_Char **attr);
 static void process_audio_source_delay(const XML_Char **attr);
 
 static section_process_fn section_table[] = {
@@ -144,7 +142,6 @@
     [CUSTOM_MTMX_IN_PARAMS] = process_custom_mtmx_in_params,
     [CUSTOM_MTMX_PARAM_IN_CH_INFO] = process_custom_mtmx_param_in_ch_info,
     [MMSECNS] = process_fluence_mmsecns,
-    [SND_DEV_DELAY] = process_snd_device_delay,
     [AUDIO_SOURCE_DELAY] = process_audio_source_delay,
 };
 
@@ -719,33 +716,6 @@
     return;
 }
 
-static void process_snd_device_delay(const XML_Char **attr)
-{
-    snd_device_t snd_device = SND_DEVICE_NONE;
-
-    if (strcmp(attr[0], "name") != 0) {
-        ALOGE("%s: 'name' not found", __func__);
-        goto done;
-    }
-
-    snd_device = platform_get_snd_device_index((char *)attr[1]);
-    if (snd_device < 0) {
-        ALOGE("%s: Device %s in %s not found, no ACDB ID set!",
-              __func__, (char *)attr[3], get_platform_xml_path());
-        goto done;
-    }
-
-    if (strcmp(attr[2], "delay") != 0) {
-        ALOGE("%s: 'delay' not found", __func__);
-        goto done;
-    }
-
-    platform_set_snd_device_delay(snd_device, atoi((char *)attr[3]));
-
-done:
-    return;
-}
-
 static void process_audio_source_delay(const XML_Char **attr)
 {
     audio_source_t audio_source = -1;
@@ -754,6 +724,7 @@
         ALOGE("%s: 'name' not found", __func__);
         goto done;
     }
+
     audio_source = platform_get_audio_source_index((const char *)attr[1]);
 
     if (audio_source < 0) {
@@ -1515,9 +1486,6 @@
                 return;
             }
             section = CUSTOM_MTMX_PARAM_IN_CH_INFO;
-        } else if (strcmp(tag_name, "snd_device_delay") == 0) {
-            section = SND_DEV_DELAY;
-        } else if (strcmp(tag_name, "device_delay") == 0) {
         } else if (strcmp(tag_name, "audio_input_source_delay") == 0) {
             section = AUDIO_SOURCE_DELAY;
         } else if (strcmp(tag_name, "audio_source_delay") == 0) {
diff --git a/post_proc/volume_listener.c b/post_proc/volume_listener.c
index 44d1702..65575bc 100644
--- a/post_proc/volume_listener.c
+++ b/post_proc/volume_listener.c
@@ -353,8 +353,8 @@
                     }
                 } else {
                     if (dumping_enabled) {
-                        ALOGW("%s: volume changed but gain dep cal level is still the same",
-                              __func__);
+                        ALOGW("%s: volume changed but gain dep cal level is still the same: (old/new) Volume (%f/%f) (old/new) level (%d)",
+                              __func__,current_vol, new_vol, current_gain_dep_cal_level);
                     } else {
                         ALOGV("%s: volume changed but gain dep cal level is still the same",
                               __func__);