Speaker channel swapping is conditional to audio mode

Swapping speaker channels when audio mode is
  AUDIO_MODE_IN_COMMUNICATION or AUDIO_MODE_IN_CALL
  can break the echo reference.

Bug 25808310

Change-Id: I4c26d8982abd6513572b88e7abb7bba64789d18b
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index b84353d..5cdc394 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -2755,6 +2755,14 @@
     struct platform_data *my_data = (struct platform_data *)adev->platform;
 
     if (my_data->speaker_lr_swap != swap_channels) {
+
+        // do not swap channels in audio modes with concurrent capture and playback
+        // as this may break the echo reference
+        if ((adev->mode == AUDIO_MODE_IN_COMMUNICATION) || (adev->mode == AUDIO_MODE_IN_CALL)) {
+            ALOGV("%s: will not swap due to audio mode %d", __func__, adev->mode);
+            return 0;
+        }
+
         my_data->speaker_lr_swap = swap_channels;
 
         list_for_each(node, &adev->usecase_list) {