hal: Add support for voip record low-latency

Add support for voip record low-latency path if app requests
for audio record with fast flag.

Change-Id: I2152a796cdb8c29142315c23cad7ec32f771f6b3
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 0be37a4..247e3d4 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -484,6 +484,7 @@
 
     [USECASE_AUDIO_PLAYBACK_VOIP] = {AUDIO_PLAYBACK_VOIP_PCM_DEVICE, AUDIO_PLAYBACK_VOIP_PCM_DEVICE},
     [USECASE_AUDIO_RECORD_VOIP] = {AUDIO_RECORD_VOIP_PCM_DEVICE, AUDIO_RECORD_VOIP_PCM_DEVICE},
+    [USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE, LOWLATENCY_PCM_DEVICE},
     [USECASE_AUDIO_PLAYBACK_INTERACTIVE_STREAM1] =
                      {PLAYBACK_INTERACTIVE_STRM_DEVICE1, PLAYBACK_INTERACTIVE_STRM_DEVICE1},
     [USECASE_AUDIO_PLAYBACK_INTERACTIVE_STREAM2] =
@@ -1417,6 +1418,7 @@
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_PHONE)},
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER)},
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_REAR_SEAT)},
+    {TO_NAME_INDEX(USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY)},
 };
 
 static const struct name_to_index usecase_type_index[USECASE_TYPE_MAX] = {
@@ -1992,6 +1994,8 @@
 {
     struct platform_data *my_data = (struct platform_data *)adev->platform;
     char ec_ref_mixer_path[MIXER_PATH_MAX_LENGTH] = "echo-reference";
+    struct audio_usecase *uc = NULL;
+    struct listnode *node;
 
     audio_extn_sound_trigger_update_ec_ref_status(enable);
 
@@ -2003,8 +2007,14 @@
 
     if (enable) {
         if (!voice_extn_is_compress_voip_supported()) {
-            if (adev->mode == AUDIO_MODE_IN_COMMUNICATION)
+            if (adev->mode == AUDIO_MODE_IN_COMMUNICATION) {
                 strlcat(ec_ref_mixer_path, "-voip", MIXER_PATH_MAX_LENGTH);
+                list_for_each(node, &adev->usecase_list) {
+                    uc =  node_to_item(node, struct audio_usecase, list);
+                    if (uc->id == USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY)
+                        strlcat(ec_ref_mixer_path, "-low-latency", MIXER_PATH_MAX_LENGTH);
+                }
+            }
         }
         strlcpy(my_data->ec_ref_mixer_path, ec_ref_mixer_path,
                     MIXER_PATH_MAX_LENGTH);
@@ -9072,6 +9082,7 @@
     case USECASE_INCALL_MUSIC_UPLINK:
     case USECASE_INCALL_MUSIC_UPLINK2:
     case USECASE_AUDIO_RECORD_VOIP:
+    case USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY:
         needs_event = true;
         break;
     default: