hal: Fix EC not working in VoIP calls

Ensure the EC reference path is reset while switching device
for VoIP calls.

Bug: 17986908
Change-Id: I7eca6842ee2ba298493cb1cd479f90318a437e12
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 2f97e96..c7daf09 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -551,7 +551,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);
                 }
             }
@@ -563,6 +564,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, false, AUDIO_DEVICE_NONE);
                 } else if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) {
                     out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX;
                 }