diff --git a/Makefile.am b/Makefile.am
index 57c0c82..299385d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,2 +1,7 @@
-SUBDIRS = hal qahw_api qahw_api/test
+SUBDIRS = hal
+
+if QAHW_SUPPORT
+SUBDIRS += qahw_api qahw_api/test
+endif
+
 ACLOCAL_AMFLAGS = -I m4
diff --git a/configure.ac b/configure.ac
index b3fe8cc..cbc082c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,6 +56,8 @@
 
 AM_CONDITIONAL(USE_GLIB, test "x${with_glib}" = "xyes")
 
+AM_CONDITIONAL([QAHW_SUPPORT], [test x$BOARD_SUPPORTS_QAHW = xtrue])
+
 AM_CONDITIONAL([HDMI_EDID],    [test x$AUDIO_FEATURE_ENABLED_HDMI_EDID = xtrue])
 AM_CONDITIONAL([FM_POWER_OPT], [test x$AUDIO_FEATURE_ENABLED_FM_POWER_OPT = xtrue])
 AM_CONDITIONAL([USBAUDIO], [test x$AUDIO_FEATURE_ENABLED_USBAUDIO = xtrue])
diff --git a/hal/audio_extn/audio_defs.h b/hal/audio_extn/audio_defs.h
index cfd29e0..ee4f7d4 100644
--- a/hal/audio_extn/audio_defs.h
+++ b/hal/audio_extn/audio_defs.h
@@ -111,4 +111,30 @@
  */
 #define AUDIO_INPUT_FLAG_TIMESTAMP 0x80000000
 
+/* MAX SECTORS for sourcetracking feature */
+#define MAX_SECTORS 8
+
+struct qahw_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 {
+    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;
+
+typedef enum {
+    QAHW_PARAM_SOURCE_TRACK,
+    QAHW_PARAM_SOUND_FOCUS
+} qahw_param_id;
+
 #endif /* AUDIO_DEFS_H */
diff --git a/hal/audio_extn/source_track.c b/hal/audio_extn/source_track.c
index 0a0b970..d34ed6b 100644
--- a/hal/audio_extn/source_track.c
+++ b/hal/audio_extn/source_track.c
@@ -502,6 +502,36 @@
     }
 }
 
+int audio_extn_get_soundfocus_data(const struct audio_device *adev,
+                                   struct sound_focus_param *payload)
+{
+    int ret = 0;
+    int bitmask =0;
+    struct sound_focus_param *sound_focus_data = payload;
+
+    bitmask = BITMASK_AUDIO_PARAMETER_KEYS_SOUND_FOCUS;
+
+    ret = get_soundfocus_sourcetracking_data(adev, bitmask,
+                    sound_focus_data, NULL);
+
+    return ret ;
+}
+
+int audio_extn_get_sourcetrack_data(const struct audio_device *adev,
+                              struct source_tracking_param *payload)
+{
+    int ret = 0;
+    int bitmask = 0;
+    struct source_tracking_param *source_tracking_data = payload;
+
+    bitmask = BITMASK_AUDIO_PARAMETER_KEYS_SOURCE_TRACKING;
+
+    ret = get_soundfocus_sourcetracking_data(adev, bitmask,
+                    NULL, source_tracking_data);
+
+    return ret ;
+}
+
 void audio_extn_source_track_get_parameters(const struct audio_device *adev,
                                             struct str_parms *query,
                                             struct str_parms *reply)
diff --git a/hal/audio_hw_extn_api.c b/hal/audio_hw_extn_api.c
index bfeda9b..c4a3cdf 100644
--- a/hal/audio_hw_extn_api.c
+++ b/hal/audio_hw_extn_api.c
@@ -48,6 +48,39 @@
 };
 #endif
 
+int qahwi_get_param_data(const struct audio_device *adev,
+                         qahw_param_id param_id, qahw_param_payload *payload)
+{
+    int ret = 0;
+
+    if (adev == NULL) {
+        ALOGE("%s::INVALID PARAM\n",__func__);
+        return -EINVAL;
+    }
+
+    if (payload == NULL) {
+        ALOGE("%s::INVALID PAYLOAD VALUE\n",__func__);
+        return -EINVAL;
+    }
+
+    switch (param_id) {
+        case QAHW_PARAM_SOUND_FOCUS:
+              ret = audio_extn_get_soundfocus_data(adev,
+                     (struct qahw_sound_focus_param *)payload);
+              break;
+        case QAHW_PARAM_SOURCE_TRACK:
+              ret = audio_extn_get_sourcetrack_data(adev,
+                     (struct qahw_source_tracking_param*)payload);
+              break;
+       default:
+             ALOGE("%s::INVALID PARAM ID:%d\n",__func__,param_id);
+             ret = -EINVAL;
+             break;
+
+        return ret;
+        }
+}
+
 ssize_t qahwi_in_read_v2(struct audio_stream_in *stream, void* buffer,
                           size_t bytes, uint64_t *timestamp)
 {
