audio: separate calibration data for TMUS

When inserting TMUS SIM, we use different acoustic parameters in call.

Bug: 7716204
Change-Id: Ifce8d6ceb07e4474c28c8c9fe81c4457397e6d0c
diff --git a/alsa_sound/alsa_default.cpp b/alsa_sound/alsa_default.cpp
index 7c2449e..55fe32d 100644
--- a/alsa_sound/alsa_default.cpp
+++ b/alsa_sound/alsa_default.cpp
@@ -78,11 +78,13 @@
 static void     s_set_voc_rec_mode(uint8_t mode);
 static void     s_set_volte_mic_mute(int state);
 static void     s_set_volte_volume(int vol);
+static bool     s_is_tmus();
 #ifdef SEPERATED_AUDIO_INPUT
 static void     s_setInput(int);
 
 static int input_source;
 #endif
+static int mccmnc;
 #ifdef QCOM_CSDCLIENT_ENABLED
 static void     s_set_csd_handle(void*);
 #endif
@@ -1307,6 +1309,8 @@
 
 char *getUCMDevice(uint32_t devices, int input, char *rxDevice)
 {
+    bool is_tmus = s_is_tmus();
+
     if (!input) {
         if (!(mDevSettingsFlag & TTY_OFF) &&
             (callMode == AudioSystem::MODE_IN_CALL) &&
@@ -1349,7 +1353,10 @@
 #endif
         } else if (devices & AudioSystem::DEVICE_OUT_EARPIECE) {
             if (callMode == AudioSystem::MODE_IN_CALL) {
-                return strdup(SND_USE_CASE_DEV_VOC_EARPIECE); /* Voice HANDSET RX */
+                if(is_tmus)
+                    return strdup(SND_USE_CASE_DEV_VOC_EARPIECE_TMUS); /* Voice HANDSET RX for TMUS */
+                else
+                    return strdup(SND_USE_CASE_DEV_VOC_EARPIECE); /* Voice HANDSET RX */
             } else
                 return strdup(SND_USE_CASE_DEV_EARPIECE); /* HANDSET RX */
         } else if (devices & AudioSystem::DEVICE_OUT_SPEAKER) {
@@ -1439,7 +1446,10 @@
 #ifdef USES_FLUENCE_INCALL
                     if(callMode == AudioSystem::MODE_IN_CALL) {
                         if (fluence_mode == FLUENCE_MODE_ENDFIRE) {
-                            return strdup(SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE); /* DUALMIC EF TX */
+                            if(is_tmus)
+                                return strdup(SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE_TMUS); /* DUALMIC EF TX */
+                            else
+                                return strdup(SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE); /* DUALMIC EF TX */
                         } else if (fluence_mode == FLUENCE_MODE_BROADSIDE) {
                             return strdup(SND_USE_CASE_DEV_DUAL_MIC_BROADSIDE); /* DUALMIC BS TX */
                         } else {
@@ -1776,4 +1786,31 @@
 }
 #endif
 
+static bool s_is_tmus()
+{
+    char value[128];
+    bool ret = false;
+
+    if (mccmnc == 0) {
+        property_get("gsm.sim.operator.numeric",value,"0");
+        mccmnc = atoi(value);
+    }
+
+    ALOGD("%s: mnc_mcc :  %d", __FUNCTION__, mccmnc);
+    switch(mccmnc)
+    {
+    //TMUS MCC(310), MNC(490, 260, 026)
+    case 310490:
+    case 310260:
+    case 310026:
+        ret = true;
+        break;
+    default:
+        ret = false;
+        break;
+    }
+
+    return ret;
+}
+
 }
diff --git a/libalsa-intf/msm8960_use_cases.h b/libalsa-intf/msm8960_use_cases.h
index ba8b6de..103b508 100644
--- a/libalsa-intf/msm8960_use_cases.h
+++ b/libalsa-intf/msm8960_use_cases.h
@@ -44,6 +44,7 @@
 #define CAP_TX 0x2
 #define CAP_VOICE 0x4
 #define DEVICE_HANDSET_RX_ACDB_ID                       7 // HANDSET_SPKR
+#define DEVICE_HANDSET_RX_TMUS_ACDB_ID                  81// HANDSET_SPKR
 #define DEVICE_HANDSET_TX_ACDB_ID                       4 // HANDSET_MIC
 #define DEVICE_SPEAKER_MONO_RX_ACDB_ID                  14// SPKR_PHONE_SPKR_MONO
 #define DEVICE_SPEAKER_STEREO_RX_ACDB_ID                15// SPKR_PHONE_SPKR_STEREO
@@ -52,6 +53,7 @@
 #define DEVICE_HEADSET_TX_ACDB_ID                       8 // HEADSET_MIC
 #define DEVICE_DUALMIC_HANDSET_TX_BROADSIDE_ACDB_ID     5 // HANDSET_MIC_BROADSIDE
 #define DEVICE_DUALMIC_HANDSET_TX_ENDFIRE_ACDB_ID       6 // HANDSET_MIC_ENDFIRE
+#define DEVICE_DUALMIC_HANDSET_TX_ENDFIRE_TMUS_ACDB_ID  91// HANDSET_MIC_ENDFIRE
 #define DEVICE_DUALMIC_SPEAKER_TX_BROADSIDE_ACDB_ID     12// SPKR_PHONE_MIC_BROADSIDE
 #define DEVICE_DUALMIC_SPEAKER_TX_ENDFIRE_ACDB_ID       13// SPKR_PHONE_MIC_ENDFIRE
 #define DEVICE_TTY_HEADSET_MONO_RX_ACDB_ID              17// TTY_HEADSET_SPKR
@@ -231,6 +233,7 @@
 #define SND_USE_CASE_DEV_TTY_HANDSET_ANALOG_TX  "TTY Handset Analog Tx"
 #define SND_USE_CASE_DEV_DUAL_MIC_BROADSIDE "DMIC Broadside"
 #define SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE "DMIC Endfire"
+#define SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE_TMUS "DMIC Endfire TMUS"
 #define SND_USE_CASE_DEV_SPEAKER_DUAL_MIC_BROADSIDE "Speaker DMIC Broadside"
 #define SND_USE_CASE_DEV_SPEAKER_DUAL_MIC_ENDFIRE "Speaker DMIC Endfire"
 #define SND_USE_CASE_DEV_HDMI_TX             "HDMI Tx"
@@ -256,6 +259,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_TMUS  "Voice Earpiece TMUS"
 #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"