hal: add sound card notifications to sound trigger
Add changes to support sound card and WDSP subsystem
restart notifications to sound trigger hal.
Bug: 35956563
Test: Run through sound trigger test app on device.
authored-by: Quinn Male <qmale@codeaurora.org>
Change-Id: Ifae565b53d6d6943b98eadc787c2da829ec3fab0
diff --git a/hal/audio_extn/soundtrigger.c b/hal/audio_extn/soundtrigger.c
index 32b7b85..112bd1e 100644
--- a/hal/audio_extn/soundtrigger.c
+++ b/hal/audio_extn/soundtrigger.c
@@ -68,6 +68,15 @@
return NULL;
}
+static void stdev_snd_mon_cb(void * stream __unused, struct str_parms * parms)
+{
+ if (!parms)
+ return;
+
+ audio_extn_sound_trigger_set_parameters(NULL, parms);
+ return;
+}
+
int audio_hw_call_back(sound_trigger_event_type_t event,
sound_trigger_event_info_t* config)
{
@@ -333,6 +342,7 @@
st_dev->adev = adev;
list_init(&st_dev->st_ses_list);
+ audio_extn_snd_mon_register_listener(st_dev, stdev_snd_mon_cb);
return 0;
@@ -349,6 +359,7 @@
{
ALOGV("%s: Enter", __func__);
if (st_dev && (st_dev->adev == adev) && st_dev->lib_handle) {
+ audio_extn_snd_mon_unregister_listener(st_dev);
dlclose(st_dev->lib_handle);
free(st_dev);
st_dev = NULL;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index e5a8854..49a0716 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4483,19 +4483,17 @@
if (!adev)
return 0;
- audio_extn_snd_mon_unregister_listener(adev);
- audio_extn_snd_mon_deinit();
-
- audio_extn_tfa_98xx_deinit();
-
pthread_mutex_lock(&adev_init_lock);
if ((--audio_device_ref_count) == 0) {
+ audio_extn_snd_mon_unregister_listener(adev);
+ audio_extn_tfa_98xx_deinit();
audio_route_free(adev->audio_route);
free(adev->snd_dev_ref_cnt);
platform_deinit(adev->platform);
audio_extn_extspk_deinit(adev->extspk);
audio_extn_sound_trigger_deinit(adev);
+ audio_extn_snd_mon_deinit();
for (i = 0; i < ARRAY_SIZE(adev->use_case_table); ++i) {
pcm_params_free(adev->use_case_table[i]);
}
@@ -4621,7 +4619,6 @@
return -EINVAL;
}
adev->extspk = audio_extn_extspk_init(adev);
- audio_extn_sound_trigger_init(adev);
adev->visualizer_lib = dlopen(VISUALIZER_LIBRARY_PATH, RTLD_NOW);
if (adev->visualizer_lib == NULL) {
@@ -4733,6 +4730,7 @@
audio_extn_snd_mon_register_listener(NULL, adev_snd_mon_cb);
adev->card_status = CARD_STATUS_ONLINE;
pthread_mutex_unlock(&adev->lock);
+ audio_extn_sound_trigger_init(adev);/* dependent on snd_mon_init() */
ALOGD("%s: exit", __func__);
return 0;