Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
Change-Id: I145f70e1468eb53bf0ab955ff096ea795797bd3b
diff --git a/alsa_sound/alsa_default.cpp b/alsa_sound/alsa_default.cpp
index 18a28d2..7c2449e 100644
--- a/alsa_sound/alsa_default.cpp
+++ b/alsa_sound/alsa_default.cpp
@@ -409,6 +409,11 @@
} else if (devices & AudioSystem::DEVICE_IN_BUILTIN_MIC) {
if (mode == AudioSystem::MODE_IN_CALL) {
devices |= AudioSystem::DEVICE_OUT_EARPIECE;
+ } else if (mode == AudioSystem::MODE_IN_COMMUNICATION) {
+ if (!strncmp(curRxUCMDevice, SND_USE_CASE_DEV_SPEAKER, MAX_LEN(curRxUCMDevice, SND_USE_CASE_DEV_SPEAKER))) {
+ devices &= ~AudioSystem::DEVICE_IN_BUILTIN_MIC;
+ devices |= AudioSystem::DEVICE_IN_BACK_MIC;
+ }
}
} else if (devices & AudioSystem::DEVICE_OUT_EARPIECE) {
devices = devices | AudioSystem::DEVICE_IN_BUILTIN_MIC;
@@ -1088,6 +1093,21 @@
handle->rxHandle = 0;
ALOGV("s_close: handle %p h %p", handle, h);
if (h) {
+ if ((!strcmp(handle->useCase, SND_USE_CASE_VERB_VOICECALL) ||
+ !strcmp(handle->useCase, SND_USE_CASE_MOD_PLAY_VOICE)) &&
+ platform_is_Fusion3()) {
+#ifdef QCOM_CSDCLIENT_ENABLED
+ if (csd_stop_voice == NULL) {
+ ALOGE("dlsym:Error:%s Loading csd_client_disable_device", dlerror());
+ } else {
+ err = csd_stop_voice();
+ if (err < 0) {
+ ALOGE("s_close: csd_client error %d\n", err);
+ }
+ }
+#endif
+ }
+
ALOGV("s_close rxHandle\n");
err = pcm_close(h);
if(err != NO_ERROR) {
@@ -1105,21 +1125,6 @@
ALOGE("s_close: pcm_close failed for handle with err %d", err);
}
- if ((!strcmp(handle->useCase, SND_USE_CASE_VERB_VOICECALL) ||
- !strcmp(handle->useCase, SND_USE_CASE_MOD_PLAY_VOICE)) &&
- platform_is_Fusion3()) {
-#ifdef QCOM_CSDCLIENT_ENABLED
- if (csd_stop_voice == NULL) {
- ALOGE("dlsym:Error:%s Loading csd_client_disable_device", dlerror());
- } else {
- err = csd_stop_voice();
- if (err < 0) {
- ALOGE("s_close: csd_client error %d\n", err);
- }
- }
-#endif
- }
-
disableDevice(handle);
} else if((!strcmp(handle->useCase, SND_USE_CASE_VERB_HIFI_LOW_POWER)) ||
(!strcmp(handle->useCase, SND_USE_CASE_MOD_PLAY_LPA)) ||
@@ -1330,6 +1335,9 @@
} else {
return strdup(SND_USE_CASE_DEV_SPEAKER_HEADSET); /* COMBO SPEAKER+HEADSET RX */
}
+ } else if ((devices & AudioSystem::DEVICE_OUT_SPEAKER) &&
+ ((devices & AudioSystem::DEVICE_OUT_AUX_DIGITAL))) {
+ return strdup(SND_USE_CASE_DEV_HDMI_SPEAKER);
#ifdef QCOM_ANC_HEADSET_ENABLED
} else if ((devices & AudioSystem::DEVICE_OUT_SPEAKER) &&
((devices & AudioSystem::DEVICE_OUT_ANC_HEADSET) ||
diff --git a/libalsa-intf/msm8960_use_cases.h b/libalsa-intf/msm8960_use_cases.h
index ad69e09..ed58d8a 100644
--- a/libalsa-intf/msm8960_use_cases.h
+++ b/libalsa-intf/msm8960_use_cases.h
@@ -237,6 +237,7 @@
#define SND_USE_CASE_DEV_SSR_QUAD_MIC "SSR QMIC"
#define SND_USE_CASE_DEV_PROXY_RX "PROXY Rx"
#define SND_USE_CASE_DEV_PROXY_TX "PROXY Tx"
+#define SND_USE_CASE_DEV_HDMI_SPEAKER "HDMI Speaker"
#define SND_USE_CASE_DEV_SPDIF_SPEAKER "SPDIF Speaker"
#define SND_USE_CASE_DEV_SPDIF_HANDSET "SPDIF Earpiece"
#define SND_USE_CASE_DEV_SPDIF_HEADSET "SPDIF Headphones"