hal: acquire wake lock for voice call
acquire wake lock to fix voice mute during
usb disconnect.
Change-Id: I5d6c20e526fd49c9c88419c0466e486a4aa6c0fd
diff --git a/hal/Android.mk b/hal/Android.mk
index de04e52..787a317 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -111,7 +111,9 @@
LOCAL_CFLAGS += -Wno-macro-redefined
-LOCAL_HEADER_LIBRARIES := libhardware_headers
+LOCAL_HEADER_LIBRARIES := \
+ libhardware_headers \
+ libhardware_legacy_headers
LOCAL_SRC_FILES := \
audio_hw.c \
@@ -145,7 +147,8 @@
libhidlbase \
libhidltransport \
libprocessgroup \
- libutils
+ libutils \
+ libhardware_legacy
LOCAL_C_INCLUDES += \
external/tinyalsa/include \
@@ -153,6 +156,7 @@
system/media/audio_utils/include \
external/expat/lib \
vendor/qcom/opensource/core-utils/fwk-detect \
+ $(TOP)/hardware/libhardware_legacy/include/hardware_legacy \
$(call include-path-for, audio-route) \
$(call include-path-for, audio-effects) \
$(LOCAL_PATH)/$(AUDIO_PLATFORM) \
diff --git a/hal/voice.c b/hal/voice.c
index f1e2c47..05c0601 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -33,6 +33,13 @@
#include "platform.h"
#include "platform_api.h"
#include "audio_extn.h"
+#ifndef LINUX_ENABLED
+#include <hardware_legacy/power.h>
+#else
+#define acquire_wake_lock(a, b) (0)
+#define release_wake_lock(a) (0)
+#define PARTIAL_WAKE_LOCK 1
+#endif
#ifdef DYNAMIC_LOG_ENABLED
#include <log_xml_parser.h>
@@ -40,6 +47,8 @@
#include <log_utils.h>
#endif
+#define TRANSIT_WAKE_LOCK_NAME "audiohal_transit_wake_lock"
+
struct pcm_config pcm_config_voice_call = {
.channels = 1,
.rate = 8000,
@@ -240,6 +249,13 @@
voice_loopback_tx = NULL;
}
}
+
+ if (voice_update_pcm_config(adev)) {
+ ret = release_wake_lock(TRANSIT_WAKE_LOCK_NAME);
+ if (ret)
+ ALOGE("%s: failed to release voicecall wake lock. ret: %d",__func__, ret);
+ }
+
/* 2. Get and set stream specific mixer controls */
disable_audio_route(adev, uc_info);
@@ -383,6 +399,12 @@
}
}
+ if (voice_update_pcm_config(adev)) {
+ ret = acquire_wake_lock(PARTIAL_WAKE_LOCK, TRANSIT_WAKE_LOCK_NAME);
+ if (ret)
+ ALOGE("%s: acquiring wake lock failed for voice call ret: %d",__func__, ret);
+ }
+
if (adev->mic_break_enabled)
platform_set_mic_break_det(adev->platform, true);