diff --git a/configs/kona/sound_trigger_mixer_paths.xml b/configs/kona/sound_trigger_mixer_paths.xml
index 8cb6622..385bed9 100644
--- a/configs/kona/sound_trigger_mixer_paths.xml
+++ b/configs/kona/sound_trigger_mixer_paths.xml
@@ -81,6 +81,7 @@
     <ctl name="EC Reference Channels" value="Zero"/>
     <ctl name="EC Reference Bit Format" value="0"/>
     <ctl name="EC Reference SampleRate" value="0"/>
+    <ctl name="ADC2_MIXER Switch" value="0" />
 
     <path name="listen-voice-wakeup-1">
         <ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
diff --git a/configs/kona/sound_trigger_mixer_paths_qrd.xml b/configs/kona/sound_trigger_mixer_paths_qrd.xml
index a8180e4..9a51ec6 100644
--- a/configs/kona/sound_trigger_mixer_paths_qrd.xml
+++ b/configs/kona/sound_trigger_mixer_paths_qrd.xml
@@ -81,6 +81,7 @@
     <ctl name="EC Reference Channels" value="Zero"/>
     <ctl name="EC Reference Bit Format" value="0"/>
     <ctl name="EC Reference SampleRate" value="0"/>
+    <ctl name="ADC2_MIXER Switch" value="0" />
 
     <path name="listen-voice-wakeup-1">
         <ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index eba94f0..18b2bf6 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -272,7 +272,7 @@
 vendor.audio.feature.compr_cap.enable=false \
 vendor.audio.feature.compress_in.enable=false \
 vendor.audio.feature.compress_meta_data.enable=true \
-vendor.audio.feature.compr_voip.enable=false \
+vendor.audio.feature.compr_voip.enable=true \
 vendor.audio.feature.concurrent_capture.enable=false \
 vendor.audio.feature.custom_stereo.enable=true \
 vendor.audio.feature.display_port.enable=true \
diff --git a/qahw_api/src/qahw_api.cpp b/qahw_api/src/qahw_api.cpp
index cbde5e3..07d2678 100644
--- a/qahw_api/src/qahw_api.cpp
+++ b/qahw_api/src/qahw_api.cpp
@@ -1668,8 +1668,10 @@
 
 int qahw_init_check(const qahw_module_handle_t *hw_module)
 {
-    ALOGV("%d:%s",__LINE__, __func__);
-    return qahw_init_check_l(hw_module);
+    ALOGV("%d:%s start",__LINE__, __func__);
+    int rc = qahw_init_check_l(hw_module);
+    ALOGV("%d:%s end",__LINE__, __func__);
+    return rc;
 }
 
 int qahw_set_voice_volume(qahw_module_handle_t *hw_module, float volume)
@@ -1902,8 +1904,10 @@
 
 qahw_module_handle_t *qahw_load_module(const char *hw_module_id)
 {
-    ALOGV("%d:%s",__LINE__, __func__);
-    return qahw_load_module_l(hw_module_id);
+    ALOGV("%d:%s start",__LINE__, __func__);
+    qahw_module_handle_t *module = qahw_load_module_l(hw_module_id);
+    ALOGV("%d:%s end",__LINE__, __func__);
+    return module;
 }
 
 #if QAHW_V1
@@ -2012,6 +2016,7 @@
                      void *cookie,
                      qahw_stream_handle_t **stream_handle) {
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     audio_io_handle_t handle = 0x999;
     int rc = -EINVAL;
     const char *address = stream_name_map[attr.type];
@@ -2146,6 +2151,7 @@
     if(no_of_modifiers){
         ALOGE("%s: modifiers not currently supported\n", __func__);
     }
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2154,6 +2160,7 @@
     qahw_stream_direction dir;
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     if (stream) {
         switch (stream->dir) {
         case QAHW_STREAM_OUTPUT:
@@ -2183,6 +2190,7 @@
 
     free(stream->vol.vol_pair);
     free(stream);
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2191,6 +2199,7 @@
     qahw_audio_stream_type type;
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     if (!stream) {
         ALOGE("%d:%s invalid stream handle", __LINE__, __func__);
         return rc;
@@ -2201,6 +2210,10 @@
     }
 
     qahw_stream_set_device(stream, stream->num_of_devices, stream->devices);
+    memset(&devices[0], 0, sizeof(devices));
+    memcpy(&devices[0], &stream->devices[0], stream->num_of_devices);
+    qahw_stream_set_device(stream, stream->num_of_devices, &devices[0]);
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2209,11 +2222,13 @@
     qahw_audio_stream_type type;
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     /*reset call state and call mode for voice */
     if (stream->type == QAHW_VOICE_CALL) {
         rc = qahw_set_parameters(stream->hw_module, "call_state=1");
         rc = qahw_set_mode(stream->hw_module, AUDIO_MODE_NORMAL);
     }
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2226,6 +2241,7 @@
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
     bool is_voice = false;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     strlcpy(device_route, "routing=", QAHW_MAX_INT_STRING);
 
     if (stream && num_of_devices && devices) {
@@ -2289,6 +2305,7 @@
         memcpy(&stream->devices[0], devices, num_of_devices);
     }
 
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2297,6 +2314,7 @@
     int rc = 0;
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     if (stream && num_of_dev && devices) {
         *num_of_dev = stream->num_of_devices;
         *devices = stream->devices;
@@ -2305,6 +2323,7 @@
         rc = -EINVAL;
     }
 
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2319,6 +2338,7 @@
     bool r_found = false;
     int i;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     if(stream) {
         /*currently max 2 channels is supported */
         if ( vol_data.num_of_channels > QAHW_CHANNELS_MAX) {
@@ -2366,6 +2386,7 @@
     } else
         ALOGE("%s: null stream handle\n", __func__);
 
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2373,11 +2394,13 @@
                            struct qahw_volume_data **vol_data) {
     int rc = 0;
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
+    ALOGV("%d:%s start",__LINE__, __func__);
     if (stream)
         *vol_data = &stream->vol;
     else
         rc = -EINVAL;
 
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2404,6 +2427,7 @@
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
     char *mute_param;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     if(stream) {
         mute_param = qahw_get_device_mute_info(mute_data);
 
@@ -2430,6 +2454,7 @@
             }
         }
     }
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2438,6 +2463,7 @@
     int rc = 0;
     qahw_api_stream_t *stream = (qahw_api_stream_t *)stream_handle;
 
+    ALOGV("%d:%s start",__LINE__, __func__);
     if(stream && mute_data){
             switch(mute_data->direction) {
                 case QAHW_STREAM_OUTPUT:
@@ -2453,6 +2479,7 @@
             }
     }
 
+    ALOGV("%d:%s end",__LINE__, __func__);
     return rc;
 }
 
@@ -2610,15 +2637,18 @@
             else
                 ALOGE("%d:%s out stream invalid, cannot flush"
                       , __LINE__, __func__);
+            break;
         case QAHW_STREAM_INPUT:
                 ALOGE("%d:%s cannot flush input stream"
                       , __LINE__, __func__);
+            break;
         case QAHW_STREAM_INPUT_OUTPUT:
             if (stream->out_stream)
                 rc = qahw_out_flush(stream->out_stream);
             else
                 ALOGE("%d:%s out stream invalid, cannot flush"
                       , __LINE__, __func__);
+            break;
         }
     } else
         ALOGE("%d:%s invalid stream handle, flush failed"
@@ -2638,15 +2668,18 @@
             else
                 ALOGE("%d:%s out stream invalid, cannot drain"
                       , __LINE__, __func__);
+            break;
         case QAHW_STREAM_INPUT:
                 ALOGE("%d:%s cannot drain input stream"
                       , __LINE__, __func__);
+            break;
         case QAHW_STREAM_INPUT_OUTPUT:
             if (stream->out_stream)
                 rc = qahw_out_drain(stream->out_stream, type);
             else
                 ALOGE("%d:%s out stream invalid, cannot drain"
                       , __LINE__, __func__);
+            break;
         }
     } else
         ALOGE("%d:%s invalid stream handle, drain failed"
@@ -2668,6 +2701,7 @@
                       , __LINE__, __func__);
                 rc = -EINVAL;
             }
+            break;
         case QAHW_STREAM_INPUT:
             if (stream->in_stream)
                 *in_buffer = qahw_in_get_buffer_size(stream->in_stream);
@@ -2676,6 +2710,7 @@
                       , __LINE__, __func__);
                 rc = -EINVAL;
             }
+            break;
         case QAHW_STREAM_INPUT_OUTPUT:
             if (stream->out_stream)
                 *out_buffer = qahw_out_get_buffer_size(stream->out_stream);
@@ -2691,12 +2726,18 @@
                       , __LINE__, __func__);
                 rc = -EINVAL;
             }
+            break;
+        default:
+            ALOGE("%d:%s invalid stream direction, cannot get size", __LINE__, __func__);
+            rc = -EINVAL;
+            break;
         }
     } else {
         ALOGE("%d:%s invalid stream handle, get size failed failed"
               , __LINE__, __func__);
         rc = -EINVAL;
     }
+    ALOGV("%d:%s inSz %d outSz %d ret 0x%8x", __LINE__, __func__, *in_buffer, *out_buffer, rc);
     return rc;
 }
 
