diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index df9cb66..fcdcb04 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -53,6 +53,7 @@
 MM_AUDIO_ENABLED_FTM := true
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index 2149a7b..16f248c 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -53,6 +53,7 @@
 MM_AUDIO_ENABLED_FTM := true
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/configs/msm8996/msm8996.mk b/configs/msm8996/msm8996.mk
index 26e0bb1..d1a108a 100644
--- a/configs/msm8996/msm8996.mk
+++ b/configs/msm8996/msm8996.mk
@@ -52,6 +52,7 @@
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
 AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index 94079aa..6a03696 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -55,6 +55,7 @@
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
 AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/hal/audio_extn/audio_defs.h b/hal/audio_extn/audio_defs.h
index 1baa3a7..94b43ba 100644
--- a/hal/audio_extn/audio_defs.h
+++ b/hal/audio_extn/audio_defs.h
@@ -115,27 +115,27 @@
 /* MAX SECTORS for sourcetracking feature */
 #define MAX_SECTORS 8
 
-struct qahw_source_tracking_param {
+struct source_tracking_param {
     uint8_t   vad[MAX_SECTORS];
     uint16_t  doa_speech;
     uint16_t  doa_noise[3];
     uint8_t   polar_activity[360];
 };
 
-struct qahw_sound_focus_param {
+struct sound_focus_param {
     uint16_t  start_angle[MAX_SECTORS];
     uint8_t   enable[MAX_SECTORS];
     uint16_t  gain_step;
 };
 
 typedef union {
-    struct qahw_source_tracking_param st_params;
-    struct qahw_sound_focus_param sf_params;
-} qahw_param_payload;
+    struct source_tracking_param st_params;
+    struct sound_focus_param sf_params;
+} audio_extn_param_payload;
 
 typedef enum {
-    QAHW_PARAM_SOURCE_TRACK,
-    QAHW_PARAM_SOUND_FOCUS
-} qahw_param_id;
+    AUDIO_EXTN_PARAM_SOURCE_TRACK,
+    AUDIO_EXTN_PARAM_SOUND_FOCUS
+} audio_extn_param_id;
 
 #endif /* AUDIO_DEFS_H */
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index b9402d5..77e03ca 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -742,4 +742,32 @@
 #define audio_extn_cin_configure_input_stream(in) (0)
 #endif
 
+#ifndef SOURCE_TRACKING_ENABLED
+static int __unused audio_extn_get_soundfocus_data(
+                                   const struct audio_device *adev __unused,
+                                   struct sound_focus_param *payload __unused)
+{
+    return -ENOSYS;
+}
+static int __unused audio_extn_get_sourcetrack_data(
+                                   const struct audio_device *adev __unused,
+                                   struct source_tracking_param *payload __unused)
+{
+    return -ENOSYS;
+}
+static int __unused audio_extn_set_soundfocus_data(
+                                   struct audio_device *adev __unused,
+                                   struct sound_focus_param *payload __unused)
+{
+    return -ENOSYS;
+}
+#else
+int audio_extn_get_soundfocus_data(const struct audio_device *adev,
+                                   struct sound_focus_param *payload);
+int audio_extn_get_sourcetrack_data(const struct audio_device *adev,
+                                    struct source_tracking_param *payload);
+int audio_extn_set_soundfocus_data(struct audio_device *adev,
+                                   struct sound_focus_param *payload);
+#endif
+
 #endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/source_track.c b/hal/audio_extn/source_track.c
index a36de80..5bced66 100644
--- a/hal/audio_extn/source_track.c
+++ b/hal/audio_extn/source_track.c
@@ -88,25 +88,11 @@
       BITMASK_AUDIO_PARAMETER_KEY_SOURCE_TRACK_DOA_NOISE |\
       BITMASK_AUDIO_PARAMETER_KEY_SOURCE_TRACK_POLAR_ACTIVITY)
 
-#define MAX_SECTORS                                         8
 #define MAX_STR_SIZE                                       2048
 
 extern struct audio_device_to_audio_interface audio_device_to_interface_table[];
 extern int audio_device_to_interface_table_len;
 
-struct sound_focus_param {
-    uint16_t start_angle[MAX_SECTORS];
-    uint8_t enable[MAX_SECTORS];
-    uint16_t gain_step;
-};
-
-struct source_tracking_param {
-    uint8_t vad[MAX_SECTORS];
-    uint16_t doa_speech;
-    uint16_t doa_noise[3];
-    uint8_t polar_activity[360];
-};
-
 static int add_audio_intf_name_to_mixer_ctl(audio_devices_t device, char *mixer_ctl_name,
                                 struct audio_device_to_audio_interface *table, int len)
 {
diff --git a/hal/audio_hw_extn_api.c b/hal/audio_hw_extn_api.c
index d98a4dc..39d81fb 100644
--- a/hal/audio_hw_extn_api.c
+++ b/hal/audio_hw_extn_api.c
@@ -49,7 +49,8 @@
 #endif
 
 int qahwi_get_param_data(const struct audio_hw_device *adev,
-                         qahw_param_id param_id, qahw_param_payload *payload)
+                         audio_extn_param_id param_id,
+                         audio_extn_param_payload *payload)
 {
     int ret = 0;
     const struct audio_device *dev = (const struct audio_device *)adev;
@@ -65,13 +66,13 @@
     }
 
     switch (param_id) {
-        case QAHW_PARAM_SOUND_FOCUS:
+        case AUDIO_EXTN_PARAM_SOUND_FOCUS:
               ret = audio_extn_get_soundfocus_data(dev,
-                     (struct qahw_sound_focus_param *)payload);
+                     (struct sound_focus_param *)payload);
               break;
-        case QAHW_PARAM_SOURCE_TRACK:
+        case AUDIO_EXTN_PARAM_SOURCE_TRACK:
               ret = audio_extn_get_sourcetrack_data(dev,
-                     (struct qahw_source_tracking_param*)payload);
+                     (struct source_tracking_param*)payload);
               break;
        default:
              ALOGE("%s::INVALID PARAM ID:%d\n",__func__,param_id);
@@ -82,7 +83,8 @@
 }
 
 int qahwi_set_param_data(struct audio_hw_device *adev,
-                         qahw_param_id param_id, qahw_param_payload *payload)
+                         audio_extn_param_id param_id,
+                         audio_extn_param_payload *payload)
 {
     int ret = 0;
     struct audio_device *dev = (struct audio_device *)adev;
@@ -98,9 +100,9 @@
     }
 
     switch (param_id) {
-        case QAHW_PARAM_SOUND_FOCUS:
+        case AUDIO_EXTN_PARAM_SOUND_FOCUS:
               ret = audio_extn_set_soundfocus_data(dev,
-                     (struct qahw_sound_focus_param *)payload);
+                     (struct sound_focus_param *)payload);
               break;
        default:
              ALOGE("%s::INVALID PARAM ID:%d\n",__func__,param_id);
diff --git a/qahw_api/Android.mk b/qahw_api/Android.mk
index 1886262..e9d86a0 100644
--- a/qahw_api/Android.mk
+++ b/qahw_api/Android.mk
@@ -21,6 +21,8 @@
     libhardware \
     libdl
 
+LOCAL_CFLAGS += -Wall -Werror
+
 LOCAL_COPY_HEADERS_TO   := mm-audio/qahw_api/inc
 LOCAL_COPY_HEADERS      := inc/qahw_api.h
 LOCAL_COPY_HEADERS      += inc/qahw_defs.h
diff --git a/qahw_api/Makefile.am b/qahw_api/Makefile.am
index a2139d9..a573552 100644
--- a/qahw_api/Makefile.am
+++ b/qahw_api/Makefile.am
@@ -18,5 +18,6 @@
                      src/qahw_effect.c
 libqahw_la_CFLAGS = $(AM_CFLAGS) -include stddef.h
 libqahw_la_CFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
+libqahw_la_CFLAGS += -Wno-sign-compare -Werror
 libqahw_la_LIBADD = -llog -lcutils -lhardware
 libqahw_la_LDFLAGS = -module -shared -avoid-version
diff --git a/qahw_api/src/qahw.c b/qahw_api/src/qahw.c
index 1cb89ee..393dba9 100644
--- a/qahw_api/src/qahw.c
+++ b/qahw_api/src/qahw.c
@@ -48,7 +48,7 @@
 #define QAHW_MODULE_API_VERSION_CURRENT QAHW_MODULE_API_VERSION_0_0
 
 typedef uint64_t (*qahwi_in_read_v2_t)(audio_stream_in_t *in, void* buffer,
-                                       size_t bytes, uint64_t *timestamp);
+                                       size_t bytes, int64_t *timestamp);
 
 typedef int (*qahwi_get_param_data_t) (const audio_hw_device_t *,
                               qahw_param_id, qahw_param_payload *);
@@ -1142,8 +1142,7 @@
     pthread_mutex_lock(&qahw_module->lock);
     audio_device = qahw_module->audio_device;
     if (qahw_module->audio_device->get_mic_mute) {
-        rc = audio_device->get_mic_mute(qahw_module->audio_device,
-                                                 &state);
+        rc = audio_device->get_mic_mute(qahw_module->audio_device, state);
     } else {
         rc = -ENOSYS;
         ALOGW("%s not supported", __func__);
@@ -1675,7 +1674,6 @@
 error_exit:
     pthread_mutex_unlock(&qahw_module_init_lock);
 
-exit:
     return rc;
 }
 
diff --git a/qahw_api/test/Android.mk b/qahw_api/test/Android.mk
index 1688069..6ee6f4b 100644
--- a/qahw_api/test/Android.mk
+++ b/qahw_api/test/Android.mk
@@ -3,7 +3,8 @@
 # audio_hal_playback_test
 # ==============================================================================
 include $(CLEAR_VARS)
-LOCAL_SRC_FILES := qahw_playback_test.c
+LOCAL_SRC_FILES := qahw_playback_test.c \
+                   qahw_effect_test.c
 LOCAL_MODULE := hal_play_test
 
 hal-play-inc     = $(TARGET_OUT_HEADERS)/mm-audio/qahw_api/inc
diff --git a/qahw_api/test/Makefile.am b/qahw_api/test/Makefile.am
index 5378e0b..abccdce 100644
--- a/qahw_api/test/Makefile.am
+++ b/qahw_api/test/Makefile.am
@@ -1,12 +1,12 @@
 bin_PROGRAMS = hal_play_test
 
 PLAY_CPPFLAGS = -Wno-sign-compare -Werror
+PLAY_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
 PLAY_INCLUDES = -I $(top_srcdir)/qahw_api/inc
 
 hal_play_test_SOURCES = qahw_playback_test.c \
                         qahw_effect_test.c
 hal_play_test_CPPFLAGS = $(PLAY_CPPFLAGS) $(PLAY_INCLUDES)
-hal_play_test_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
 hal_play_test_LDADD = -lutils ../libqahw.la
 
 
diff --git a/qahw_api/test/qahw_effect_test.c b/qahw_api/test/qahw_effect_test.c
index d9ce81e..2a24870 100644
--- a/qahw_api/test/qahw_effect_test.c
+++ b/qahw_api/test/qahw_effect_test.c
@@ -31,6 +31,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <unistd.h>
 #include <string.h>
 #include <errno.h>
 
@@ -62,10 +63,12 @@
     "reverb",
 };
 
-void *bassboost_thread_func(void* data) {
+void *bassboost_thread_func(void* data __unused) {
+    return NULL;
 }
 
-void *virtualizer_thread_func(void* data) {
+void *virtualizer_thread_func(void* data __unused) {
+    return NULL;
 }
 
 void *equalizer_thread_func(void* data) {
@@ -151,10 +154,12 @@
     return NULL;
 }
 
-void *visualizer_thread_func(void* data) {
+void *visualizer_thread_func(void* data __unused) {
+    return NULL;
 }
 
-void *reverb_thread_func(void* data) {
+void *reverb_thread_func(void* data __unused) {
+    return NULL;
 }
 
 thread_data_t *create_effect_thread(thread_func_t func_ptr) {
@@ -195,11 +200,9 @@
 
     pthread_mutex_lock(&ethread_data->mutex);
     ethread_data->cmd = cmd;
-    if (cmd_code >= 0) {
-        ethread_data->cmd_code = cmd_code;
-        ethread_data->cmd_size = cmd_size;
-        ethread_data->cmd_data = cmd_data;
-    }
+    ethread_data->cmd_code = cmd_code;
+    ethread_data->cmd_size = cmd_size;
+    ethread_data->cmd_data = cmd_data;
     pthread_mutex_unlock(&ethread_data->mutex);
     pthread_cond_signal(&ethread_data->loop_cond);
 
diff --git a/qahw_api/test/qahw_multi_record_test.c b/qahw_api/test/qahw_multi_record_test.c
index b0b914b..1a61a08 100644
--- a/qahw_api/test/qahw_multi_record_test.c
+++ b/qahw_api/test/qahw_multi_record_test.c
@@ -89,7 +89,7 @@
 static pthread_mutex_t sourcetrack_lock;
 struct qahw_sound_focus_param sound_focus_data;
 
-void stop_signal_handler(int signal)
+void stop_signal_handler(int signal __unused)
 {
    stop_record = true;
 }
@@ -97,7 +97,6 @@
 
 void read_soundfocus_param(void)
 {
-    int i = 0;
     uint16_t start_angle[4] = {0};
     uint8_t enable_sector[4] = {0};
     uint16_t gain_step;
@@ -117,7 +116,7 @@
     memcpy(&sound_focus_data.gain_step, &gain_step, sizeof(gain_step));
 }
 
-void sourcetrack_signal_handler(int signal)
+void sourcetrack_signal_handler(int signal __unused)
 {
 /* Function to read keyboard interupt to enable user to set parameters
    for sourcetracking usecase Dynamically */
diff --git a/qahw_api/test/qahw_playback_test.c b/qahw_api/test/qahw_playback_test.c
index 8da62fb..7aa2b4c 100644
--- a/qahw_api/test/qahw_playback_test.c
+++ b/qahw_api/test/qahw_playback_test.c
@@ -22,6 +22,7 @@
 #include <pthread.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <unistd.h>
 #include <string.h>
 #include <errno.h>
 #include <time.h>
@@ -156,15 +157,14 @@
                    "music_offload_wma_encode_option2=%d;" \
                    "music_offload_wma_format_tag=%d;"
 
-void stop_signal_handler(int signal)
+void stop_signal_handler(int signal __unused)
 {
    stop_playback = true;
 }
 
 void read_kvpair(char *kvpair, char* kvpair_values, int filetype)
 {
-    char *kvpair_type;
-    char param[100];
+    char *kvpair_type = NULL;
     char *token = NULL;
     int value = 0;
     int len = 0;
@@ -291,6 +291,7 @@
         }
         fprintf(log_file, "pcm data saved to file %s", params->acp.file_name);
     }
+    return 0;
 }
 
 int write_to_hal(qahw_stream_handle_t* out_handle, char *data,
@@ -636,7 +637,7 @@
     FILE *file_stream = NULL;
     char header[44] = {0};
     char* filename = nullptr;
-    qahw_module_handle_t *qahw_mod_handle;
+    qahw_module_handle_t *qahw_mod_handle = NULL;
     const char *mod_name = "audio.primary";
     qahw_stream_handle_t* out_handle = nullptr;
     int rc = 0;
