rtlwifi: btcoex: 21a 1ant: set antenna control path for PTA
authorYan-Hsuan Chuang <yhchuang@realtek.com>
Mon, 10 Apr 2017 16:23:02 +0000 (11:23 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 13 Apr 2017 14:11:00 +0000 (17:11 +0300)
Set antenna control path if PTA is in control of the packet path of wifi
and bt. If wifi is turned off, tell the PTA about it.

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

index b84c1a5be40a2cec4b4223c39f73c5b2f416695f..5b374c7728baa1c541ac1fb3de6b2ea3d6cb4f88 100644 (file)
@@ -1011,11 +1011,18 @@ static void btc8821a1ant_set_ant_path(struct btc_coexist *btcoexist,
                u4_tmp &= ~BIT23;
                u4_tmp &= ~BIT24;
                btcoexist->btc_write_4byte(btcoexist, 0x4c, u4_tmp);
+
+               /* 0x765 = 0x18 */
+               btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x3);
+       } else {
+               /* 0x765 = 0x0 */
+               btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x0);
        }
 
        /* ext switch setting */
        switch (ant_pos_type) {
        case BTC_ANT_PATH_WIFI:
+               btcoexist->btc_write_1byte(btcoexist, 0xcb4, 0x77);
                if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT)
                        btcoexist->btc_write_1byte_bitmask(btcoexist, 0xcb7,
                                                           0x30, 0x1);
@@ -1024,6 +1031,7 @@ static void btc8821a1ant_set_ant_path(struct btc_coexist *btcoexist,
                                                           0x30, 0x2);
                break;
        case BTC_ANT_PATH_BT:
+               btcoexist->btc_write_1byte(btcoexist, 0xcb4, 0x77);
                if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT)
                        btcoexist->btc_write_1byte_bitmask(btcoexist, 0xcb7,
                                                           0x30, 0x2);
@@ -1033,6 +1041,7 @@ static void btc8821a1ant_set_ant_path(struct btc_coexist *btcoexist,
                break;
        default:
        case BTC_ANT_PATH_PTA:
+               btcoexist->btc_write_1byte(btcoexist, 0xcb4, 0x66);
                if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT)
                        btcoexist->btc_write_1byte_bitmask(btcoexist, 0xcb7,
                                                           0x30, 0x1);