summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-12-07 18:19:48 -0800
committerSteve Kondik <steve@cyngn.com>2015-12-07 18:19:48 -0800
commit9f78676f577ac731943299c9860d1c899aa018be (patch)
tree1110be7a9c0b89e4e984d7adff008268b5b5a2d9
parent001fb3afe18c7aa06f7c435f0a46f802f82f2a40 (diff)
parent26f06c79dd04fba38a97f2548ead140d25edde78 (diff)
downloadhardware_qcom_audio-9f78676f577ac731943299c9860d1c899aa018be.tar.gz
hardware_qcom_audio-9f78676f577ac731943299c9860d1c899aa018be.tar.bz2
hardware_qcom_audio-9f78676f577ac731943299c9860d1c899aa018be.zip
Merge tag 'android-6.0.1_r3' of https://android.googlesource.com/platform/hardware/qcom/audio into HEAD
Android 6.0.1 release 3
-rw-r--r--hal/Android.mk3
-rw-r--r--hal/audio_extn/audio_extn.c1
-rw-r--r--hal/audio_hw.c16
-rw-r--r--hal/msm8960/platform.c3
-rw-r--r--hal/msm8974/platform.c3
5 files changed, 20 insertions, 6 deletions
diff --git a/hal/Android.mk b/hal/Android.mk
index 91c60544..1e157412 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -7,6 +7,9 @@ include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
+ifneq ($(filter msm8960,$(TARGET_BOARD_PLATFORM)),)
+ LOCAL_CFLAGS += -DMAX_TARGET_SPECIFIC_CHANNEL_CNT="2"
+endif
ifneq ($(filter msm8974 msm8226 msm8084 msm8992 msm8994,$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index dcc9baf6..7583f835 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -94,6 +94,7 @@ void audio_extn_perf_lock_release(void)
{
if (perf_lock_rel && perf_lock_handle) {
perf_lock_rel(perf_lock_handle);
+ perf_lock_handle = 0;
ALOGV("%s: Perf lock released", __func__);
} else {
ALOGE("%s: Perf lock release error", __func__);
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index d44eeb45..2e954d67 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -65,9 +65,13 @@
#define MIN_CHANNEL_COUNT 1
#define DEFAULT_CHANNEL_COUNT 2
+#ifndef MAX_TARGET_SPECIFIC_CHANNEL_CNT
+#define MAX_CHANNEL_COUNT 1
+#else
#define MAX_CHANNEL_COUNT atoi(XSTR(MAX_TARGET_SPECIFIC_CHANNEL_CNT))
#define XSTR(x) STR(x)
#define STR(x) #x
+#endif
static unsigned int configured_low_latency_capture_period_size =
LOW_LATENCY_CAPTURE_PERIOD_SIZE;
@@ -639,7 +643,8 @@ int select_devices(struct audio_device *adev,
usecase->stream.out->devices);
if (usecase->stream.out == adev->primary_output &&
adev->active_input &&
- adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
+ (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ adev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
out_snd_device != usecase->out_snd_device) {
select_devices(adev, adev->active_input->usecase);
}
@@ -649,7 +654,9 @@ int select_devices(struct audio_device *adev,
out_snd_device = SND_DEVICE_NONE;
if (in_snd_device == SND_DEVICE_NONE) {
audio_devices_t out_device = AUDIO_DEVICE_NONE;
- if (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ if (adev->active_input &&
+ (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ adev->mode == AUDIO_MODE_IN_COMMUNICATION)) {
platform_set_echo_reference(adev, false, AUDIO_DEVICE_NONE);
if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) {
out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX;
@@ -1239,7 +1246,7 @@ static int check_input_parameters(uint32_t sample_rate,
}
if ((channel_count < MIN_CHANNEL_COUNT) || (channel_count > MAX_CHANNEL_COUNT)) {
- ALOGE("%s: unsupported channel count (%d) passed Min / Max (%d\%d)", __func__,
+ ALOGE("%s: unsupported channel count (%d) passed Min / Max (%d / %d)", __func__,
channel_count, MIN_CHANNEL_COUNT, MAX_CHANNEL_COUNT);
return -EINVAL;
}
@@ -2054,7 +2061,8 @@ static int add_remove_audio_effect(const struct audio_stream *stream,
lock_input_stream(in);
pthread_mutex_lock(&in->dev->lock);
- if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION) &&
+ if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ adev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
in->enable_aec != enable &&
(memcmp(&desc.type, FX_IID_AEC, sizeof(effect_uuid_t)) == 0)) {
in->enable_aec = enable;
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index c78d9434..0ffe8a98 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -794,7 +794,8 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
snd_device = SND_DEVICE_IN_VOICE_REC_MIC;
}
}
- } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ mode == AUDIO_MODE_IN_COMMUNICATION) {
if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
in_device = AUDIO_DEVICE_IN_BACK_MIC;
if (adev->active_input) {
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 66da2498..c856bb0a 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1940,7 +1940,8 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_VOICE_REC_HEADSET_MIC;
}
- } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ mode == AUDIO_MODE_IN_COMMUNICATION) {
if (out_device & (AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_OUT_SPEAKER_SAFE))
in_device = AUDIO_DEVICE_IN_BACK_MIC;
if (adev->active_input) {