hal: Add support for VoWLAN feature

Add VoWLAN pcm id, usecase to enable voice
over WLAN feature.

Change-Id: I2d10ff06342bfcbef15a4769ba90deaeb4218107
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 147146c..5514007 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -119,6 +119,7 @@
     [USECASE_VOICE2_CALL] = "voice2-call",
     [USECASE_VOLTE_CALL] = "volte-call",
     [USECASE_QCHAT_CALL] = "qchat-call",
+    [USECASE_VOWLAN_CALL] = "vowlan-call",
     [USECASE_COMPRESS_VOIP_CALL] = "compress-voip-call",
     [USECASE_INCALL_REC_UPLINK] = "incall-rec-uplink",
     [USECASE_INCALL_REC_DOWNLINK] = "incall-rec-downlink",
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 205977b..a6824c1 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -80,6 +80,7 @@
     USECASE_VOICE2_CALL,
     USECASE_VOLTE_CALL,
     USECASE_QCHAT_CALL,
+    USECASE_VOWLAN_CALL,
     USECASE_COMPRESS_VOIP_CALL,
 
     USECASE_INCALL_REC_UPLINK,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 3f4de55..c727900 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -143,6 +143,7 @@
     [USECASE_VOICE2_CALL] = {VOICE2_CALL_PCM_DEVICE, VOICE2_CALL_PCM_DEVICE},
     [USECASE_VOLTE_CALL] = {VOLTE_CALL_PCM_DEVICE, VOLTE_CALL_PCM_DEVICE},
     [USECASE_QCHAT_CALL] = {QCHAT_CALL_PCM_DEVICE, QCHAT_CALL_PCM_DEVICE},
+    [USECASE_VOWLAN_CALL] = {VOWLAN_CALL_PCM_DEVICE, VOWLAN_CALL_PCM_DEVICE},
     [USECASE_COMPRESS_VOIP_CALL] = {COMPRESS_VOIP_CALL_PCM_DEVICE, COMPRESS_VOIP_CALL_PCM_DEVICE},
     [USECASE_INCALL_REC_UPLINK] = {AUDIO_RECORD_PCM_DEVICE,
                                    AUDIO_RECORD_PCM_DEVICE},
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index e80d3f1..d9b4302 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -194,21 +194,25 @@
 #define VOICE2_CALL_PCM_DEVICE 14
 #define VOLTE_CALL_PCM_DEVICE 17
 #define QCHAT_CALL_PCM_DEVICE 18
+#define VOWLAN_CALL_PCM_DEVICE 30
 #elif PLATFORM_APQ8084
 #define VOICE_CALL_PCM_DEVICE 20
 #define VOICE2_CALL_PCM_DEVICE 13
 #define VOLTE_CALL_PCM_DEVICE 21
 #define QCHAT_CALL_PCM_DEVICE 06
+#define VOWLAN_CALL_PCM_DEVICE -1
 #elif PLATFORM_MSM8610
 #define VOICE_CALL_PCM_DEVICE 2
 #define VOICE2_CALL_PCM_DEVICE 13
 #define VOLTE_CALL_PCM_DEVICE 15
 #define QCHAT_CALL_PCM_DEVICE 14
+#define VOWLAN_CALL_PCM_DEVICE -1
 #else
 #define VOICE_CALL_PCM_DEVICE 2
 #define VOICE2_CALL_PCM_DEVICE 22
 #define VOLTE_CALL_PCM_DEVICE 14
 #define QCHAT_CALL_PCM_DEVICE 20
+#define VOWLAN_CALL_PCM_DEVICE -1
 #endif
 
 #ifdef PLATFORM_MSM8x26
diff --git a/hal/voice.h b/hal/voice.h
index a7733b1..5e4ce7f 100644
--- a/hal/voice.h
+++ b/hal/voice.h
@@ -24,7 +24,7 @@
 #define VOICE_SESS_IDX     (BASE_SESS_IDX)
 
 #ifdef MULTI_VOICE_SESSION_ENABLED
-#define MAX_VOICE_SESSIONS 4
+#define MAX_VOICE_SESSIONS 5
 #else
 #define MAX_VOICE_SESSIONS 1
 #endif
diff --git a/hal/voice_extn/voice_extn.c b/hal/voice_extn/voice_extn.c
index 5612e0c..f2dc6bc 100644
--- a/hal/voice_extn/voice_extn.c
+++ b/hal/voice_extn/voice_extn.c
@@ -44,12 +44,14 @@
 #define VOICE2_VSID 0x10DC1000
 #define VOLTE_VSID  0x10C02000
 #define QCHAT_VSID  0x10803000
+#define VOWLAN_VSID 0x10002000
 #define ALL_VSID    0xFFFFFFFF
 
 /* Voice Session Indices */
 #define VOICE2_SESS_IDX    (VOICE_SESS_IDX + 1)
 #define VOLTE_SESS_IDX     (VOICE_SESS_IDX + 2)
 #define QCHAT_SESS_IDX     (VOICE_SESS_IDX + 3)
+#define VOWLAN_SESS_IDX    (VOICE_SESS_IDX + 4)
 
 /* Call States */
 #define CALL_HOLD           (BASE_CALL_STATE + 2)
@@ -83,7 +85,8 @@
     if (vsid == VOICE_VSID ||
         vsid == VOICE2_VSID ||
         vsid == VOLTE_VSID ||
-        vsid == QCHAT_VSID)
+        vsid == QCHAT_VSID ||
+        vsid == VOWLAN_VSID)
         return true;
     else
         return false;
@@ -110,6 +113,10 @@
         usecase_id = USECASE_QCHAT_CALL;
         break;
 
+    case VOWLAN_SESS_IDX:
+        usecase_id = USECASE_VOWLAN_CALL;
+        break;
+
     default:
         ALOGE("%s: Invalid voice session index\n", __func__);
     }
@@ -353,6 +360,7 @@
     adev->voice.session[VOICE2_SESS_IDX].vsid = VOICE2_VSID;
     adev->voice.session[VOLTE_SESS_IDX].vsid =  VOLTE_VSID;
     adev->voice.session[QCHAT_SESS_IDX].vsid =  QCHAT_VSID;
+    adev->voice.session[VOWLAN_SESS_IDX].vsid = VOWLAN_VSID;
 }
 
 int voice_extn_get_session_from_use_case(struct audio_device *adev,
@@ -378,6 +386,10 @@
         *session = &adev->voice.session[QCHAT_SESS_IDX];
         break;
 
+    case USECASE_VOWLAN_CALL:
+        *session = &adev->voice.session[VOWLAN_SESS_IDX];
+        break;
+
     default:
         ALOGE("%s: Invalid usecase_id:%d\n", __func__, usecase_id);
         *session = NULL;