bt_link_info->hid_only = false;
 }
 
+static void halbtc8723b1ant_set_bt_auto_report(struct btc_coexist *btcoexist,
+                                              bool enable_auto_report)
+{
+       u8 h2c_parameter[1] = {0};
+
+       h2c_parameter[0] = 0;
+
+       if (enable_auto_report)
+               h2c_parameter[0] |= BIT(0);
+
+       btcoexist->btc_fill_h2c(btcoexist, 0x68, 1, h2c_parameter);
+}
+
+static void halbtc8723b1ant_bt_auto_report(struct btc_coexist *btcoexist,
+                                          bool force_exec,
+                                          bool enable_auto_report)
+{
+       coex_dm->cur_bt_auto_report = enable_auto_report;
+
+       if (!force_exec) {
+               if (coex_dm->pre_bt_auto_report == coex_dm->cur_bt_auto_report)
+                       return;
+       }
+       halbtc8723b1ant_set_bt_auto_report(btcoexist,
+                                          coex_dm->cur_bt_auto_report);
+
+       coex_dm->pre_bt_auto_report = coex_dm->cur_bt_auto_report;
+}
+
 static void btc8723b1ant_set_sw_pen_tx_rate_adapt(struct btc_coexist *btcoexist,
                                                  bool low_penalty_ra)
 {
        }
 }
 
+static void halbtc8723b1ant_action_wifi_only(struct btc_coexist *btcoexist)
+{
+       halbtc8723b1ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0);
+       halbtc8723b1ant_ps_tdma(btcoexist, FORCE_EXEC, false, 8);
+       halbtc8723b1ant_set_ant_path(btcoexist, false, false, BTC_ANT_PATH_PTA);
+}
+
+/* check if BT is disabled */
+static void halbtc8723b1ant_monitor_bt_enable_disable(struct btc_coexist
+                                                     *btcoexist)
+{
+       struct rtl_priv *rtlpriv = btcoexist->adapter;
+       static u32 bt_disable_cnt;
+       bool bt_active = true, bt_disabled;
+
+       if (coex_sta->high_priority_tx == 0 &&
+           coex_sta->high_priority_rx == 0 && coex_sta->low_priority_tx == 0 &&
+           coex_sta->low_priority_rx == 0)
+               bt_active = false;
+       if (coex_sta->high_priority_tx == 0xffff &&
+           coex_sta->high_priority_rx == 0xffff &&
+           coex_sta->low_priority_tx == 0xffff &&
+           coex_sta->low_priority_rx == 0xffff)
+               bt_active = false;
+       if (bt_active) {
+               bt_disable_cnt = 0;
+               bt_disabled = false;
+       } else {
+               bt_disable_cnt++;
+               if (bt_disable_cnt >= 2)
+                       bt_disabled = true;
+       }
+       if (coex_sta->bt_disabled != bt_disabled) {
+               RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
+                        "[BTCoex], BT is from %s to %s!!\n",
+                        (coex_sta->bt_disabled ? "disabled" : "enabled"),
+                        (bt_disabled ? "disabled" : "enabled"));
+
+               coex_sta->bt_disabled = bt_disabled;
+               btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE,
+                                  &bt_disabled);
+               if (bt_disabled) {
+                       halbtc8723b1ant_action_wifi_only(btcoexist);
+                       btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS,
+                                          NULL);
+                       btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS,
+                                          NULL);
+               }
+       }
+}
+
 /*****************************************************
  *
  *     Non-Software Coex Mechanism start
 void ex_halbtc8723b1ant_init_hwconfig(struct btc_coexist *btcoexist)
 {
        halbtc8723b1ant_init_hw_config(btcoexist, true);
+       btcoexist->auto_report_1ant = true;
 }
 
 void ex_halbtc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist)
        RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "\r\n %-35s = %d/ %d",
                 "0x774(low-pri rx/tx)", coex_sta->low_priority_rx,
                 coex_sta->low_priority_tx);
-#if (BT_AUTO_REPORT_ONLY_8723B_1ANT == 1)
-       halbtc8723b1ant_monitor_bt_ctr(btcoexist);
-#endif
+       if (btcoexist->auto_report_1ant)
+               halbtc8723b1ant_monitor_bt_ctr(btcoexist);
        btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_COEX_STATISTICS);
 }
 
                } else {
                        /* BT already NOT ignore Wlan active, do nothing here.*/
                }
-#if (BT_AUTO_REPORT_ONLY_8723B_1ANT == 0)
-               if (coex_sta->bt_info_ext & BIT4) {
-                       /* BT auto report already enabled, do nothing */
-               } else {
-                       halbtc8723b1ant_bt_auto_report(btcoexist, FORCE_EXEC,
-                                                      true);
+               if (!btcoexist->auto_report_1ant) {
+                       if (coex_sta->bt_info_ext & BIT4) {
+                               /* BT auto report already enabled, do nothing */
+                       } else {
+                               halbtc8723b1ant_bt_auto_report(btcoexist,
+                                                              FORCE_EXEC,
+                                                              true);
+                       }
                }
-#endif
        }
 
        /* check BIT2 first ==> check if bt is under inquiry or page scan */
                         "[BTCoex], ****************************************************************\n");
        }
 
-#if (BT_AUTO_REPORT_ONLY_8723B_1ANT == 0)
-       halbtc8723b1ant_query_bt_info(btcoexist);
-       halbtc8723b1ant_monitor_bt_ctr(btcoexist);
-       halbtc8723b1ant_monitor_bt_enable_disable(btcoexist);
-#else
-       if (btc8723b1ant_is_wifi_status_changed(btcoexist) ||
-           coex_dm->auto_tdma_adjust) {
-               halbtc8723b1ant_run_coexist_mechanism(btcoexist);
+       if (!btcoexist->auto_report_1ant) {
+               halbtc8723b1ant_query_bt_info(btcoexist);
+               halbtc8723b1ant_monitor_bt_ctr(btcoexist);
+               halbtc8723b1ant_monitor_bt_enable_disable(btcoexist);
+       } else {
+               if (btc8723b1ant_is_wifi_status_changed(btcoexist) ||
+                   coex_dm->auto_tdma_adjust) {
+                       halbtc8723b1ant_run_coexist_mechanism(btcoexist);
+               }
+               coex_sta->special_pkt_period_cnt++;
        }
-
-       coex_sta->special_pkt_period_cnt++;
-#endif
 }