Merge "hal: fix in_call flag is not reset after voice call stop"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9769653..3181a82 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -7124,7 +7124,9 @@
     if (adev->mode != mode) {
         ALOGD("%s: mode %d\n", __func__, mode);
         adev->mode = mode;
-        if ((mode == AUDIO_MODE_NORMAL) && voice_is_in_call(adev)) {
+        if (voice_is_in_call(adev) &&
+            (mode == AUDIO_MODE_NORMAL ||
+             (mode == AUDIO_MODE_IN_COMMUNICATION && !voice_is_call_state_active(adev)))) {
             list_for_each(node, &adev->usecase_list) {
                 usecase = node_to_item(node, struct audio_usecase, list);
                 if (usecase->type == VOICE_CALL)