alsa_sound: Add support for "Voice Earpiece Extra Gain" mode

Uses "Voice Earpiece Extra Gain" mode instead of "Voice Earpiece" during
voice calls when persist.audio.voc_ep.xgain=1.

Change-Id: I9f00a81687fa9605c68308a74e0ffaaea7e698fc
diff --git a/alsa_sound/ALSADevice.cpp b/alsa_sound/ALSADevice.cpp
index b8bdf6d..5b52f8b 100644
--- a/alsa_sound/ALSADevice.cpp
+++ b/alsa_sound/ALSADevice.cpp
@@ -677,7 +677,8 @@
     if (rxDevice != NULL && txDevice != NULL &&
             (!strcmp(txDevice, SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE) ||
             !strcmp(txDevice, SND_USE_CASE_DEV_DUAL_MIC_BROADSIDE)) &&
-            !strcmp(rxDevice, SND_USE_CASE_DEV_VOC_EARPIECE)) {
+            (!strcmp(rxDevice, SND_USE_CASE_DEV_VOC_EARPIECE) ||
+             !strcmp(rxDevice, SND_USE_CASE_DEV_VOC_EARPIECE_XGAIN))) {
         setA2220Mode(A2220_PATH_INCALL_RECEIVER_NSON);
     } else {
         setA2220Mode(A2220_PATH_INCALL_RECEIVER_NSOFF);
@@ -1437,6 +1438,8 @@
 
 char* ALSADevice::getUCMDevice(uint32_t devices, int input, char *rxDevice)
 {
+    char value[PROPERTY_VALUE_MAX];
+
     if (!input) {
         ALOGV("getUCMDevice for output device: devices:%x is input device:%d",devices,input);
         if (!(mDevSettingsFlag & TTY_OFF) &&
@@ -1520,7 +1523,10 @@
         } else if (devices & AudioSystem::DEVICE_OUT_EARPIECE) {
             if (mCallMode == AUDIO_MODE_IN_CALL ||
                 mCallMode == AUDIO_MODE_IN_COMMUNICATION) {
-                return strdup(SND_USE_CASE_DEV_VOC_EARPIECE); /* Voice HANDSET RX */
+                property_get("persist.audio.voc_ep.xgain", value, "");
+                return strdup(strcmp(value, "1") == 0 ?
+                                SND_USE_CASE_DEV_VOC_EARPIECE_XGAIN :
+                                SND_USE_CASE_DEV_VOC_EARPIECE); /* Voice HANDSET RX */
             } else {
                 return strdup(SND_USE_CASE_DEV_EARPIECE); /* HANDSET RX */
             }
diff --git a/libalsa-intf/msm8960_use_cases.h b/libalsa-intf/msm8960_use_cases.h
index cafca1d..c23ac8a 100644
--- a/libalsa-intf/msm8960_use_cases.h
+++ b/libalsa-intf/msm8960_use_cases.h
@@ -290,6 +290,7 @@
 #define SND_USE_CASE_DEV_CAMCORDER_TX       "Camcorder Tx"
 #define SND_USE_CASE_DEV_VOICE_RECOGNITION  "Voice Recognition"
 #define SND_USE_CASE_DEV_VOC_EARPIECE       "Voice Earpiece"
+#define SND_USE_CASE_DEV_VOC_EARPIECE_XGAIN "Voice Earpiece Extra Gain"
 #define SND_USE_CASE_DEV_VOC_HEADPHONE      "Voice Headphones"
 #define SND_USE_CASE_DEV_VOC_HEADSET        "Voice Headset"
 #define SND_USE_CASE_DEV_VOC_ANC_HEADSET    "Voice ANC Headset"