Merge 71514a7a7a85269cbd1686de896c5dedb6b82620 on remote branch

Change-Id: Ib3b35107efc55e48b9c43b5e5532dc253cda3ee5
diff --git a/configs/bengal/mixer_paths.xml b/configs/bengal/mixer_paths.xml
index 7829d5a..dbe85b7 100644
--- a/configs/bengal/mixer_paths.xml
+++ b/configs/bengal/mixer_paths.xml
@@ -1954,7 +1954,7 @@
         <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
     </path>
 
-    <path name="audio-record-compress bt-sco-wb">
+    <path name="audio-record-compress2 bt-sco-wb">
         <ctl name="BT SampleRate" value="KHZ_16" />
         <path name="audio-record-compress2 bt-sco" />
     </path>
diff --git a/configs/msmnile_au/mixer_paths_sa8295_adp.xml b/configs/msmnile_au/mixer_paths_sa8295_adp.xml
index 7a3be75..3cc2250 100644
--- a/configs/msmnile_au/mixer_paths_sa8295_adp.xml
+++ b/configs/msmnile_au/mixer_paths_sa8295_adp.xml
@@ -279,9 +279,9 @@
     <ctl name="AFE_PCM_RX Audio Mixer MultiMedia3" value="0" />
 
     <!-- hfp-sco -->
-    <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="0" />
-    <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="0" />
-    <ctl name="AUX_PCM_RX Audio Mixer MultiMedia6" value="0" />
+    <ctl name="PRI_TDM_RX_2 Audio Mixer MultiMedia21" value="0" />
+    <ctl name="MultiMedia21 Mixer SEN_TDM_TX_1" value="0" />
+    <ctl name="SEN_TDM_RX_1 Audio Mixer MultiMedia6" value="0" />
     <ctl name="MultiMedia6 Mixer TERT_TDM_TX_0" value="0" />
 
     <!-- icc-call and anc-loopback -->
@@ -297,7 +297,7 @@
     <!-- EC Reference end -->
 
     <path name="echo-reference">
-        <ctl name="AUDIO_REF_EC_UL1 MUX" value="TERT_TDM_RX_2" />
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="PRI_TDM_RX_2" />
         <ctl name="EC Reference Channels" value="One" />
         <ctl name="EC Reference Bit Format" value="S16_LE" />
         <ctl name="EC Reference SampleRate" value="48000" />
@@ -1708,6 +1708,11 @@
 
     <path name="hfp-sco">
         <path name="auto-record" />
+        <ctl name="SEN_TDM SlotWidth" value="16" />
+        <ctl name="SEN_TDM SlotNumber" value="Eight" />
+        <ctl name="SEN_TDM_RX_1 Channels" value="One" />
+        <ctl name="SEN_TDM_RX_1 SlotMapping" id ="0" value="0" />
+        <ctl name="SEN_TDM_RX_1 SlotMapping" id ="1" value="65535" />
         <ctl name="SEN_TDM_RX_1 Audio Mixer MultiMedia6" value="1" />
         <ctl name="MultiMedia6 Mixer TERT_TDM_TX_0" value="1" />
     </path>
@@ -1723,7 +1728,7 @@
     </path>
 
     <path name="hfp-sco-wb">
-        <ctl name="PRIM_AUX_PCM_RX SampleRate" value="KHZ_16" />
+        <ctl name="SEN_TDM_RX_1 SampleRate" value="KHZ_16" />
         <path name="hfp-sco" />
     </path>
 
@@ -1744,6 +1749,12 @@
 
     <path name="hfp-sco-downlink">
         <path name="auto-playback" />
+        <ctl name="SEN_TDM SlotWidth" value="16" />
+        <ctl name="SEN_TDM SlotNumber" value="Eight" />
+        <ctl name="SEN_TDM_TX_1 Channels" value="One" />
+        <ctl name="SEN_TDM_TX_1 SlotMapping" id ="0" value="0" />
+        <ctl name="SEN_TDM_TX_1 SlotMapping" id ="1" value="65535" />
+        <ctl name="PRI_TDM_RX_2 Channels" value="One" />
         <ctl name="PRI_TDM_RX_2 SampleRate" value="KHZ_48" />
         <ctl name="PRI_TDM_RX_2 SlotMapping" id ="0" value="28" />
         <ctl name="PRI_TDM_RX_2 SlotMapping" id ="1" value="65535" />
@@ -1752,7 +1763,7 @@
     </path>
 
     <path name="hfp-sco-wb-downlink">
-        <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
+        <ctl name="SEN_TDM_TX_1 SampleRate" value="KHZ_16" />
         <path name="hfp-sco-downlink" />
     </path>
 
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 911a8d4..ff0558e 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3127,6 +3127,38 @@
             enable_audio_route(adev, voip_in_usecase);
         }
     }
+    if (voice_extn_compress_voip_is_active(adev)) {
+        struct audio_usecase *voip_usecase = get_usecase_from_list(adev,
+                                                 USECASE_COMPRESS_VOIP_CALL);
+        /*
+         * If only compress voip input is opened voip out will be primary out.
+         * Need to consider re-routing to select correct i/p pair
+         */
+        if ((voip_usecase != NULL) &&
+            (usecase->type == PCM_PLAYBACK) &&
+            (usecase->stream.out == voip_usecase->stream.out)) {
+            in_snd_device = platform_get_input_snd_device(adev->platform,
+                                                         NULL,
+                                                         &usecase->stream.out->device_list,
+                                                         usecase->type);
+            if (voip_usecase->in_snd_device != in_snd_device ) {
+                ALOGD("%s:Re routing compress voip tx  snd device matching voip rx pair",
+                __func__);
+                disable_audio_route(adev, voip_usecase);
+                disable_snd_device(adev, voip_usecase->in_snd_device);
+                voip_usecase->in_snd_device = in_snd_device;
+                voip_usecase->out_snd_device = usecase->out_snd_device;
+                /* Route all TX  usecase to Compress voip BE */
+                check_usecases_capture_codec_backend(adev, voip_usecase, in_snd_device);
+                enable_snd_device(adev, in_snd_device);
+                /* Send Voice related calibration for RX /TX  pair */
+                status = platform_switch_voice_call_device_post(adev->platform,
+                                                               out_snd_device,
+                                                               in_snd_device);
+                enable_audio_route(adev, voip_usecase);
+            }
+        }
+    }
 
 
     audio_extn_qdsp_set_device(usecase);