hal: update EC reference handling
Change-Id: I745e28c14902f810754887f9db195cf4f5261713
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 0a1ebf8..cd9ded8 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1731,6 +1731,8 @@
pcm_close(in->pcm);
in->pcm = NULL;
}
+ adev->enable_voicerx = false;
+ platform_set_echo_reference(adev, false, AUDIO_DEVICE_NONE );
status = stop_input_stream(in);
pthread_mutex_unlock(&adev->lock);
}
@@ -1855,6 +1857,7 @@
bool enable)
{
struct stream_in *in = (struct stream_in *)stream;
+ struct audio_device *adev = in->dev;
int status = 0;
effect_descriptor_t desc;
@@ -1868,6 +1871,18 @@
in->enable_aec != enable &&
(memcmp(&desc.type, FX_IID_AEC, sizeof(effect_uuid_t)) == 0)) {
in->enable_aec = enable;
+ if (!enable)
+ platform_set_echo_reference(in->dev, enable, AUDIO_DEVICE_NONE);
+ adev->enable_voicerx = enable;
+ struct audio_usecase *usecase;
+ struct listnode *node;
+ list_for_each(node, &adev->usecase_list) {
+ usecase = node_to_item(node, struct audio_usecase, list);
+ if (usecase->type == PCM_PLAYBACK) {
+ select_devices(adev, usecase->id);
+ break;
+ }
+ }
if (!in->standby)
select_devices(in->dev, in->usecase);
}
@@ -2337,7 +2352,7 @@
struct audio_stream_in **stream_in,
audio_input_flags_t flags,
const char *address __unused,
- audio_source_t source __unused)
+ audio_source_t source )
{
struct audio_device *adev = (struct audio_device *)dev;
struct stream_in *in;
@@ -2371,7 +2386,7 @@
in->stream.get_input_frames_lost = in_get_input_frames_lost;
in->device = devices;
- in->source = AUDIO_SOURCE_DEFAULT;
+ in->source = source;
in->dev = adev;
in->standby = 1;
in->channel_mask = config->channel_mask;
@@ -2704,6 +2719,7 @@
}
adev->bt_wb_speech_enabled = false;
+ adev->enable_voicerx = false;
*device = &adev->device.common;
if (k_enable_extended_precision)