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;
