hal: set echo reference for voip call

Voip and record usecase use different reference
mixer to set EC reference port. Add voip echo
reference path support for setting voip ec
reference port.

CRs-Fixed: 2268345
Change-Id: Ica6d96d0b942378141c57a0d2ac0bd9912fa755e
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 92f92aa..569bfec 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -265,7 +265,7 @@
     void *edid_info;
     bool edid_valid;
     int ext_disp_type;
-    char ec_ref_mixer_path[64];
+    char ec_ref_mixer_path[MIXER_PATH_MAX_LENGTH];
     codec_backend_cfg_t current_backend_cfg[MAX_CODEC_BACKENDS];
     char codec_version[CODEC_VERSION_MAX_LENGTH];
     int hw_dep_fd;
@@ -1165,6 +1165,7 @@
                                  audio_devices_t out_device __unused)
 {
     struct platform_data *my_data = (struct platform_data *)adev->platform;
+    char ec_ref_mixer_path[MIXER_PATH_MAX_LENGTH] = "echo-reference";
 
     if (strcmp(my_data->ec_ref_mixer_path, "")) {
         ALOGV("%s: disabling %s", __func__, my_data->ec_ref_mixer_path);
@@ -1173,22 +1174,26 @@
     }
 
     if (enable) {
+#ifndef COMPRESS_VOIP_ENABLED
+        if (adev->mode == AUDIO_MODE_IN_COMMUNICATION)
+            strlcat(ec_ref_mixer_path, "-voip", MIXER_PATH_MAX_LENGTH);
+#endif
         /*
          * If native audio device reference count > 0, then apply codec EC otherwise
          * fallback to Speakers with VBat if enabled or default
          */
         if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_HEADPHONES_44_1] > 0)
-            strlcpy(my_data->ec_ref_mixer_path, "echo-reference headphones-44.1",
-                    sizeof(my_data->ec_ref_mixer_path));
+            strlcat(ec_ref_mixer_path, " headphones-44.1",
+                    MIXER_PATH_MAX_LENGTH);
         else if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_SPEAKER_VBAT] > 0)
-            strlcpy(my_data->ec_ref_mixer_path, "echo-reference speaker-vbat",
-                    sizeof(my_data->ec_ref_mixer_path));
+            strlcat(ec_ref_mixer_path, " speaker-vbat",
+                    MIXER_PATH_MAX_LENGTH);
         else if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_DISPLAY_PORT] > 0)
-            strlcpy(my_data->ec_ref_mixer_path, "echo-reference display-port",
-                    sizeof(my_data->ec_ref_mixer_path));
-        else
-            strlcpy(my_data->ec_ref_mixer_path, "echo-reference",
-                    sizeof(my_data->ec_ref_mixer_path));
+            strlcat(ec_ref_mixer_path, " display-port",
+                    MIXER_PATH_MAX_LENGTH);
+
+        strlcpy(my_data->ec_ref_mixer_path, ec_ref_mixer_path,
+                MIXER_PATH_MAX_LENGTH);
 
         ALOGD("%s: enabling %s", __func__, my_data->ec_ref_mixer_path);
         audio_route_apply_and_update_path(adev->audio_route, my_data->ec_ref_mixer_path);