rtlwifi: btcoex: 23b 2ant: notify more bt information
authorYan-Hsuan Chuang <yhchuang@realtek.com>
Thu, 6 Apr 2017 20:19:57 +0000 (15:19 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 13 Apr 2017 14:09:39 +0000 (17:09 +0300)
These bt information are displayed in display coex

Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Pkshih <pkshih@realtek.com>
Cc: Birming Chiu <birming@realtek.com>
Cc: Shaofu <shaofu@realtek.com>
Cc: Steven Ting <steventing@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.c
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.h
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h

index 9092de2d2c7c88591ce65e1234a66490c08fb246..1c823a71ce9f50dd75330d14149a0bcc67cda96f 100644 (file)
@@ -4145,9 +4145,19 @@ void ex_btc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist,
                coex_sta->bt_retry_cnt =
                        coex_sta->bt_info_c2h[rsp_source][2] & 0xf;
 
+               if (coex_sta->bt_retry_cnt >= 1)
+                       coex_sta->pop_event_cnt++;
+
                coex_sta->bt_rssi =
                        coex_sta->bt_info_c2h[rsp_source][3] * 2 + 10;
 
+               coex_sta->bt_info_ext = coex_sta->bt_info_c2h[rsp_source][4];
+
+               if (coex_sta->bt_info_c2h[rsp_source][2] & 0x20)
+                       coex_sta->c2h_bt_remote_name_req = true;
+               else
+                       coex_sta->c2h_bt_remote_name_req = false;
+
                if (coex_sta->bt_info_c2h[rsp_source][1] == 0x49)
                        coex_sta->a2dp_bit_pool =
                                coex_sta->bt_info_c2h[rsp_source][6];
@@ -4222,6 +4232,16 @@ void ex_btc8723b2ant_bt_info_notify(struct btc_coexist *btcoexist,
                        coex_sta->sco_exist = true;
                else
                        coex_sta->sco_exist = false;
+
+               if ((!coex_sta->hid_exist) &&
+                   (!coex_sta->c2h_bt_inquiry_page) &&
+                   (!coex_sta->sco_exist)) {
+                       if (coex_sta->high_priority_tx +
+                                   coex_sta->high_priority_rx >= 160) {
+                               coex_sta->hid_exist = true;
+                               bt_info = bt_info | 0x28;
+                       }
+               }
        }
 
        btc8723b2ant_update_bt_link_info(btcoexist);
index 9e29f85304cc583c89c1745c0a6880f94012166e..18a35c7faba92a1e8a0d0f858960329fc4a30462 100644 (file)
@@ -151,12 +151,14 @@ struct coex_sta_8723b_2ant {
        u32 low_priority_tx;
        u32 low_priority_rx;
        u8 bt_rssi;
+       bool bt_tx_rx_mask;
        u8 pre_bt_rssi_state;
        u8 pre_wifi_rssi_state[4];
        bool c2h_bt_info_req_sent;
        u8 bt_info_c2h[BT_INFO_SRC_8723B_2ANT_MAX][10];
        u32 bt_info_c2h_cnt[BT_INFO_SRC_8723B_2ANT_MAX];
        bool c2h_bt_inquiry_page;
+       bool c2h_bt_remote_name_req;
        u8 bt_retry_cnt;
        u8 bt_info_ext;
        u32 pop_event_cnt;
index d31e6df5b1bf3e86d8d349c76108fb7a3d56cc42..c8271135aaaaed26af1ba359374fc1f133542b38 100644 (file)
 #define                BTC_ANT_WIFI_AT_CPL_MAIN                0
 #define                BTC_ANT_WIFI_AT_CPL_AUX                 1
 
+enum btc_bt_reg_type {
+       BTC_BT_REG_RF           = 0,
+       BTC_BT_REG_MODEM        = 1,
+       BTC_BT_REG_BLUEWIZE     = 2,
+       BTC_BT_REG_VENDOR       = 3,
+       BTC_BT_REG_LE           = 4,
+       BTC_BT_REG_MAX
+};
+
 enum btc_chip_interface {
        BTC_INTF_UNKNOWN        = 0,
        BTC_INTF_PCI            = 1,
@@ -251,6 +260,7 @@ enum btc_set_type {
        BTC_SET_BL_TO_REJ_AP_AGG_PKT,
        BTC_SET_BL_BT_CTRL_AGG_SIZE,
        BTC_SET_BL_INC_SCAN_DEV_NUM,
+       BTC_SET_BL_BT_TX_RX_MASK,
        BTC_SET_BL_MIRACAST_PLUS_BT,
 
        /* type u1Byte */
@@ -392,6 +402,9 @@ typedef     bool (*bfp_btc_get)(void *btcoexist, u8 get_type, void *out_buf);
 
 typedef        bool (*bfp_btc_set)(void *btcoexist, u8 set_type, void *in_buf);
 
+typedef void (*bfp_btc_set_bt_reg)(void *btc_context, u8 reg_type, u32 offset,
+                                  u32 value);
+
 typedef void (*bfp_btc_disp_dbg_msg)(void *btcoexist, u8 disp_type);
 
 struct btc_bt_info {
@@ -511,6 +524,8 @@ struct btc_coexist {
 
        bfp_btc_get btc_get;
        bfp_btc_set btc_set;
+
+       bfp_btc_set_bt_reg btc_set_bt_reg;
 };
 
 bool halbtc_is_wifi_uplink(struct rtl_priv *adapter);