Merge "hal: ensure EC reference is disabled before enabling"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index bb17b66..ce114da 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -808,7 +808,8 @@
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 &&
+ out_snd_device != usecase->out_snd_device) {
select_devices(adev, adev->active_input->usecase);
}
}
@@ -820,6 +821,7 @@
if (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
adev->primary_output && !adev->primary_output->standby) {
out_device = adev->primary_output->devices;
+ platform_set_echo_reference(adev->platform, false);
} else if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) {
out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX;
}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 4db4632..13d8f08 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -633,19 +633,18 @@
struct platform_data *my_data = (struct platform_data *)platform;
struct audio_device *adev = my_data->adev;
- if (enable) {
- my_data->ec_ref_enabled = enable;
- audio_route_apply_and_update_path(adev->audio_route, "echo-reference");
- } else {
- if (my_data->ec_ref_enabled) {
- audio_route_reset_and_update_path(adev->audio_route, "echo-reference");
- my_data->ec_ref_enabled = enable;
- } else {
- ALOGV("EC Reference is already disabled: %d", my_data->ec_ref_enabled);
- }
+ if (my_data->ec_ref_enabled) {
+ my_data->ec_ref_enabled = false;
+ ALOGV("%s: disabling echo-reference", __func__);
+ audio_route_reset_and_update_path(adev->audio_route, "echo-reference");
}
- ALOGV("Setting EC Reference: %d", enable);
+ if (enable) {
+ my_data->ec_ref_enabled = true;
+ ALOGD("%s: enabling echo-reference", __func__);
+ audio_route_apply_and_update_path(adev->audio_route, "echo-reference");
+ }
+
}
static struct csd_data *open_csd_client(bool i2s_ext_modem)