Merge tag 'LA.UM.9.6.2.c26-02500-89xx.0' into int/11/fp3

"LA.UM.9.6.2.c26-02500-89xx.0"

* tag 'LA.UM.9.6.2.c26-02500-89xx.0':
  hal: Fix CFI errors

Change-Id: Ie0a1b57a8b2e4d247680962d5a760e13d5c4f310
diff --git a/adsprpcd/Android.bp b/adsprpcd/Android.bp
index 7e6a8e7..f91ad2f 100644
--- a/adsprpcd/Android.bp
+++ b/adsprpcd/Android.bp
@@ -3,8 +3,6 @@
 
     srcs: ["adsprpcd.c"],
 
-    header_libs: ["libfastrpcshippable_headers"],
-
     shared_libs: [
         "liblog",
         "libdl",
diff --git a/configs/msm8953/audio_output_policy.conf b/configs/msm8953/audio_output_policy.conf
index b19fbb0..4b769c4 100644
--- a/configs/msm8953/audio_output_policy.conf
+++ b/configs/msm8953/audio_output_policy.conf
@@ -48,14 +48,14 @@
   }
   compress_offload_16 {
     flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
-    formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
+    formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
     sampling_rates 44100|48000|96000|192000
     bit_width 16
     app_type 69936
   }
   compress_offload_24 {
     flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
-    formats AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_VORBIS
+    formats AUDIO_FORMAT_FLAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_VORBIS
     sampling_rates 44100|48000|96000|192000
     bit_width 24
     app_type 69940
diff --git a/configs/msm8953/audio_platform_info_tashalite.xml b/configs/msm8953/audio_platform_info_tashalite.xml
index ee65dac..f24edca 100644
--- a/configs/msm8953/audio_platform_info_tashalite.xml
+++ b/configs/msm8953/audio_platform_info_tashalite.xml
@@ -77,8 +77,10 @@
         <device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" acdb_id="8"/>
     </acdb_ids>
     <backend_names>
-        <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="INT_BT_SCO_RX"/>
-        <device name="SND_DEVICE_OUT_BT_SCO" interface="INT_BT_SCO_RX"/>
+        <device name="SND_DEVICE_OUT_VOICE_HANDSET" backend="voice-handset" interface="SLIMBUS_0_RX"/>
+        <device name="SND_DEVICE_OUT_HANDSET" backend="handset" interface="SLIMBUS_0_RX"/>
+        <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="INTERNAL_BT_SCO_RX"/>
+        <device name="SND_DEVICE_OUT_BT_SCO" interface="INTERNAL_BT_SCO_RX"/>
         <device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
         <device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
         <device name="SND_DEVICE_OUT_ANC_HEADSET" backend="headphones" interface="SLIMBUS_6_RX"/>
@@ -90,10 +92,10 @@
         <device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
         <device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
         <device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
-        <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="SLIMBUS_0_RX--and-INT_BT_SCO_RX"/>
-        <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="SLIMBUS_0_RX--and-INT_BT_SCO_RX"/>
-        <device name="SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO" backend="wsa-speaker-and-bt-sco" interface="SLIMBUS_0_RX--and-INT_BT_SCO_RX"/>
-        <device name="SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_WB" backend="wsa-speaker-and-bt-sco-wb" interface="SLIMBUS_0_RX--and-INT_BT_SCO_RX"/>
+        <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="SLIMBUS_0_RX--and-INTERNAL_BT_SCO_RX"/>
+        <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="SLIMBUS_0_RX--and-INTERNAL_BT_SCO_RX"/>
+        <device name="SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO" backend="wsa-speaker-and-bt-sco" interface="SLIMBUS_0_RX--and-INTERNAL_BT_SCO_RX"/>
+        <device name="SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_WB" backend="wsa-speaker-and-bt-sco-wb" interface="SLIMBUS_0_RX--and-INTERNAL_BT_SCO_RX"/>
         <device name="SND_DEVICE_IN_BT_SCO_MIC" interface="INT_BT_SCO_TX"/>
         <device name="SND_DEVICE_IN_BT_SCO_MIC_NREC" interface="INT_BT_SCO_TX"/>
         <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="INT_BT_SCO_TX"/>
diff --git a/configs/msm8953/audio_policy.conf b/configs/msm8953/audio_policy.conf
index 663a275..cf25174 100644
--- a/configs/msm8953/audio_policy.conf
+++ b/configs/msm8953/audio_policy.conf
@@ -57,7 +57,7 @@
       compress_offload {
         sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000|64000|88200|96000|176400|192000
         channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_2POINT1|AUDIO_CHANNEL_OUT_QUAD|AUDIO_CHANNEL_OUT_PENTA|AUDIO_CHANNEL_OUT_5POINT1|AUDIO_CHANNEL_OUT_6POINT1|AUDIO_CHANNEL_OUT_7POINT1
-        formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
+        formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
         devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_LINE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY
         flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
       }
diff --git a/configs/msm8953/mixer_paths_tashalite.xml b/configs/msm8953/mixer_paths_tashalite.xml
old mode 100644
new mode 100755
index 923bff1..df0eb5f
--- a/configs/msm8953/mixer_paths_tashalite.xml
+++ b/configs/msm8953/mixer_paths_tashalite.xml
@@ -101,15 +101,8 @@
     <ctl name="SLIMBUS_4_RX Audio Mixer MultiMedia2" value="0" />
     <ctl name="MultiMedia5 Mixer SLIM_0_TX" value="0" />
     <ctl name="MultiMedia5 Mixer AFE_PCM_TX" value="0" />
-    <ctl name="MultiMedia4 Mixer MI2S_TX" value="0" />
     <ctl name="MultiMedia1 Mixer MI2S_TX" value="0" />
-    <ctl name="MultiMedia7 Mixer MI2S_TX" value="0" />
     <ctl name="MultiMedia10 Mixer MI2S_TX" value="0" />
-    <ctl name="MultiMedia11 Mixer MI2S_TX" value="0" />
-    <ctl name="MultiMedia12 Mixer MI2S_TX" value="0" />
-    <ctl name="MultiMedia13 Mixer MI2S_TX" value="0" />
-    <ctl name="MultiMedia14 Mixer MI2S_TX" value="0" />
-    <ctl name="MultiMedia15 Mixer MI2S_TX" value="0" />
     <ctl name="MultiMedia16 Mixer MI2S_TX" value="0" />
     <ctl name="MultiMedia1 Mixer SLIM_0_TX" value="0" />
     <ctl name="MultiMedia1 Mixer SLIM_4_TX" value="0" />
@@ -321,11 +314,11 @@
     <ctl name="AIF1_CAP Mixer SLIM TX1" value="0"/>
     <ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
     <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
-    <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="0" />
     <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
     <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
     <!-- echo reference -->
     <ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
+    <ctl name="EC Reference Channels" value="ZERO" />
     <!-- usb headset -->
     <ctl name="AFE_PCM_RX Audio Mixer MultiMedia1" value="0" />
     <ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="0" />
@@ -405,6 +398,7 @@
     <!-- Multimode Voice1 -->
     <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
     <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
+    <ctl name="QUIN_MI2S_RX_Voice Mixer VoiceMMode1" value="0" />
     <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
     <!-- Multimode Voice1 HDMI -->
     <ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -422,6 +416,7 @@
     <!-- Multimode Voice2 -->
     <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
     <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
+    <ctl name="QUIN_MI2S_RX_Voice Mixer VoiceMMode2" value="0" />
     <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
     <!-- Multimode Voice2 HDMI -->
     <ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -559,8 +554,20 @@
     <ctl name="MultiMedia10 Mixer AFE_PCM_TX" value="0" />
     <!-- VoIP over audio -->
 
+    <!-- aw8898_speaker amp -->
+    <ctl name="aw8898_speaker_switch" value="Off" />
+    <!-- aw8898_speaker amp end-->
+
     <!-- These are audio route (FE to BE) specific mixer settings -->
     <path name="deep-buffer-playback">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia1" value="1" />
+    </path>
+
+    <path name="deep-buffer-playback handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="1" />
+    </path>
+
+    <path name="deep-buffer-playback voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="1" />
     </path>
 
@@ -592,19 +599,22 @@
     </path>
 
     <path name="echo-reference">
-        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="QUIN_MI2S_RX" />
+        <ctl name="EC Reference Channels" value="One" />
     </path>
 
     <path name="echo-reference headphones">
         <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
+        <ctl name="EC Reference Channels" value="Two" />
     </path>
 
     <path name="echo-reference headphones-44.1">
-        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_1_TX" />
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_5_RX" />
+        <ctl name="EC Reference Channels" value="Two" />
     </path>
 
     <path name="deep-buffer-playback hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia1" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia1" value="0" />
     </path>
 
     <path name="deep-buffer-playback speaker-and-hdmi">
@@ -667,6 +677,14 @@
     </path>
 
     <path name="low-latency-playback">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia5" value="1" />
+    </path>
+
+    <path name="low-latency-playback handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="1" />
+    </path>
+
+    <path name="low-latency-playback voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="1" />
     </path>
 
@@ -675,7 +693,7 @@
     </path>
 
     <path name="low-latency-playback hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia5" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia5" value="0" />
     </path>
 
     <path name="low-latency-playback bt-sco">
@@ -742,7 +760,7 @@
     </path>
 
     <path name="multi-channel-playback hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia2" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia2" value="0" />
     </path>
 
     <path name="multi-channel-playback afe-proxy">
@@ -750,6 +768,14 @@
     </path>
 
     <path name="audio-ull-playback">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia3" value="1" />
+    </path>
+
+    <path name="audio-ull-playback handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="1" />
+    </path>
+
+    <path name="audio-ull-playback voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="1" />
     </path>
 
@@ -798,7 +824,7 @@
     </path>
 
     <path name="audio-ull-playback hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia3" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia3" value="0" />
     </path>
 
     <path name="audio-ull-playback speaker-and-hdmi">
@@ -816,6 +842,14 @@
     </path>
 
     <path name="compress-offload-playback">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="1" />
+    </path>
+
+    <path name="compress-offload-playback handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="1" />
+    </path>
+
+    <path name="compress-offload-playback voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="1" />
     </path>
 
@@ -824,7 +858,7 @@
     </path>
 
     <path name="compress-offload-playback hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="0" />
     </path>
 
     <path name="compress-offload-playback bt-sco">
@@ -887,11 +921,19 @@
     </path>
 
     <path name="compress-offload-playback2">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia7" value="1" />
+    </path>
+
+    <path name="compress-offload-playback2 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
+    </path>
+
+    <path name="compress-offload-playback2 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
     </path>
 
     <path name="compress-offload-playback2 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia7" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia7" value="0" />
     </path>
 
     <path name="compress-offload-playback2 bt-sco">
@@ -958,11 +1000,19 @@
     </path>
 
     <path name="compress-offload-playback3">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia10" value="1" />
+    </path>
+
+    <path name="compress-offload-playback3 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
+    </path>
+
+    <path name="compress-offload-playback3 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
     </path>
 
     <path name="compress-offload-playback3 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia10" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia10" value="0" />
     </path>
 
     <path name="compress-offload-playback3 bt-sco">
@@ -1025,11 +1075,19 @@
     </path>
 
     <path name="compress-offload-playback4">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia11" value="1" />
+    </path>
+
+    <path name="compress-offload-playback4 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
+    </path>
+
+    <path name="compress-offload-playback4 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
     </path>
 
     <path name="compress-offload-playback4 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia11" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia11" value="0" />
     </path>
 
     <path name="compress-offload-playback4 bt-sco">
@@ -1092,11 +1150,19 @@
     </path>
 
     <path name="compress-offload-playback5">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia12" value="1" />
+    </path>
+
+    <path name="compress-offload-playback5 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
+    </path>
+
+    <path name="compress-offload-playback5 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
     </path>
 
     <path name="compress-offload-playback5 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia12" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia12" value="0" />
     </path>
 
     <path name="compress-offload-playback5 bt-sco">
@@ -1159,11 +1225,19 @@
     </path>
 
     <path name="compress-offload-playback6">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia13" value="1" />
+    </path>
+
+    <path name="compress-offload-playback6 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
+    </path>
+
+    <path name="compress-offload-playback6 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
     </path>
 
     <path name="compress-offload-playback6 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia13" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia13" value="0" />
     </path>
 
     <path name="compress-offload-playback6 bt-sco">
@@ -1226,11 +1300,19 @@
     </path>
 
     <path name="compress-offload-playback7">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia14" value="1" />
+    </path>
+
+    <path name="compress-offload-playback7 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
+    </path>
+
+    <path name="compress-offload-playback7 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
     </path>
 
     <path name="compress-offload-playback7 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia14" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia14" value="0" />
     </path>
 
     <path name="compress-offload-playback7 bt-sco">
@@ -1293,11 +1375,19 @@
     </path>
 
     <path name="compress-offload-playback8">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="1" />
+    </path>
+
+    <path name="compress-offload-playback8 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
+    </path>
+
+    <path name="compress-offload-playback8 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
     </path>
 
     <path name="compress-offload-playback8 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="0" />
     </path>
 
     <path name="compress-offload-playback8 bt-sco">
@@ -1360,11 +1450,19 @@
     </path>
 
     <path name="compress-offload-playback9">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="1" />
+    </path>
+
+    <path name="compress-offload-playback9 handset">
+        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
+    </path>
+
+    <path name="compress-offload-playback9 voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
     </path>
 
     <path name="compress-offload-playback9 hdmi">
-        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="1" />
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="0" />
     </path>
 
     <path name="compress-offload-playback9 bt-sco">
@@ -1484,13 +1582,23 @@
     </path>
 
     <path name="voice-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer CSVoice" value="1" />
+        <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+    </path>
+
+    <path name="voice-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="1" />
+        <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+    </path>
+
+    <path name="voice-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="1" />
         <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
     </path>
 
     <path name="voice-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer CSVoice" value="1" />
-        <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
+        <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
     </path>
 
     <path name="voice-call bt-sco">
@@ -1519,6 +1627,16 @@
     </path>
 
     <path name="voice2-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer Voice2" value="1" />
+        <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+    </path>
+
+    <path name="voice2-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
+        <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+    </path>
+
+    <path name="voice2-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
         <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
     </path>
@@ -1529,8 +1647,8 @@
     </path>
 
     <path name="voice2-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer Voice2" value="1" />
-        <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
+        <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
     </path>
 
     <path name="voice2-call bt-sco">
@@ -1565,7 +1683,7 @@
 
     <path name="play-fm">
         <ctl name="Internal FM RX Volume" value="1" />
-        <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_FM_TX" value="1" />
+        <ctl name="QUIN_MI2S_RX Port Mixer INTERNAL_FM_TX" value="1" />
         <ctl name="SLIMBUS_DL_HL Switch" value="1" />
     </path>
 
@@ -1738,6 +1856,16 @@
 
 
     <path name="volte-call">
+        <ctl name="QUAT_MI2S_RX_Voice Mixer VoLTE" value="1" />
+        <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+    </path>
+
+    <path name="volte-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
+        <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+    </path>
+
+    <path name="volte-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
         <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
     </path>
@@ -1748,8 +1876,8 @@
     </path>
 
     <path name="volte-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
-        <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
+        <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
     </path>
 
     <path name="volte-call bt-sco">
@@ -1778,6 +1906,16 @@
     </path>
 
     <path name="compress-voip-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer Voip" value="1" />
+        <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+    </path>
+
+    <path name="compress-voip-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
+        <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+    </path>
+
+    <path name="compress-voip-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
         <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
     </path>
@@ -1820,6 +1958,16 @@
     </path>
 
     <path name="qchat-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer QCHAT" value="1" />
+        <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+    </path>
+
+    <path name="qchat-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="1" />
+        <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+    </path>
+
+    <path name="qchat-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="1" />
         <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
     </path>
@@ -1840,8 +1988,8 @@
     </path>
 
     <path name="qchat-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer QCHAT" value="1" />
-        <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer QCHAT" value="0" />
+        <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
     </path>
 
     <path name="qchat-call afe-proxy">
@@ -1860,6 +2008,16 @@
     </path>
 
     <path name="vowlan-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer VoWLAN" value="1" />
+        <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+    </path>
+
+    <path name="vowlan-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="1" />
+        <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+    </path>
+
+    <path name="vowlan-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="1" />
         <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
     </path>
@@ -1870,8 +2028,8 @@
     </path>
 
     <path name="vowlan-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
-        <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
+        <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
     </path>
 
     <path name="vowlan-call bt-sco">
@@ -1900,6 +2058,16 @@
     </path>
 
     <path name="voicemmode1-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer VoiceMMode1" value="1" />
+        <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+    </path>
+
+    <path name="voicemmode1-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="1" />
+        <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+    </path>
+
+    <path name="voicemmode1-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="1" />
         <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
     </path>
@@ -1910,8 +2078,8 @@
     </path>
 
     <path name="voicemmode1-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
-        <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
+        <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
     </path>
 
     <path name="voicemmode1-call bt-sco">
@@ -1945,6 +2113,16 @@
     </path>
 
     <path name="voicemmode2-call">
+        <ctl name="QUIN_MI2S_RX_Voice Mixer VoiceMMode2" value="1" />
+        <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+    </path>
+
+    <path name="voicemmode2-call handset">
+        <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="1" />
+        <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+    </path>
+
+    <path name="voicemmode2-call voice-handset">
         <ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="1" />
         <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
     </path>
@@ -1955,8 +2133,8 @@
     </path>
 
     <path name="voicemmode2-call hdmi">
-        <ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
-        <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+        <ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
+        <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
     </path>
 
     <path name="voicemmode2-call bt-sco">
@@ -2019,6 +2197,10 @@
 
     <!-- VoIP Rx settings -->
     <path name="audio-playback-voip">
+        <ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia10" value="1" />
+    </path>
+
+    <path name="audio-playback-voip voice-handset">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
     </path>
 
@@ -2031,10 +2213,15 @@
     </path>
 
     <path name="audio-playback-voip bt-sco-wb">
-        <ctl name="BT SampleRate" value="KHZ_16" />
+        <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+        <ctl name="SLIM_1 SampleRate" value="16000" />
         <path name="audio-playback-voip bt-sco" />
     </path>
 
+    <path name="audio-playback-voip bt-a2dp">
+        <ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia10" value="1" />
+    </path>
+
     <path name="audio-playback-voip afe-proxy">
         <ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
     </path>
@@ -2052,14 +2239,26 @@
         <path name="audio-playback-voip" />
     </path>
 
-    <!-- VoIP Tx settings -->
-    <path name="audio-record-voip">
-        <ctl name="MultiMedia10 Mixer SLIM_0_TX" value="1" />
+    <path name="echo-reference-voip">
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="QUIN_MI2S_RX" />
+        <ctl name="EC Reference Channels" value="One"/>
     </path>
 
-    <path name="audio-record-voip bt-sco">
-        <ctl name="MultiMedia10 Mixer INTERNAL_BT_SCO_TX" value="1" />
+    <path name="echo-reference-voip headphones">
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
+        <ctl name="EC Reference Channels" value="Two"/>
     </path>
+
+    <path name="echo-reference-voip handset">
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
+        <ctl name="EC Reference Channels" value="Two"/>
+    </path>
+
+    <path name="echo-reference-voip headphones-44.1">
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_5_RX" />
+        <ctl name="EC Reference Channels" value="Two"/>
+    </path>
+
     <!-- VoIP Tx settings -->
     <path name="audio-record-voip">
         <ctl name="MultiMedia10 Mixer SLIM_0_TX" value="1" />
@@ -2179,30 +2378,20 @@
         <ctl name="IIR0 INP0 MUX" value="DEC7" />
     </path>
 
+    <path name="speaker">
+        <ctl name="aw8898_speaker_switch" value="On" />
+    </path>
+
+    <path name="speaker-cts">
+        <ctl name="aw8898_speaker_switch" value="On" />
+    </path>
+
     <path name="wsa-speaker">
-        <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
-        <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
-        <ctl name="SLIM_0_RX Channels" value="Two" />
-        <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
-        <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
-        <ctl name="SpkrLeft COMP Switch" value="1" />
-        <ctl name="SpkrRight COMP Switch" value="1" />
-        <ctl name="SpkrLeft BOOST Switch" value="1" />
-        <ctl name="SpkrRight BOOST Switch" value="1" />
-        <ctl name="SpkrLeft VISENSE Switch" value="1" />
-        <ctl name="SpkrRight VISENSE Switch" value="1" />
-        <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
-        <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+        <path name="speaker" />
     </path>
 
     <path name="wsa-speaker-mono">
-        <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
-        <ctl name="SLIM_0_RX Channels" value="One" />
-        <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
-        <ctl name="SpkrLeft COMP Switch" value="1" />
-        <ctl name="SpkrLeft BOOST Switch" value="1" />
-        <ctl name="SpkrLeft VISENSE Switch" value="1" />
-        <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+        <path name="speaker" />
     </path>
 
 
@@ -2212,7 +2401,7 @@
    </path>
 
    <path name="vbat-speaker">
-       <path name="wsa-speaker" />
+       <path name="speaker" />
        <ctl name="RX INT7 VBAT SPKRL VBAT Enable" value="1" />
        <ctl name="RX INT8 VBAT SPKRR VBAT Enable" value="1" />
    </path>
@@ -2238,6 +2427,14 @@
         <ctl name="RX INT0 MIX2 INP" value="SRC0" />
     </path>
 
+    <path name="primary-mic">
+        <path name="dmic2" />
+    </path>
+
+    <path name="secondary-mic">
+        <path name="dmic3" />
+    </path>
+
     <path name="speaker-mic">
         <path name="dmic3" />
     </path>
@@ -2252,7 +2449,7 @@
         <ctl name="AIF4_VI Mixer SPKR_VI_1" value="1" />
         <ctl name="AIF4_VI Mixer SPKR_VI_2" value="1" />
         <ctl name="SLIM_4_TX Format" value="PACKED_16B" />
-        <path name="wsa-speaker" />
+        <path name="speaker" />
         <ctl name="VI_FEED_TX Channels" value="Two" />
         <ctl name="SLIM0_RX_VI_FB_LCH_MUX"  value="SLIM4_TX" />
         <ctl name="SLIM0_RX_VI_FB_RCH_MUX"  value="SLIM4_TX" />
@@ -2289,7 +2486,7 @@
     </path>
 
     <path name="handset-mic">
-        <path name="dmic1" />
+        <path name="dmic2" />
     </path>
 
     <path name="three-mic">
@@ -2379,7 +2576,7 @@
     </path>
 
     <path name="voice-speaker">
-        <path name="wsa-speaker-mono" />
+        <path name="speaker" />
     </path>
 
     <path name="voice-speaker-mic">
@@ -2397,7 +2594,7 @@
 
     <path name="speaker-and-headphones">
         <path name="headphones" />
-        <path name="wsa-speaker" />
+        <path name="speaker" />
     </path>
 
 
@@ -2414,12 +2611,12 @@
     </path>
 
     <path name="speaker-and-usb-headphones">
-        <path name="wsa-speaker" />
+        <path name="speaker" />
         <path name="usb-headphones" />
     </path>
 
     <path name="speaker-and-hdmi">
-        <path name="wsa-speaker" />
+        <path name="speaker" />
         <path name="hdmi" />
     </path>
 
@@ -2459,10 +2656,10 @@
         <ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
         <ctl name="SLIM TX7 MUX" value="DEC7" />
         <ctl name="ADC MUX7" value="DMIC" />
-        <ctl name="DMIC MUX7" value="DMIC0" />
+        <ctl name="DMIC MUX7" value="DMIC1" />
         <ctl name="SLIM TX8 MUX" value="DEC8" />
         <ctl name="ADC MUX8" value="DMIC" />
-        <ctl name="DMIC MUX8" value="DMIC3" />
+        <ctl name="DMIC MUX8" value="DMIC2" />
         <ctl name="SLIM_0_TX Channels" value="Two" />
     </path>
 
@@ -2501,7 +2698,13 @@
     </path>
 
     <path name="voice-speaker-dmic-ef">
-        <path name="speaker-dmic-endfire" />
+        <!-- path name="dmic3" / -->
+        <ctl name="AIF1_CAP Mixer SLIM TX7" value="1"/>
+        <ctl name="SLIM_0_TX Channels" value="One" />
+        <ctl name="SLIM TX7 MUX" value="DEC7" />
+        <ctl name="ADC MUX7" value="DMIC" />
+        <ctl name="DMIC MUX7" value="DMIC2" />
+        <ctl name="IIR0 INP0 MUX" value="DEC7" />
     </path>
 
     <path name="voice-rec-dmic-ef">
diff --git a/hal/Android.mk b/hal/Android.mk
index 1bd1342..7c3592e 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -362,8 +362,7 @@
 LOCAL_CFLAGS += -D_GNU_SOURCE
 LOCAL_CFLAGS += -Wall -Werror
 
-LOCAL_COPY_HEADERS_TO   := mm-audio
-LOCAL_COPY_HEADERS      := audio_extn/audio_defs.h
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 
 ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
     LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
old mode 100644
new mode 100755
index 629e2e3..e0d25d6
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -199,6 +199,9 @@
 static bool audio_extn_audiozoom_enabled = false;
 static bool audio_extn_hifi_filter_enabled = false;
 
+static int ForceUseSpecificMic = 0;
+static bool UseSpecificMic_Enabled = false;
+
 #define AUDIO_PARAMETER_KEY_AANC_NOISE_LEVEL "aanc_noise_level"
 #define AUDIO_PARAMETER_KEY_ANC        "anc_enabled"
 #define AUDIO_PARAMETER_KEY_WFD        "wfd_channel_cap"
@@ -3027,6 +3030,50 @@
     return ret_val;
 }
 
+int audio_extn_get_force_use_specific_mic()
+{
+    ALOGD("%s:[Mic-test] ForceUseSpecificMic(%d)", __func__, ForceUseSpecificMic);
+    return ForceUseSpecificMic;
+}
+bool audio_extn_get_force_use_specific_mic_status()
+{
+    ALOGD("%s:[Mic-test] seSpecificMic_Enabled(%d)", __func__, UseSpecificMic_Enabled);
+    return UseSpecificMic_Enabled;
+}
+void audio_extn_disable_force_use_specific_mic()
+{
+    ForceUseSpecificMic = 0;
+    UseSpecificMic_Enabled = false;
+    ALOGD("%s:[Mic-test] diable force_use_specific_mic", __func__);
+}
+void audio_extn_mic_test_parameters(struct audio_device *adev,
+                               struct str_parms *parms)
+{
+    char value[32]={0};
+    int ret;
+    struct listnode *node;
+    struct audio_usecase *usecase;
+    ret = str_parms_get_str(parms, "ForceUseSpecificMic", value,
+                            sizeof(value));
+    if (ret >= 0) {
+        if (strcmp(value, "1") == 0)
+            ForceUseSpecificMic = 1;
+        else if(strcmp(value, "2") == 0)
+            ForceUseSpecificMic = 2;
+        else
+            UseSpecificMic_Enabled = false;
+        if(ForceUseSpecificMic != 0){
+            UseSpecificMic_Enabled =true;
+            list_for_each(node, &adev->usecase_list) {
+                usecase = node_to_item(node, struct audio_usecase, list);
+                        select_devices(adev, usecase->id);
+                ALOGD("%s:[Mic-test] switching device, usecase->type(%d) ForceUseSpecificMic(%d) Enabled(%d)",
+                        __func__,usecase->type ,ForceUseSpecificMic,UseSpecificMic_Enabled);
+                break;
+            }
+        }
+    }
+}
 
 void audio_extn_init(struct audio_device *adev)
 {
@@ -6368,6 +6415,7 @@
    audio_extn_source_track_set_parameters(adev, parms);
    audio_extn_fbsp_set_parameters(parms);
    audio_extn_keep_alive_set_parameters(adev, parms);
+   audio_extn_mic_test_parameters(adev,parms);
    audio_extn_passthru_set_parameters(adev, parms);
    audio_extn_ext_disp_set_parameters(adev, parms);
    audio_extn_qaf_set_parameters(adev, parms);
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
old mode 100644
new mode 100755
index da986ad..521ce25
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -469,6 +469,9 @@
 };
 typedef enum st_event_type st_event_type_t;
 
+bool audio_extn_get_force_use_specific_mic_status(void);
+int  audio_extn_get_force_use_specific_mic(void);
+void audio_extn_disable_force_use_specific_mic(void);
 int audio_extn_sound_trigger_init(struct audio_device *adev);
 void audio_extn_sound_trigger_deinit(struct audio_device *adev);
 void audio_extn_sound_trigger_update_device_status(snd_device_t snd_device,
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
old mode 100644
new mode 100755
index 8fc2961..89c37d7
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2782,6 +2782,12 @@
                 if (usecase->stream.out == voip_out && voip_in != NULL)
                     select_devices(adev, voip_in->usecase);
             }
+            if(audio_extn_get_force_use_specific_mic_status()){
+                platform_get_input_snd_device(adev->platform,
+                                                          NULL,
+                                                          &usecase->stream.out->device_list,
+                                                          usecase->type);
+            }
         } else if (usecase->type == PCM_CAPTURE) {
             if (usecase->stream.in == NULL) {
                 ALOGE("%s: stream.in is NULL", __func__);
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
old mode 100644
new mode 100755
index 3ecbe6e..8bf3cf7
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -767,6 +767,8 @@
     [SND_DEVICE_IN_INCALL_REC_TX] = "incall-rec-tx",
     [SND_DEVICE_IN_INCALL_REC_RX_TX] = "incall-rec-rx-tx",
     [SND_DEVICE_IN_LINE] = "line-in",
+    [SND_DEVICE_IN_MAIN_MIC] = "primary-mic",
+    [SND_DEVICE_IN_SUB_MIC] = "secondary-mic",
     [SND_DEVICE_IN_HANDSET_6MIC] = "handset-6mic",
     [SND_DEVICE_IN_HANDSET_8MIC] = "handset-8mic",
     [SND_DEVICE_IN_CAMCORDER_INVERT_LANDSCAPE] = "camcorder-mic",
@@ -1002,7 +1004,7 @@
     [SND_DEVICE_IN_VOICE_DMIC] = 41,
     [SND_DEVICE_IN_VOICE_DMIC_SB] = 167,
     [SND_DEVICE_IN_VOICE_DMIC_TMUS] = 89,
-    [SND_DEVICE_IN_VOICE_SPEAKER_DMIC] = 43,
+    [SND_DEVICE_IN_VOICE_SPEAKER_DMIC] = 42,
     [SND_DEVICE_IN_VOICE_SPEAKER_DMIC_SB] = 175,
     [SND_DEVICE_IN_VOICE_SPEAKER_TMIC] = 161,
     [SND_DEVICE_IN_VOICE_SPEAKER_QMIC] = 19,
@@ -1013,7 +1015,7 @@
     [SND_DEVICE_IN_VOICE_TTY_HCO_USB_MIC] = 16,
     [SND_DEVICE_IN_VOICE_RX] = 44,
 
-    [SND_DEVICE_IN_VOICE_REC_MIC] = 4,
+    [SND_DEVICE_IN_VOICE_REC_MIC] = 104,
     [SND_DEVICE_IN_VOICE_REC_MIC_NS] = 107,
     [SND_DEVICE_IN_VOICE_REC_MIC_AEC] = 112,
     [SND_DEVICE_IN_VOICE_REC_MIC_AEC_NS] = 114,
@@ -1066,6 +1068,8 @@
     [SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = 147,
     [SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = 150,
     [SND_DEVICE_IN_LINE] = 4,
+    [SND_DEVICE_IN_MAIN_MIC] = 4,
+    [SND_DEVICE_IN_SUB_MIC] = 11,
     [SND_DEVICE_IN_HANDSET_6MIC] = 4,
     [SND_DEVICE_IN_HANDSET_8MIC] = 4,
     [SND_DEVICE_OUT_VOIP_HANDSET] = 133,
@@ -2353,6 +2357,8 @@
     backend_tag_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS] = strdup("bt-sco-mmsecns");
     backend_tag_table[SND_DEVICE_OUT_CALL_PROXY] = strdup("call-proxy");
     backend_tag_table[SND_DEVICE_IN_CALL_PROXY] = strdup("call-proxy-in");
+    backend_tag_table[SND_DEVICE_OUT_HANDSET] = strdup("handset");
+    backend_tag_table[SND_DEVICE_OUT_VOICE_HANDSET] = strdup("voice-handset");
 
     hw_interface_table[SND_DEVICE_OUT_HANDSET] = strdup("SLIMBUS_0_RX");
     hw_interface_table[SND_DEVICE_OUT_SPEAKER] = strdup("SLIMBUS_0_RX");
@@ -7273,7 +7279,7 @@
                 if ((my_data->fluence_type & FLUENCE_DUAL_MIC) &&
                     (my_data->source_mic_type & SOURCE_DUAL_MIC) &&
                     (channel_count == 2))
-                    snd_device = SND_DEVICE_IN_HANDSET_DMIC_STEREO;
+                    snd_device = SND_DEVICE_IN_CAMCORDER_MIC;
                 else
                     snd_device = SND_DEVICE_IN_CAMCORDER_MIC;
             }
@@ -7397,7 +7403,13 @@
     } else if (source == AUDIO_SOURCE_MIC) {
         if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC) &&
                 channel_count == 1 ) {
-            if(my_data->fluence_in_audio_rec) {
+            if (audio_extn_get_force_use_specific_mic_status()) {
+                if(audio_extn_get_force_use_specific_mic() == 1)
+                    snd_device = SND_DEVICE_IN_MAIN_MIC;
+                else if(audio_extn_get_force_use_specific_mic() == 2)
+                    snd_device = SND_DEVICE_IN_SUB_MIC;
+                audio_extn_disable_force_use_specific_mic();
+            } else if(my_data->fluence_in_audio_rec) {
                if ((my_data->fluence_type & FLUENCE_QUAD_MIC) &&
                     (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                     snd_device = SND_DEVICE_IN_HANDSET_QMIC;
@@ -7455,7 +7467,7 @@
                 snd_device = SND_DEVICE_IN_THREE_MIC;
             else if ((my_data->fluence_type & (FLUENCE_DUAL_MIC | FLUENCE_TRI_MIC | FLUENCE_QUAD_MIC)) &&
                     (channel_count == 2) && (my_data->source_mic_type & SOURCE_DUAL_MIC))
-                snd_device = SND_DEVICE_IN_HANDSET_DMIC_STEREO;
+                snd_device = SND_DEVICE_IN_HANDSET_MIC;
             else
                 snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB
                                  : (my_data->fluence_nn_enabled? SND_DEVICE_IN_HANDSET_MIC_NN
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
old mode 100644
new mode 100755
index a475ed7..a6c3ed1
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -314,6 +314,8 @@
     SND_DEVICE_IN_UNPROCESSED_THREE_MIC,
     SND_DEVICE_IN_UNPROCESSED_QUAD_MIC,
     SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC,
+    SND_DEVICE_IN_MAIN_MIC,
+    SND_DEVICE_IN_SUB_MIC,
     SND_DEVICE_IN_HANDSET_6MIC,
     SND_DEVICE_IN_HANDSET_8MIC,
     SND_DEVICE_IN_EC_REF_LOOPBACK_MONO,
diff --git a/qahw/Android.mk b/qahw/Android.mk
index decd4c6..a4ff57e 100644
--- a/qahw/Android.mk
+++ b/qahw/Android.mk
@@ -5,11 +5,9 @@
 
 include $(CLEAR_VARS)
 
-libqahw-inc := $(LOCAL_PATH)/inc
-
 LOCAL_MODULE := libqahwwrapper
 LOCAL_MODULE_TAGS := optional
-LOCAL_C_INCLUDES   := $(libqahw-inc)
+LOCAL_C_INCLUDES   := $(LOCAL_PATH)/inc
 
 LOCAL_HEADER_LIBRARIES := libutils_headers \
     libsystem_headers \
@@ -27,10 +25,6 @@
 
 LOCAL_CFLAGS += -Wall -Werror
 
-LOCAL_COPY_HEADERS_TO   := mm-audio/qahw/inc
-LOCAL_COPY_HEADERS      := inc/qahw.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_api.h
-
 LOCAL_PROPRIETARY_MODULE := true
 LOCAL_VENDOR_MODULE     := true
 
@@ -39,5 +33,11 @@
 endif
 include $(BUILD_SHARED_LIBRARY)
 
+include $(CLEAR_VARS)
+LOCAL_MODULE := libqahw_headers
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/inc
+LOCAL_PROPRIETARY_MODULE := true
+include $(BUILD_HEADER_LIBRARY)
+
 endif
 endif
diff --git a/qahw_api/Android.mk b/qahw_api/Android.mk
index 30c326f..5d1789c 100644
--- a/qahw_api/Android.mk
+++ b/qahw_api/Android.mk
@@ -4,12 +4,9 @@
 
 include $(CLEAR_VARS)
 
-libqahwapi-inc := $(LOCAL_PATH)/inc
-
 LOCAL_MODULE := libqahw
 LOCAL_MODULE_TAGS := optional
-LOCAL_C_INCLUDES   := $(libqahwapi-inc)
-LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/mm-audio/qahw/inc
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc
 
 LOCAL_SRC_FILES := \
     src/qahw_api.cpp
@@ -20,6 +17,9 @@
 LOCAL_STATIC_LIBRARIES += libprofile_rt
 endif
 
+LOCAL_HEADER_LIBRARIES := \
+    libqahw_headers
+
 LOCAL_SHARED_LIBRARIES := \
     liblog \
     libcutils \
@@ -30,17 +30,6 @@
 
 LOCAL_CFLAGS += -Wall -Werror
 
-LOCAL_COPY_HEADERS_TO   := mm-audio/qahw_api/inc
-LOCAL_COPY_HEADERS      := inc/qahw_defs.h
-LOCAL_COPY_HEADERS      += inc/qahw_api.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_audiosphere.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_bassboost.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_environmentalreverb.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_equalizer.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_presetreverb.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_virtualizer.h
-LOCAL_COPY_HEADERS      += inc/qahw_effect_visualizer.h
-
 LOCAL_VENDOR_MODULE     := true
 
 ifneq ($(filter kona lahaina holi,$(TARGET_BOARD_PLATFORM)),)
@@ -48,6 +37,14 @@
 endif
 include $(BUILD_SHARED_LIBRARY)
 
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libqahwapi_headers
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/inc
+LOCAL_PROPRIETARY_MODULE := true
+
+include $(BUILD_HEADER_LIBRARY)
+
 #test app compilation
 include $(LOCAL_PATH)/test/Android.mk
 
diff --git a/qahw_api/test/Android.mk b/qahw_api/test/Android.mk
index 110a765..bc7690d 100644
--- a/qahw_api/test/Android.mk
+++ b/qahw_api/test/Android.mk
@@ -7,12 +7,14 @@
                    qahw_effect_test.c
 LOCAL_MODULE := hal_play_test
 
-hal-play-inc     = $(TARGET_OUT_HEADERS)/mm-audio/qahw_api/inc
-hal-play-inc    += $(TARGET_OUT_HEADERS)/mm-audio/qahw/inc
 hal-play-inc    += external/tinyalsa/include
 
 LOCAL_CFLAGS += -Wall -Werror -Wno-sign-compare
 
+LOCAL_HEADER_LIBRARIES := \
+    libqahw_headers \
+    libqahwapi_headers
+
 LOCAL_SHARED_LIBRARIES := \
     libaudioutils\
     libqahw \
@@ -42,6 +44,10 @@
 LOCAL_SRC_FILES := qahw_multi_record_test.c
 LOCAL_MODULE := hal_rec_test
 LOCAL_CFLAGS += -Wall -Werror -Wno-sign-compare
+
+LOCAL_HEADER_LIBRARIES := \
+    libqahwapi_headers
+
 LOCAL_SHARED_LIBRARIES := \
     libaudioutils \
     libqahw \
@@ -49,9 +55,6 @@
 
 LOCAL_32_BIT_ONLY := true
 
-hal-rec-inc     = $(TARGET_OUT_HEADERS)/mm-audio/qahw_api/inc
-
-LOCAL_C_INCLUDES += $(hal-rec-inc)
 LOCAL_VENDOR_MODULE := true
 
 ifneq ($(filter kona lahaina holi,$(TARGET_BOARD_PLATFORM)),)