diff options
Diffstat (limited to 'drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c')
-rw-r--r-- | drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c | 647 |
1 files changed, 362 insertions, 285 deletions
diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c index 9d738d7..c001053 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c @@ -15,11 +15,10 @@ #include <drv_types.h> #include <rtl8723a_hal.h> #include <rtw_ioctl_set.h> +#include <usb_ops_linux.h> #define DIS_PS_RX_BCN -#ifdef CONFIG_8723AU_BT_COEXIST - u32 BTCoexDbgLevel = _bt_dbg_off_; #define RTPRINT(_Comp, _Level, Fmt)\ @@ -70,7 +69,6 @@ if ((BTCoexDbgLevel == _bt_dbg_on_)) {\ printk(_TitleString); \ printk(": %d, <%s>\n", _Len, buffer); \ } -#endif #define DCMD_Printf(...) #define RT_ASSERT(...) @@ -100,7 +98,6 @@ enum { /* power saving */ -#ifdef __BT_C__ /* COMMOM/BT.c */ /* ===== Below this line is sync from SD7 driver COMMOM/BT.c ===== */ static u8 BT_Operation(struct rtw_adapter *padapter) @@ -138,14 +135,14 @@ void BT_SignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, u8 *rssi BTDM_SignalCompensation(padapter, rssi_wifi, rssi_bt); } -void BT_WifiScanNotify(struct rtw_adapter *padapter, u8 scanType) +void rtl8723a_BT_wifiscan_notify(struct rtw_adapter *padapter, u8 scanType) { BTHCI_WifiScanNotify(padapter, scanType); BTDM_CheckAntSelMode(padapter); BTDM_WifiScanNotify(padapter, scanType); } -void BT_WifiAssociateNotify(struct rtw_adapter *padapter, u8 action) +void rtl8723a_BT_wifiassociate_notify(struct rtw_adapter *padapter, u8 action) { /* action : */ /* true = associate start */ @@ -156,36 +153,12 @@ void BT_WifiAssociateNotify(struct rtw_adapter *padapter, u8 action) BTDM_WifiAssociateNotify(padapter, action); } -void BT_WifiMediaStatusNotify(struct rtw_adapter *padapter, enum rt_media_status mstatus) -{ - BTDM_MediaStatusNotify(padapter, mstatus); -} - -void BT_SpecialPacketNotify(struct rtw_adapter *padapter) -{ - BTDM_ForDhcp(padapter); -} - void BT_HaltProcess(struct rtw_adapter *padapter) { BTDM_ForHalt(padapter); } -void BT_LpsLeave(struct rtw_adapter *padapter) -{ - BTDM_LpsLeave(padapter); -} - /* ===== End of sync from SD7 driver COMMOM/BT.c ===== */ -#endif - -#ifdef __BT_HANDLEPACKET_C__ /* COMMOM/bt_handlepacket.c */ -/* ===== Below this line is sync from SD7 driver COMMOM/bt_handlepacket.c ===== */ - -/* ===== End of sync from SD7 driver COMMOM/bt_handlepacket.c ===== */ -#endif - -#ifdef __BT_HCI_C__ /* COMMOM/bt_hci.c */ #define i64fmt "ll" #define UINT64_C(v) (v) @@ -3944,7 +3917,6 @@ bthci_CmdAMPTestEnd(struct rtw_adapter *padapter, enum hci_status status = HCI_STATUS_SUCCESS; struct bt_30info *pBTInfo = GET_BT_INFO(padapter); struct bt_hci_info *pBtHciInfo = &pBTInfo->BtHciInfo; - u8 bFilterOutNonAssociatedBSSID = true; if (!pBtHciInfo->bInTestMode) { RTPRINT(FIOCTL, (IOCTL_BT_EVENT|IOCTL_BT_LOGO), ("Not in Test mode, return status = HCI_STATUS_CMD_DISALLOW\n")); @@ -3956,7 +3928,7 @@ bthci_CmdAMPTestEnd(struct rtw_adapter *padapter, del_timer_sync(&pBTInfo->BTTestSendPacketTimer); - rtw_hal_set_hwreg23a(padapter, HW_VAR_CHECK_BSSID, (u8 *)(&bFilterOutNonAssociatedBSSID)); + rtl8723a_check_bssid(padapter, true); /* send command complete event here when all data are received. */ { @@ -4057,8 +4029,7 @@ bthci_CmdAMPTestCommand(struct rtw_adapter *padapter, jiffies + msecs_to_jiffies(50)); RTPRINT(FIOCTL, (IOCTL_BT_EVENT|IOCTL_BT_LOGO), ("TX Single Test \n")); } else if (pBtHciInfo->TestScenario == 0x02) { - u8 bFilterOutNonAssociatedBSSID = false; - rtw_hal_set_hwreg23a(padapter, HW_VAR_CHECK_BSSID, (u8 *)(&bFilterOutNonAssociatedBSSID)); + rtl8723a_check_bssid(padapter, false); RTPRINT(FIOCTL, (IOCTL_BT_EVENT|IOCTL_BT_LOGO), ("Receive Frame Test \n")); } @@ -4674,10 +4645,10 @@ bthci_StateConnected(struct rtw_adapter *padapter, /* for rate adaptive */ - if (padapter->HalFunc.UpdateRAMaskHandler) - padapter->HalFunc.UpdateRAMaskHandler(padapter, MAX_FW_SUPPORT_MACID_NUM-1-EntryNum, 0); + rtl8723a_update_ramask(padapter, + MAX_FW_SUPPORT_MACID_NUM-1-EntryNum, 0); - rtw_hal_set_hwreg23a(padapter, HW_VAR_BASIC_RATE, padapter->mlmepriv.cur_network.network.SupportedRates); + HalSetBrateCfg23a(padapter, padapter->mlmepriv.cur_network.network.SupportedRates); BTDM_SetFwChnlInfo(padapter, RT_MEDIA_CONNECT); break; default: @@ -5215,9 +5186,6 @@ BTHCI_HandleHCICMD( } /* ===== End of sync from SD7 driver COMMOM/bt_hci.c ===== */ -#endif - -#ifdef __HALBTC87231ANT_C__ /* HAL/BTCoexist/HalBtc87231Ant.c */ static const char *const BtStateString[] = { "BT_DISABLED", @@ -5286,7 +5254,7 @@ static void btdm_1AntTSFSwitch(struct rtw_adapter *padapter, u8 enable) { u8 oldVal, newVal; - oldVal = rtw_read8(padapter, 0x550); + oldVal = rtl8723au_read8(padapter, 0x550); if (enable) newVal = oldVal | EN_BCN_FUNCTION; @@ -5294,7 +5262,7 @@ static void btdm_1AntTSFSwitch(struct rtw_adapter *padapter, u8 enable) newVal = oldVal & ~EN_BCN_FUNCTION; if (oldVal != newVal) - rtw_write8(padapter, 0x550, newVal); + rtl8723au_write8(padapter, 0x550, newVal); } static u8 btdm_Is1AntPsTdmaStateChange(struct rtw_adapter *padapter) @@ -5393,8 +5361,8 @@ btdm_1AntPsTdma( case 29: /* WiFi DHCP/Site Survey & BT ACL busy */ if (btdm_Is1AntPsTdmaStateChange(padapter)) { BTDM_SetFw3a(padapter, 0xeb, 0x1a, 0x1a, 0x01, 0x18); - rtw_write32(padapter, 0x6c0, 0x5afa5afa); - rtw_write32(padapter, 0x6c4, 0x5afa5afa); + rtl8723au_write32(padapter, 0x6c0, 0x5afa5afa); + rtl8723au_write32(padapter, 0x6c4, 0x5afa5afa); } break; case 30: /* WiFi idle & BT Inquiry */ @@ -5437,7 +5405,8 @@ btdm_1AntPsTdma( /* Antenna control by PTA, 0x870 = 0x310 */ BTDM_SetFw3a(padapter, 0x0, 0x0, 0x0, 0x8, 0x0); } - rtw_write16(padapter, 0x860, 0x210); /* Switch Antenna to BT */ + /* Switch Antenna to BT */ + rtl8723au_write16(padapter, 0x860, 0x210); RTPRINT(FBT, BT_TRACE, ("[BTCoex], 0x860 = 0x210, Switch Antenna to BT\n")); break; case 9: @@ -5445,7 +5414,8 @@ btdm_1AntPsTdma( /* Antenna control by PTA, 0x870 = 0x310 */ BTDM_SetFw3a(padapter, 0x0, 0x0, 0x0, 0x8, 0x0); } - rtw_write16(padapter, 0x860, 0x110); /* Switch Antenna to WiFi */ + /* Switch Antenna to WiFi */ + rtl8723au_write16(padapter, 0x860, 0x110); RTPRINT(FBT, BT_TRACE, ("[BTCoex], 0x860 = 0x110, Switch Antenna to WiFi\n")); break; } @@ -5531,7 +5501,7 @@ _btdm_1AntSetPSTDMA(struct rtw_adapter *padapter, u8 bPSEn, u8 smartps, if (!bTDMAOn) { btdm_1AntPsTdma(padapter, false, tdmaType); } else { - if ((BT_IsBtDisabled(padapter)) || + if (!rtl8723a_BT_enabled(padapter) || (pHalData->bt_coexist.halCoex8723.c2hBtInfo == BT_INFO_STATE_NO_CONNECTION) || (pHalData->bt_coexist.halCoex8723.c2hBtInfo == BT_INFO_STATE_CONNECT_IDLE) || (tdmaType == 29)) @@ -5575,24 +5545,28 @@ static void btdm_1AntWifiParaAdjust(struct rtw_adapter *padapter, u8 bEnable) static void btdm_1AntPtaParaReload(struct rtw_adapter *padapter) { /* PTA parameter */ - rtw_write8(padapter, 0x6cc, 0x0); /* 1-Ant coex */ - rtw_write32(padapter, 0x6c8, 0xffff); /* wifi break table */ - rtw_write32(padapter, 0x6c4, 0x55555555); /* coex table */ + rtl8723au_write8(padapter, 0x6cc, 0x0); /* 1-Ant coex */ + rtl8723au_write32(padapter, 0x6c8, 0xffff); /* wifi break table */ + rtl8723au_write32(padapter, 0x6c4, 0x55555555); /* coex table */ /* Antenna switch control parameter */ - rtw_write32(padapter, 0x858, 0xaaaaaaaa); + rtl8723au_write32(padapter, 0x858, 0xaaaaaaaa); if (IS_8723A_A_CUT(GET_HAL_DATA(padapter)->VersionID)) { - rtw_write32(padapter, 0x870, 0x0); /* SPDT(connected with TRSW) control by hardware PTA */ - rtw_write8(padapter, 0x40, 0x24); + /* SPDT(connected with TRSW) control by hardware PTA */ + rtl8723au_write32(padapter, 0x870, 0x0); + rtl8723au_write8(padapter, 0x40, 0x24); } else { - rtw_write8(padapter, 0x40, 0x20); - rtw_write16(padapter, 0x860, 0x210); /* set antenna at bt side if ANTSW is software control */ - rtw_write32(padapter, 0x870, 0x300); /* SPDT(connected with TRSW) control by hardware PTA */ - rtw_write32(padapter, 0x874, 0x22804000); /* ANTSW keep by GNT_BT */ + rtl8723au_write8(padapter, 0x40, 0x20); + /* set antenna at bt side if ANTSW is software control */ + rtl8723au_write16(padapter, 0x860, 0x210); + /* SPDT(connected with TRSW) control by hardware PTA */ + rtl8723au_write32(padapter, 0x870, 0x300); + /* ANTSW keep by GNT_BT */ + rtl8723au_write32(padapter, 0x874, 0x22804000); } /* coexistence parameters */ - rtw_write8(padapter, 0x778, 0x1); /* enable RTK mode PTA */ + rtl8723au_write8(padapter, 0x778, 0x1); /* enable RTK mode PTA */ /* BT don't ignore WLAN_Act */ btdm_SetFwIgnoreWlanAct(padapter, false); @@ -5764,13 +5738,17 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter) pBtdm8723 = &pBtCoex->btdm1Ant; BtState = pBtCoex->c2hBtInfo; - RTPRINT(FBT, BT_TRACE, ("[BTCoex], WiFi is %s\n", BTDM_IsWifiBusy(padapter)?"Busy":"IDLE")); - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is %s\n", BtStateString[BtState])); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], WiFi is %s\n", + BTDM_IsWifiBusy(padapter)?"Busy":"IDLE")); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is %s\n", + BtStateString[BtState])); padapter->pwrctrlpriv.btcoex_rfon = false; - if ((!BTDM_IsWifiBusy(padapter)) && (!check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE)) && - ((BtState == BT_INFO_STATE_NO_CONNECTION) || (BtState == BT_INFO_STATE_CONNECT_IDLE))) { + if (!BTDM_IsWifiBusy(padapter) && + !check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) && + (BtState == BT_INFO_STATE_NO_CONNECTION || + BtState == BT_INFO_STATE_CONNECT_IDLE)) { switch (BtState) { case BT_INFO_STATE_NO_CONNECTION: _btdm_1AntSetPSTDMA(padapter, true, 2, 0x26, false, 9); @@ -5785,45 +5763,59 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter) case BT_INFO_STATE_CONNECT_IDLE: /* WiFi is Busy */ btdm_1AntSetPSTDMA(padapter, false, 0, true, 5); - rtw_write32(padapter, 0x6c0, 0x5a5a5a5a); - rtw_write32(padapter, 0x6c4, 0x5a5a5a5a); + rtl8723au_write32(padapter, 0x6c0, 0x5a5a5a5a); + rtl8723au_write32(padapter, 0x6c4, 0x5a5a5a5a); break; case BT_INFO_STATE_ACL_INQ_OR_PAG: - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is BT_INFO_STATE_ACL_INQ_OR_PAG\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], BT PROFILE is " + "BT_INFO_STATE_ACL_INQ_OR_PAG\n")); case BT_INFO_STATE_INQ_OR_PAG: padapter->pwrctrlpriv.btcoex_rfon = true; btdm_1AntSetPSTDMA(padapter, true, 0, true, 30); break; case BT_INFO_STATE_SCO_ONLY_BUSY: case BT_INFO_STATE_ACL_SCO_BUSY: - if (true == pBtCoex->bC2hBtInquiryPage) { - btdm_1AntSetPSTDMA(padapter, false, 0, true, 32); - } else { + if (true == pBtCoex->bC2hBtInquiryPage) + btdm_1AntSetPSTDMA(padapter, false, 0, + true, 32); + else { #ifdef BTCOEX_CMCC_TEST - btdm_1AntSetPSTDMA(padapter, false, 0, true, 23); + btdm_1AntSetPSTDMA(padapter, false, 0, + true, 23); #else /* !BTCOEX_CMCC_TEST */ - btdm_1AntSetPSTDMA(padapter, false, 0, false, 8); - rtw_write32(padapter, 0x6c0, 0x5a5a5a5a); - rtw_write32(padapter, 0x6c4, 0x5a5a5a5a); + btdm_1AntSetPSTDMA(padapter, false, 0, + false, 8); + rtl8723au_write32(padapter, 0x6c0, 0x5a5a5a5a); + rtl8723au_write32(padapter, 0x6c4, 0x5a5a5a5a); #endif /* !BTCOEX_CMCC_TEST */ } break; case BT_INFO_STATE_ACL_ONLY_BUSY: padapter->pwrctrlpriv.btcoex_rfon = true; if (pBtCoex->c2hBtProfile == BT_INFO_HID) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is HID\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], BT PROFILE is HID\n")); btdm_1AntSetPSTDMA(padapter, true, 0, true, 31); } else if (pBtCoex->c2hBtProfile == BT_INFO_FTP) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is FTP/OPP\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], BT PROFILE is FTP/OPP\n")); btdm_1AntSetPSTDMA(padapter, true, 0, true, 3); } else if (pBtCoex->c2hBtProfile == (BT_INFO_A2DP|BT_INFO_FTP)) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is A2DP_FTP\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], BT PROFILE is A2DP_FTP\n")); btdm_1AntSetPSTDMA(padapter, true, 0, true, 11); } else { if (pBtCoex->c2hBtProfile == BT_INFO_A2DP) - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is A2DP\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], BT PROFILE is " + "A2DP\n")); else - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT PROFILE is UNKNOWN(0x%02X)! Use A2DP Profile\n", pBtCoex->c2hBtProfile)); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], BT PROFILE is " + "UNKNOWN(0x%02X)! Use A2DP " + "Profile\n", + pBtCoex->c2hBtProfile)); btdm_1AntTdmaDurationAdjustForACL(padapter); } break; @@ -5833,13 +5825,14 @@ static void btdm_1AntCoexProcessForWifiConnect(struct rtw_adapter *padapter) pBtdm8723->psTdmaGlobalCnt++; } -static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u32 filter) +static void +btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u32 filter) { u8 init_rate = 0; u8 raid; u32 mask; u8 shortGIrate = false; - int supportRateNum = 0; + int supportRateNum = 0; struct sta_info *psta; struct hal_data_8723a *pHalData; struct dm_priv *pdmpriv; @@ -5847,7 +5840,8 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u struct mlme_ext_info *pmlmeinfo; struct wlan_bssid_ex *cur_network; - RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d, filter = 0x%08x!!\n", __func__, mac_id, filter)); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d, filter = 0x%08x!!\n", + __func__, mac_id, filter)); pHalData = GET_HAL_DATA(padapter); pdmpriv = &pHalData->dmpriv; @@ -5856,13 +5850,15 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u cur_network = &pmlmeinfo->network; if (mac_id >= NUM_STA) { /* CAM_SIZE */ - RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d illegal!!\n", __func__, mac_id)); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, MACID =%d illegal!!\n", + __func__, mac_id)); return; } psta = pmlmeinfo->FW_sta_info[mac_id].psta; - if (psta == NULL) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, Can't find station!!\n", __func__)); + if (!psta) { + RTPRINT(FBT, BT_TRACE, ("[BTCoex], %s, Can't find station!!\n", + __func__)); return; } @@ -5870,19 +5866,26 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u switch (mac_id) { case 0:/* for infra mode */ - supportRateNum = rtw_get_rateset_len23a(cur_network->SupportedRates); - mask = update_supported_rate23a(cur_network->SupportedRates, supportRateNum); - mask |= (pmlmeinfo->HT_enable) ? update_MSC_rate23a(&pmlmeinfo->HT_caps):0; + supportRateNum = + rtw_get_rateset_len23a(cur_network->SupportedRates); + mask = update_supported_rate23a(cur_network->SupportedRates, + supportRateNum); + mask |= (pmlmeinfo->HT_enable) ? + update_MSC_rate23a(&pmlmeinfo->HT_caps):0; if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps)) shortGIrate = true; break; case 1:/* for broadcast/multicast */ - supportRateNum = rtw_get_rateset_len23a(pmlmeinfo->FW_sta_info[mac_id].SupportedRates); - mask = update_basic_rate23a(cur_network->SupportedRates, supportRateNum); + supportRateNum = rtw_get_rateset_len23a( + pmlmeinfo->FW_sta_info[mac_id].SupportedRates); + mask = update_basic_rate23a(cur_network->SupportedRates, + supportRateNum); break; default: /* for each sta in IBSS */ - supportRateNum = rtw_get_rateset_len23a(pmlmeinfo->FW_sta_info[mac_id].SupportedRates); - mask = update_supported_rate23a(cur_network->SupportedRates, supportRateNum); + supportRateNum = rtw_get_rateset_len23a( + pmlmeinfo->FW_sta_info[mac_id].SupportedRates); + mask = update_supported_rate23a(cur_network->SupportedRates, + supportRateNum); break; } mask |= ((raid<<28)&0xf0000000); @@ -5899,22 +5902,24 @@ static void btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u arg |= BIT(5); RTPRINT(FBT, BT_TRACE, - ("[BTCoex], Update FW RAID entry, MASK = 0x%08x, arg = 0x%02x\n", - mask, arg)); + ("[BTCoex], Update FW RAID entry, MASK = 0x%08x, " + "arg = 0x%02x\n", mask, arg)); rtl8723a_set_raid_cmd(padapter, mask, arg); } else { if (shortGIrate) init_rate |= BIT(6); - rtw_write8(padapter, (REG_INIDATA_RATE_SEL+mac_id), init_rate); + rtl8723au_write8(padapter, REG_INIDATA_RATE_SEL + mac_id, + init_rate); } psta->init_rate = init_rate; pdmpriv->INIDATA_RATE[mac_id] = init_rate; } -static void btdm_1AntUpdateHalRAMaskForSCO(struct rtw_adapter *padapter, u8 forceUpdate) +static void +btdm_1AntUpdateHalRAMaskForSCO(struct rtw_adapter *padapter, u8 forceUpdate) { struct btdm_8723a_1ant *pBtdm8723; struct sta_priv *pstapriv; @@ -5925,7 +5930,7 @@ static void btdm_1AntUpdateHalRAMaskForSCO(struct rtw_adapter *padapter, u8 forc pBtdm8723 = &GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant; - if ((pBtdm8723->bRAChanged == true) && (forceUpdate == false)) + if (pBtdm8723->bRAChanged == true && forceUpdate == false) return; pstapriv = &padapter->stapriv; @@ -5968,9 +5973,13 @@ static void btdm_1AntRecoverHalRAMask(struct rtw_adapter *padapter) static void btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter, - enum bt_state_1ant oldState, enum bt_state_1ant newState) + enum bt_state_1ant oldState, + enum bt_state_1ant newState) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT state change, %s => %s\n", BtStateString[oldState], BtStateString[newState])); + struct hal_data_8723a *phaldata; + RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT state change, %s => %s\n", + BtStateString[oldState], + BtStateString[newState])); /* BT default ignore wlan active, */ /* WiFi MUST disable this when BT is enable */ @@ -5987,22 +5996,23 @@ btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter, btdm_1AntRecoverHalRAMask(padapter); } } else { - GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bRAChanged = false; + phaldata = GET_HAL_DATA(padapter); + phaldata->bt_coexist.halCoex8723.btdm1Ant.bRAChanged = false; } if (oldState == newState) return; if (oldState == BT_INFO_STATE_ACL_ONLY_BUSY) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - pHalData->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCnt = 0; - pHalData->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0; + struct hal_data_8723a *Hal = GET_HAL_DATA(padapter); + Hal->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCnt = 0; + Hal->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0; } if ((oldState == BT_INFO_STATE_SCO_ONLY_BUSY) || (oldState == BT_INFO_STATE_ACL_SCO_BUSY)) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - pHalData->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0; + struct hal_data_8723a *Hal = GET_HAL_DATA(padapter); + Hal->bt_coexist.halCoex8723.btdm1Ant.psTdmaMonitorCntForSCO = 0; } /* Active 2Ant mechanism when BT Connected */ @@ -6010,14 +6020,16 @@ btdm_1AntBTStateChangeHandler(struct rtw_adapter *padapter, (oldState == BT_INFO_STATE_NO_CONNECTION)) { if ((newState != BT_INFO_STATE_DISABLED) && (newState != BT_INFO_STATE_NO_CONNECTION)) { - BTDM_SetSwRfRxLpfCorner(padapter, BT_RF_RX_LPF_CORNER_SHRINK); + BTDM_SetSwRfRxLpfCorner(padapter, + BT_RF_RX_LPF_CORNER_SHRINK); BTDM_AGCTable(padapter, BT_AGCTABLE_ON); BTDM_BBBackOffLevel(padapter, BT_BB_BACKOFF_ON); } } else { if ((newState == BT_INFO_STATE_DISABLED) || (newState == BT_INFO_STATE_NO_CONNECTION)) { - BTDM_SetSwRfRxLpfCorner(padapter, BT_RF_RX_LPF_CORNER_RESUME); + BTDM_SetSwRfRxLpfCorner(padapter, + BT_RF_RX_LPF_CORNER_RESUME); BTDM_AGCTable(padapter, BT_AGCTABLE_OFF); BTDM_BBBackOffLevel(padapter, BT_BB_BACKOFF_OFF); } @@ -6034,21 +6046,27 @@ static void btdm_1AntBtCoexistHandler(struct rtw_adapter *padapter) pBtCoex8723 = &pHalData->bt_coexist.halCoex8723; pBtdm8723 = &pBtCoex8723->btdm1Ant; padapter->pwrctrlpriv.btcoex_rfon = false; - if (BT_IsBtDisabled(padapter)) { + if (!rtl8723a_BT_enabled(padapter)) { RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is disabled\n")); if (BTDM_IsWifiConnectionExist(padapter)) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is connected\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], wifi is connected\n")); if (BTDM_IsWifiBusy(padapter)) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], Wifi is busy\n")); - btdm_1AntSetPSTDMA(padapter, false, 0, false, 9); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], Wifi is busy\n")); + btdm_1AntSetPSTDMA(padapter, false, 0, + false, 9); } else { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], Wifi is idle\n")); - _btdm_1AntSetPSTDMA(padapter, true, 2, 1, false, 9); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], Wifi is idle\n")); + _btdm_1AntSetPSTDMA(padapter, true, 2, 1, + false, 9); } } else { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is disconnected\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], wifi is disconnected\n")); btdm_1AntSetPSTDMA(padapter, false, 0, false, 9); } @@ -6056,24 +6074,29 @@ static void btdm_1AntBtCoexistHandler(struct rtw_adapter *padapter) RTPRINT(FBT, BT_TRACE, ("[BTCoex], BT is enabled\n")); if (BTDM_IsWifiConnectionExist(padapter)) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is connected\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], wifi is connected\n")); btdm_1AntWifiParaAdjust(padapter, true); btdm_1AntCoexProcessForWifiConnect(padapter); } else { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is disconnected\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], wifi is disconnected\n")); - /* Antenna switch at BT side(0x870 = 0x300, 0x860 = 0x210) after PSTDMA off */ + /* Antenna switch at BT side(0x870 = 0x300, + 0x860 = 0x210) after PSTDMA off */ btdm_1AntWifiParaAdjust(padapter, false); btdm_1AntSetPSTDMA(padapter, false, 0, false, 0); } } - btdm_1AntBTStateChangeHandler(padapter, pBtCoex8723->prec2hBtInfo, pBtCoex8723->c2hBtInfo); + btdm_1AntBTStateChangeHandler(padapter, pBtCoex8723->prec2hBtInfo, + pBtCoex8723->c2hBtInfo); pBtCoex8723->prec2hBtInfo = pBtCoex8723->c2hBtInfo; } -void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, u8 *rssi_bt) +void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter, + u8 *rssi_wifi, u8 *rssi_bt) { struct hal_data_8723a *pHalData; struct btdm_8723a_1ant *pBtdm8723; @@ -6119,14 +6142,19 @@ void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, u8 } if (rssi_wifi && RSSI_WiFi_Cmpnstn) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1AntSgnlCmpnstn, case %d, WiFiCmpnstn =%d(%d => %d)\n", - pBtdm8723->curPsTdma, RSSI_WiFi_Cmpnstn, *rssi_wifi, *rssi_wifi+RSSI_WiFi_Cmpnstn)); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], 1AntSgnlCmpnstn, case %d, WiFiCmpnstn " + "=%d(%d => %d)\n", pBtdm8723->curPsTdma, + RSSI_WiFi_Cmpnstn, *rssi_wifi, + *rssi_wifi+RSSI_WiFi_Cmpnstn)); *rssi_wifi += RSSI_WiFi_Cmpnstn; } if (rssi_bt && RSSI_BT_Cmpnstn) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1AntSgnlCmpnstn, case %d, BTCmpnstn =%d(%d => %d)\n", - pBtdm8723->curPsTdma, RSSI_BT_Cmpnstn, *rssi_bt, *rssi_bt+RSSI_BT_Cmpnstn)); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], 1AntSgnlCmpnstn, case %d, BTCmpnstn " + "=%d(%d => %d)\n", pBtdm8723->curPsTdma, + RSSI_BT_Cmpnstn, *rssi_bt, *rssi_bt+RSSI_BT_Cmpnstn)); *rssi_bt += RSSI_BT_Cmpnstn; } } @@ -6142,7 +6170,7 @@ static void BTDM_1AntParaInit(struct rtw_adapter *padapter) pBtdm8723 = &pBtCoex->btdm1Ant; /* Enable counter statistics */ - rtw_write8(padapter, 0x76e, 0x4); + rtl8723au_write8(padapter, 0x76e, 0x4); btdm_1AntPtaParaReload(padapter); pBtdm8723->wifiRssiThresh = 48; @@ -6162,7 +6190,8 @@ static void BTDM_1AntForHalt(struct rtw_adapter *padapter) { RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for halt\n")); - GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt = true; + GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt = + true; btdm_1AntWifiParaAdjust(padapter, false); @@ -6180,7 +6209,8 @@ static void BTDM_1AntLpsLeave(struct rtw_adapter *padapter) RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for LPS Leave\n")); /* Prevent from entering LPS again */ - GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt = true; + GET_HAL_DATA(padapter)->bt_coexist.halCoex8723.btdm1Ant.bWiFiHalt = + true; btdm_1AntSetPSTDMA(padapter, false, 0, false, 8); /*btdm_1AntPsTdma(padapter, false, 8); */ @@ -6190,13 +6220,14 @@ static void BTDM_1AntWifiAssociateNotify(struct rtw_adapter *padapter, u8 type) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for associate, type =%d\n", type)); + RTPRINT(FBT, BT_TRACE, + ("\n[BTCoex], 1Ant for associate, type =%d\n", type)); if (type) { rtl8723a_CheckAntenna_Selection(padapter); - if (BT_IsBtDisabled(padapter)) { + if (!rtl8723a_BT_enabled(padapter)) btdm_1AntSetPSTDMA(padapter, false, 0, false, 9); - } else { + else { struct bt_coexist_8723a *pBtCoex; u8 BtState; @@ -6205,24 +6236,28 @@ static void BTDM_1AntWifiAssociateNotify(struct rtw_adapter *padapter, u8 type) btdm_1AntTSFSwitch(padapter, true); - if ((BtState == BT_INFO_STATE_NO_CONNECTION) || - (BtState == BT_INFO_STATE_CONNECT_IDLE)) { - btdm_1AntSetPSTDMA(padapter, false, 0, true, 28); - } else if ((BtState == BT_INFO_STATE_SCO_ONLY_BUSY) || - (BtState == BT_INFO_STATE_ACL_SCO_BUSY)) { - btdm_1AntSetPSTDMA(padapter, false, 0, false, 8); - rtw_write32(padapter, 0x6c0, 0x5a5a5a5a); - rtw_write32(padapter, 0x6c4, 0x5a5a5a5a); - } else if ((BtState == BT_INFO_STATE_ACL_ONLY_BUSY) || - (BtState == BT_INFO_STATE_ACL_INQ_OR_PAG)) { + if (BtState == BT_INFO_STATE_NO_CONNECTION || + BtState == BT_INFO_STATE_CONNECT_IDLE) { + btdm_1AntSetPSTDMA(padapter, false, 0, + true, 28); + } else if (BtState == BT_INFO_STATE_SCO_ONLY_BUSY || + BtState == BT_INFO_STATE_ACL_SCO_BUSY) { + btdm_1AntSetPSTDMA(padapter, false, 0, + false, 8); + rtl8723au_write32(padapter, 0x6c0, 0x5a5a5a5a); + rtl8723au_write32(padapter, 0x6c4, 0x5a5a5a5a); + } else if (BtState == BT_INFO_STATE_ACL_ONLY_BUSY || + BtState == BT_INFO_STATE_ACL_INQ_OR_PAG) { if (pBtCoex->c2hBtProfile == BT_INFO_HID) - btdm_1AntSetPSTDMA(padapter, false, 0, true, 35); + btdm_1AntSetPSTDMA(padapter, false, 0, + true, 35); else - btdm_1AntSetPSTDMA(padapter, false, 0, true, 29); + btdm_1AntSetPSTDMA(padapter, false, 0, + true, 29); } } } else { - if (BT_IsBtDisabled(padapter)) { + if (!rtl8723a_BT_enabled(padapter)) { if (!BTDM_IsWifiConnectionExist(padapter)) { btdm_1AntPsTdma(padapter, false, 0); btdm_1AntTSFSwitch(padapter, false); @@ -6241,22 +6276,24 @@ BTDM_1AntMediaStatusNotify(struct rtw_adapter *padapter, pBtCoex = &GET_HAL_DATA(padapter)->bt_coexist.halCoex8723; - RTPRINT(FBT, BT_TRACE, ("\n\n[BTCoex]******************************\n")); + RTPRINT(FBT, BT_TRACE, + ("\n\n[BTCoex]******************************\n")); RTPRINT(FBT, BT_TRACE, ("[BTCoex], MediaStatus, WiFi %s !!\n", mstatus == RT_MEDIA_CONNECT?"CONNECT":"DISCONNECT")); RTPRINT(FBT, BT_TRACE, ("[BTCoex]******************************\n")); if (RT_MEDIA_CONNECT == mstatus) { if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE)) { - if ((pBtCoex->c2hBtInfo == BT_INFO_STATE_SCO_ONLY_BUSY) || - (pBtCoex->c2hBtInfo == BT_INFO_STATE_ACL_SCO_BUSY)) + if (pBtCoex->c2hBtInfo == BT_INFO_STATE_SCO_ONLY_BUSY || + pBtCoex->c2hBtInfo == BT_INFO_STATE_ACL_SCO_BUSY) btdm_1AntUpdateHalRAMaskForSCO(padapter, true); } padapter->pwrctrlpriv.DelayLPSLastTimeStamp = jiffies; BTDM_1AntForDhcp(padapter); } else { - /* DBG_8723A("%s rtl8723a_DeinitAntenna_Selection\n", __func__); */ + /* DBG_8723A("%s rtl8723a_DeinitAntenna_Selection\n", + __func__); */ rtl8723a_DeinitAntenna_Selection(padapter); btdm_1AntBtCoexistHandler(padapter); pBtCoex->btdm1Ant.bRAChanged = false; @@ -6276,8 +6313,10 @@ void BTDM_1AntForDhcp(struct rtw_adapter *padapter) pBtdm8723 = &pBtCoex->btdm1Ant; RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for DHCP\n")); - RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, WiFi is %s\n", BTDM_IsWifiBusy(padapter)?"Busy":"IDLE")); - RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, %s\n", BtStateString[BtState])); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, WiFi is %s\n", + BTDM_IsWifiBusy(padapter)?"Busy":"IDLE")); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for DHCP, %s\n", + BtStateString[BtState])); BTDM_1AntWifiAssociateNotify(padapter, true); } @@ -6294,13 +6333,16 @@ static void BTDM_1AntWifiScanNotify(struct rtw_adapter *padapter, u8 scanType) pBtCoex = &pHalData->bt_coexist.halCoex8723; pBtdm8723 = &pBtCoex->btdm1Ant; - RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for wifi scan =%d!!\n", scanType)); - RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, WiFi is %s\n", BTDM_IsWifiBusy(padapter)?"Busy":"IDLE")); - RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, %s\n", BtStateString[BtState])); + RTPRINT(FBT, BT_TRACE, ("\n[BTCoex], 1Ant for wifi scan =%d!!\n", + scanType)); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, WiFi is %s\n", + BTDM_IsWifiBusy(padapter)?"Busy":"IDLE")); + RTPRINT(FBT, BT_TRACE, ("[BTCoex], 1Ant for wifi scan, %s\n", + BtStateString[BtState])); if (scanType) { rtl8723a_CheckAntenna_Selection(padapter); - if (BT_IsBtDisabled(padapter)) { + if (!rtl8723a_BT_enabled(padapter)) { btdm_1AntSetPSTDMA(padapter, false, 0, false, 9); } else if (BTDM_IsWifiConnectionExist(padapter) == false) { BTDM_1AntWifiAssociateNotify(padapter, true); @@ -6308,10 +6350,13 @@ static void BTDM_1AntWifiScanNotify(struct rtw_adapter *padapter, u8 scanType) if ((BtState == BT_INFO_STATE_SCO_ONLY_BUSY) || (BtState == BT_INFO_STATE_ACL_SCO_BUSY)) { if (pBtCoex->bC2hBtInquiryPage) { - btdm_1AntSetPSTDMA(padapter, false, 0, true, 32); + btdm_1AntSetPSTDMA(padapter, false, 0, + true, 32); } else { - padapter->pwrctrlpriv.btcoex_rfon = true; - btdm_1AntSetPSTDMA(padapter, true, 0, true, 33); + padapter->pwrctrlpriv.btcoex_rfon = + true; + btdm_1AntSetPSTDMA(padapter, true, 0, + true, 33); } } else if (true == pBtCoex->bC2hBtInquiryPage) { padapter->pwrctrlpriv.btcoex_rfon = true; @@ -6319,9 +6364,11 @@ static void BTDM_1AntWifiScanNotify(struct rtw_adapter *padapter, u8 scanType) } else if (BtState == BT_INFO_STATE_ACL_ONLY_BUSY) { padapter->pwrctrlpriv.btcoex_rfon = true; if (pBtCoex->c2hBtProfile == BT_INFO_HID) - btdm_1AntSetPSTDMA(padapter, true, 0, true, 34); + btdm_1AntSetPSTDMA(padapter, true, 0, + true, 34); else - btdm_1AntSetPSTDMA(padapter, true, 0, true, 4); + btdm_1AntSetPSTDMA(padapter, true, 0, + true, 4); } else { padapter->pwrctrlpriv.btcoex_rfon = true; btdm_1AntSetPSTDMA(padapter, true, 0, true, 5); @@ -6365,16 +6412,18 @@ static void BTDM_1AntFwC2hBtInfo8723A(struct rtw_adapter *padapter) pBtCoex->bC2hBtInquiryPage = false; btState &= ~BIT(2); - if (!(btState & BIT(0))) { + if (!(btState & BIT(0))) pBtCoex->c2hBtInfo = BT_INFO_STATE_NO_CONNECTION; - } else { - if (btState == 0x1) { + else { + if (btState == 0x1) pBtCoex->c2hBtInfo = BT_INFO_STATE_CONNECT_IDLE; - } else if (btState == 0x9) { + else if (btState == 0x9) { if (pBtCoex->bC2hBtInquiryPage == true) - pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_INQ_OR_PAG; + pBtCoex->c2hBtInfo = + BT_INFO_STATE_ACL_INQ_OR_PAG; else - pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_ONLY_BUSY; + pBtCoex->c2hBtInfo = + BT_INFO_STATE_ACL_ONLY_BUSY; pBtMgnt->ExtConfig.bBTBusy = true; } else if (btState == 0x3) { pBtCoex->c2hBtInfo = BT_INFO_STATE_SCO_ONLY_BUSY; @@ -6382,15 +6431,15 @@ static void BTDM_1AntFwC2hBtInfo8723A(struct rtw_adapter *padapter) } else if (btState == 0xb) { pBtCoex->c2hBtInfo = BT_INFO_STATE_ACL_SCO_BUSY; pBtMgnt->ExtConfig.bBTBusy = true; - } else { + } else pBtCoex->c2hBtInfo = BT_INFO_STATE_MAX; - } if (pBtMgnt->ExtConfig.bBTBusy) - pHalData->bt_coexist.CurrentState &= ~BT_COEX_STATE_BT_IDLE; + pHalData->bt_coexist.CurrentState &= + ~BT_COEX_STATE_BT_IDLE; } - if ((BT_INFO_STATE_NO_CONNECTION == pBtCoex->c2hBtInfo) || - (BT_INFO_STATE_CONNECT_IDLE == pBtCoex->c2hBtInfo)) { + if (BT_INFO_STATE_NO_CONNECTION == pBtCoex->c2hBtInfo || + BT_INFO_STATE_CONNECT_IDLE == pBtCoex->c2hBtInfo) { if (pBtCoex->bC2hBtInquiryPage) pBtCoex->c2hBtInfo = BT_INFO_STATE_INQ_OR_PAG; } @@ -6413,12 +6462,14 @@ void BTDM_1AntBtCoexist8723A(struct rtw_adapter *padapter) if (check_fwstate(pmlmepriv, WIFI_SITE_MONITOR)) { /* already done in BTDM_1AntForScan() */ - RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is under scan progress!!\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], wifi is under scan progress!!\n")); return; } if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) { - RTPRINT(FBT, BT_TRACE, ("[BTCoex], wifi is under link progress!!\n")); + RTPRINT(FBT, BT_TRACE, + ("[BTCoex], wifi is under link progress!!\n")); return; } @@ -6437,9 +6488,7 @@ void BTDM_1AntBtCoexist8723A(struct rtw_adapter *padapter) } /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.c ===== */ -#endif -#ifdef __HALBTC87232ANT_C__ /* HAL/BTCoexist/HalBtc87232Ant.c */ /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.c ===== */ /* local function start with btdm_ */ @@ -6691,13 +6740,13 @@ btdm_SetCoexTable(struct rtw_adapter *padapter, u32 val0x6c0, u32 val0x6c8, u8 val0x6cc) { RTPRINT(FBT, BT_TRACE, ("set coex table, set 0x6c0 = 0x%x\n", val0x6c0)); - rtw_write32(padapter, 0x6c0, val0x6c0); + rtl8723au_write32(padapter, 0x6c0, val0x6c0); RTPRINT(FBT, BT_TRACE, ("set coex table, set 0x6c8 = 0x%x\n", val0x6c8)); - rtw_write32(padapter, 0x6c8, val0x6c8); + rtl8723au_write32(padapter, 0x6c8, val0x6c8); RTPRINT(FBT, BT_TRACE, ("set coex table, set 0x6cc = 0x%x\n", val0x6cc)); - rtw_write8(padapter, 0x6cc, val0x6cc); + rtl8723au_write8(padapter, 0x6cc, val0x6cc); } static void @@ -8520,9 +8569,9 @@ static void BTDM_2AntParaInit(struct rtw_adapter *padapter) RTPRINT(FBT, BT_TRACE, ("[BTCoex], 2Ant Parameter Init!!\n")); /* Enable counter statistics */ - rtw_write8(padapter, 0x76e, 0x4); - rtw_write8(padapter, 0x778, 0x3); - rtw_write8(padapter, 0x40, 0x20); + rtl8723au_write8(padapter, 0x76e, 0x4); + rtl8723au_write8(padapter, 0x778, 0x3); + rtl8723au_write8(padapter, 0x40, 0x20); /* force to reset coex mechanism */ pBtdm8723->preVal0x6c0 = 0x0; @@ -8919,9 +8968,7 @@ void BTDM_2AntBtCoexist8723A(struct rtw_adapter *padapter) } /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.c ===== */ -#endif -#ifdef __HALBTC8723_C__ /* HAL/BTCoexist/HalBtc8723.c */ /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc8723.c ===== */ static u8 btCoexDbgBuf[BT_TMP_BUF_SIZE]; @@ -8974,11 +9021,11 @@ static void btdm_BtHwCountersMonitor(struct rtw_adapter *padapter) regHPTxRx = REG_HIGH_PRIORITY_TXRX; regLPTxRx = REG_LOW_PRIORITY_TXRX; - u4Tmp = rtw_read32(padapter, regHPTxRx); + u4Tmp = rtl8723au_read32(padapter, regHPTxRx); regHPTx = u4Tmp & bMaskLWord; regHPRx = (u4Tmp & bMaskHWord)>>16; - u4Tmp = rtw_read32(padapter, regLPTxRx); + u4Tmp = rtl8723au_read32(padapter, regLPTxRx); regLPTx = u4Tmp & bMaskLWord; regLPRx = (u4Tmp & bMaskHWord)>>16; @@ -8991,7 +9038,7 @@ static void btdm_BtHwCountersMonitor(struct rtw_adapter *padapter) RTPRINT(FBT, BT_TRACE, ("Low Priority Tx/Rx = %d / %d\n", regLPTx, regLPRx)); /* reset counter */ - rtw_write8(padapter, 0x76e, 0xc); + rtl8723au_write8(padapter, 0x76e, 0xc); } /* This function check if 8723 bt is disabled */ @@ -9004,7 +9051,7 @@ static void btdm_BtEnableDisableCheck8723A(struct rtw_adapter *padapter) u8 val8; /* ox68[28]= 1 => BT enable; otherwise disable */ - val8 = rtw_read8(padapter, 0x6B); + val8 = rtl8723au_read8(padapter, 0x6B); if (!(val8 & BIT(4))) btAlife = false; @@ -9197,7 +9244,7 @@ void BTDM_SetFw3a( { u8 H2C_Parameter[5] = {0}; - if (BTDM_1Ant8723A(padapter)) { + if (rtl8723a_BT_using_antenna_1(padapter)) { if ((!check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE)) && (get_fwstate(&padapter->mlmepriv) != WIFI_NULL_STATE)) { /* for softap mode */ @@ -9241,7 +9288,7 @@ void BTDM_QueryBtInformation(struct rtw_adapter *padapter) pHalData = GET_HAL_DATA(padapter); pBtCoex = &pHalData->bt_coexist.halCoex8723; - if (BT_IsBtDisabled(padapter)) { + if (!rtl8723a_BT_enabled(padapter)) { pBtCoex->c2hBtInfo = BT_INFO_STATE_DISABLED; pBtCoex->bC2hBtInfoReqSent = false; return; @@ -9288,7 +9335,7 @@ BTDM_SetSwPenaltyTxRateAdaptive( struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); u8 tmpU1; - tmpU1 = rtw_read8(padapter, 0x4fd); + tmpU1 = rtl8723au_read8(padapter, 0x4fd); tmpU1 |= BIT(0); if (BT_TX_RATE_ADAPTIVE_LOW_PENALTY == raType) { tmpU1 &= ~BIT(2); @@ -9297,7 +9344,7 @@ BTDM_SetSwPenaltyTxRateAdaptive( tmpU1 |= BIT(2); } - rtw_write8(padapter, 0x4fd, tmpU1); + rtl8723au_write8(padapter, 0x4fd, tmpU1); } void BTDM_SetFwDecBtPwr(struct rtw_adapter *padapter, u8 bDecBtPwr) @@ -9349,8 +9396,8 @@ static void BTDM_FwC2hBtRssi8723A(struct rtw_adapter *padapter, u8 *tmpBuf) /*RTPRINT(FBT, BT_TRACE, ("[BTC2H], BT RSSI =%d\n", percent)); */ } -static void -BTDM_FwC2hBtInfo8723A(struct rtw_adapter *padapter, u8 *tmpBuf, u8 length) +void +rtl8723a_fw_c2h_BT_info(struct rtw_adapter *padapter, u8 *tmpBuf, u8 length) { struct hal_data_8723a *pHalData; struct bt_30info *pBTInfo; @@ -9419,7 +9466,7 @@ static void BTDM_Display8723ABtCoexInfo(struct rtw_adapter *padapter) rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n ============[BT Coexist info]============"); DCMD_Printf(btCoexDbgBuf); - if (!pHalData->bt_coexist.BluetoothCoexist) { + if (!rtl8723a_BT_coexist(padapter)) { rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n BT not exists !!!"); DCMD_Printf(btCoexDbgBuf); return; @@ -9473,7 +9520,8 @@ static void BTDM_Display8723ABtCoexInfo(struct rtw_adapter *padapter) btInfoExt = pHalData->bt_coexist.halCoex8723.btInfoExt; rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s", "A2DP rate", \ - (btInfoExt&BIT0) ? "Basic rate" : "EDR rate"); + (btInfoExt & BIT(0)) ? + "Basic rate" : "EDR rate"); DCMD_Printf(btCoexDbgBuf); } else { rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %s/ %s", "Bt link type/spec", \ @@ -9527,9 +9575,9 @@ static void BTDM_Display8723ABtCoexInfo(struct rtw_adapter *padapter) pBtCoex->btdm2Ant.bCurDecBtPwr); DCMD_Printf(btCoexDbgBuf); } - u1Tmp = rtw_read8(padapter, 0x778); - u1Tmp1 = rtw_read8(padapter, 0x783); - u1Tmp2 = rtw_read8(padapter, 0x796); + u1Tmp = rtl8723au_read8(padapter, 0x778); + u1Tmp1 = rtl8723au_read8(padapter, 0x783); + u1Tmp2 = rtl8723au_read8(padapter, 0x796); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x", "0x778/ 0x783/ 0x796", \ u1Tmp, u1Tmp1, u1Tmp2); DCMD_Printf(btCoexDbgBuf); @@ -9539,7 +9587,7 @@ static void BTDM_Display8723ABtCoexInfo(struct rtw_adapter *padapter) pBtCoex->btdm2Ant.bCurDacSwingOn, pBtCoex->btdm2Ant.curDacSwingLvl); DCMD_Printf(btCoexDbgBuf); } - u4Tmp[0] = rtw_read32(padapter, 0x880); + u4Tmp[0] = rtl8723au_read32(padapter, 0x880); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x880", \ u4Tmp[0]); DCMD_Printf(btCoexDbgBuf); @@ -9550,56 +9598,56 @@ static void BTDM_Display8723ABtCoexInfo(struct rtw_adapter *padapter) DCMD_Printf(btCoexDbgBuf); } - u1Tmp = rtw_read8(padapter, 0x40); + u1Tmp = rtl8723au_read8(padapter, 0x40); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x40", \ u1Tmp); DCMD_Printf(btCoexDbgBuf); - u4Tmp[0] = rtw_read32(padapter, 0x550); - u1Tmp = rtw_read8(padapter, 0x522); + u4Tmp[0] = rtl8723au_read32(padapter, 0x550); + u1Tmp = rtl8723au_read8(padapter, 0x522); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/0x%x", "0x550(bcn contrl)/0x522", \ u4Tmp[0], u1Tmp); DCMD_Printf(btCoexDbgBuf); - u4Tmp[0] = rtw_read32(padapter, 0x484); + u4Tmp[0] = rtl8723au_read32(padapter, 0x484); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x484(rate adaptive)", \ u4Tmp[0]); DCMD_Printf(btCoexDbgBuf); - u4Tmp[0] = rtw_read32(padapter, 0x50); + u4Tmp[0] = rtl8723au_read32(padapter, 0x50); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0xc50(dig)", \ u4Tmp[0]); DCMD_Printf(btCoexDbgBuf); - u4Tmp[0] = rtw_read32(padapter, 0xda0); - u4Tmp[1] = rtw_read32(padapter, 0xda4); - u4Tmp[2] = rtw_read32(padapter, 0xda8); - u4Tmp[3] = rtw_read32(padapter, 0xdac); + u4Tmp[0] = rtl8723au_read32(padapter, 0xda0); + u4Tmp[1] = rtl8723au_read32(padapter, 0xda4); + u4Tmp[2] = rtl8723au_read32(padapter, 0xda8); + u4Tmp[3] = rtl8723au_read32(padapter, 0xdac); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0xda0/0xda4/0xda8/0xdac(FA cnt)", \ u4Tmp[0], u4Tmp[1], u4Tmp[2], u4Tmp[3]); DCMD_Printf(btCoexDbgBuf); - u4Tmp[0] = rtw_read32(padapter, 0x6c0); - u4Tmp[1] = rtw_read32(padapter, 0x6c4); - u4Tmp[2] = rtw_read32(padapter, 0x6c8); - u1Tmp = rtw_read8(padapter, 0x6cc); + u4Tmp[0] = rtl8723au_read32(padapter, 0x6c0); + u4Tmp[1] = rtl8723au_read32(padapter, 0x6c4); + u4Tmp[2] = rtl8723au_read32(padapter, 0x6c8); + u1Tmp = rtl8723au_read8(padapter, 0x6cc); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x/ 0x%x/ 0x%x/ 0x%x", "0x6c0/0x6c4/0x6c8/0x6cc(coexTable)", \ u4Tmp[0], u4Tmp[1], u4Tmp[2], u1Tmp); DCMD_Printf(btCoexDbgBuf); - /* u4Tmp = rtw_read32(padapter, 0x770); */ + /* u4Tmp = rtl8723au_read32(padapter, 0x770); */ rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d", "0x770(Hi pri Rx[31:16]/Tx[15:0])", \ pHalData->bt_coexist.halCoex8723.highPriorityRx, pHalData->bt_coexist.halCoex8723.highPriorityTx); DCMD_Printf(btCoexDbgBuf); - /* u4Tmp = rtw_read32(padapter, 0x774); */ + /* u4Tmp = rtl8723au_read32(padapter, 0x774); */ rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d", "0x774(Lo pri Rx[31:16]/Tx[15:0])", \ pHalData->bt_coexist.halCoex8723.lowPriorityRx, pHalData->bt_coexist.halCoex8723.lowPriorityTx); DCMD_Printf(btCoexDbgBuf); /* Tx mgnt queue hang or not, 0x41b should = 0xf, ex: 0xd ==>hang */ - u1Tmp = rtw_read8(padapter, 0x41b); + u1Tmp = rtl8723au_read8(padapter, 0x41b); rsprintf(btCoexDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = 0x%x", "0x41b (hang chk == 0xf)", \ u1Tmp); DCMD_Printf(btCoexDbgBuf); @@ -9672,7 +9720,7 @@ BTDM_Set8723ABtCoexCurrAntNum(struct rtw_adapter *padapter, u8 antNum) pBtCoex->TotalAntNum = Ant_x2; } -void BTDM_LpsLeave(struct rtw_adapter *padapter) +void rtl8723a_BT_lps_leave(struct rtw_adapter *padapter) { struct bt_30info *pBTInfo = GET_BT_INFO(padapter); struct bt_mgnt *pBtMgnt = &pBTInfo->BtMgnt; @@ -9752,7 +9800,7 @@ static void BTDM_ForDhcp8723A(struct rtw_adapter *padapter) BTDM_1AntForDhcp(padapter); } -u8 BTDM_1Ant8723A(struct rtw_adapter *padapter) +bool rtl8723a_BT_using_antenna_1(struct rtw_adapter *padapter) { if (btdm_BtWifiAntNum(padapter) == Ant_x1) return true; @@ -9785,7 +9833,7 @@ static void BTDM_BTCoexist8723A(struct rtw_adapter *padapter) } if (pBtCoex->bC2hBtInfoReqSent) { - if (BT_IsBtDisabled(padapter)) { + if (!rtl8723a_BT_enabled(padapter)) { pBtCoex->c2hBtInfo = BT_INFO_STATE_DISABLED; } else { if (pBtCoex->c2hBtInfo == BT_INFO_STATE_DISABLED) @@ -9793,7 +9841,7 @@ static void BTDM_BTCoexist8723A(struct rtw_adapter *padapter) } btdm_BTCoexist8723AHandler(padapter); - } else if (BT_IsBtDisabled(padapter) == true) { + } else if (!rtl8723a_BT_enabled(padapter)) { pBtCoex->c2hBtInfo = BT_INFO_STATE_DISABLED; btdm_BTCoexist8723AHandler(padapter); } @@ -9802,9 +9850,7 @@ static void BTDM_BTCoexist8723A(struct rtw_adapter *padapter) } /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc8723.c ===== */ -#endif -#ifdef __HALBTCCSR1ANT_C__ /* HAL/BTCoexist/HalBtcCsr1Ant.c */ /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.c ===== */ /* local function start with btdm_ */ @@ -9866,7 +9912,7 @@ void BTDM_CheckBTIdleChange1Ant(struct rtw_adapter *padapter) u32 BT_Active, BT_State; u32 regBTActive = 0, regBTState = 0, regBTPolling = 0; - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; if (pBtMgnt->ExtConfig.bManualControl) return; @@ -9885,15 +9931,15 @@ void BTDM_CheckBTIdleChange1Ant(struct rtw_adapter *padapter) else regBTPolling = REG_BT_POLLING; - BT_Active = rtw_read32(padapter, regBTActive); + BT_Active = rtl8723au_read32(padapter, regBTActive); RTPRINT(FBT, BT_TRACE, ("[DM][BT], BT_Active(0x%x) =%x\n", regBTActive, BT_Active)); BT_Active = BT_Active & 0x00ffffff; - BT_State = rtw_read32(padapter, regBTState); + BT_State = rtl8723au_read32(padapter, regBTState); RTPRINT(FBT, BT_TRACE, ("[DM][BT], BT_State(0x%x) =%x\n", regBTState, BT_State)); BT_State = BT_State & 0x00ffffff; - BT_Polling = rtw_read32(padapter, regBTPolling); + BT_Polling = rtl8723au_read32(padapter, regBTPolling); RTPRINT(FBT, BT_TRACE, ("[DM][BT], BT_Polling(0x%x) =%x\n", regBTPolling, BT_Polling)); if (BT_Active == 0xffffffff && BT_State == 0xffffffff && BT_Polling == 0xffffffff) @@ -9991,9 +10037,7 @@ void BTDM_CheckBTIdleChange1Ant(struct rtw_adapter *padapter) } /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.c ===== */ -#endif -#ifdef __HALBTCCSR2ANT_C__ /* HAL/BTCoexist/HalBtcCsr2Ant.c */ /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.c ===== */ /* local function start with btdm_ */ @@ -10048,9 +10092,7 @@ BTDM_DiminishWiFi( } /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.c ===== */ -#endif -#ifdef __HALBTCOEXIST_C__ /* HAL/BTCoexist/HalBtCoexist.c */ /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtCoexist.c ===== */ /* local function */ @@ -10089,11 +10131,6 @@ void BTDM_FwC2hBtRssi(struct rtw_adapter *padapter, u8 *tmpBuf) BTDM_FwC2hBtRssi8723A(padapter, tmpBuf); } -void BTDM_FwC2hBtInfo(struct rtw_adapter *padapter, u8 *tmpBuf, u8 length) -{ - BTDM_FwC2hBtInfo8723A(padapter, tmpBuf, length); -} - void BTDM_DisplayBtCoexInfo(struct rtw_adapter *padapter) { BTDM_Display8723ABtCoexInfo(padapter); @@ -10489,18 +10526,18 @@ u8 BTDM_CheckCoexRSSIState(struct rtw_adapter *padapter, u8 levelNum, return btRssiState; } -u8 BTDM_DisableEDCATurbo(struct rtw_adapter *padapter) +bool rtl8723a_BT_disable_EDCA_turbo(struct rtw_adapter *padapter) { struct bt_mgnt *pBtMgnt; struct hal_data_8723a *pHalData; u8 bBtChangeEDCA = false; u32 EDCA_BT_BE = 0x5ea42b, cur_EDCA_reg; - u8 bRet = false; + bool bRet = false; pHalData = GET_HAL_DATA(padapter); pBtMgnt = &pHalData->BtInfo.BtMgnt; - if (!pHalData->bt_coexist.BluetoothCoexist) { + if (!rtl8723a_BT_coexist(padapter)) { bRet = false; pHalData->bt_coexist.lastBtEdca = 0; return bRet; @@ -10512,7 +10549,7 @@ u8 BTDM_DisableEDCATurbo(struct rtw_adapter *padapter) return bRet; } - if (BT_1Ant(padapter)) { + if (rtl8723a_BT_using_antenna_1(padapter)) { bRet = false; pHalData->bt_coexist.lastBtEdca = 0; return bRet; @@ -10533,12 +10570,13 @@ u8 BTDM_DisableEDCATurbo(struct rtw_adapter *padapter) pHalData->odmpriv.DM_EDCA_Table.bCurrentTurboEDCA = false; pHalData->dmpriv.prv_traffic_idx = 3; } - cur_EDCA_reg = rtw_read32(padapter, REG_EDCA_BE_PARAM); + cur_EDCA_reg = rtl8723au_read32(padapter, REG_EDCA_BE_PARAM); if (cur_EDCA_reg != EDCA_BT_BE) bBtChangeEDCA = true; if (bBtChangeEDCA || !pHalData->bt_coexist.bEDCAInitialized) { - rtw_write32(padapter, REG_EDCA_BE_PARAM, EDCA_BT_BE); + rtl8723au_write32(padapter, REG_EDCA_BE_PARAM, + EDCA_BT_BE); pHalData->bt_coexist.lastBtEdca = EDCA_BT_BE; } bRet = true; @@ -10585,11 +10623,11 @@ void BTDM_AGCTable(struct rtw_adapter *padapter, u8 type) struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); if (type == BT_AGCTABLE_OFF) { RTPRINT(FBT, BT_TRACE, ("[BT]AGCTable Off!\n")); - rtw_write32(padapter, 0xc78, 0x641c0001); - rtw_write32(padapter, 0xc78, 0x631d0001); - rtw_write32(padapter, 0xc78, 0x621e0001); - rtw_write32(padapter, 0xc78, 0x611f0001); - rtw_write32(padapter, 0xc78, 0x60200001); + rtl8723au_write32(padapter, 0xc78, 0x641c0001); + rtl8723au_write32(padapter, 0xc78, 0x631d0001); + rtl8723au_write32(padapter, 0xc78, 0x621e0001); + rtl8723au_write32(padapter, 0xc78, 0x611f0001); + rtl8723au_write32(padapter, 0xc78, 0x60200001); PHY_SetRFReg(padapter, PathA, RF_RX_AGC_HP, bRFRegOffsetMask, 0x32000); PHY_SetRFReg(padapter, PathA, RF_RX_AGC_HP, bRFRegOffsetMask, 0x71000); @@ -10600,11 +10638,11 @@ void BTDM_AGCTable(struct rtw_adapter *padapter, u8 type) pHalData->bt_coexist.b8723aAgcTableOn = false; } else if (type == BT_AGCTABLE_ON) { RTPRINT(FBT, BT_TRACE, ("[BT]AGCTable On!\n")); - rtw_write32(padapter, 0xc78, 0x4e1c0001); - rtw_write32(padapter, 0xc78, 0x4d1d0001); - rtw_write32(padapter, 0xc78, 0x4c1e0001); - rtw_write32(padapter, 0xc78, 0x4b1f0001); - rtw_write32(padapter, 0xc78, 0x4a200001); + rtl8723au_write32(padapter, 0xc78, 0x4e1c0001); + rtl8723au_write32(padapter, 0xc78, 0x4d1d0001); + rtl8723au_write32(padapter, 0xc78, 0x4c1e0001); + rtl8723au_write32(padapter, 0xc78, 0x4b1f0001); + rtl8723au_write32(padapter, 0xc78, 0x4a200001); PHY_SetRFReg(padapter, PathA, RF_RX_AGC_HP, bRFRegOffsetMask, 0xdc000); PHY_SetRFReg(padapter, PathA, RF_RX_AGC_HP, bRFRegOffsetMask, 0x90000); @@ -10624,10 +10662,10 @@ void BTDM_BBBackOffLevel(struct rtw_adapter *padapter, u8 type) if (type == BT_BB_BACKOFF_OFF) { RTPRINT(FBT, BT_TRACE, ("[BT]BBBackOffLevel Off!\n")); - rtw_write32(padapter, 0xc04, 0x3a05611); + rtl8723au_write32(padapter, 0xc04, 0x3a05611); } else if (type == BT_BB_BACKOFF_ON) { RTPRINT(FBT, BT_TRACE, ("[BT]BBBackOffLevel On!\n")); - rtw_write32(padapter, 0xc04, 0x3a07611); + rtl8723au_write32(padapter, 0xc04, 0x3a07611); pHalData->bt_coexist.bSWCoexistAllOff = false; } } @@ -10680,16 +10718,15 @@ void BTDM_CoexAllOff(struct rtw_adapter *padapter) BTDM_HWCoexAllOff(padapter); } -void BTDM_TurnOffBtCoexistBeforeEnterIPS(struct rtw_adapter *padapter) +void rtl8723a_BT_disable_coexist(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); struct pwrctrl_priv *ppwrctrl = &padapter->pwrctrlpriv; - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; /* 8723 1Ant doesn't need to turn off bt coexist mechanism. */ - if (BTDM_1Ant8723A(padapter)) + if (rtl8723a_BT_using_antenna_1(padapter)) return; /* Before enter IPS, turn off FW BT Co-exist mechanism */ @@ -10706,11 +10743,11 @@ void BTDM_SignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, u8 *rs BTDM_8723ASignalCompensation(padapter, rssi_wifi, rssi_bt); } -void BTDM_Coexist(struct rtw_adapter *padapter) +void rtl8723a_BT_do_coexist(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - if (!pHalData->bt_coexist.BluetoothCoexist) { + if (!rtl8723a_BT_coexist(padapter)) { RTPRINT(FBT, BT_TRACE, ("[DM][BT], BT not exists!!\n")); return; } @@ -10920,9 +10957,7 @@ void BTDM_SetBtCoexCurrAntNum(struct rtw_adapter *padapter, u8 antNum) void BTDM_ForHalt(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; BTDM_ForHalt8723A(padapter); @@ -10931,9 +10966,7 @@ void BTDM_ForHalt(struct rtw_adapter *padapter) void BTDM_WifiScanNotify(struct rtw_adapter *padapter, u8 scanType) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; BTDM_WifiScanNotify8723A(padapter, scanType); @@ -10941,29 +10974,24 @@ void BTDM_WifiScanNotify(struct rtw_adapter *padapter, u8 scanType) void BTDM_WifiAssociateNotify(struct rtw_adapter *padapter, u8 action) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; BTDM_WifiAssociateNotify8723A(padapter, action); } -void BTDM_MediaStatusNotify(struct rtw_adapter *padapter, enum rt_media_status mstatus) +void rtl8723a_BT_mediastatus_notify(struct rtw_adapter *padapter, + enum rt_media_status mstatus) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; BTDM_MediaStatusNotify8723A(padapter, mstatus); } -void BTDM_ForDhcp(struct rtw_adapter *padapter) +void rtl8723a_BT_specialpacket_notify(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - if (!pHalData->bt_coexist.BluetoothCoexist) + if (!rtl8723a_BT_coexist(padapter)) return; BTDM_ForDhcp8723A(padapter); @@ -11175,20 +11203,18 @@ u8 BTDM_IsActionPANA2DP(struct rtw_adapter *padapter) return bRet; } -u8 BTDM_IsBtDisabled(struct rtw_adapter *padapter) +bool rtl8723a_BT_enabled(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); if (pHalData->bt_coexist.bCurBtDisabled) - return true; - else return false; + else + return true; } /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtCoexist.c ===== */ -#endif -#ifdef __HALBT_C__ /* HAL/HalBT.c */ /* ===== Below this line is sync from SD7 driver HAL/HalBT.c ===== */ /* */ @@ -11221,7 +11247,9 @@ void HALBT_SetKey(struct rtw_adapter *padapter, u8 EntryNum) pBtAssocEntry->HwCAMIndex = BT_HWCAM_STAR + EntryNum; usConfig = CAM_VALID | (CAM_AES << 2); - write_cam23a(padapter, pBtAssocEntry->HwCAMIndex, usConfig, pBtAssocEntry->BTRemoteMACAddr, pBtAssocEntry->PTK + TKIP_ENC_KEY_POS); + rtl8723a_cam_write(padapter, pBtAssocEntry->HwCAMIndex, usConfig, + pBtAssocEntry->BTRemoteMACAddr, + pBtAssocEntry->PTK + TKIP_ENC_KEY_POS); } void HALBT_RemoveKey(struct rtw_adapter *padapter, u8 EntryNum) @@ -11234,13 +11262,15 @@ void HALBT_RemoveKey(struct rtw_adapter *padapter, u8 EntryNum) if (pBTinfo->BtAsocEntry[EntryNum].HwCAMIndex != 0) { /* ToDo : add New HALBT_RemoveKey function !! */ - if (pBtAssocEntry->HwCAMIndex >= BT_HWCAM_STAR && pBtAssocEntry->HwCAMIndex < HALF_CAM_ENTRY) - CAM_empty_entry23a(padapter, pBtAssocEntry->HwCAMIndex); + if (pBtAssocEntry->HwCAMIndex >= BT_HWCAM_STAR && + pBtAssocEntry->HwCAMIndex < HALF_CAM_ENTRY) + rtl8723a_cam_empty_entry(padapter, + pBtAssocEntry->HwCAMIndex); pBTinfo->BtAsocEntry[EntryNum].HwCAMIndex = 0; } } -void HALBT_InitBTVars8723A(struct rtw_adapter *padapter) +void rtl8723a_BT_init_hal_vars(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData; @@ -11252,8 +11282,10 @@ void HALBT_InitBTVars8723A(struct rtw_adapter *padapter) pHalData->bt_coexist.BT_Ant_isolation = pHalData->EEPROMBluetoothAntIsolation; pHalData->bt_coexist.bt_radiosharedtype = pHalData->EEPROMBluetoothRadioShared; - RT_TRACE(_module_hal_init_c_, _drv_info_, ("BT Coexistance = 0x%x\n", pHalData->bt_coexist.BluetoothCoexist)); - if (pHalData->bt_coexist.BluetoothCoexist) { + RT_TRACE(_module_hal_init_c_, _drv_info_, + ("BT Coexistance = 0x%x\n", rtl8723a_BT_coexist(padapter))); + + if (rtl8723a_BT_coexist(padapter)) { if (pHalData->bt_coexist.BT_Ant_Num == Ant_x2) { BTDM_SetBtCoexCurrAntNum(padapter, 2); RT_TRACE(_module_hal_init_c_, _drv_info_, ("BlueTooth BT_Ant_Num = Antx2\n")); @@ -11273,7 +11305,7 @@ void HALBT_InitBTVars8723A(struct rtw_adapter *padapter) } } -u8 HALBT_IsBTExist(struct rtw_adapter *padapter) +bool rtl8723a_BT_coexist(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); @@ -11290,10 +11322,10 @@ u8 HALBT_BTChipType(struct rtw_adapter *padapter) return pHalData->bt_coexist.BT_CoexistType; } -void HALBT_InitHwConfig(struct rtw_adapter *padapter) +void rtl8723a_BT_init_hwconfig(struct rtw_adapter *padapter) { halbt_InitHwConfig8723A(padapter); - BTDM_Coexist(padapter); + rtl8723a_BT_do_coexist(padapter); } void HALBT_SetRtsCtsNoLenLimit(struct rtw_adapter *padapter) @@ -11301,4 +11333,49 @@ void HALBT_SetRtsCtsNoLenLimit(struct rtw_adapter *padapter) } /* ===== End of sync from SD7 driver HAL/HalBT.c ===== */ -#endif + +void rtl8723a_dual_antenna_detection(struct rtw_adapter *padapter) +{ + struct hal_data_8723a *pHalData; + struct dm_odm_t *pDM_Odm; + struct sw_ant_sw *pDM_SWAT_Table; + u8 i; + + pHalData = GET_HAL_DATA(padapter); + pDM_Odm = &pHalData->odmpriv; + pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table; + + /* */ + /* <Roger_Notes> RTL8723A Single and Dual antenna dynamic detection + mechanism when RF power state is on. */ + /* We should take power tracking, IQK, LCK, RCK RF read/write + operation into consideration. */ + /* 2011.12.15. */ + /* */ + if (!pHalData->bAntennaDetected) { + u8 btAntNum = BT_GetPGAntNum(padapter); + + /* Set default antenna B status */ + if (btAntNum == Ant_x2) + pDM_SWAT_Table->ANTB_ON = true; + else if (btAntNum == Ant_x1) + pDM_SWAT_Table->ANTB_ON = false; + else + pDM_SWAT_Table->ANTB_ON = true; + + if (pHalData->CustomerID != RT_CID_TOSHIBA) { + for (i = 0; i < MAX_ANTENNA_DETECTION_CNT; i++) { + if (ODM_SingleDualAntennaDetection + (&pHalData->odmpriv, ANTTESTALL) == true) + break; + } + + /* Set default antenna number for BT coexistence */ + if (btAntNum == Ant_x2) + BT_SetBtCoexCurrAntNum(padapter, + pDM_SWAT_Table-> + ANTB_ON ? 2 : 1); + } + pHalData->bAntennaDetected = true; + } +} |