diff --git a/fm_hci/fm_hci.c b/fm_hci/fm_hci.c
index f45a00a..d509395 100644
--- a/fm_hci/fm_hci.c
+++ b/fm_hci/fm_hci.c
@@ -391,6 +391,7 @@
            return;
        }
   //     property_set("wc_transport.fm_service_status", "0");
+       usleep(100 * 1000);	// 100 msecs
        property_set(FM_VND_SERVICE_START, "true");
        ALOGI("%s: %s set to true ", __func__, FM_VND_SERVICE_START );
        for(i=0; i<45; i++) {
diff --git a/helium/radio-helium-commands.h b/helium/radio-helium-commands.h
index 46ed651..5aac139 100644
--- a/helium/radio-helium-commands.h
+++ b/helium/radio-helium-commands.h
@@ -115,6 +115,9 @@
     HCI_FM_HELIUM_AUDIO_MODE,
     HCI_FM_HELIUM_RMSSI,
     HCI_FM_HELIUM_AUDIO_MUTE,
+    HCI_FM_HELIUM_AF_ALGO,
+    HCI_FM_HELIUM_AF_SINR_GD_CH_TH,
+    HCI_FM_HELIUM_AF_SINR_TH,
 
     /*FM VSC command to enable/disable slimbus data port*/
     HCI_FM_HELIUM_AUDIO = 0x00980940,
diff --git a/helium/radio-helium.h b/helium/radio-helium.h
index 79f61bd..a244925 100644
--- a/helium/radio-helium.h
+++ b/helium/radio-helium.h
@@ -98,8 +98,13 @@
 /**RDS CONFIG MODE**/
 #define FM_RDS_CNFG_MODE    0x0f
 #define FM_RDS_CNFG_LEN     0x10
+
+/**AF JUMP CONFIG MODE**/
+#define AF_ALGO_OFFSET      0
 #define AF_RMSSI_TH_OFFSET  1
 #define AF_RMSSI_SAMPLES_OFFSET 2
+#define AF_SINR_GD_CH_TH_OFFSET 4
+#define AF_SINR_TH_OFFSET   5
 /**RX CONFIG MODE**/
 #define FM_RX_CONFG_MODE    0x15
 #define FM_RX_CNFG_LEN      0x15
@@ -1186,6 +1191,9 @@
 #define CMD_DEFRD_CF0TH12           (7)
 #define CMD_DEFRD_TUNE_POWER        (8)
 #define CMD_DEFRD_REPEATCOUNT       (9)
+#define CMD_DEFRD_AF_ALGO           (10)
+#define CMD_DEFRD_AF_SINR_GD_CH_TH  (11)
+#define CMD_DEFRD_AF_SINR_TH        (12)
 
 #define CMD_STNPARAM_RSSI           (1)
 #define CMD_STNPARAM_SINR           (2)
diff --git a/helium/radio_helium_hal.c b/helium/radio_helium_hal.c
index a25d888..7d04cb4 100644
--- a/helium/radio_helium_hal.c
+++ b/helium/radio_helium_hal.c
@@ -282,31 +282,48 @@
 
         if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_RMSSI_TH)) {
             val = hal->radio->def_data.data[AF_RMSSI_TH_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_RMSSI_TH);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_RMSSI_SAMPLE)) {
             val = hal->radio->def_data.data[AF_RMSSI_SAMPLES_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_RMSSI_SAMPLE);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_GD_CH_RMSSI_TH)) {
             val = hal->radio->def_data.data[GD_CH_RMSSI_TH_OFFSET];
             if (val > MAX_GD_CH_RMSSI_TH)
                 val -= 256;
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_GD_CH_RMSSI_TH);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_SEARCH_ALGO)) {
             val = hal->radio->def_data.data[SRCH_ALGO_TYPE_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_SEARCH_ALGO);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_SINR_FIRST_STAGE)) {
             val = hal->radio->def_data.data[SINRFIRSTSTAGE_OFFSET];
             if (val > MAX_SINR_FIRSTSTAGE)
                 val -= 256;
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_SINR_FIRST_STAGE);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_RMSSI_FIRST_STAGE)) {
             val = hal->radio->def_data.data[RMSSIFIRSTSTAGE_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_RMSSI_FIRST_STAGE);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_CF0TH12)) {
             val = (hal->radio->def_data.data[CF0TH12_BYTE1_OFFSET] |
                     (hal->radio->def_data.data[CF0TH12_BYTE2_OFFSET] << 8));
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_CF0TH12);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_TUNE_POWER)) {
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_TUNE_POWER);
         } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_REPEATCOUNT)) {
             val = hal->radio->def_data.data[RX_REPEATE_BYTE_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_REPEATCOUNT);
+        } else if(test_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_ALGO)) {
+            val = hal->radio->def_data.data[AF_ALGO_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_ALGO);
+        } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_SINR_GD_CH_TH)) {
+            val = hal->radio->def_data.data[AF_SINR_GD_CH_TH_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_SINR_GD_CH_TH);
+        } else if (test_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_SINR_TH)) {
+            val = hal->radio->def_data.data[AF_SINR_TH_OFFSET];
+            clear_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_SINR_TH);
         }
     } else {
         ALOGE("%s: Error: Status= 0x%x", __func__, status);
     }
-    clear_all_bit(def_data_rd_mask_flag);
     hal->jni_cb->fm_def_data_read_cb(val, status);
 }
 
@@ -1597,7 +1614,31 @@
          def_data_wrt.length = RDS_PS0_LEN;
          memcpy(&def_data_wrt.data, &hal->radio->def_data.data,
                  hal->radio->def_data.data_len);
-         def_data_wrt.data[AF_RMSSI_SAMPLES_OFFSET] = val;
+         def_data_wrt.data[RX_REPEATE_BYTE_OFFSET] = val;
+         ret = hci_fm_default_data_write_req(&def_data_wrt);
+         break;
+    case HCI_FM_HELIUM_AF_ALGO:
+         def_data_wrt.mode = FM_AFJUMP_CONFG_MODE;
+         def_data_wrt.length = FM_AFJUMP_CNFG_LEN;
+         memcpy(&def_data_wrt.data, &hal->radio->def_data.data,
+                 hal->radio->def_data.data_len);
+         def_data_wrt.data[AF_ALGO_OFFSET] = (char)val;
+         ret = hci_fm_default_data_write_req(&def_data_wrt);
+         break;
+    case HCI_FM_HELIUM_AF_SINR_GD_CH_TH:
+         def_data_wrt.mode = FM_AFJUMP_CONFG_MODE;
+         def_data_wrt.length = FM_AFJUMP_CNFG_LEN;
+         memcpy(&def_data_wrt.data, &hal->radio->def_data.data,
+                 hal->radio->def_data.data_len);
+         def_data_wrt.data[AF_SINR_GD_CH_TH_OFFSET] = (char)val;
+         ret = hci_fm_default_data_write_req(&def_data_wrt);
+         break;
+    case HCI_FM_HELIUM_AF_SINR_TH:
+         def_data_wrt.mode = FM_AFJUMP_CONFG_MODE;
+         def_data_wrt.length = FM_AFJUMP_CNFG_LEN;
+         memcpy(&def_data_wrt.data, &hal->radio->def_data.data,
+                 hal->radio->def_data.data_len);
+         def_data_wrt.data[AF_SINR_TH_OFFSET] = (char)val;
          ret = hci_fm_default_data_write_req(&def_data_wrt);
          break;
     case HCI_FM_HELIUM_BLEND_SINRHI:
@@ -1729,7 +1770,21 @@
         set_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_RMSSI_SAMPLE);
         def_data_rd.mode = FM_AFJUMP_CONFG_MODE;
         def_data_rd.length = FM_AFJUMP_CNFG_LEN;
-
+        goto cmd;
+    case HCI_FM_HELIUM_AF_ALGO:
+        set_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_ALGO);
+        def_data_rd.mode = FM_AFJUMP_CONFG_MODE;
+        def_data_rd.length = FM_AFJUMP_CNFG_LEN;
+        goto cmd;
+    case HCI_FM_HELIUM_AF_SINR_GD_CH_TH:
+        set_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_SINR_GD_CH_TH);
+        def_data_rd.mode = FM_AFJUMP_CONFG_MODE;
+        def_data_rd.length = FM_AFJUMP_CNFG_LEN;
+        goto cmd;
+    case HCI_FM_HELIUM_AF_SINR_TH:
+        set_bit(def_data_rd_mask_flag, CMD_DEFRD_AF_SINR_TH);
+        def_data_rd.mode = FM_AFJUMP_CONFG_MODE;
+        def_data_rd.length = FM_AFJUMP_CNFG_LEN;
 cmd:
         def_data_rd.param_len = 0;
         def_data_rd.param = 0;
