Merge "hal: ensure EC reference is disabled before enabling"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index bb17b66..ce114da 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -808,7 +808,8 @@
                                             usecase->stream.out->devices);
                 if (usecase->stream.out == adev->primary_output &&
                         adev->active_input &&
-                        adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+                        adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
+                        out_snd_device != usecase->out_snd_device) {
                     select_devices(adev, adev->active_input->usecase);
                 }
             }
@@ -820,6 +821,7 @@
                 if (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
                         adev->primary_output && !adev->primary_output->standby) {
                     out_device = adev->primary_output->devices;
+                    platform_set_echo_reference(adev->platform, false);
                 } else if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) {
                     out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX;
                 }
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 4db4632..13d8f08 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -633,19 +633,18 @@
     struct platform_data *my_data = (struct platform_data *)platform;
     struct audio_device *adev = my_data->adev;
 
-    if (enable) {
-         my_data->ec_ref_enabled = enable;
-         audio_route_apply_and_update_path(adev->audio_route, "echo-reference");
-    } else {
-         if (my_data->ec_ref_enabled) {
-             audio_route_reset_and_update_path(adev->audio_route, "echo-reference");
-             my_data->ec_ref_enabled = enable;
-         } else {
-             ALOGV("EC Reference is already disabled: %d", my_data->ec_ref_enabled);
-         }
+    if (my_data->ec_ref_enabled) {
+        my_data->ec_ref_enabled = false;
+        ALOGV("%s: disabling echo-reference", __func__);
+        audio_route_reset_and_update_path(adev->audio_route, "echo-reference");
     }
 
-    ALOGV("Setting EC Reference: %d", enable);
+    if (enable) {
+         my_data->ec_ref_enabled = true;
+         ALOGD("%s: enabling echo-reference", __func__);
+         audio_route_apply_and_update_path(adev->audio_route, "echo-reference");
+    }
+
 }
 
 static struct csd_data *open_csd_client(bool i2s_ext_modem)