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/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index f605749..ab78098 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -1670,7 +1670,8 @@
                       if (true == mPlaybackInProgress) {
                           stopFM();
                       }
-                      mReceiver.EnableSlimbus(DISABLE_SLIMBUS_DATA_PORT);
+                      if (mReceiver != null)
+                          mReceiver.EnableSlimbus(DISABLE_SLIMBUS_DATA_PORT);
                       mStoppedOnFocusLoss = true;
                       break;
                   case AudioManager.AUDIOFOCUS_LOSS:
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;
