Merge ab8f3289f1281a1cb11816b31d33a753a2e5b0ca on remote branch
Change-Id: Ie6078484a923a841b73fe1ce9f3d97929d21490a
diff --git a/hal/Android.mk b/hal/Android.mk
index 0545423..0edc5a3 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -54,7 +54,7 @@
ifeq ($(strip $(AUDIO_FEATURE_ENABLED_HDMI_EDID)),true)
LOCAL_SRC_FILES += edid.c
- LOCAL_CFLAGS := -DHDMI_EDID_ENABLED
+ LOCAL_CFLAGS += -DHDMI_EDID
endif
ifeq ($(strip $(AUDIO_USE_LL_AS_PRIMARY_OUTPUT)),true)
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 197bdfb..e2db95b 100755
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -666,9 +666,10 @@
specified usecase to new snd devices */
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- /* Update the out_snd_device only for the usecases that are enabled here */
- if (switch_device[usecase->id] && (usecase->type != VOICE_CALL)) {
- usecase->out_snd_device = snd_device;
+ /* Update the out_snd_device only before enabling the audio route */
+ if (switch_device[usecase->id] ) {
+ usecase->out_snd_device = snd_device;
+ if (usecase->type != VOICE_CALL)
enable_audio_route(adev, usecase);
}
}
@@ -703,7 +704,8 @@
usecase != uc_info &&
usecase->in_snd_device != snd_device &&
((uc_info->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) &&
- ((usecase->devices & ~AUDIO_DEVICE_BIT_IN) & AUDIO_DEVICE_IN_ALL_CODEC_BACKEND)) &&
+ (((usecase->devices & ~AUDIO_DEVICE_BIT_IN) & AUDIO_DEVICE_IN_ALL_CODEC_BACKEND) ||
+ (usecase->type == VOICE_CALL))) &&
(usecase->id != USECASE_AUDIO_SPKR_CALIB_TX)) {
ALOGV("%s: Usecase (%s) is active on (%s) - disabling ..",
__func__, use_case_table[usecase->id],
diff --git a/hal/edid.c b/hal/edid.c
index 9b05950..06e1e05 100644
--- a/hal/edid.c
+++ b/hal/edid.c
@@ -662,12 +662,12 @@
ALOGV("AUDIO DESC BLOCK # %d\n",i);
info->audio_blocks_array[i].channels = channels[i];
- ALOGV("info->audio_blocks_array[i].channels %d\n",
+ ALOGD("info->audio_blocks_array[i].channels %d\n",
info->audio_blocks_array[i].channels);
ALOGV("Format Byte %d\n", formats[i]);
info->audio_blocks_array[i].format_id = (edid_audio_format_id)formats[i];
- ALOGV("info->audio_blocks_array[i].format_id %s",
+ ALOGD("info->audio_blocks_array[i].format_id %s",
edid_format_to_str(formats[i]));
ALOGV("Frequency Byte %d\n", frequency[i]);
diff --git a/hal/edid.h b/hal/edid.h
index ec83ec8..aa945bd 100644
--- a/hal/edid.h
+++ b/hal/edid.h
@@ -92,5 +92,10 @@
int channel_allocation;
} edid_audio_info;
+
+#ifndef HDMI_EDID
+#define edid_get_sink_caps(info, edid_data) (0)
+#else
bool edid_get_sink_caps(edid_audio_info* info, char *edid_data);
+#endif
#endif /* EDID_H */
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 92b4f13..d882c5f 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -2428,7 +2428,7 @@
goto exit;
}
- if (popcount(devices) == 2 && !voice_is_in_call(adev)) {
+ if (popcount(devices) == 2) {
if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
AUDIO_DEVICE_OUT_SPEAKER)) {
if (my_data->external_spk_1)
@@ -4214,12 +4214,10 @@
edid_data[0] = count;
memcpy(&edid_data[1], block, count);
-#ifdef HDMI_EDID_ENABLED
if (!edid_get_sink_caps(info, edid_data)) {
ALOGE("%s: Failed to get HDMI sink capabilities", __func__);
goto fail;
}
-#endif
my_data->edid_valid = true;
return 0;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index d215a89..2975a00 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -2049,7 +2049,7 @@
goto exit;
}
- if (popcount(devices) == 2 && !voice_is_in_call(adev)) {
+ if (popcount(devices) == 2) {
if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
AUDIO_DEVICE_OUT_SPEAKER)) {
if (my_data->external_spk_1)