rtlwifi: btcoex: 21a 1ant: add bt_tx_rx_mask into bt info
authorYan-Hsuan Chuang <yhchuang@realtek.com>
Tue, 16 May 2017 13:19:50 +0000 (08:19 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 18 May 2017 14:09:49 +0000 (17:09 +0300)
Set rf register if the tx rx mask is switched.

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/halbtc8821a1ant.c
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8821a1ant.h

index 93644bedaa0f40a0b45bed5339442bafee5bee8c..4efac5fe9982070d73e0e31f3979a1a130d83eeb 100644 (file)
@@ -2848,6 +2848,20 @@ void ex_btc8821a1ant_bt_info_notify(struct btc_coexist *btcoexist,
 
                coex_sta->bt_info_ext = coex_sta->bt_info_c2h[rsp_source][4];
 
+               coex_sta->bt_tx_rx_mask =
+                       (coex_sta->bt_info_c2h[rsp_source][2] & 0x40);
+               btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TX_RX_MASK,
+                                  &coex_sta->bt_tx_rx_mask);
+               if (!coex_sta->bt_tx_rx_mask) {
+                       /* BT into is responded by BT FW and BT RF REG 0x3C !=
+                        * 0x15 => Need to switch BT TRx Mask
+                        */
+                       RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
+                                "[BTCoex], Switch BT TRx Mask since BT RF REG 0x3C != 0x15\n");
+                       btcoexist->btc_set_bt_reg(btcoexist, BTC_BT_REG_RF,
+                                                 0x3c, 0x15);
+               }
+
                /* Here we need to resend some wifi info to BT
                 * because bt is reset and lost the info
                 */
index 1eba3b0d32ae78ff3aa0a975001b8e4e03b444bd..cb32e7a64ae6d6d2a1cc1975f52506a428e0f31d 100644 (file)
@@ -154,6 +154,7 @@ struct coex_sta_8821a_1ant {
        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;