btcoexist->bt_info.reject_agg_pkt = *bool_tmp;
                break;
        case BTC_SET_BL_BT_CTRL_AGG_SIZE:
-               btcoexist->bt_info.b_bt_ctrl_buf_size = *bool_tmp;
+               btcoexist->bt_info.bt_ctrl_buf_size = *bool_tmp;
                break;
        case BTC_SET_BL_INC_SCAN_DEV_NUM:
                btcoexist->bt_info.increase_scan_dev_num = *bool_tmp;
        /*      rtlpriv->mlmepriv.scan_compensation = *u8_tmp;  */
                break;
        case BTC_SET_U1_1ANT_LPS:
-               btcoexist->bt_info.lps_1ant = *u8_tmp;
+               btcoexist->bt_info.lps_val = *u8_tmp;
                break;
        case BTC_SET_U1_1ANT_RPWM:
-               btcoexist->bt_info.rpwm_1ant = *u8_tmp;
+               btcoexist->bt_info.rpwm_val = *u8_tmp;
                break;
        /* the following are some action which will be triggered  */
        case BTC_SET_ACT_LEAVE_LPS:
 }
 
 static void halbtc_bitmask_write_1byte(void *bt_context, u32 reg_addr,
-                                      u32 bit_mask, u8 data)
+                                      u8 bit_mask, u8 data)
 {
        struct btc_coexist *btcoexist = (struct btc_coexist *)bt_context;
        struct rtl_priv *rtlpriv = btcoexist->adapter;
 
        btcoexist->cli_buf = &btc_dbg_buf[0];
 
-       btcoexist->bt_info.b_bt_ctrl_buf_size = false;
+       btcoexist->bt_info.bt_ctrl_buf_size = false;
        btcoexist->bt_info.agg_buf_size = 5;
 
        btcoexist->bt_info.increase_scan_dev_num = false;
 }
 
 void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
-                                enum _RT_MEDIA_STATUS media_status)
+                                enum rt_media_status media_status)
 {
-       struct rtl_priv *rtlpriv = btcoexist->adapter;
-       struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
        u8 status;
 
        if (!halbtc_is_bt_coexist_available(btcoexist))
 
 void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type)
 {
-       struct rtl_priv *rtlpriv = btcoexist->adapter;
-       struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
        u8 stack_op_type;
 
        if (!halbtc_is_bt_coexist_available(btcoexist))
 
 #define                BTC_ANT_WIFI_AT_CPL_MAIN                0
 #define                BTC_ANT_WIFI_AT_CPL_AUX                 1
 
-#define                BTC_ANT_PATH_WIFI                       0
-#define                BTC_ANT_PATH_BT                         1
-#define                BTC_ANT_PATH_PTA                        2
-
 enum btc_chip_interface {
        BTC_INTF_UNKNOWN        = 0,
        BTC_INTF_PCI            = 1,
        BTC_INTF_MAX
 };
 
-enum BTC_CHIP_TYPE {
+enum btc_chip_type {
        BTC_CHIP_UNDEF          = 0,
        BTC_CHIP_CSR_BC4        = 1,
        BTC_CHIP_CSR_BC8        = 2,
        BTC_CHIP_MAX
 };
 
-enum BTC_MSG_TYPE {
+enum btc_msg_type {
        BTC_MSG_INTERFACE       = 0x0,
        BTC_MSG_ALGORITHM       = 0x1,
        BTC_MSG_MAX
 };
+
 extern u32 btc_dbg_type[];
 
 /* following is for BTC_MSG_INTERFACE */
 #define                ALGO_TRACE_SW_DETAIL                    BIT8
 #define                ALGO_TRACE_SW_EXEC                      BIT9
 
-#define                BT_COEX_ANT_TYPE_PG                     0
-#define                BT_COEX_ANT_TYPE_ANTDIV                 1
-#define                BT_COEX_ANT_TYPE_DETECTED               2
-#define                BTC_MIMO_PS_STATIC                      0
-#define                BTC_MIMO_PS_DYNAMIC                     1
-#define                BTC_RATE_DISABLE                        0
-#define                BTC_RATE_ENABLE                         1
-#define                BTC_ANT_PATH_WIFI                       0
-#define                BTC_ANT_PATH_BT                         1
-#define                BTC_ANT_PATH_PTA                        2
-
+/* following is for wifi link status */
+#define                WIFI_STA_CONNECTED                      BIT0
+#define                WIFI_AP_CONNECTED                       BIT1
+#define                WIFI_HS_CONNECTED                       BIT2
+#define                WIFI_P2P_GO_CONNECTED                   BIT3
+#define                WIFI_P2P_GC_CONNECTED                   BIT4
 
 #define        CL_SPRINTF      snprintf
-#define        CL_PRINTF(buf)  printk("%s", buf)
+#define        CL_PRINTF       printk
 
 #define        BTC_PRINT(dbgtype, dbgflag, printstr, ...)              \
        do {                                                    \
                }                                               \
        } while (0)
 
-#define        BTC_PRINT_F(dbgtype, dbgflag, printstr, ...)            \
-       do {                                                    \
-               if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) {\
-                       pr_info("%s: ", __func__);      \
-                       printk(printstr, ##__VA_ARGS__);        \
-               }                                               \
-       } while (0)
-
-#define        BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _ptr)        \
-       do {                                                    \
-               if (unlikely(btc_dbg_type[dbgtype] & dbgflag)) {        \
-                       int __i;                                \
-                       u8 *__ptr = (u8 *)_ptr;                 \
-                       printk printstr;                        \
-                       for (__i = 0; __i < 6; __i++)           \
-                               printk("%02X%s", __ptr[__i], (__i == 5) ? \
-                                      "" : "-");               \
-                       pr_info("\n");                          \
-               }                                               \
-       } while (0)
-
-#define BTC_PRINT_DATA(dbgtype, dbgflag, _titlestring, _hexdata, _hexdatalen) \
-       do {                                                            \
-               if (unlikely(btc_dbg_type[dbgtype] & dbgflag))  {       \
-                       int __i;                                        \
-                       u8 *__ptr = (u8 *)_hexdata;                     \
-                       printk(_titlestring);                           \
-                       for (__i = 0; __i < (int)_hexdatalen; __i++) {  \
-                               printk("%02X%s", __ptr[__i], (((__i + 1) % 4) \
-                                                       == 0) ? "  " : " ");\
-                               if (((__i + 1) % 16) == 0)              \
-                                       printk("\n");                   \
-                       }                                               \
-                       pr_debug("\n");                                 \
-               }                                                       \
-       } while (0)
-
-#define BTC_ANT_PATH_WIFI      0
-#define BTC_ANT_PATH_BT                1
-#define BTC_ANT_PATH_PTA       2
-
 #define        BTC_RSSI_HIGH(_rssi_)   \
        ((_rssi_ == BTC_RSSI_STATE_HIGH ||      \
          _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? true : false)
        BTC_WIFI_PNP_MAX
 };
 
-
 enum btc_get_type {
        /* type bool */
        BTC_GET_BL_HS_OPERATION,
        BTC_GET_U4_WIFI_BW,
        BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,
        BTC_GET_U4_WIFI_FW_VER,
+       BTC_GET_U4_WIFI_LINK_STATUS,
        BTC_GET_U4_BT_PATCH_VER,
 
        /* type u1Byte */
        BTC_GET_MAX
 };
 
-
 enum btc_set_type {
        /* type bool */
        BTC_SET_BL_BT_DISABLE,
 
        /* type u1Byte */
        BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,
-       BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
        BTC_SET_UI_SCAN_SIG_COMPENSATION,
        BTC_SET_U1_AGG_BUF_SIZE,
 
        /* type bool */
        BTC_SET_BL_BT_SCO_BUSY,
        /* type u1Byte */
+       BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
+       BTC_SET_U1_LPS_VAL,
+       BTC_SET_U1_RPWM_VAL,
        BTC_SET_U1_1ANT_LPS,
        BTC_SET_U1_1ANT_RPWM,
        /* type trigger some action */
        BTC_PACKET_MAX
 };
 
+enum hci_ext_bt_operation {
+       HCI_BT_OP_NONE = 0x0,
+       HCI_BT_OP_INQUIRY_START = 0x1,
+       HCI_BT_OP_INQUIRY_FINISH = 0x2,
+       HCI_BT_OP_PAGING_START = 0x3,
+       HCI_BT_OP_PAGING_SUCCESS = 0x4,
+       HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
+       HCI_BT_OP_PAIRING_START = 0x6,
+       HCI_BT_OP_PAIRING_FINISH = 0x7,
+       HCI_BT_OP_BT_DEV_ENABLE = 0x8,
+       HCI_BT_OP_BT_DEV_DISABLE = 0x9,
+       HCI_BT_OP_MAX
+};
+
 enum btc_notify_type_stack_operation {
        BTC_STACK_OP_NONE = 0x0,
        BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1,
        BTC_STACK_OP_MAX
 };
 
-
 typedef u8 (*bfp_btc_r1)(void *btc_context, u32 reg_addr);
 
 typedef u16 (*bfp_btc_r2)(void *btc_context, u32 reg_addr);
 typedef void (*bfp_btc_w1)(void *btc_context, u32 reg_addr, u8 data);
 
 typedef void (*bfp_btc_w1_bit_mak)(void *btc_context, u32 reg_addr,
-                                  u32 bit_mask, u8 data1b);
+                                  u8 bit_mask, u8 data1b);
 
 typedef void (*bfp_btc_w2)(void *btc_context, u32 reg_addr, u16 data);
 
        u8 agg_buf_size;
        bool limited_dig;
        bool reject_agg_pkt;
-       bool b_bt_ctrl_buf_size;
+       bool bt_ctrl_buf_size;
        bool increase_scan_dev_num;
        u16 bt_hci_ver;
        u16 bt_real_fw_ver;
        u8 bt_fw_ver;
 
+       bool bt_disable_low_pwr;
+
        /* the following is for 1Ant solution */
        bool bt_ctrl_lps;
        bool bt_pwr_save_mode;
        bool bt_lps_on;
        bool force_to_roam;
        u8 force_exec_pwr_cmd_cnt;
-       u8 lps_1ant;
-       u8 rpwm_1ant;
+       u8 lps_val;
+       u8 rpwm_val;
        u32 ra_mask;
 };
 
        u32 cnt_special_packet_notify;
        u32 cnt_bt_info_notify;
        u32 cnt_periodical;
+       u32 cnt_coex_dm_switch;
        u32 cnt_stack_operation_notify;
        u32 cnt_dbg_ctrl;
 };
        bfp_btc_set_bb_reg btc_set_bb_reg;
        bfp_btc_get_bb_reg btc_get_bb_reg;
 
-
        bfp_btc_set_rf_reg btc_set_rf_reg;
        bfp_btc_get_rf_reg btc_get_rf_reg;
 
 void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action);
 void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
-                                enum _RT_MEDIA_STATUS media_status);
+                                enum rt_media_status media_status);
 void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type);
 void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf,
                             u8 length);
 void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_halt_notify(struct btc_coexist *btcoexist);
 void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
+void exhalbtc_coex_dm_switch(struct btc_coexist *btcoexist);
 void exhalbtc_periodical(struct btc_coexist *btcoexist);
 void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len,
                          u8 *data);