diff options
author | James Morris <james.l.morris@oracle.com> | 2014-07-17 02:10:27 +1000 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2014-07-17 02:10:27 +1000 |
commit | bd89bb78f35fd175db7a9cfc504d789b6ca0f7b0 (patch) | |
tree | dee9f8b31f3d6d2fb141541da88e1cc1329b017e /drivers/staging/rtl8723au/hal | |
parent | Merge commit 'v3.15' into next (diff) | |
parent | Linux 3.16-rc5 (diff) | |
download | linux-dev-bd89bb78f35fd175db7a9cfc504d789b6ca0f7b0.tar.xz linux-dev-bd89bb78f35fd175db7a9cfc504d789b6ca0f7b0.zip |
Sync with the changes pushed by Serge in the last merge window.
Diffstat (limited to 'drivers/staging/rtl8723au/hal')
19 files changed, 1597 insertions, 3148 deletions
diff --git a/drivers/staging/rtl8723au/hal/HalDMOutSrc8723A_CE.c b/drivers/staging/rtl8723au/hal/HalDMOutSrc8723A_CE.c index 9796f2e5c68f..4b41bc4ce1e6 100644 --- a/drivers/staging/rtl8723au/hal/HalDMOutSrc8723A_CE.c +++ b/drivers/staging/rtl8723au/hal/HalDMOutSrc8723A_CE.c @@ -18,6 +18,7 @@ /* include files */ #include "odm_precomp.h" +#include <usb_ops_linux.h> #define DPK_DELTA_MAPPING_NUM 13 #define index_mapping_HP_NUM 15 @@ -252,35 +253,41 @@ odm_TXPowerTrackingCallback_ThermalMeter_92C( PHY_SetBBReg(Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, value32); value32 = ((X * ele_D)>>7)&0x01; - PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT31, value32); + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, + BIT(31), value32); value32 = ((Y * ele_D)>>7)&0x01; - PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT29, value32); + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, + BIT(29), value32); } else { - PHY_SetBBReg(Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, OFDMSwingTable23A[OFDM_index[0]]); - PHY_SetBBReg(Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, 0x00); - PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT31|BIT29, 0x00); + PHY_SetBBReg(Adapter, rOFDM0_XATxIQImbalance, + bMaskDWord, + OFDMSwingTable23A[OFDM_index[0]]); + PHY_SetBBReg(Adapter, rOFDM0_XCTxAFE, + bMaskH4Bits, 0x00); + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, + BIT(31) | BIT(29), 0x00); } /* Adjust CCK according to IQK result */ if (!pdmpriv->bCCKinCH14) { - rtw_write8(Adapter, 0xa22, CCKSwingTable_Ch1_Ch1323A[CCK_index][0]); - rtw_write8(Adapter, 0xa23, CCKSwingTable_Ch1_Ch1323A[CCK_index][1]); - rtw_write8(Adapter, 0xa24, CCKSwingTable_Ch1_Ch1323A[CCK_index][2]); - rtw_write8(Adapter, 0xa25, CCKSwingTable_Ch1_Ch1323A[CCK_index][3]); - rtw_write8(Adapter, 0xa26, CCKSwingTable_Ch1_Ch1323A[CCK_index][4]); - rtw_write8(Adapter, 0xa27, CCKSwingTable_Ch1_Ch1323A[CCK_index][5]); - rtw_write8(Adapter, 0xa28, CCKSwingTable_Ch1_Ch1323A[CCK_index][6]); - rtw_write8(Adapter, 0xa29, CCKSwingTable_Ch1_Ch1323A[CCK_index][7]); + rtl8723au_write8(Adapter, 0xa22, CCKSwingTable_Ch1_Ch1323A[CCK_index][0]); + rtl8723au_write8(Adapter, 0xa23, CCKSwingTable_Ch1_Ch1323A[CCK_index][1]); + rtl8723au_write8(Adapter, 0xa24, CCKSwingTable_Ch1_Ch1323A[CCK_index][2]); + rtl8723au_write8(Adapter, 0xa25, CCKSwingTable_Ch1_Ch1323A[CCK_index][3]); + rtl8723au_write8(Adapter, 0xa26, CCKSwingTable_Ch1_Ch1323A[CCK_index][4]); + rtl8723au_write8(Adapter, 0xa27, CCKSwingTable_Ch1_Ch1323A[CCK_index][5]); + rtl8723au_write8(Adapter, 0xa28, CCKSwingTable_Ch1_Ch1323A[CCK_index][6]); + rtl8723au_write8(Adapter, 0xa29, CCKSwingTable_Ch1_Ch1323A[CCK_index][7]); } else { - rtw_write8(Adapter, 0xa22, CCKSwingTable_Ch1423A[CCK_index][0]); - rtw_write8(Adapter, 0xa23, CCKSwingTable_Ch1423A[CCK_index][1]); - rtw_write8(Adapter, 0xa24, CCKSwingTable_Ch1423A[CCK_index][2]); - rtw_write8(Adapter, 0xa25, CCKSwingTable_Ch1423A[CCK_index][3]); - rtw_write8(Adapter, 0xa26, CCKSwingTable_Ch1423A[CCK_index][4]); - rtw_write8(Adapter, 0xa27, CCKSwingTable_Ch1423A[CCK_index][5]); - rtw_write8(Adapter, 0xa28, CCKSwingTable_Ch1423A[CCK_index][6]); - rtw_write8(Adapter, 0xa29, CCKSwingTable_Ch1423A[CCK_index][7]); + rtl8723au_write8(Adapter, 0xa22, CCKSwingTable_Ch1423A[CCK_index][0]); + rtl8723au_write8(Adapter, 0xa23, CCKSwingTable_Ch1423A[CCK_index][1]); + rtl8723au_write8(Adapter, 0xa24, CCKSwingTable_Ch1423A[CCK_index][2]); + rtl8723au_write8(Adapter, 0xa25, CCKSwingTable_Ch1423A[CCK_index][3]); + rtl8723au_write8(Adapter, 0xa26, CCKSwingTable_Ch1423A[CCK_index][4]); + rtl8723au_write8(Adapter, 0xa27, CCKSwingTable_Ch1423A[CCK_index][5]); + rtl8723au_write8(Adapter, 0xa28, CCKSwingTable_Ch1423A[CCK_index][6]); + rtl8723au_write8(Adapter, 0xa29, CCKSwingTable_Ch1423A[CCK_index][7]); } if (is2T) { @@ -308,14 +315,25 @@ odm_TXPowerTrackingCallback_ThermalMeter_92C( PHY_SetBBReg(Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, value32); value32 = ((X * ele_D)>>7)&0x01; - PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT27, value32); + PHY_SetBBReg(Adapter, + rOFDM0_ECCAThreshold, + BIT(27), value32); value32 = ((Y * ele_D)>>7)&0x01; - PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT25, value32); + PHY_SetBBReg(Adapter, + rOFDM0_ECCAThreshold, + BIT(25), value32); } else { - PHY_SetBBReg(Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, OFDMSwingTable23A[OFDM_index[1]]); - PHY_SetBBReg(Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, 0x00); - PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT27|BIT25, 0x00); + PHY_SetBBReg(Adapter, + rOFDM0_XBTxIQImbalance, + bMaskDWord, + OFDMSwingTable23A[OFDM_index[1]]); + PHY_SetBBReg(Adapter, + rOFDM0_XDTxAFE, + bMaskH4Bits, 0x00); + PHY_SetBBReg(Adapter, + rOFDM0_ECCAThreshold, + BIT(27) | BIT(25), 0x00); } } @@ -410,14 +428,14 @@ static u8 _PHY_PathA_IQK(struct rtw_adapter *pAdapter, bool configPathB) regE9C = PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_A, bMaskDWord); regEA4 = PHY_QueryBBReg(pAdapter, rRx_Power_Before_IQK_A_2, bMaskDWord); - if (!(regEAC & BIT28) && + if (!(regEAC & BIT(28)) && (((regE94 & 0x03FF0000)>>16) != 0x142) && (((regE9C & 0x03FF0000)>>16) != 0x42)) result |= 0x01; else /* if Tx not OK, ignore Rx */ return result; - if (!(regEAC & BIT27) && /* if Tx is OK, check whether Rx is OK */ + if (!(regEAC & BIT(27)) && /* if Tx is OK, check whether Rx is OK */ (((regEA4 & 0x03FF0000)>>16) != 0x132) && (((regEAC & 0x03FF0000)>>16) != 0x36)) result |= 0x02; @@ -445,14 +463,14 @@ static u8 _PHY_PathB_IQK(struct rtw_adapter *pAdapter) regEC4 = PHY_QueryBBReg(pAdapter, rRx_Power_Before_IQK_B_2, bMaskDWord); regECC = PHY_QueryBBReg(pAdapter, rRx_Power_After_IQK_B_2, bMaskDWord); - if (!(regEAC & BIT31) && + if (!(regEAC & BIT(31)) && (((regEB4 & 0x03FF0000)>>16) != 0x142) && (((regEBC & 0x03FF0000)>>16) != 0x42)) result |= 0x01; else return result; - if (!(regEAC & BIT30) && + if (!(regEAC & BIT(30)) && (((regEC4 & 0x03FF0000)>>16) != 0x132) && (((regECC & 0x03FF0000)>>16) != 0x36)) result |= 0x02; @@ -564,9 +582,9 @@ static void _PHY_SaveMACRegisters(struct rtw_adapter *pAdapter, u32 *MACReg, u32 u32 i; for (i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++) { - MACBackup[i] = rtw_read8(pAdapter, MACReg[i]); + MACBackup[i] = rtl8723au_read8(pAdapter, MACReg[i]); } - MACBackup[i] = rtw_read32(pAdapter, MACReg[i]); + MACBackup[i] = rtl8723au_read32(pAdapter, MACReg[i]); } static void _PHY_ReloadADDARegisters(struct rtw_adapter *pAdapter, u32 *ADDAReg, u32 *ADDABackup, u32 RegiesterNum) @@ -582,10 +600,10 @@ static void _PHY_ReloadMACRegisters(struct rtw_adapter *pAdapter, u32 *MACReg, u { u32 i; - for (i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++) { - rtw_write8(pAdapter, MACReg[i], (u8)MACBackup[i]); - } - rtw_write32(pAdapter, MACReg[i], MACBackup[i]); + for (i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++) + rtl8723au_write8(pAdapter, MACReg[i], (u8)MACBackup[i]); + + rtl8723au_write32(pAdapter, MACReg[i], MACBackup[i]); } static void _PHY_PathADDAOn(struct rtw_adapter *pAdapter, u32 *ADDAReg, bool isPathAOn, bool is2T) @@ -609,12 +627,13 @@ static void _PHY_MACSettingCalibration(struct rtw_adapter *pAdapter, u32 *MACReg { u32 i = 0; - rtw_write8(pAdapter, MACReg[i], 0x3F); + rtl8723au_write8(pAdapter, MACReg[i], 0x3F); for (i = 1 ; i < (IQK_MAC_REG_NUM - 1); i++) { - rtw_write8(pAdapter, MACReg[i], (u8)(MACBackup[i]&(~BIT3))); + rtl8723au_write8(pAdapter, MACReg[i], + (u8)(MACBackup[i] & ~BIT(3))); } - rtw_write8(pAdapter, MACReg[i], (u8)(MACBackup[i]&(~BIT5))); + rtl8723au_write8(pAdapter, MACReg[i], (u8)(MACBackup[i] & ~BIT(5))); } static void _PHY_PathAStandBy(struct rtw_adapter *pAdapter) @@ -737,21 +756,23 @@ static void _PHY_IQCalibrate(struct rtw_adapter *pAdapter, int result[][8], u8 t _PHY_PathADDAOn(pAdapter, ADDA_REG, true, is2T); if (t == 0) - pdmpriv->bRfPiEnable = (u8)PHY_QueryBBReg(pAdapter, rFPGA0_XA_HSSIParameter1, BIT(8)); + pdmpriv->bRfPiEnable = (u8) + PHY_QueryBBReg(pAdapter, rFPGA0_XA_HSSIParameter1, + BIT(8)); if (!pdmpriv->bRfPiEnable) { /* Switch BB to PI mode to do IQ Calibration. */ _PHY_PIModeSwitch(pAdapter, true); } - PHY_SetBBReg(pAdapter, rFPGA0_RFMOD, BIT24, 0x00); + PHY_SetBBReg(pAdapter, rFPGA0_RFMOD, BIT(24), 0x00); PHY_SetBBReg(pAdapter, rOFDM0_TRxPathEnable, bMaskDWord, 0x03a05600); PHY_SetBBReg(pAdapter, rOFDM0_TRMuxPar, bMaskDWord, 0x000800e4); PHY_SetBBReg(pAdapter, rFPGA0_XCD_RFInterfaceSW, bMaskDWord, 0x22204000); - PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT10, 0x01); - PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT26, 0x01); - PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, BIT10, 0x00); - PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT10, 0x00); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT(10), 0x01); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT(26), 0x01); + PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, BIT(10), 0x00); + PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT(10), 0x00); if (is2T) { PHY_SetBBReg(pAdapter, rFPGA0_XA_LSSIParameter, bMaskDWord, 0x00010000); @@ -859,12 +880,17 @@ static void _PHY_LCCalibrate(struct rtw_adapter *pAdapter, bool is2T) u32 RF_Amode = 0, RF_Bmode = 0, LC_Cal; /* Check continuous TX and Packet TX */ - tmpReg = rtw_read8(pAdapter, 0xd03); + tmpReg = rtl8723au_read8(pAdapter, 0xd03); - if ((tmpReg&0x70) != 0) /* Deal with contisuous TX case */ - rtw_write8(pAdapter, 0xd03, tmpReg&0x8F); /* disable all continuous TX */ - else /* Deal with Packet TX case */ - rtw_write8(pAdapter, REG_TXPAUSE, 0xFF); /* block all queues */ + if ((tmpReg&0x70) != 0) { + /* Deal with contisuous TX case */ + /* disable all continuous TX */ + rtl8723au_write8(pAdapter, 0xd03, tmpReg&0x8F); + } else { + /* Deal with Packet TX case */ + /* block all queues */ + rtl8723au_write8(pAdapter, REG_TXPAUSE, 0xFF); + } if ((tmpReg&0x70) != 0) { /* 1. Read original RF mode */ @@ -895,15 +921,14 @@ static void _PHY_LCCalibrate(struct rtw_adapter *pAdapter, bool is2T) /* Restore original situation */ if ((tmpReg&0x70) != 0) { /* Deal with contuous TX case */ /* Path-A */ - rtw_write8(pAdapter, 0xd03, tmpReg); + rtl8723au_write8(pAdapter, 0xd03, tmpReg); PHY_SetRFReg(pAdapter, RF_PATH_A, RF_AC, bMask12Bits, RF_Amode); /* Path-B */ if (is2T) PHY_SetRFReg(pAdapter, RF_PATH_B, RF_AC, bMask12Bits, RF_Bmode); - } else { /* Deal with Packet TX case */ - rtw_write8(pAdapter, REG_TXPAUSE, 0x00); - } + } else /* Deal with Packet TX case */ + rtl8723au_write8(pAdapter, REG_TXPAUSE, 0x00); } /* Analog Pre-distortion calibration */ diff --git a/drivers/staging/rtl8723au/hal/HalPwrSeqCmd.c b/drivers/staging/rtl8723au/hal/HalPwrSeqCmd.c index 4f6b4b72f922..1da4eece6f9a 100644 --- a/drivers/staging/rtl8723au/hal/HalPwrSeqCmd.c +++ b/drivers/staging/rtl8723au/hal/HalPwrSeqCmd.c @@ -30,6 +30,7 @@ Major Change History: --*/ #include <HalPwrSeqCmd.h> +#include <usb_ops_linux.h> /* */ /* Description: */ @@ -89,14 +90,14 @@ u8 HalPwrSeqCmdParsing23a(struct rtw_adapter *padapter, u8 CutVersion, offset = GET_PWR_CFG_OFFSET(PwrCfgCmd); /* Read the value from system register */ - value = rtw_read8(padapter, offset); + value = rtl8723au_read8(padapter, offset); value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd)); value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd)); /* Write the value back to sytem register */ - rtw_write8(padapter, offset, value); + rtl8723au_write8(padapter, offset, value); break; case PWR_CMD_POLLING: @@ -107,7 +108,8 @@ u8 HalPwrSeqCmdParsing23a(struct rtw_adapter *padapter, u8 CutVersion, bPollingBit = false; offset = GET_PWR_CFG_OFFSET(PwrCfgCmd); do { - value = rtw_read8(padapter, offset); + value = rtl8723au_read8(padapter, + offset); value &= GET_PWR_CFG_MASK(PwrCfgCmd); if (value == diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c index 0640f3522136..9fba04945152 100644 --- a/drivers/staging/rtl8723au/hal/hal_com.c +++ b/drivers/staging/rtl8723au/hal/hal_com.c @@ -18,6 +18,7 @@ #include <hal_intf.h> #include <hal_com.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> #define _HAL_INIT_C_ @@ -222,10 +223,10 @@ void HalSetBrateCfg23a(struct rtw_adapter *padapter, u8 *mBratesOS) DBG_8723A("HW_VAR_BASIC_RATE: BrateCfg(%#x)\n", brate_cfg); /* Set RRSR rate table. */ - rtw_write8(padapter, REG_RRSR, brate_cfg & 0xff); - rtw_write8(padapter, REG_RRSR + 1, (brate_cfg >> 8) & 0xff); - rtw_write8(padapter, REG_RRSR + 2, - rtw_read8(padapter, REG_RRSR + 2) & 0xf0); + rtl8723au_write8(padapter, REG_RRSR, brate_cfg & 0xff); + rtl8723au_write8(padapter, REG_RRSR + 1, (brate_cfg >> 8) & 0xff); + rtl8723au_write8(padapter, REG_RRSR + 2, + rtl8723au_read8(padapter, REG_RRSR + 2) & 0xf0); rate_index = 0; /* Set RTS initial rate */ @@ -234,7 +235,7 @@ void HalSetBrateCfg23a(struct rtw_adapter *padapter, u8 *mBratesOS) rate_index++; } /* Ziv - Check */ - rtw_write8(padapter, REG_INIRTS_RATE_SEL, rate_index); + rtl8723au_write8(padapter, REG_INIRTS_RATE_SEL, rate_index); return; } @@ -344,12 +345,6 @@ bool Hal_MappingOutPipe23a(struct rtw_adapter *pAdapter, u8 NumOutPipe) return result; } -void hal_init_macaddr23a(struct rtw_adapter *adapter) -{ - rtw_hal_set_hwreg23a(adapter, HW_VAR_MAC_ADDR, - adapter->eeprompriv.mac_addr); -} - /* * C2H event format: * Field TRIGGER CONTENT CMD_SEQ CMD_LEN CMD_ID @@ -358,12 +353,12 @@ void hal_init_macaddr23a(struct rtw_adapter *adapter) void c2h_evt_clear23a(struct rtw_adapter *adapter) { - rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE); + rtl8723au_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE); } -s32 c2h_evt_read23a(struct rtw_adapter *adapter, u8 *buf) +int c2h_evt_read23a(struct rtw_adapter *adapter, u8 *buf) { - s32 ret = _FAIL; + int ret = _FAIL; struct c2h_evt_hdr *c2h_evt; int i; u8 trigger; @@ -371,7 +366,7 @@ s32 c2h_evt_read23a(struct rtw_adapter *adapter, u8 *buf) if (buf == NULL) goto exit; - trigger = rtw_read8(adapter, REG_C2HEVT_CLEAR); + trigger = rtl8723au_read8(adapter, REG_C2HEVT_CLEAR); if (trigger == C2H_EVT_HOST_CLOSE) goto exit; /* Not ready */ @@ -382,8 +377,8 @@ s32 c2h_evt_read23a(struct rtw_adapter *adapter, u8 *buf) memset(c2h_evt, 0, 16); - *buf = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL); - *(buf + 1) = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1); + *buf = rtl8723au_read8(adapter, REG_C2HEVT_MSG_NORMAL); + *(buf + 1) = rtl8723au_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1); RT_PRINT_DATA(_module_hal_init_c_, _drv_info_, "c2h_evt_read23a(): ", &c2h_evt, sizeof(c2h_evt)); @@ -396,7 +391,7 @@ s32 c2h_evt_read23a(struct rtw_adapter *adapter, u8 *buf) /* Read the content */ for (i = 0; i < c2h_evt->plen; i++) - c2h_evt->payload[i] = rtw_read8(adapter, + c2h_evt->payload[i] = rtl8723au_read8(adapter, REG_C2HEVT_MSG_NORMAL + sizeof(*c2h_evt) + i); @@ -424,15 +419,14 @@ rtl8723a_set_ampdu_min_space(struct rtw_adapter *padapter, u8 MinSpacingToSet) if (MinSpacingToSet <= 7) { switch (padapter->securitypriv.dot11PrivacyAlgrthm) { - case _NO_PRIVACY_: - case _AES_: + case 0: + case WLAN_CIPHER_SUITE_CCMP: SecMinSpace = 0; break; - case _WEP40_: - case _WEP104_: - case _TKIP_: - case _TKIP_WTMIC_: + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: + case WLAN_CIPHER_SUITE_TKIP: SecMinSpace = 6; break; default: @@ -447,9 +441,9 @@ rtl8723a_set_ampdu_min_space(struct rtw_adapter *padapter, u8 MinSpacingToSet) ("Set HW_VAR_AMPDU_MIN_SPACE: %#x\n", padapter->MgntInfo.MinSpaceCfg)); */ MinSpacingToSet |= - rtw_read8(padapter, REG_AMPDU_MIN_SPACE) & 0xf8; - rtw_write8(padapter, REG_AMPDU_MIN_SPACE, - MinSpacingToSet); + rtl8723au_read8(padapter, REG_AMPDU_MIN_SPACE) & 0xf8; + rtl8723au_write8(padapter, REG_AMPDU_MIN_SPACE, + MinSpacingToSet); } } @@ -461,15 +455,12 @@ void rtl8723a_set_ampdu_factor(struct rtw_adapter *padapter, u8 FactorToSet) u8 index = 0; pRegToSet = RegToSet_Normal; /* 0xb972a841; */ -#ifdef CONFIG_8723AU_BT_COEXIST - if ((BT_IsBtDisabled(padapter) == false) && - (BT_1Ant(padapter) == true)) { + + if (rtl8723a_BT_enabled(padapter) && + rtl8723a_BT_using_antenna_1(padapter)) MaxAggNum = 0x8; - } else -#endif /* CONFIG_8723AU_BT_COEXIST */ - { + else MaxAggNum = 0xF; - } if (FactorToSet <= 3) { FactorToSet = (1 << (FactorToSet + 2)); @@ -485,8 +476,8 @@ void rtl8723a_set_ampdu_factor(struct rtw_adapter *padapter, u8 FactorToSet) pRegToSet[index] = (pRegToSet[index] & 0xf0) | FactorToSet; - rtw_write8(padapter, REG_AGGLEN_LMT + index, - pRegToSet[index]); + rtl8723au_write8(padapter, REG_AGGLEN_LMT + index, + pRegToSet[index]); } /* RT_TRACE(COMP_MLME, DBG_LOUD, @@ -512,25 +503,25 @@ void rtl8723a_set_acm_ctrl(struct rtw_adapter *padapter, u8 ctrl) } DBG_8723A("[HW_VAR_ACM_CTRL] Write 0x%02X\n", hwctrl); - rtw_write8(padapter, REG_ACMHWCTRL, hwctrl); + rtl8723au_write8(padapter, REG_ACMHWCTRL, hwctrl); } void rtl8723a_set_media_status(struct rtw_adapter *padapter, u8 status) { u8 val8; - val8 = rtw_read8(padapter, MSR) & 0x0c; + val8 = rtl8723au_read8(padapter, MSR) & 0x0c; val8 |= status; - rtw_write8(padapter, MSR, val8); + rtl8723au_write8(padapter, MSR, val8); } void rtl8723a_set_media_status1(struct rtw_adapter *padapter, u8 status) { u8 val8; - val8 = rtw_read8(padapter, MSR) & 0x03; + val8 = rtl8723au_read8(padapter, MSR) & 0x03; val8 |= status << 2; - rtw_write8(padapter, MSR, val8); + rtl8723au_write8(padapter, MSR, val8); } void rtl8723a_set_bcn_func(struct rtw_adapter *padapter, u8 val) @@ -544,12 +535,12 @@ void rtl8723a_set_bcn_func(struct rtw_adapter *padapter, u8 val) void rtl8723a_check_bssid(struct rtw_adapter *padapter, u8 val) { u32 val32; - val32 = rtw_read32(padapter, REG_RCR); + val32 = rtl8723au_read32(padapter, REG_RCR); if (val) val32 |= RCR_CBSSID_DATA | RCR_CBSSID_BCN; else val32 &= ~(RCR_CBSSID_DATA | RCR_CBSSID_BCN); - rtw_write32(padapter, REG_RCR, val32); + rtl8723au_write32(padapter, REG_RCR, val32); } void rtl8723a_mlme_sitesurvey(struct rtw_adapter *padapter, u8 flag) @@ -559,11 +550,11 @@ void rtl8723a_mlme_sitesurvey(struct rtw_adapter *padapter, u8 flag) /* config RCR to receive different BSSID & not to receive data frame */ - v32 = rtw_read32(padapter, REG_RCR); + v32 = rtl8723au_read32(padapter, REG_RCR); v32 &= ~(RCR_CBSSID_BCN); - rtw_write32(padapter, REG_RCR, v32); + rtl8723au_write32(padapter, REG_RCR, v32); /* reject all data frame */ - rtw_write16(padapter, REG_RXFLTMAP2, 0); + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0); /* disable update TSF */ SetBcnCtrlReg23a(padapter, DIS_TSF_UDT, 0); @@ -579,35 +570,34 @@ void rtl8723a_mlme_sitesurvey(struct rtw_adapter *padapter, u8 flag) ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) { /* enable to rx data frame */ - rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF); + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0xFFFF); /* enable update TSF */ SetBcnCtrlReg23a(padapter, 0, DIS_TSF_UDT); } - v32 = rtw_read32(padapter, REG_RCR); + v32 = rtl8723au_read32(padapter, REG_RCR); v32 |= RCR_CBSSID_BCN; - rtw_write32(padapter, REG_RCR, v32); + rtl8723au_write32(padapter, REG_RCR, v32); } -#ifdef CONFIG_8723AU_BT_COEXIST - BT_WifiScanNotify(padapter, flag ? true : false); -#endif + rtl8723a_BT_wifiscan_notify(padapter, flag ? true : false); } void rtl8723a_on_rcr_am(struct rtw_adapter *padapter) { - rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR) | RCR_AM); - DBG_8723A("%s, %d, RCR = %x \n", __FUNCTION__, __LINE__, - rtw_read32(padapter, REG_RCR)); + rtl8723au_write32(padapter, REG_RCR, + rtl8723au_read32(padapter, REG_RCR) | RCR_AM); + DBG_8723A("%s, %d, RCR = %x \n", __func__, __LINE__, + rtl8723au_read32(padapter, REG_RCR)); } void rtl8723a_off_rcr_am(struct rtw_adapter *padapter) { - rtw_write32(padapter, REG_RCR, - rtw_read32(padapter, REG_RCR) & (~RCR_AM)); - DBG_8723A("%s, %d, RCR = %x \n", __FUNCTION__, __LINE__, - rtw_read32(padapter, REG_RCR)); + rtl8723au_write32(padapter, REG_RCR, + rtl8723au_read32(padapter, REG_RCR) & (~RCR_AM)); + DBG_8723A("%s, %d, RCR = %x \n", __func__, __LINE__, + rtl8723au_read32(padapter, REG_RCR)); } void rtl8723a_set_slot_time(struct rtw_adapter *padapter, u8 slottime) @@ -616,7 +606,7 @@ void rtl8723a_set_slot_time(struct rtw_adapter *padapter, u8 slottime) struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; - rtw_write8(padapter, REG_SLOT, slottime); + rtl8723au_write8(padapter, REG_SLOT, slottime); if (pmlmeinfo->WMM_enable == 0) { if (pmlmeext->cur_wireless_mode == WIRELESS_11B) @@ -627,10 +617,10 @@ void rtl8723a_set_slot_time(struct rtw_adapter *padapter, u8 slottime) u1bAIFS = aSifsTime + (2 * pmlmeinfo->slotTime); /* <Roger_EXP> Temporary removed, 2008.06.20. */ - rtw_write8(padapter, REG_EDCA_VO_PARAM, u1bAIFS); - rtw_write8(padapter, REG_EDCA_VI_PARAM, u1bAIFS); - rtw_write8(padapter, REG_EDCA_BE_PARAM, u1bAIFS); - rtw_write8(padapter, REG_EDCA_BK_PARAM, u1bAIFS); + rtl8723au_write8(padapter, REG_EDCA_VO_PARAM, u1bAIFS); + rtl8723au_write8(padapter, REG_EDCA_VI_PARAM, u1bAIFS); + rtl8723au_write8(padapter, REG_EDCA_BE_PARAM, u1bAIFS); + rtl8723au_write8(padapter, REG_EDCA_BK_PARAM, u1bAIFS); } } @@ -645,12 +635,12 @@ void rtl8723a_ack_preamble(struct rtw_adapter *padapter, u8 bShortPreamble) /* regTmp = 0; */ if (bShortPreamble) regTmp |= 0x80; - rtw_write8(padapter, REG_RRSR + 2, regTmp); + rtl8723au_write8(padapter, REG_RRSR + 2, regTmp); } void rtl8723a_set_sec_cfg(struct rtw_adapter *padapter, u8 sec) { - rtw_write8(padapter, REG_SECCFG, sec); + rtl8723au_write8(padapter, REG_SECCFG, sec); } void rtl8723a_cam_empty_entry(struct rtw_adapter *padapter, u8 ucIndex) @@ -674,29 +664,54 @@ void rtl8723a_cam_empty_entry(struct rtw_adapter *padapter, u8 ucIndex) ulCommand = ulCommand | CAM_POLLINIG | CAM_WRITE; /* write content 0 is equall to mark invalid */ /* delay_ms(40); */ - rtw_write32(padapter, WCAMI, ulContent); + rtl8723au_write32(padapter, WCAMI, ulContent); /* RT_TRACE(COMP_SEC, DBG_LOUD, - ("CAM_empty_entry23a(): WRITE A4: %lx \n", ulContent));*/ + ("rtl8723a_cam_empty_entry(): WRITE A4: %lx \n", + ulContent));*/ /* delay_ms(40); */ - rtw_write32(padapter, RWCAM, ulCommand); + rtl8723au_write32(padapter, RWCAM, ulCommand); /* RT_TRACE(COMP_SEC, DBG_LOUD, - ("CAM_empty_entry23a(): WRITE A0: %lx \n", ulCommand));*/ + ("rtl8723a_cam_empty_entry(): WRITE A0: %lx \n", + ulCommand));*/ } } void rtl8723a_cam_invalid_all(struct rtw_adapter *padapter) { - rtw_write32(padapter, RWCAM, BIT(31) | BIT(30)); + rtl8723au_write32(padapter, RWCAM, BIT(31) | BIT(30)); } -void rtl8723a_cam_write(struct rtw_adapter *padapter, u32 val1, u32 val2) +void rtl8723a_cam_write(struct rtw_adapter *padapter, + u8 entry, u16 ctrl, const u8 *mac, const u8 *key) { u32 cmd; + unsigned int i, val, addr; + int j; + + addr = entry << 3; + + for (j = 5; j >= 0; j--) { + switch (j) { + case 0: + val = ctrl | (mac[0] << 16) | (mac[1] << 24); + break; + case 1: + val = mac[2] | (mac[3] << 8) | + (mac[4] << 16) | (mac[5] << 24); + break; + default: + i = (j - 2) << 2; + val = key[i] | (key[i+1] << 8) | + (key[i+2] << 16) | (key[i+3] << 24); + break; + } - rtw_write32(padapter, WCAMI, val1); + rtl8723au_write32(padapter, WCAMI, val); + cmd = CAM_POLLINIG | CAM_WRITE | (addr + j); + rtl8723au_write32(padapter, RWCAM, cmd); - cmd = CAM_POLLINIG | CAM_WRITE | val2; - rtw_write32(padapter, RWCAM, cmd); + /* DBG_8723A("%s => cam write: %x, %x\n", __func__, cmd, val);*/ + } } void rtl8723a_fifo_cleanup(struct rtw_adapter *padapter) @@ -708,20 +723,21 @@ void rtl8723a_fifo_cleanup(struct rtw_adapter *padapter) u8 trycnt = 100; /* pause tx */ - rtw_write8(padapter, REG_TXPAUSE, 0xff); + rtl8723au_write8(padapter, REG_TXPAUSE, 0xff); /* keep sn */ - padapter->xmitpriv.nqos_ssn = rtw_read16(padapter, REG_NQOS_SEQ); + padapter->xmitpriv.nqos_ssn = rtl8723au_read16(padapter, REG_NQOS_SEQ); if (pwrpriv->bkeepfwalive != true) { u32 v32; /* RX DMA stop */ - v32 = rtw_read32(padapter, REG_RXPKT_NUM); + v32 = rtl8723au_read32(padapter, REG_RXPKT_NUM); v32 |= RW_RELEASE_EN; - rtw_write32(padapter, REG_RXPKT_NUM, v32); + rtl8723au_write32(padapter, REG_RXPKT_NUM, v32); do { - v32 = rtw_read32(padapter, REG_RXPKT_NUM) & RXDMA_IDLE; + v32 = rtl8723au_read32(padapter, + REG_RXPKT_NUM) & RXDMA_IDLE; if (!v32) break; } while (trycnt--); @@ -730,36 +746,32 @@ void rtl8723a_fifo_cleanup(struct rtw_adapter *padapter) } /* RQPN Load 0 */ - rtw_write16(padapter, REG_RQPN_NPQ, 0); - rtw_write32(padapter, REG_RQPN, 0x80000000); + rtl8723au_write16(padapter, REG_RQPN_NPQ, 0); + rtl8723au_write32(padapter, REG_RQPN, 0x80000000); mdelay(10); } } -void rtl8723a_set_apfm_on_mac(struct rtw_adapter *padapter, u8 val) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - pHalData->bMacPwrCtrlOn = val; - DBG_8723A("%s: bMacPwrCtrlOn =%d\n", __func__, pHalData->bMacPwrCtrlOn); -} - void rtl8723a_bcn_valid(struct rtw_adapter *padapter) { /* BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2, write 1 to clear, Clear by sw */ - rtw_write8(padapter, REG_TDECTRL + 2, - rtw_read8(padapter, REG_TDECTRL + 2) | BIT0); + rtl8723au_write8(padapter, REG_TDECTRL + 2, + rtl8723au_read8(padapter, REG_TDECTRL + 2) | BIT(0)); } -void rtl8723a_set_tx_pause(struct rtw_adapter *padapter, u8 pause) +bool rtl8723a_get_bcn_valid(struct rtw_adapter *padapter) { - rtw_write8(padapter, REG_TXPAUSE, pause); + bool retval; + + retval = (rtl8723au_read8(padapter, REG_TDECTRL + 2) & BIT(0)) ? true : false; + + return retval; } void rtl8723a_set_beacon_interval(struct rtw_adapter *padapter, u16 interval) { - rtw_write16(padapter, REG_BCN_INTERVAL, interval); + rtl8723au_write16(padapter, REG_BCN_INTERVAL, interval); } void rtl8723a_set_resp_sifs(struct rtw_adapter *padapter, @@ -768,24 +780,24 @@ void rtl8723a_set_resp_sifs(struct rtw_adapter *padapter, /* SIFS_Timer = 0x0a0a0808; */ /* RESP_SIFS for CCK */ /* SIFS_T2T_CCK (0x08) */ - rtw_write8(padapter, REG_R2T_SIFS, r2t1); + rtl8723au_write8(padapter, REG_R2T_SIFS, r2t1); /* SIFS_R2T_CCK(0x08) */ - rtw_write8(padapter, REG_R2T_SIFS + 1, r2t2); + rtl8723au_write8(padapter, REG_R2T_SIFS + 1, r2t2); /* RESP_SIFS for OFDM */ /* SIFS_T2T_OFDM (0x0a) */ - rtw_write8(padapter, REG_T2T_SIFS, t2t1); + rtl8723au_write8(padapter, REG_T2T_SIFS, t2t1); /* SIFS_R2T_OFDM(0x0a) */ - rtw_write8(padapter, REG_T2T_SIFS + 1, t2t2); + rtl8723au_write8(padapter, REG_T2T_SIFS + 1, t2t2); } void rtl8723a_set_ac_param_vo(struct rtw_adapter *padapter, u32 vo) { - rtw_write32(padapter, REG_EDCA_VO_PARAM, vo); + rtl8723au_write32(padapter, REG_EDCA_VO_PARAM, vo); } void rtl8723a_set_ac_param_vi(struct rtw_adapter *padapter, u32 vi) { - rtw_write32(padapter, REG_EDCA_VI_PARAM, vi); + rtl8723au_write32(padapter, REG_EDCA_VI_PARAM, vi); } void rtl8723a_set_ac_param_be(struct rtw_adapter *padapter, u32 be) @@ -793,17 +805,17 @@ void rtl8723a_set_ac_param_be(struct rtw_adapter *padapter, u32 be) struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); pHalData->AcParam_BE = be; - rtw_write32(padapter, REG_EDCA_BE_PARAM, be); + rtl8723au_write32(padapter, REG_EDCA_BE_PARAM, be); } void rtl8723a_set_ac_param_bk(struct rtw_adapter *padapter, u32 bk) { - rtw_write32(padapter, REG_EDCA_BK_PARAM, bk); + rtl8723au_write32(padapter, REG_EDCA_BK_PARAM, bk); } void rtl8723a_set_rxdma_agg_pg_th(struct rtw_adapter *padapter, u8 val) { - rtw_write8(padapter, REG_RXDMA_AGG_PG_TH, val); + rtl8723au_write8(padapter, REG_RXDMA_AGG_PG_TH, val); } void rtl8723a_set_nav_upper(struct rtw_adapter *padapter, u32 usNavUpper) @@ -821,7 +833,7 @@ void rtl8723a_set_nav_upper(struct rtw_adapter *padapter, u32 usNavUpper) /* is getting the upper integer. */ usNavUpper = (usNavUpper + HAL_8723A_NAV_UPPER_UNIT - 1) / HAL_8723A_NAV_UPPER_UNIT; - rtw_write8(padapter, REG_NAV_UPPER, (u8) usNavUpper); + rtl8723au_write8(padapter, REG_NAV_UPPER, (u8) usNavUpper); } void rtl8723a_set_initial_gain(struct rtw_adapter *padapter, u32 rx_gain) @@ -837,23 +849,18 @@ void rtl8723a_set_initial_gain(struct rtw_adapter *padapter, u32 rx_gain) } } -void rtl8723a_odm_support_ability_write(struct rtw_adapter *padapter, u32 val) +void rtl8723a_odm_support_ability_restore(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - pHalData->odmpriv.SupportAbility = val; + pHalData->odmpriv.SupportAbility = pHalData->odmpriv.BK_SupportAbility; } -void rtl8723a_odm_support_ability_backup(struct rtw_adapter *padapter, u8 val) +void rtl8723a_odm_support_ability_backup(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - if (val) /* save dm flag */ - pHalData->odmpriv.BK_SupportAbility = - pHalData->odmpriv.SupportAbility; - else /* restore dm flag */ - pHalData->odmpriv.SupportAbility = - pHalData->odmpriv.BK_SupportAbility; + pHalData->odmpriv.BK_SupportAbility = pHalData->odmpriv.SupportAbility; } void rtl8723a_odm_support_ability_set(struct rtw_adapter *padapter, u32 val) @@ -877,5 +884,44 @@ void rtl8723a_odm_support_ability_clr(struct rtw_adapter *padapter, u32 val) void rtl8723a_set_rpwm(struct rtw_adapter *padapter, u8 val) { - rtw_write8(padapter, REG_USB_HRPWM, val); + rtl8723au_write8(padapter, REG_USB_HRPWM, val); +} + +u8 rtl8723a_get_rf_type(struct rtw_adapter *padapter) +{ + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); + + return pHalData->rf_type; +} + +bool rtl8723a_get_fwlps_rf_on(struct rtw_adapter *padapter) +{ + bool retval; + u32 valRCR; + + /* When we halt NIC, we should check if FW LPS is leave. */ + + if ((padapter->bSurpriseRemoved == true) || + (padapter->pwrctrlpriv.rf_pwrstate == rf_off)) { + /* If it is in HW/SW Radio OFF or IPS state, we do + not check Fw LPS Leave, because Fw is unload. */ + retval = true; + } else { + valRCR = rtl8723au_read32(padapter, REG_RCR); + if (valRCR & 0x00070000) + retval = false; + else + retval = true; + } + + return retval; +} + +bool rtl8723a_chk_hi_queue_empty(struct rtw_adapter *padapter) +{ + u32 hgq; + + hgq = rtl8723au_read32(padapter, REG_HGQ_INFORMATION); + + return ((hgq & 0x0000ff00) == 0) ? true : false; } diff --git a/drivers/staging/rtl8723au/hal/hal_intf.c b/drivers/staging/rtl8723au/hal/hal_intf.c index de3608b4010a..5383e692546f 100644 --- a/drivers/staging/rtl8723au/hal/hal_intf.c +++ b/drivers/staging/rtl8723au/hal/hal_intf.c @@ -19,232 +19,7 @@ #include <hal_intf.h> -#include <usb_hal.h> - -void rtw_hal_chip_configure23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.intf_chip_configure) - padapter->HalFunc.intf_chip_configure(padapter); -} - -void rtw_hal_read_chip_info23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.read_adapter_info) - padapter->HalFunc.read_adapter_info(padapter); -} - -void rtw_hal_read_chip_version23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.read_chip_version) - padapter->HalFunc.read_chip_version(padapter); -} - -void rtw_hal_def_value_init23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.init_default_value) - padapter->HalFunc.init_default_value(padapter); -} -void rtw_hal_free_data23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.free_hal_data) - padapter->HalFunc.free_hal_data(padapter); -} -void rtw_hal_dm_init23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.dm_init) - padapter->HalFunc.dm_init(padapter); -} -void rtw_hal_dm_deinit23a(struct rtw_adapter *padapter) -{ - /* cancel dm timer */ - if (padapter->HalFunc.dm_deinit) - padapter->HalFunc.dm_deinit(padapter); -} -void rtw_hal_sw_led_init23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.InitSwLeds) - padapter->HalFunc.InitSwLeds(padapter); -} - -void rtw_hal_sw_led_deinit23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.DeInitSwLeds) - padapter->HalFunc.DeInitSwLeds(padapter); -} - -u32 rtw_hal_power_on23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.hal_power_on) - return padapter->HalFunc.hal_power_on(padapter); - return _FAIL; -} - -uint rtw_hal_init23a(struct rtw_adapter *padapter) -{ - uint status = _SUCCESS; - - padapter->hw_init_completed = false; - - status = padapter->HalFunc.hal_init(padapter); - - if (status == _SUCCESS) { - padapter->hw_init_completed = true; - - if (padapter->registrypriv.notch_filter == 1) - rtw_hal_notch_filter23a(padapter, 1); - - rtw_hal_reset_security_engine23a(padapter); - } else { - padapter->hw_init_completed = false; - DBG_8723A("rtw_hal_init23a: hal__init fail\n"); - } - - RT_TRACE(_module_hal_init_c_, _drv_err_, ("-rtl871x_hal_init:status = 0x%x\n", status)); - - return status; -} - -uint rtw_hal_deinit23a(struct rtw_adapter *padapter) -{ - uint status = _SUCCESS; - - status = padapter->HalFunc.hal_deinit(padapter); - - if (status == _SUCCESS) - padapter->hw_init_completed = false; - else - DBG_8723A("\n rtw_hal_deinit23a: hal_init fail\n"); - return status; -} - -void rtw_hal_set_hwreg23a(struct rtw_adapter *padapter, u8 variable, u8 *val) -{ - if (padapter->HalFunc.SetHwRegHandler) - padapter->HalFunc.SetHwRegHandler(padapter, variable, val); -} - -void rtw23a_hal_get_hwreg(struct rtw_adapter *padapter, u8 variable, u8 *val) -{ - if (padapter->HalFunc.GetHwRegHandler) - padapter->HalFunc.GetHwRegHandler(padapter, variable, val); -} - -u8 rtw_hal_set_def_var23a(struct rtw_adapter *padapter, enum hal_def_variable eVariable, void *pValue) -{ - if (padapter->HalFunc.SetHalDefVarHandler) - return padapter->HalFunc.SetHalDefVarHandler(padapter, eVariable, pValue); - return _FAIL; -} -u8 rtw_hal_get_def_var23a(struct rtw_adapter *padapter, enum hal_def_variable eVariable, void *pValue) -{ - if (padapter->HalFunc.GetHalDefVarHandler) - return padapter->HalFunc.GetHalDefVarHandler(padapter, eVariable, pValue); - return _FAIL; -} - -void rtw_hal_set_odm_var23a(struct rtw_adapter *padapter, enum hal_odm_variable eVariable, void *pValue1, bool bSet) -{ - if (padapter->HalFunc.SetHalODMVarHandler) - padapter->HalFunc.SetHalODMVarHandler(padapter, eVariable, pValue1, bSet); -} -void rtw_hal_get_odm_var23a(struct rtw_adapter *padapter, enum hal_odm_variable eVariable, void *pValue1, bool bSet) -{ - if (padapter->HalFunc.GetHalODMVarHandler) - padapter->HalFunc.GetHalODMVarHandler(padapter, eVariable, pValue1, bSet); -} - -void rtw_hal_enable_interrupt23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.enable_interrupt) - padapter->HalFunc.enable_interrupt(padapter); - else - DBG_8723A("%s: HalFunc.enable_interrupt is NULL!\n", __FUNCTION__); - -} -void rtw_hal_disable_interrupt23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.disable_interrupt) - padapter->HalFunc.disable_interrupt(padapter); - else - DBG_8723A("%s: HalFunc.disable_interrupt is NULL!\n", __FUNCTION__); - -} - -u32 rtw_hal_inirp_init23a(struct rtw_adapter *padapter) -{ - u32 rst = _FAIL; - if (padapter->HalFunc.inirp_init) - rst = padapter->HalFunc.inirp_init(padapter); - else - DBG_8723A(" %s HalFunc.inirp_init is NULL!!!\n", __FUNCTION__); - return rst; -} - -u32 rtw_hal_inirp_deinit23a(struct rtw_adapter *padapter) -{ - - if (padapter->HalFunc.inirp_deinit) - return padapter->HalFunc.inirp_deinit(padapter); - - return _FAIL; - -} - -u8 rtw_hal_intf_ps_func23a(struct rtw_adapter *padapter, enum hal_intf_ps_func efunc_id, u8 *val) -{ - if (padapter->HalFunc.interface_ps_func) - return padapter->HalFunc.interface_ps_func(padapter, efunc_id, val); - return _FAIL; -} - -s32 rtw_hal_xmit23aframe_enqueue(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe) -{ - if (padapter->HalFunc.hal_xmitframe_enqueue) - return padapter->HalFunc.hal_xmitframe_enqueue(padapter, pxmitframe); - - return false; -} - -s32 rtw_hal_xmit23a(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe) -{ - if (padapter->HalFunc.hal_xmit) - return padapter->HalFunc.hal_xmit(padapter, pxmitframe); - - return false; -} - -s32 rtw_hal_mgnt_xmit23a(struct rtw_adapter *padapter, struct xmit_frame *pmgntframe) -{ - s32 ret = _FAIL; - if (padapter->HalFunc.mgnt_xmit) - ret = padapter->HalFunc.mgnt_xmit(padapter, pmgntframe); - return ret; -} - -s32 rtw_hal_init23a_xmit_priv(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.init_xmit_priv != NULL) - return padapter->HalFunc.init_xmit_priv(padapter); - return _FAIL; -} -void rtw_hal_free_xmit_priv23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.free_xmit_priv != NULL) - padapter->HalFunc.free_xmit_priv(padapter); -} - -s32 rtw_hal_init23a_recv_priv(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.init_recv_priv) - return padapter->HalFunc.init_recv_priv(padapter); - - return _FAIL; -} -void rtw_hal_free_recv_priv23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.free_recv_priv) - padapter->HalFunc.free_recv_priv(padapter); -} +#include <rtl8723a_hal.h> void rtw_hal_update_ra_mask23a(struct sta_info *psta, u8 rssi_level) { @@ -262,159 +37,6 @@ void rtw_hal_update_ra_mask23a(struct sta_info *psta, u8 rssi_level) #ifdef CONFIG_8723AU_AP_MODE add_RATid23a(padapter, psta, rssi_level); #endif - } else { - if (padapter->HalFunc.UpdateRAMaskHandler) - padapter->HalFunc.UpdateRAMaskHandler(padapter, psta->mac_id, rssi_level); - } -} - -void rtw_hal_add_ra_tid23a(struct rtw_adapter *padapter, u32 bitmap, u8 arg, u8 rssi_level) -{ - if (padapter->HalFunc.Add_RateATid) - padapter->HalFunc.Add_RateATid(padapter, bitmap, arg, rssi_level); -} - -/* Start specifical interface thread */ -void rtw_hal_start_thread23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.run_thread) - padapter->HalFunc.run_thread(padapter); -} -/* Start specifical interface thread */ -void rtw_hal_stop_thread23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.cancel_thread) - padapter->HalFunc.cancel_thread(padapter); -} - -u32 rtw_hal_read_bbreg23a(struct rtw_adapter *padapter, u32 RegAddr, u32 BitMask) -{ - u32 data = 0; - if (padapter->HalFunc.read_bbreg) - data = padapter->HalFunc.read_bbreg(padapter, RegAddr, BitMask); - return data; -} -void rtw_hal_write_bbreg23a(struct rtw_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data) -{ - if (padapter->HalFunc.write_bbreg) - padapter->HalFunc.write_bbreg(padapter, RegAddr, BitMask, Data); -} - -u32 rtw_hal_read_rfreg23a(struct rtw_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask) -{ - u32 data = 0; - if (padapter->HalFunc.read_rfreg) - data = padapter->HalFunc.read_rfreg(padapter, eRFPath, RegAddr, BitMask); - return data; -} -void rtw_hal_write_rfreg23a(struct rtw_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data) -{ - if (padapter->HalFunc.write_rfreg) - padapter->HalFunc.write_rfreg(padapter, eRFPath, RegAddr, BitMask, Data); -} - -s32 rtw_hal_interrupt_handler23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.interrupt_handler) - return padapter->HalFunc.interrupt_handler(padapter); - return _FAIL; -} - -void rtw_hal_set_bwmode23a(struct rtw_adapter *padapter, - enum ht_channel_width Bandwidth, u8 offset) -{ - if (padapter->HalFunc.set_bwmode_handler) - padapter->HalFunc.set_bwmode_handler(padapter, Bandwidth, - offset); -} - -void rtw_hal_set_chan23a(struct rtw_adapter *padapter, u8 channel) -{ - if (padapter->HalFunc.set_channel_handler) - padapter->HalFunc.set_channel_handler(padapter, channel); -} - -void rtw_hal_dm_watchdog23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.hal_dm_watchdog) - padapter->HalFunc.hal_dm_watchdog(padapter); -} - -void rtw_hal_bcn_related_reg_setting23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.SetBeaconRelatedRegistersHandler) - padapter->HalFunc.SetBeaconRelatedRegistersHandler(padapter); -} - -void rtw_hal_sreset_init23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.sreset_init_value23a) - padapter->HalFunc.sreset_init_value23a(padapter); -} -void rtw_hal_sreset_reset23a(struct rtw_adapter *padapter) -{ - padapter = GET_PRIMARY_ADAPTER(padapter); - - if (padapter->HalFunc.silentreset) - padapter->HalFunc.silentreset(padapter); -} - -void rtw_hal_sreset_reset23a_value23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.sreset_reset_value23a) - padapter->HalFunc.sreset_reset_value23a(padapter); -} - -void rtw_hal_sreset_xmit_status_check23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.sreset_xmit_status_check) - padapter->HalFunc.sreset_xmit_status_check(padapter); -} -void rtw_hal_sreset_linked_status_check23a(struct rtw_adapter *padapter) -{ - if (padapter->HalFunc.sreset_linked_status_check) - padapter->HalFunc.sreset_linked_status_check(padapter); -} -u8 rtw_hal_sreset_get_wifi_status23a(struct rtw_adapter *padapter) -{ - u8 status = 0; - if (padapter->HalFunc.sreset_get_wifi_status23a) - status = padapter->HalFunc.sreset_get_wifi_status23a(padapter); - return status; -} - -bool rtw_hal_sreset_inprogress(struct rtw_adapter *padapter) -{ - bool inprogress = false; - - padapter = GET_PRIMARY_ADAPTER(padapter); - - if (padapter->HalFunc.sreset_inprogress) - inprogress = padapter->HalFunc.sreset_inprogress(padapter); - return inprogress; -} - -void rtw_hal_notch_filter23a(struct rtw_adapter *adapter, bool enable) -{ - if (adapter->HalFunc.hal_notch_filter) - adapter->HalFunc.hal_notch_filter(adapter, enable); -} - -void rtw_hal_reset_security_engine23a(struct rtw_adapter *adapter) -{ - if (adapter->HalFunc.hal_reset_security_engine) - adapter->HalFunc.hal_reset_security_engine(adapter); -} - -s32 rtw_hal_c2h_handler23a(struct rtw_adapter *adapter, struct c2h_evt_hdr *c2h_evt) -{ - s32 ret = _FAIL; - if (adapter->HalFunc.c2h_handler) - ret = adapter->HalFunc.c2h_handler(adapter, c2h_evt); - return ret; -} - -c2h_id_filter rtw_hal_c2h_id_filter_ccx23a(struct rtw_adapter *adapter) -{ - return adapter->HalFunc.c2h_id_filter_ccx; + } else + rtl8723a_update_ramask(padapter, psta->mac_id, rssi_level); } diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c index 584a74ed2943..e15ebfe1881b 100644 --- a/drivers/staging/rtl8723au/hal/odm.c +++ b/drivers/staging/rtl8723au/hal/odm.c @@ -14,6 +14,7 @@ ******************************************************************************/ #include "odm_precomp.h" +#include "usb_ops_linux.h" static const u16 dB_Invert_Table[8][12] = { {1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4}, @@ -199,17 +200,6 @@ void odm_RefreshRateAdaptiveMask23aAPADSL23a(struct dm_odm_t *pDM_Odm); void odm_DynamicTxPower23aInit(struct dm_odm_t *pDM_Odm); -void odm_DynamicTxPower23aRestorePowerIndex(struct dm_odm_t *pDM_Odm); - -void odm_DynamicTxPower23aSavePowerIndex(struct dm_odm_t *pDM_Odm); - -void odm_DynamicTxPower23aWritePowerIndex(struct dm_odm_t *pDM_Odm, - u8 Value); - -void odm_DynamicTxPower23a_92C(struct dm_odm_t *pDM_Odm); - -void odm_DynamicTxPower23a_92D(struct dm_odm_t *pDM_Odm); - void odm_RSSIMonitorInit(struct dm_odm_t *pDM_Odm); void odm_RSSIMonitorCheck23aMP(struct dm_odm_t *pDM_Odm); @@ -232,8 +222,6 @@ void odm_SwAntDivChkAntSwitchNIC(struct dm_odm_t *pDM_Odm, void odm_SwAntDivChkAntSwitchCallback23a(unsigned long data); -void odm_GlobalAdapterCheck(void); - void odm_RefreshRateAdaptiveMask23a(struct dm_odm_t *pDM_Odm); void ODM_TXPowerTrackingCheck23a(struct dm_odm_t *pDM_Odm); @@ -306,7 +294,6 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm) void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm) { /* 2012.05.03 Luke: For all IC series */ - odm_GlobalAdapterCheck(); odm_CmnInfoHook_Debug23a(pDM_Odm); odm_CmnInfoUpdate_Debug23a(pDM_Odm); odm_CommonInfoSelfUpdate23a(pDM_Odm); @@ -343,7 +330,6 @@ void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm) if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { ODM_TXPowerTrackingCheck23a(pDM_Odm); odm_EdcaTurboCheck23a(pDM_Odm); - odm_DynamicTxPower23a(pDM_Odm); } odm_dtc(pDM_Odm); @@ -563,7 +549,7 @@ void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value) void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm ) { - pDM_Odm->bCckHighPower = (bool) ODM_GetBBReg(pDM_Odm, 0x824, BIT9); + pDM_Odm->bCckHighPower = (bool) ODM_GetBBReg(pDM_Odm, 0x824, BIT(9)); pDM_Odm->RFPathRxEnable = (u8) ODM_GetBBReg(pDM_Odm, 0xc04, 0x0F); if (pDM_Odm->SupportICType & (ODM_RTL8723A)) pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV; @@ -941,8 +927,8 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { /* hold ofdm counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT31, 1); /* hold page C counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT31, 1); /* hold page D counter */ + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1); /* hold page C counter */ + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 1); /* hold page D counter */ ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE1_11N, bMaskDWord); FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff); @@ -962,9 +948,9 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) FalseAlmCnt->Cnt_Mcs_fail + FalseAlmCnt->Cnt_Fast_Fsync + FalseAlmCnt->Cnt_SB_Search_fail; - /* hold cck counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT12, 1); - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT14, 1); + /* hold cck counter */ + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(12), 1); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(14), 1); ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_FA_LSB_11N, bMaskByte0); FalseAlmCnt->Cnt_Cck_fail = ret_value; @@ -986,20 +972,24 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) if (pDM_Odm->SupportICType >= ODM_RTL8723A) { /* reset false alarm counter registers */ - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTC_11N, BIT31, 1); - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTC_11N, BIT31, 0); - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT27, 1); - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT27, 0); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTC_11N, BIT(31), 1); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTC_11N, BIT(31), 0); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(27), 1); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(27), 0); /* update ofdm counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT31, 0); /* update page C counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT31, 0); /* update page D counter */ + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 0); /* update page C counter */ + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 0); /* update page D counter */ /* reset CCK CCA counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT13|BIT12, 0); - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT13|BIT12, 2); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, + BIT(13) | BIT(12), 0); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, + BIT(13) | BIT(12), 2); /* reset CCK FA counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT15|BIT14, 0); - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT15|BIT14, 2); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, + BIT(15) | BIT(14), 0); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, + BIT(15) | BIT(14), 2); } ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Enter odm_FalseAlarmCounterStatistics23a\n")); @@ -1016,11 +1006,11 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) FalseAlmCnt->Cnt_all = FalseAlmCnt->Cnt_Ofdm_fail + FalseAlmCnt->Cnt_Cck_fail; /* reset OFDM FA coutner */ - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT17, 1); - ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT17, 0); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 1); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 0); /* reset CCK FA counter */ - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT15, 0); - ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT15, 1); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT(15), 0); + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT(15), 1); } ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Cck_fail =%d\n", FalseAlmCnt->Cnt_Cck_fail)); ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Ofdm_fail =%d\n", FalseAlmCnt->Cnt_Ofdm_fail)); @@ -1140,7 +1130,8 @@ void ODM_RF_Saving23a(struct dm_odm_t *pDM_Odm, u8 bForceInNormal) if (pDM_PSTable->initialize == 0) { pDM_PSTable->Reg874 = (ODM_GetBBReg(pDM_Odm, 0x874, bMaskDWord)&0x1CC000)>>14; - pDM_PSTable->RegC70 = (ODM_GetBBReg(pDM_Odm, 0xc70, bMaskDWord)&BIT3)>>3; + pDM_PSTable->RegC70 = + (ODM_GetBBReg(pDM_Odm, 0xc70, bMaskDWord) & BIT(3)) >>3; pDM_PSTable->Reg85C = (ODM_GetBBReg(pDM_Odm, 0x85c, bMaskDWord)&0xFF000000)>>24; pDM_PSTable->RegA74 = (ODM_GetBBReg(pDM_Odm, 0xa74, bMaskDWord)&0xF000)>>12; /* Reg818 = PHY_QueryBBReg(pAdapter, 0x818, bMaskDWord); */ @@ -1172,23 +1163,23 @@ void ODM_RF_Saving23a(struct dm_odm_t *pDM_Odm, u8 bForceInNormal) /* <tynli_note> 8723 RSSI report will be wrong. Set 0x874[5]= 1 when enter BB power saving mode. */ /* Suggested by SD3 Yu-Nan. 2011.01.20. */ if (pDM_Odm->SupportICType == ODM_RTL8723A) - ODM_SetBBReg(pDM_Odm, 0x874, BIT5, 0x1); /* Reg874[5]= 1b'1 */ + ODM_SetBBReg(pDM_Odm, 0x874, BIT(5), 0x1); /* Reg874[5]= 1b'1 */ ODM_SetBBReg(pDM_Odm, 0x874, 0x1C0000, 0x2); /* Reg874[20:18]= 3'b010 */ - ODM_SetBBReg(pDM_Odm, 0xc70, BIT3, 0); /* RegC70[3]= 1'b0 */ + ODM_SetBBReg(pDM_Odm, 0xc70, BIT(3), 0); /* RegC70[3]= 1'b0 */ ODM_SetBBReg(pDM_Odm, 0x85c, 0xFF000000, 0x63); /* Reg85C[31:24]= 0x63 */ ODM_SetBBReg(pDM_Odm, 0x874, 0xC000, 0x2); /* Reg874[15:14]= 2'b10 */ ODM_SetBBReg(pDM_Odm, 0xa74, 0xF000, 0x3); /* RegA75[7:4]= 0x3 */ - ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x0); /* Reg818[28]= 1'b0 */ - ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x1); /* Reg818[28]= 1'b1 */ + ODM_SetBBReg(pDM_Odm, 0x818, BIT(28), 0x0); /* Reg818[28]= 1'b0 */ + ODM_SetBBReg(pDM_Odm, 0x818, BIT(28), 0x1); /* Reg818[28]= 1'b1 */ } else { ODM_SetBBReg(pDM_Odm, 0x874, 0x1CC000, pDM_PSTable->Reg874); - ODM_SetBBReg(pDM_Odm, 0xc70, BIT3, pDM_PSTable->RegC70); + ODM_SetBBReg(pDM_Odm, 0xc70, BIT(3), pDM_PSTable->RegC70); ODM_SetBBReg(pDM_Odm, 0x85c, 0xFF000000, pDM_PSTable->Reg85C); ODM_SetBBReg(pDM_Odm, 0xa74, 0xF000, pDM_PSTable->RegA74); - ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x0); + ODM_SetBBReg(pDM_Odm, 0x818, BIT(28), 0x0); if (pDM_Odm->SupportICType == ODM_RTL8723A) - ODM_SetBBReg(pDM_Odm, 0x874, BIT5, 0x0); /* Reg874[5]= 1b'0 */ + ODM_SetBBReg(pDM_Odm, 0x874, BIT(5), 0x0); /* Reg874[5]= 1b'0 */ } pDM_PSTable->PreRFState = pDM_PSTable->CurRFState; } @@ -1289,7 +1280,7 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, break; } - /* printk("%s ==> rssi_level:0x%02x, WirelessMode:0x%02x, rate_bitmap:0x%08x \n", __FUNCTION__, rssi_level, WirelessMode, rate_bitmap); */ + /* printk("%s ==> rssi_level:0x%02x, WirelessMode:0x%02x, rate_bitmap:0x%08x \n", __func__, rssi_level, WirelessMode, rate_bitmap); */ ODM_RT_TRACE(pDM_Odm, ODM_COMP_RA_MASK, ODM_DBG_LOUD, (" ==> rssi_level:0x%02x, WirelessMode:0x%02x, rate_bitmap:0x%08x \n", rssi_level, WirelessMode, rate_bitmap)); return rate_bitmap; @@ -1345,7 +1336,7 @@ void odm_RefreshRateAdaptiveMask23aCE23a(struct dm_odm_t *pDM_Odm) return; } - /* printk("==> %s \n", __FUNCTION__); */ + /* printk("==> %s \n", __func__); */ for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { struct sta_info *pstat = pDM_Odm->pODM_StaInfo[i]; @@ -1424,60 +1415,13 @@ void odm_DynamicTxPower23aInit(struct dm_odm_t *pDM_Odm) struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); struct dm_priv *pdmpriv = &pHalData->dmpriv; - pdmpriv->bDynamicTxPowerEnable = false; - - pdmpriv->LastDTPLvl = TxHighPwrLevel_Normal; + /* + * This is never changed, so we should be able to clean up the + * code checking for different values in rtl8723a_rf6052.c + */ pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal; } -void odm_DynamicTxPower23aSavePowerIndex(struct dm_odm_t *pDM_Odm) -{ - u8 index; - u32 Power_Index_REG[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; - - struct rtw_adapter *Adapter = pDM_Odm->Adapter; - struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - struct dm_priv *pdmpriv = &pHalData->dmpriv; - for (index = 0; index < 6; index++) - pdmpriv->PowerIndex_backup[index] = rtw_read8(Adapter, Power_Index_REG[index]); -} - -void odm_DynamicTxPower23aRestorePowerIndex(struct dm_odm_t *pDM_Odm) -{ - u8 index; - struct rtw_adapter *Adapter = pDM_Odm->Adapter; - - struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - u32 Power_Index_REG[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; - struct dm_priv *pdmpriv = &pHalData->dmpriv; - for (index = 0; index < 6; index++) - rtw_write8(Adapter, Power_Index_REG[index], pdmpriv->PowerIndex_backup[index]); -} - -void odm_DynamicTxPower23aWritePowerIndex(struct dm_odm_t *pDM_Odm, - u8 Value) -{ - - u8 index; - u32 Power_Index_REG[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; - - for (index = 0; index < 6; index++) - ODM_Write1Byte(pDM_Odm, Power_Index_REG[index], Value); - -} - -void odm_DynamicTxPower23a(struct dm_odm_t *pDM_Odm) -{ -} - -void odm_DynamicTxPower23a_92C(struct dm_odm_t *pDM_Odm) -{ -} - -void odm_DynamicTxPower23a_92D(struct dm_odm_t *pDM_Odm) -{ -} - /* 3 ============================================================ */ /* 3 RSSI Monitor */ /* 3 ============================================================ */ @@ -1576,22 +1520,6 @@ void odm_RSSIMonitorCheck23aAP(struct dm_odm_t *pDM_Odm) { } -void ODM_InitAllTimers(struct dm_odm_t *pDM_Odm) -{ - setup_timer(&pDM_Odm->DM_SWAT_Table.SwAntennaSwitchTimer, - odm_SwAntDivChkAntSwitchCallback23a, (unsigned long)pDM_Odm); -} - -void ODM_CancelAllTimers(struct dm_odm_t *pDM_Odm) -{ - del_timer_sync(&pDM_Odm->DM_SWAT_Table.SwAntennaSwitchTimer); -} - -void ODM_ReleaseAllTimers(struct dm_odm_t *pDM_Odm) -{ - ODM_ReleaseTimer(pDM_Odm, &pDM_Odm->DM_SWAT_Table.SwAntennaSwitchTimer); -} - /* endif */ /* 3 ============================================================ */ /* 3 Tx Power Tracking */ @@ -1655,7 +1583,8 @@ void odm_SwAntDivInit(struct dm_odm_t *pDM_Odm) { } -void ODM_SwAntDivChkPerPktRssi(struct dm_odm_t *pDM_Odm, u8 StationID, struct odm_phy_info *pPhyInfo) +void ODM_SwAntDivChkPerPktRssi(struct dm_odm_t *pDM_Odm, u8 StationID, + struct phy_info *pPhyInfo) { } @@ -1739,10 +1668,8 @@ void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm) if (pmlmeinfo->assoc_AP_vendor >= HT_IOT_PEER_MAX) goto dm_CheckEdcaTurbo_EXIT; -#ifdef CONFIG_8723AU_BT_COEXIST - if (BT_DisableEDCATurbo(Adapter)) + if (rtl8723a_BT_disable_EDCA_turbo(Adapter)) goto dm_CheckEdcaTurbo_EXIT; -#endif /* Check if the status needs to be changed. */ if ((bbtchange) || (!precvpriv->bIsAnyNonBEPkts)) { @@ -1774,7 +1701,8 @@ void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm) edca_param = EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]; else edca_param = EDCAParam[HT_IOT_PEER_UNKNOWN][trafficIndex]; - rtw_write32(Adapter, REG_EDCA_BE_PARAM, edca_param); + rtl8723au_write32(Adapter, REG_EDCA_BE_PARAM, + edca_param); pDM_Odm->DM_EDCA_Table.prv_traffic_idx = trafficIndex; } @@ -1784,7 +1712,8 @@ void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm) /* Turn Off EDCA turbo here. */ /* Restore original EDCA according to the declaration of AP. */ if (pDM_Odm->DM_EDCA_Table.bCurrentTurboEDCA) { - rtw_write32(Adapter, REG_EDCA_BE_PARAM, pHalData->AcParam_BE); + rtl8723au_write32(Adapter, REG_EDCA_BE_PARAM, + pHalData->AcParam_BE); pDM_Odm->DM_EDCA_Table.bCurrentTurboEDCA = false; } } @@ -1804,10 +1733,10 @@ u32 GetPSDData(struct dm_odm_t *pDM_Odm, unsigned int point, u8 initial_gain_psd ODM_SetBBReg(pDM_Odm, 0x808, 0x3FF, point); /* Start PSD calculation, Reg808[22]= 0->1 */ - ODM_SetBBReg(pDM_Odm, 0x808, BIT22, 1); + ODM_SetBBReg(pDM_Odm, 0x808, BIT(22), 1); /* Need to wait for HW PSD report */ udelay(30); - ODM_SetBBReg(pDM_Odm, 0x808, BIT22, 0); + ODM_SetBBReg(pDM_Odm, 0x808, BIT(22), 0); /* Read PSD report, Reg8B4[15:0] */ psd_report = ODM_GetBBReg(pDM_Odm, 0x8B4, bMaskDWord) & 0x0000FFFF; @@ -1845,16 +1774,6 @@ ConvertTo_dB23a( } /* */ -/* 2011/09/22 MH Add for 92D global spin lock utilization. */ -/* */ -void -odm_GlobalAdapterCheck( - void - ) -{ -} /* odm_GlobalAdapterCheck */ - -/* */ /* Description: */ /*Set Single/Dual Antenna default setting for products that do not do detection in advance. */ /* */ @@ -1941,7 +1860,7 @@ bool ODM_SingleDualAntennaDetection(struct dm_odm_t *pDM_Odm, u8 mode) odm_PHY_SaveAFERegisters(pDM_Odm, AFE_REG_8723A, AFE_Backup, 16); /* Set PSD 128 pts */ - ODM_SetBBReg(pDM_Odm, rFPGA0_PSDFunction, BIT14|BIT15, 0x0); /* 128 pts */ + ODM_SetBBReg(pDM_Odm, rFPGA0_PSDFunction, BIT(14) | BIT(15), 0x0); /* To SET CH1 to do */ ODM_SetRFReg(pDM_Odm, RF_PATH_A, ODM_CHANNEL, bRFRegOffsetMask, 0x01); /* Channel 1 */ diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c index 72441709697e..82b1b8348898 100644 --- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c +++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c @@ -91,7 +91,7 @@ odm_EVMdbToPercentage( } static void odm_RxPhyStatus92CSeries_Parsing(struct dm_odm_t *pDM_Odm, - struct odm_phy_info *pPhyInfo, + struct phy_info *pPhyInfo, u8 *pPhyStatus, struct odm_packet_info *pPktinfo) { @@ -281,7 +281,7 @@ void odm_Init_RSSIForDM23a(struct dm_odm_t *pDM_Odm) } static void odm_Process_RSSIForDM(struct dm_odm_t *pDM_Odm, - struct odm_phy_info *pPhyInfo, + struct phy_info *pPhyInfo, struct odm_packet_info *pPktinfo) { s32 UndecoratedSmoothedPWDB, UndecoratedSmoothedCCK; @@ -347,7 +347,8 @@ static void odm_Process_RSSIForDM(struct dm_odm_t *pDM_Odm, (RSSI_Ave)) / (Rx_Smooth_Factor); } } - pEntry->rssi_stat.PacketMap = (pEntry->rssi_stat.PacketMap<<1) | BIT0; + pEntry->rssi_stat.PacketMap = + (pEntry->rssi_stat.PacketMap<<1) | BIT(0); } else { RSSI_Ave = pPhyInfo->RxPWDBAll; @@ -377,7 +378,8 @@ static void odm_Process_RSSIForDM(struct dm_odm_t *pDM_Odm, pEntry->rssi_stat.ValidBit++; for (i = 0; i < pEntry->rssi_stat.ValidBit; i++) - OFDM_pkt += (u8)(pEntry->rssi_stat.PacketMap>>i)&BIT0; + OFDM_pkt += + (u8)(pEntry->rssi_stat.PacketMap>>i) & BIT(0); if (pEntry->rssi_stat.ValidBit == 64) { Weighting = ((OFDM_pkt<<4) > 64)?64:(OFDM_pkt<<4); @@ -396,7 +398,7 @@ static void odm_Process_RSSIForDM(struct dm_odm_t *pDM_Odm, /* Endianness before calling this API */ static void ODM_PhyStatusQuery23a_92CSeries(struct dm_odm_t *pDM_Odm, - struct odm_phy_info *pPhyInfo, + struct phy_info *pPhyInfo, u8 *pPhyStatus, struct odm_packet_info *pPktinfo) { @@ -411,7 +413,7 @@ static void ODM_PhyStatusQuery23a_92CSeries(struct dm_odm_t *pDM_Odm, } } -void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct odm_phy_info *pPhyInfo, +void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo, u8 *pPhyStatus, struct odm_packet_info *pPktinfo) { ODM_PhyStatusQuery23a_92CSeries(pDM_Odm, pPhyInfo, pPhyStatus, pPktinfo); @@ -426,12 +428,9 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID, } -enum hal_status -ODM_ConfigRFWithHeaderFile23a( - struct dm_odm_t *pDM_Odm, - enum RF_RADIO_PATH Content, - enum RF_RADIO_PATH eRFPath - ) +int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + enum RF_RADIO_PATH Content, + enum RF_RADIO_PATH eRFPath) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===>ODM_ConfigRFWithHeaderFile23a\n")); @@ -446,14 +445,11 @@ ODM_ConfigRFWithHeaderFile23a( } ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, ("ODM_ConfigRFWithHeaderFile23a: Radio No %x\n", eRFPath)); - return HAL_STATUS_SUCCESS; + return _SUCCESS; } -enum hal_status -ODM_ConfigBBWithHeaderFile23a( - struct dm_odm_t *pDM_Odm, - enum odm_bb_config_type ConfigType - ) +int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + enum odm_bb_config_type ConfigType) { if (pDM_Odm->SupportICType == ODM_RTL8723A) { if (ConfigType == CONFIG_BB_PHY_REG) @@ -465,17 +461,12 @@ ODM_ConfigBBWithHeaderFile23a( ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, (" ===> phy_ConfigBBWithHeaderFile() agc:Rtl8723PHY_REG_1TArray\n")); } - return HAL_STATUS_SUCCESS; + return _SUCCESS; } -enum hal_status -ODM_ConfigMACWithHeaderFile23a( - struct dm_odm_t *pDM_Odm - ) +int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm) { - u8 result = HAL_STATUS_SUCCESS; - if (pDM_Odm->SupportICType == ODM_RTL8723A) READ_AND_CONFIG_MP(8723A, _MAC_REG_); - return result; + return _SUCCESS; } diff --git a/drivers/staging/rtl8723au/hal/odm_interface.c b/drivers/staging/rtl8723au/hal/odm_interface.c index bef1269749d0..f03f6d4a3888 100644 --- a/drivers/staging/rtl8723au/hal/odm_interface.c +++ b/drivers/staging/rtl8723au/hal/odm_interface.c @@ -21,6 +21,7 @@ /* */ /* ODM IO Relative API. */ /* */ +#include <usb_ops_linux.h> u8 ODM_Read1Byte(struct dm_odm_t *pDM_Odm, u32 RegAddr @@ -28,59 +29,42 @@ u8 ODM_Read1Byte(struct dm_odm_t *pDM_Odm, { struct rtw_adapter *Adapter = pDM_Odm->Adapter; - return rtw_read8(Adapter, RegAddr); + return rtl8723au_read8(Adapter, RegAddr); } -u16 ODM_Read2Byte(struct dm_odm_t *pDM_Odm, - u32 RegAddr - ) +u16 ODM_Read2Byte(struct dm_odm_t *pDM_Odm, u32 RegAddr) { struct rtw_adapter *Adapter = pDM_Odm->Adapter; - return rtw_read16(Adapter, RegAddr); + return rtl8723au_read16(Adapter, RegAddr); } -u32 ODM_Read4Byte(struct dm_odm_t *pDM_Odm, - u32 RegAddr - ) +u32 ODM_Read4Byte(struct dm_odm_t *pDM_Odm, u32 RegAddr) { struct rtw_adapter *Adapter = pDM_Odm->Adapter; - return rtw_read32(Adapter, RegAddr); + return rtl8723au_read32(Adapter, RegAddr); } -void ODM_Write1Byte( - struct dm_odm_t *pDM_Odm, - u32 RegAddr, - u8 Data - ) +void ODM_Write1Byte(struct dm_odm_t *pDM_Odm, u32 RegAddr, u8 Data) { struct rtw_adapter *Adapter = pDM_Odm->Adapter; - rtw_write8(Adapter, RegAddr, Data); + rtl8723au_write8(Adapter, RegAddr, Data); } -void ODM_Write2Byte( - struct dm_odm_t *pDM_Odm, - u32 RegAddr, - u16 Data - ) +void ODM_Write2Byte(struct dm_odm_t *pDM_Odm, u32 RegAddr, u16 Data) { struct rtw_adapter *Adapter = pDM_Odm->Adapter; - rtw_write16(Adapter, RegAddr, Data); + rtl8723au_write16(Adapter, RegAddr, Data); } -void ODM_Write4Byte( - struct dm_odm_t *pDM_Odm, - u32 RegAddr, - u32 Data - ) +void ODM_Write4Byte(struct dm_odm_t *pDM_Odm, u32 RegAddr, u32 Data) { struct rtw_adapter *Adapter = pDM_Odm->Adapter; - rtw_write32(Adapter, RegAddr, Data); - + rtl8723au_write32(Adapter, RegAddr, Data); } void ODM_SetMACReg( @@ -153,84 +137,3 @@ u32 ODM_GetRFReg( return PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask); } - -/* */ -/* ODM Memory relative API. */ -/* */ -void ODM_AllocateMemory( - struct dm_odm_t *pDM_Odm, - void **pPtr, - u32 length - ) -{ - *pPtr = rtw_zvmalloc(length); -} - -/* length could be ignored, used to detect memory leakage. */ -void ODM_FreeMemory( - struct dm_odm_t *pDM_Odm, - void *pPtr, - u32 length - ) -{ - rtw_vmfree(pPtr, length); -} - -/* */ -/* ODM MISC relative API. */ -/* */ -void -ODM_AcquireSpinLock( - struct dm_odm_t *pDM_Odm, - enum rt_spinlock_type type - ) -{ -} - -void ODM_ReleaseSpinLock( - struct dm_odm_t *pDM_Odm, - enum rt_spinlock_type type - ) -{ -} - -/* */ -/* Work item relative API. FOr MP driver only~! */ -/* */ -void ODM_InitializeWorkItem( - struct dm_odm_t *pDM_Odm, - void *pRtWorkItem, - RT_WORKITEM_CALL_BACK RtWorkItemCallback, - void *pContext, - const char *szID - ) -{ -} - -/* */ -/* ODM Timer relative API. */ -/* */ -void ODM_SetTimer(struct dm_odm_t *pDM_Odm, struct timer_list *pTimer, u32 msDelay) -{ - mod_timer(pTimer, jiffies + msecs_to_jiffies(msDelay)); /* ms */ -} - -void ODM_ReleaseTimer(struct dm_odm_t *pDM_Odm, struct timer_list *pTimer) -{ -} - -/* */ -/* ODM FW relative API. */ -/* */ -u32 ODM_FillH2CCmd( - u8 *pH2CBuffer, - u32 H2CBufferLen, - u32 CmdNum, - u32 *pElementID, - u32 *pCmdLen, - u8 **pCmbBuffer, - u8 *CmdStartSeq - ) -{ - return true; -} diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c index 9d738d79de4b..c00105389090 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; + } +} diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c index 0b205e1204fc..e8737916c7ba 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c @@ -17,10 +17,10 @@ #include <osdep_service.h> #include <drv_types.h> #include <recv_osdep.h> -#include <cmd_osdep.h> #include <mlme_osdep.h> #include <rtw_ioctl_set.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> #define RTL92C_MAX_H2C_BOX_NUMS 4 #define RTL92C_MAX_CMD_LEN 5 @@ -34,7 +34,7 @@ static u8 _is_fw_read_cmd_down(struct rtw_adapter *padapter, u8 msgbox_num) u8 valid; do { - valid = rtw_read8(padapter, REG_HMETFR) & BIT(msgbox_num); + valid = rtl8723au_read8(padapter, REG_HMETFR) & BIT(msgbox_num); if (0 == valid) read_down = true; } while ((!read_down) && (retry_cnts--)); @@ -48,7 +48,8 @@ static u8 _is_fw_read_cmd_down(struct rtw_adapter *padapter, u8 msgbox_num) *| h2c_msg |Ext_bit |CMD_ID | * ******************************************/ -s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer) +int FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, + u8 *pCmdBuffer) { u8 bcmd_down = false; s32 retry_cnts = 100; @@ -58,7 +59,7 @@ s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdB struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); u32 h2c_cmd = 0; u16 h2c_cmd_ex = 0; - s32 ret = _FAIL; + int ret = _FAIL; padapter = GET_PRIMARY_ADAPTER(padapter); pHalData = GET_HAL_DATA(padapter); @@ -94,11 +95,11 @@ s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdB if (h2c_cmd & BIT(7)) { msgbox_ex_addr = REG_HMEBOX_EXT_0 + (h2c_box_num * EX_MESSAGE_BOX_SIZE); h2c_cmd_ex = le16_to_cpu(h2c_cmd_ex); - rtw_write16(padapter, msgbox_ex_addr, h2c_cmd_ex); + rtl8723au_write16(padapter, msgbox_ex_addr, h2c_cmd_ex); } msgbox_addr = REG_HMEBOX_0 + (h2c_box_num * MESSAGE_BOX_SIZE); h2c_cmd = le32_to_cpu(h2c_cmd); - rtw_write32(padapter, msgbox_addr, h2c_cmd); + rtl8723au_write32(padapter, msgbox_addr, h2c_cmd); bcmd_down = true; @@ -113,9 +114,9 @@ exit: return ret; } -u8 rtl8723a_set_rssi_cmd(struct rtw_adapter *padapter, u8 *param) +int rtl8723a_set_rssi_cmd(struct rtw_adapter *padapter, u8 *param) { - u8 res = _SUCCESS; + int res = _SUCCESS; *((u32 *)param) = cpu_to_le32(*((u32 *)param)); @@ -124,10 +125,10 @@ u8 rtl8723a_set_rssi_cmd(struct rtw_adapter *padapter, u8 *param) return res; } -u8 rtl8723a_set_raid_cmd(struct rtw_adapter *padapter, u32 mask, u8 arg) +int rtl8723a_set_raid_cmd(struct rtw_adapter *padapter, u32 mask, u8 arg) { u8 buf[5]; - u8 res = _SUCCESS; + int res = _SUCCESS; memset(buf, 0, 5); mask = cpu_to_le32(mask); @@ -137,7 +138,6 @@ u8 rtl8723a_set_raid_cmd(struct rtw_adapter *padapter, u32 mask, u8 arg) FillH2CCmd(padapter, MACID_CONFIG_EID, 5, buf); return res; - } /* bitmap[0:27] = tx_rate_bitmap */ @@ -168,7 +168,8 @@ void rtl8723a_add_rateatid(struct rtw_adapter *pAdapter, u32 bitmap, u8 arg, u8 if (shortGIrate == true) init_rate |= BIT(6); - rtw_write8(pAdapter, (REG_INIDATA_RATE_SEL+macid), (u8)init_rate); + rtl8723au_write8(pAdapter, REG_INIDATA_RATE_SEL + macid, + init_rate); } } @@ -178,7 +179,7 @@ void rtl8723a_set_FwPwrMode_cmd(struct rtw_adapter *padapter, u8 Mode) struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - DBG_8723A("%s: Mode =%d SmartPS =%d UAPSD =%d BcnMode = 0x%02x\n", __FUNCTION__, + DBG_8723A("%s: Mode =%d SmartPS =%d UAPSD =%d BcnMode = 0x%02x\n", __func__, Mode, pwrpriv->smart_ps, padapter->registrypriv.uapsd_enable, pwrpriv->bcn_ant_mode); /* Forece leave RF low power mode for 1T1R to @@ -203,27 +204,26 @@ void rtl8723a_set_FwPwrMode_cmd(struct rtw_adapter *padapter, u8 Mode) static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) { struct ieee80211_hdr *pwlanhdr; - u16 *fctrl; u32 rate_len, pktlen; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + int bcn_fixed_size; - /* DBG_8723A("%s\n", __FUNCTION__); */ + /* DBG_8723A("%s\n", __func__); */ pwlanhdr = (struct ieee80211_hdr *)pframe; - fctrl = &pwlanhdr->frame_control; - *(fctrl) = 0; + pwlanhdr->frame_control = + cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid23a(cur_network), ETH_ALEN); - SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); - /* pmlmeext->mgnt_seq++; */ - SetFrameSubType(pframe, WIFI_BEACON); + /* A Beacon frame shouldn't have fragment bits set */ + pwlanhdr->seq_ctrl = 0; pframe += sizeof(struct ieee80211_hdr_3addr); pktlen = sizeof (struct ieee80211_hdr_3addr); @@ -245,9 +245,13 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng pktlen += 2; if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { + bcn_fixed_size = + offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ - pktlen += cur_network->IELength - sizeof(struct ndis_802_11_fixed_ies); - memcpy(pframe, cur_network->IEs+sizeof(struct ndis_802_11_fixed_ies), pktlen); + pktlen += cur_network->IELength - bcn_fixed_size; + memcpy(pframe, cur_network->IEs + bcn_fixed_size, pktlen); goto _ConstructBeacon; } @@ -255,30 +259,36 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng /* below for ad-hoc mode */ /* SSID */ - pframe = rtw_set_ie23a(pframe, _SSID_IE_, cur_network->Ssid.ssid_len, - cur_network->Ssid.ssid, &pktlen); + pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID, + cur_network->Ssid.ssid_len, + cur_network->Ssid.ssid, &pktlen); /* supported rates... */ rate_len = rtw_get_rateset_len23a(cur_network->SupportedRates); - pframe = rtw_set_ie23a(pframe, _SUPPORTEDRATES_IE_, ((rate_len > 8) ? + pframe = rtw_set_ie23a(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->SupportedRates, &pktlen); /* DS parameter set */ - pframe = rtw_set_ie23a(pframe, _DSSET_IE_, 1, (unsigned char *)&cur_network->Configuration.DSConfig, &pktlen); + pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *) + &cur_network->DSConfig, &pktlen); if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) { u32 ATIMWindow; /* IBSS Parameter Set... */ - /* ATIMWindow = cur->Configuration.ATIMWindow; */ + /* ATIMWindow = cur->ATIMWindow; */ ATIMWindow = 0; - pframe = rtw_set_ie23a(pframe, _IBSS_PARA_IE_, 2, (unsigned char *)(&ATIMWindow), &pktlen); + pframe = rtw_set_ie23a(pframe, WLAN_EID_IBSS_PARAMS, 2, + (unsigned char *)&ATIMWindow, &pktlen); } /* todo: ERP IE */ /* EXTERNDED SUPPORTED RATE */ if (rate_len > 8) - pframe = rtw_set_ie23a(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen); + pframe = rtw_set_ie23a(pframe, WLAN_EID_EXT_SUPP_RATES, + (rate_len - 8), + (cur_network->SupportedRates + 8), + &pktlen); /* todo:HT for adhoc */ @@ -291,27 +301,26 @@ _ConstructBeacon: *pLength = pktlen; - /* DBG_8723A("%s bcn_sz =%d\n", __FUNCTION__, pktlen); */ + /* DBG_8723A("%s bcn_sz =%d\n", __func__, pktlen); */ } -static void ConstructPSPoll(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) +static void ConstructPSPoll(struct rtw_adapter *padapter, + u8 *pframe, u32 *pLength) { struct ieee80211_hdr *pwlanhdr; - u16 *fctrl; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; pwlanhdr = (struct ieee80211_hdr *)pframe; /* Frame control. */ - fctrl = &pwlanhdr->frame_control; - *(fctrl) = 0; - SetPwrMgt(fctrl); - SetFrameSubType(pframe, WIFI_PSPOLL); + pwlanhdr->frame_control = + cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL); + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PM); /* AID. */ - SetDuration(pframe, (pmlmeinfo->aid | 0xc000)); + pwlanhdr->duration_id = cpu_to_le16(pmlmeinfo->aid | 0xc000); /* BSSID. */ memcpy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN); @@ -322,49 +331,46 @@ static void ConstructPSPoll(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng *pLength = 16; } -static void ConstructNullFunctionData( - struct rtw_adapter *padapter, - u8 *pframe, - u32 *pLength, - u8 *StaAddr, - u8 bQoS, - u8 AC, - u8 bEosp, - u8 bForcePowerSave) +static void +ConstructNullFunctionData(struct rtw_adapter *padapter, u8 *pframe, + u32 *pLength, u8 *StaAddr, u8 bQoS, u8 AC, + u8 bEosp, u8 bForcePowerSave) { struct ieee80211_hdr *pwlanhdr; - u16 *fctrl; u32 pktlen; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - struct wlan_network *cur_network = &pmlmepriv->cur_network; + struct wlan_network *cur_network = &pmlmepriv->cur_network; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; pwlanhdr = (struct ieee80211_hdr *)pframe; - fctrl = &pwlanhdr->frame_control; - *(fctrl) = 0; + pwlanhdr->frame_control = 0; + pwlanhdr->seq_ctrl = 0; + if (bForcePowerSave) - SetPwrMgt(fctrl); + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PM); - switch (cur_network->network.InfrastructureMode) { - case Ndis802_11Infrastructure: - SetToDs(fctrl); + switch (cur_network->network.ifmode) { + case NL80211_IFTYPE_P2P_CLIENT: + case NL80211_IFTYPE_STATION: + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS); memcpy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN); memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN); memcpy(pwlanhdr->addr3, StaAddr, ETH_ALEN); break; - case Ndis802_11APMode: - SetFrDs(fctrl); + case NL80211_IFTYPE_P2P_GO: + case NL80211_IFTYPE_AP: + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS); memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); memcpy(pwlanhdr->addr2, get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN); memcpy(pwlanhdr->addr3, myid(&padapter->eeprompriv), ETH_ALEN); break; - case Ndis802_11IBSS: + case NL80211_IFTYPE_ADHOC: default: memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN); @@ -373,20 +379,23 @@ static void ConstructNullFunctionData( break; } - SetSeqNum(pwlanhdr, 0); - if (bQoS == true) { - struct ieee80211_qos_hdr *pwlanqoshdr; + struct ieee80211_qos_hdr *qoshdr; + qoshdr = (struct ieee80211_qos_hdr *)pframe; - SetFrameSubType(pframe, WIFI_QOS_DATA_NULL); + qoshdr->frame_control |= + cpu_to_le16(IEEE80211_FTYPE_DATA | + IEEE80211_STYPE_QOS_NULLFUNC); - pwlanqoshdr = (struct ieee80211_qos_hdr *)pframe; - SetPriority(&pwlanqoshdr->qos_ctrl, AC); - SetEOSP(&pwlanqoshdr->qos_ctrl, bEosp); + qoshdr->qos_ctrl = cpu_to_le16(AC & IEEE80211_QOS_CTL_TID_MASK); + if (bEosp) + qoshdr->qos_ctrl |= cpu_to_le16(IEEE80211_QOS_CTL_EOSP); pktlen = sizeof(struct ieee80211_qos_hdr); } else { - SetFrameSubType(pframe, WIFI_DATA_NULL); + pwlanhdr->frame_control |= + cpu_to_le16(IEEE80211_FTYPE_DATA | + IEEE80211_STYPE_NULLFUNC); pktlen = sizeof(struct ieee80211_hdr_3addr); } @@ -394,32 +403,32 @@ static void ConstructNullFunctionData( *pLength = pktlen; } -static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, bool bHideSSID) +static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe, + u32 *pLength, u8 *StaAddr, bool bHideSSID) { struct ieee80211_hdr *pwlanhdr; - u16 *fctrl; u8 *mac, *bssid; u32 pktlen; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; - /* DBG_8723A("%s\n", __FUNCTION__); */ + /* DBG_8723A("%s\n", __func__); */ pwlanhdr = (struct ieee80211_hdr *)pframe; mac = myid(&padapter->eeprompriv); bssid = cur_network->MacAddress; - fctrl = &pwlanhdr->frame_control; - *(fctrl) = 0; + pwlanhdr->frame_control = + cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP); + + pwlanhdr->seq_ctrl = 0; + memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); memcpy(pwlanhdr->addr2, mac, ETH_ALEN); memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); - SetSeqNum(pwlanhdr, 0); - SetFrameSubType(fctrl, WIFI_PROBERSP); - pktlen = sizeof(struct ieee80211_hdr_3addr); pframe += pktlen; @@ -464,11 +473,11 @@ static void SetFwRsvdPagePkt(struct rtw_adapter *padapter, bool bDLFinished) u32 TotalPacketLen; struct rsvdpage_loc RsvdPageLoc; - DBG_8723A("%s\n", __FUNCTION__); + DBG_8723A("%s\n", __func__); ReservedPagePacket = kzalloc(1000, GFP_KERNEL); if (ReservedPagePacket == NULL) { - DBG_8723A("%s: alloc ReservedPagePacket fail!\n", __FUNCTION__); + DBG_8723A("%s: alloc ReservedPagePacket fail!\n", __func__); return; } @@ -507,13 +516,13 @@ static void SetFwRsvdPagePkt(struct rtw_adapter *padapter, bool bDLFinished) /* 3 (3) null data */ RsvdPageLoc.LocNullData = PageNum; - ConstructNullFunctionData( - padapter, - &ReservedPagePacket[BufIndex], - &NullDataLength, - get_my_bssid23a(&pmlmeinfo->network), - false, 0, 0, false); - rtl8723a_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], NullDataLength, false, false); + ConstructNullFunctionData(padapter, &ReservedPagePacket[BufIndex], + &NullDataLength, + get_my_bssid23a(&pmlmeinfo->network), + false, 0, 0, false); + rtl8723a_fill_fake_txdesc(padapter, + &ReservedPagePacket[BufIndex-TxDescLen], + NullDataLength, false, false); PageNeed = (u8)PageNum_128(TxDescLen + NullDataLength); PageNum += PageNeed; @@ -573,9 +582,9 @@ static void SetFwRsvdPagePkt(struct rtw_adapter *padapter, bool bDLFinished) pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TXDESC_OFFSET; memcpy(pmgntframe->buf_addr, ReservedPagePacket, TotalPacketLen); - rtw_hal_mgnt_xmit23a(padapter, pmgntframe); + rtl8723au_mgnt_xmit(padapter, pmgntframe); - DBG_8723A("%s: Set RSVD page location to Fw\n", __FUNCTION__); + DBG_8723A("%s: Set RSVD page location to Fw\n", __func__); FillH2CCmd(padapter, RSVD_PAGE_EID, sizeof(RsvdPageLoc), (u8 *)&RsvdPageLoc); exit: @@ -589,7 +598,7 @@ void rtl8723a_set_FwJoinBssReport_cmd(struct rtw_adapter *padapter, u8 mstatus) struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; - DBG_8723A("%s mstatus(%x)\n", __FUNCTION__, mstatus); + DBG_8723A("%s mstatus(%x)\n", __func__, mstatus); if (mstatus == 1) { bool bRecover = false; @@ -597,17 +606,18 @@ void rtl8723a_set_FwJoinBssReport_cmd(struct rtw_adapter *padapter, u8 mstatus) /* We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. */ /* Suggested by filen. Added by tynli. */ - rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000|pmlmeinfo->aid)); + rtl8723au_write16(padapter, REG_BCN_PSR_RPT, + 0xC000|pmlmeinfo->aid); /* Do not set TSF again here or vWiFi beacon DMA INT will not work. */ /* correct_TSF23a(padapter, pmlmeext); */ /* Hw sequende enable by dedault. 2010.06.23. by tynli. */ - /* rtw_write16(padapter, REG_NQOS_SEQ, ((pmlmeext->mgnt_seq+100)&0xFFF)); */ - /* rtw_write8(padapter, REG_HWSEQ_CTRL, 0xFF); */ + /* rtl8723au_write16(padapter, REG_NQOS_SEQ, ((pmlmeext->mgnt_seq+100)&0xFFF)); */ + /* rtl8723au_write8(padapter, REG_HWSEQ_CTRL, 0xFF); */ /* set REG_CR bit 8 */ - v8 = rtw_read8(padapter, REG_CR+1); + v8 = rtl8723au_read8(padapter, REG_CR+1); v8 |= BIT(0); /* ENSWBCN */ - rtw_write8(padapter, REG_CR+1, v8); + rtl8723au_write8(padapter, REG_CR+1, v8); /* Disable Hw protection for a time which revserd for Hw sending beacon. */ /* Fix download reserved page packet fail that access collision with the protection time. */ @@ -621,8 +631,9 @@ void rtl8723a_set_FwJoinBssReport_cmd(struct rtw_adapter *padapter, u8 mstatus) bRecover = true; /* To tell Hw the packet is not a real beacon frame. */ - /* U1bTmp = rtw_read8(padapter, REG_FWHW_TXQ_CTRL+2); */ - rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl & ~BIT(6)); + /* U1bTmp = rtl8723au_read8(padapter, REG_FWHW_TXQ_CTRL+2); */ + rtl8723au_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + pHalData->RegFwHwTxQCtrl & ~BIT(6)); pHalData->RegFwHwTxQCtrl &= ~BIT(6); SetFwRsvdPagePkt(padapter, 0); @@ -635,14 +646,15 @@ void rtl8723a_set_FwJoinBssReport_cmd(struct rtw_adapter *padapter, u8 mstatus) /* the beacon cannot be sent by HW. */ /* 2010.06.23. Added by tynli. */ if (bRecover) { - rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl | BIT(6)); + rtl8723au_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + pHalData->RegFwHwTxQCtrl | BIT(6)); pHalData->RegFwHwTxQCtrl |= BIT(6); } /* Clear CR[8] or beacon packet will not be send to TxBuf anymore. */ - v8 = rtw_read8(padapter, REG_CR+1); + v8 = rtl8723au_read8(padapter, REG_CR+1); v8 &= ~BIT(0); /* ~ENSWBCN */ - rtw_write8(padapter, REG_CR+1, v8); + rtl8723au_write8(padapter, REG_CR+1, v8); } JoinBssRptParm.OpMode = mstatus; @@ -668,11 +680,11 @@ static void SetFwRsvdPagePkt_BTCoex(struct rtw_adapter *padapter) u32 TotalPacketLen; struct rsvdpage_loc RsvdPageLoc; - DBG_8723A("+%s\n", __FUNCTION__); + DBG_8723A("+%s\n", __func__); ReservedPagePacket = kzalloc(1024, GFP_KERNEL); if (ReservedPagePacket == NULL) { - DBG_8723A("%s: alloc ReservedPagePacket fail!\n", __FUNCTION__); + DBG_8723A("%s: alloc ReservedPagePacket fail!\n", __func__); return; } @@ -732,9 +744,9 @@ static void SetFwRsvdPagePkt_BTCoex(struct rtw_adapter *padapter) pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TXDESC_OFFSET; memcpy(pmgntframe->buf_addr, ReservedPagePacket, TotalPacketLen); - rtw_hal_mgnt_xmit23a(padapter, pmgntframe); + rtl8723au_mgnt_xmit(padapter, pmgntframe); - DBG_8723A("%s: Set RSVD page location to Fw\n", __FUNCTION__); + DBG_8723A("%s: Set RSVD page location to Fw\n", __func__); FillH2CCmd(padapter, RSVD_PAGE_EID, sizeof(RsvdPageLoc), (u8 *)&RsvdPageLoc); exit: @@ -746,7 +758,7 @@ void rtl8723a_set_BTCoex_AP_mode_FwRsvdPkt_cmd(struct rtw_adapter *padapter) struct hal_data_8723a *pHalData; u8 bRecover = false; - DBG_8723A("+%s\n", __FUNCTION__); + DBG_8723A("+%s\n", __func__); pHalData = GET_HAL_DATA(padapter); @@ -756,7 +768,8 @@ void rtl8723a_set_BTCoex_AP_mode_FwRsvdPkt_cmd(struct rtw_adapter *padapter) /* To tell Hw the packet is not a real beacon frame. */ pHalData->RegFwHwTxQCtrl &= ~BIT(6); - rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl); + rtl8723au_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + pHalData->RegFwHwTxQCtrl); SetFwRsvdPagePkt_BTCoex(padapter); /* To make sure that if there exists an adapter which would like to send beacon. */ @@ -766,80 +779,8 @@ void rtl8723a_set_BTCoex_AP_mode_FwRsvdPkt_cmd(struct rtw_adapter *padapter) /* 2010.06.23. Added by tynli. */ if (bRecover) { pHalData->RegFwHwTxQCtrl |= BIT(6); - rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl); + rtl8723au_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + pHalData->RegFwHwTxQCtrl); } } #endif - -#ifdef CONFIG_8723AU_P2P -void rtl8723a_set_p2p_ps_offload_cmd(struct rtw_adapter *padapter, u8 p2p_ps_state) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - struct wifidirect_info *pwdinfo = &padapter->wdinfo; - struct P2P_PS_Offload_t *p2p_ps_offload = &pHalData->p2p_ps_offload; - u8 i; - - switch (p2p_ps_state) { - case P2P_PS_DISABLE: - DBG_8723A("P2P_PS_DISABLE \n"); - memset(p2p_ps_offload, 0, 1); - break; - case P2P_PS_ENABLE: - DBG_8723A("P2P_PS_ENABLE \n"); - /* update CTWindow value. */ - if (pwdinfo->ctwindow > 0) { - p2p_ps_offload->CTWindow_En = 1; - rtw_write8(padapter, REG_P2P_CTWIN, pwdinfo->ctwindow); - } - - /* hw only support 2 set of NoA */ - for (i = 0; i < pwdinfo->noa_num; i++) { - /* To control the register setting for which NOA */ - rtw_write8(padapter, REG_NOA_DESC_SEL, (i << 4)); - if (i == 0) - p2p_ps_offload->NoA0_En = 1; - else - p2p_ps_offload->NoA1_En = 1; - - /* config P2P NoA Descriptor Register */ - rtw_write32(padapter, REG_NOA_DESC_DURATION, pwdinfo->noa_duration[i]); - - rtw_write32(padapter, REG_NOA_DESC_INTERVAL, pwdinfo->noa_interval[i]); - - rtw_write32(padapter, REG_NOA_DESC_START, pwdinfo->noa_start_time[i]); - - rtw_write8(padapter, REG_NOA_DESC_COUNT, pwdinfo->noa_count[i]); - } - - if ((pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0)) { - /* rst p2p circuit */ - rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(4)); - - p2p_ps_offload->Offload_En = 1; - - if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) { - p2p_ps_offload->role = 1; - p2p_ps_offload->AllStaSleep = 0; - } else { - p2p_ps_offload->role = 0; - } - - p2p_ps_offload->discovery = 0; - } - break; - case P2P_PS_SCAN: - DBG_8723A("P2P_PS_SCAN \n"); - p2p_ps_offload->discovery = 1; - break; - case P2P_PS_SCAN_DONE: - DBG_8723A("P2P_PS_SCAN_DONE \n"); - p2p_ps_offload->discovery = 0; - pwdinfo->p2p_ps_state = P2P_PS_ENABLE; - break; - default: - break; - } - - FillH2CCmd(padapter, P2P_PS_OFFLOAD_EID, 1, (u8 *)p2p_ps_offload); -} -#endif /* CONFIG_8723AU_P2P */ diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c index f204ab1714e7..ac47a9711086 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c @@ -28,6 +28,7 @@ #include <drv_types.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> /* */ /* Global var */ @@ -45,18 +46,21 @@ static void dm_CheckPbcGPIO(struct rtw_adapter *padapter) if (!padapter->registrypriv.hw_wps_pbc) return; - tmp1byte = rtw_read8(padapter, GPIO_IO_SEL); + tmp1byte = rtl8723au_read8(padapter, GPIO_IO_SEL); tmp1byte |= (HAL_8192C_HW_GPIO_WPS_BIT); - rtw_write8(padapter, GPIO_IO_SEL, tmp1byte); /* enable GPIO[2] as output mode */ + /* enable GPIO[2] as output mode */ + rtl8723au_write8(padapter, GPIO_IO_SEL, tmp1byte); tmp1byte &= ~(HAL_8192C_HW_GPIO_WPS_BIT); - rtw_write8(padapter, GPIO_IN, tmp1byte); /* reset the floating voltage level */ + /* reset the floating voltage level */ + rtl8723au_write8(padapter, GPIO_IN, tmp1byte); - tmp1byte = rtw_read8(padapter, GPIO_IO_SEL); + tmp1byte = rtl8723au_read8(padapter, GPIO_IO_SEL); tmp1byte &= ~(HAL_8192C_HW_GPIO_WPS_BIT); - rtw_write8(padapter, GPIO_IO_SEL, tmp1byte); /* enable GPIO[2] as input mode */ + /* enable GPIO[2] as input mode */ + rtl8723au_write8(padapter, GPIO_IO_SEL, tmp1byte); - tmp1byte = rtw_read8(padapter, GPIO_IN); + tmp1byte = rtl8723au_read8(padapter, GPIO_IN); if (tmp1byte == 0xff) return; @@ -76,7 +80,7 @@ static void dm_CheckPbcGPIO(struct rtw_adapter *padapter) return; } - rtw_signal_process(padapter->pid[0], SIGUSR1); + kill_pid(find_vpid(padapter->pid[0]), SIGUSR1, 1); } } @@ -197,7 +201,7 @@ void rtl8723a_InitHalDm(struct rtw_adapter *Adapter) ODM23a_DMInit(pDM_Odm); /* Save REG_INIDATA_RATE_SEL value for TXDESC. */ for (i = 0; i < 32; i++) - pdmpriv->INIDATA_RATE[i] = rtw_read8(Adapter, REG_INIDATA_RATE_SEL+i) & 0x3f; + pdmpriv->INIDATA_RATE[i] = rtl8723au_read8(Adapter, REG_INIDATA_RATE_SEL+i) & 0x3f; } void @@ -217,14 +221,7 @@ rtl8723a_HalDmWatchDog( goto skip_dm; bFwCurrentInPSMode = Adapter->pwrctrlpriv.bFwCurrentInPSMode; - rtw23a_hal_get_hwreg(Adapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bFwPSAwake)); - -#ifdef CONFIG_8723AU_P2P - /* Fw is under p2p powersaving mode, driver should stop dynamic mechanism. */ - /* modifed by thomas. 2011.06.11. */ - if (Adapter->wdinfo.p2p_ps_mode) - bFwPSAwake = false; -#endif /* CONFIG_8723AU_P2P */ + bFwPSAwake = rtl8723a_get_fwlps_rf_on(Adapter); if ((hw_init_completed) && ((!bFwCurrentInPSMode) && bFwPSAwake)) { /* Calculate Tx/Rx statistics. */ @@ -232,11 +229,11 @@ rtl8723a_HalDmWatchDog( /* Read REG_INIDATA_RATE_SEL value for TXDESC. */ if (check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE)) { - pdmpriv->INIDATA_RATE[0] = rtw_read8(Adapter, REG_INIDATA_RATE_SEL) & 0x3f; + pdmpriv->INIDATA_RATE[0] = rtl8723au_read8(Adapter, REG_INIDATA_RATE_SEL) & 0x3f; } else { u8 i; for (i = 1 ; i < (Adapter->stapriv.asoc_sta_count + 1); i++) - pdmpriv->INIDATA_RATE[i] = rtw_read8(Adapter, (REG_INIDATA_RATE_SEL+i)) & 0x3f; + pdmpriv->INIDATA_RATE[i] = rtl8723au_read8(Adapter, (REG_INIDATA_RATE_SEL+i)) & 0x3f; } } diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c index 0982b0a4ab9b..46f5abcbaeeb 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c @@ -19,6 +19,7 @@ #include <rtw_efuse.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> static void _FWDownloadEnable(struct rtw_adapter *padapter, bool enable) { @@ -26,23 +27,23 @@ static void _FWDownloadEnable(struct rtw_adapter *padapter, bool enable) if (enable) { /* 8051 enable */ - tmp = rtw_read8(padapter, REG_SYS_FUNC_EN + 1); - rtw_write8(padapter, REG_SYS_FUNC_EN + 1, tmp | 0x04); + tmp = rtl8723au_read8(padapter, REG_SYS_FUNC_EN + 1); + rtl8723au_write8(padapter, REG_SYS_FUNC_EN + 1, tmp | 0x04); /* MCU firmware download enable. */ - tmp = rtw_read8(padapter, REG_MCUFWDL); - rtw_write8(padapter, REG_MCUFWDL, tmp | 0x01); + tmp = rtl8723au_read8(padapter, REG_MCUFWDL); + rtl8723au_write8(padapter, REG_MCUFWDL, tmp | 0x01); /* 8051 reset */ - tmp = rtw_read8(padapter, REG_MCUFWDL + 2); - rtw_write8(padapter, REG_MCUFWDL + 2, tmp & 0xf7); + tmp = rtl8723au_read8(padapter, REG_MCUFWDL + 2); + rtl8723au_write8(padapter, REG_MCUFWDL + 2, tmp & 0xf7); } else { /* MCU firmware download disable. */ - tmp = rtw_read8(padapter, REG_MCUFWDL); - rtw_write8(padapter, REG_MCUFWDL, tmp & 0xfe); + tmp = rtl8723au_read8(padapter, REG_MCUFWDL); + rtl8723au_write8(padapter, REG_MCUFWDL, tmp & 0xfe); /* Reserved for fw extension. */ - rtw_write8(padapter, REG_MCUFWDL + 1, 0x00); + rtl8723au_write8(padapter, REG_MCUFWDL + 1, 0x00); } } @@ -75,9 +76,10 @@ static int _BlockWrite(struct rtw_adapter *padapter, void *buffer, u32 buffSize) } for (i = 0; i < blockCount_p1; i++) { - ret = rtw_writeN(padapter, - (FW_8723A_START_ADDRESS + i * blockSize_p1), - blockSize_p1, (bufferPtr + i * blockSize_p1)); + ret = rtl8723au_writeN(padapter, (FW_8723A_START_ADDRESS + + i * blockSize_p1), + blockSize_p1, + (bufferPtr + i * blockSize_p1)); if (ret == _FAIL) goto exit; } @@ -99,11 +101,12 @@ static int _BlockWrite(struct rtw_adapter *padapter, void *buffer, u32 buffSize) } for (i = 0; i < blockCount_p2; i++) { - ret = rtw_writeN(padapter, - (FW_8723A_START_ADDRESS + offset + - i * blockSize_p2), blockSize_p2, - (bufferPtr + offset + - i * blockSize_p2)); + ret = rtl8723au_writeN(padapter, + (FW_8723A_START_ADDRESS + + offset + i * blockSize_p2), + blockSize_p2, + (bufferPtr + offset + + i * blockSize_p2)); if (ret == _FAIL) goto exit; @@ -123,9 +126,9 @@ static int _BlockWrite(struct rtw_adapter *padapter, void *buffer, u32 buffSize) (buffSize - offset), blockSize_p3, blockCount_p3)); for (i = 0; i < blockCount_p3; i++) { - ret = rtw_write8(padapter, - (FW_8723A_START_ADDRESS + offset + i), - *(bufferPtr + offset + i)); + ret = rtl8723au_write8(padapter, + (FW_8723A_START_ADDRESS + offset + i), + *(bufferPtr + offset + i)); if (ret == _FAIL) goto exit; @@ -142,8 +145,8 @@ _PageWrite(struct rtw_adapter *padapter, u32 page, void *buffer, u32 size) u8 value8; u8 u8Page = (u8) (page & 0x07); - value8 = (rtw_read8(padapter, REG_MCUFWDL + 2) & 0xF8) | u8Page; - rtw_write8(padapter, REG_MCUFWDL + 2, value8); + value8 = (rtl8723au_read8(padapter, REG_MCUFWDL + 2) & 0xF8) | u8Page; + rtl8723au_write8(padapter, REG_MCUFWDL + 2, value8); return _BlockWrite(padapter, buffer, size); } @@ -187,14 +190,14 @@ exit: return ret; } -static s32 _FWFreeToGo(struct rtw_adapter *padapter) +static int _FWFreeToGo(struct rtw_adapter *padapter) { u32 counter = 0; u32 value32; /* polling CheckSum report */ do { - value32 = rtw_read32(padapter, REG_MCUFWDL); + value32 = rtl8723au_read32(padapter, REG_MCUFWDL); if (value32 & FWDL_ChkSum_rpt) break; } while (counter++ < POLLING_READY_TIMEOUT_COUNT); @@ -209,15 +212,15 @@ static s32 _FWFreeToGo(struct rtw_adapter *padapter) ("%s: Checksum report OK! REG_MCUFWDL:0x%08x\n", __func__, value32)); - value32 = rtw_read32(padapter, REG_MCUFWDL); + value32 = rtl8723au_read32(padapter, REG_MCUFWDL); value32 |= MCUFWDL_RDY; value32 &= ~WINTINI_RDY; - rtw_write32(padapter, REG_MCUFWDL, value32); + rtl8723au_write32(padapter, REG_MCUFWDL, value32); /* polling for FW ready */ counter = 0; do { - value32 = rtw_read32(padapter, REG_MCUFWDL); + value32 = rtl8723au_read32(padapter, REG_MCUFWDL); if (value32 & WINTINI_RDY) { RT_TRACE(_module_hal_init_c_, _drv_info_, ("%s: Polling FW ready success!! " @@ -248,15 +251,15 @@ void rtl8723a_FirmwareSelfReset(struct rtw_adapter *padapter) pHalData->FirmwareSubVersion < 0x01)))) { /* after 88C Fw v33.1 */ /* 0x1cf = 0x20. Inform 8051 to reset. 2009.12.25. tynli_test */ - rtw_write8(padapter, REG_HMETFR + 3, 0x20); + rtl8723au_write8(padapter, REG_HMETFR + 3, 0x20); - u1bTmp = rtw_read8(padapter, REG_SYS_FUNC_EN + 1); - while (u1bTmp & BIT2) { + u1bTmp = rtl8723au_read8(padapter, REG_SYS_FUNC_EN + 1); + while (u1bTmp & BIT(2)) { Delay--; if (Delay == 0) break; udelay(50); - u1bTmp = rtw_read8(padapter, REG_SYS_FUNC_EN + 1); + u1bTmp = rtl8723au_read8(padapter, REG_SYS_FUNC_EN + 1); } RT_TRACE(_module_hal_init_c_, _drv_info_, ("-%s: 8051 reset success (%d)\n", __func__, @@ -264,9 +267,9 @@ void rtl8723a_FirmwareSelfReset(struct rtw_adapter *padapter) if ((Delay == 0)) { /* force firmware reset */ - u1bTmp = rtw_read8(padapter, REG_SYS_FUNC_EN + 1); - rtw_write8(padapter, REG_SYS_FUNC_EN + 1, - u1bTmp & (~BIT2)); + u1bTmp = rtl8723au_read8(padapter, REG_SYS_FUNC_EN + 1); + rtl8723au_write8(padapter, REG_SYS_FUNC_EN + 1, + u1bTmp & ~BIT(2)); } } } @@ -276,9 +279,9 @@ void rtl8723a_FirmwareSelfReset(struct rtw_adapter *padapter) /* Download 8192C firmware code. */ /* */ /* */ -s32 rtl8723a_FirmwareDownload(struct rtw_adapter *padapter) +int rtl8723a_FirmwareDownload(struct rtw_adapter *padapter) { - s32 rtStatus = _SUCCESS; + int rtStatus = _SUCCESS; u8 writeFW_retry = 0; unsigned long fwdl_start_time; struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); @@ -295,7 +298,7 @@ s32 rtl8723a_FirmwareDownload(struct rtw_adapter *padapter) RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __func__)); if (IS_8723A_A_CUT(pHalData->VersionID)) { - fw_name = "rtlwifi/rtl8723aufw.bin"; + fw_name = "rtlwifi/rtl8723aufw_A.bin"; RT_TRACE(_module_hal_init_c_, _drv_info_, ("rtl8723a_FirmwareDownload: R8723FwImageArray_UMC " "for RTL8723A A CUT\n")); @@ -306,15 +309,15 @@ s32 rtl8723a_FirmwareDownload(struct rtw_adapter *padapter) DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithoutBT for " "RTL8723A B CUT\n"); } else { -#ifdef CONFIG_8723AU_BT_COEXIST - fw_name = "rtlwifi/rtl8723aufw_B.bin"; - DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithBT for " - "RTL8723A B CUT\n"); -#else - fw_name = "rtlwifi/rtl8723aufw_B_NoBT.bin"; - DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithoutBT for " - "RTL8723A B CUT\n"); -#endif + if (rtl8723a_BT_coexist(padapter)) { + fw_name = "rtlwifi/rtl8723aufw_B.bin"; + DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithBT " + "for RTL8723A B CUT\n"); + } else { + fw_name = "rtlwifi/rtl8723aufw_B_NoBT.bin"; + DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithout " + "BT for RTL8723A B CUT\n"); + } } } else { /* <Roger_TODO> We should download proper RAM Code here @@ -336,12 +339,11 @@ s32 rtl8723a_FirmwareDownload(struct rtw_adapter *padapter) rtStatus = _FAIL; goto Exit; } - firmware_buf = kzalloc(fw->size, GFP_KERNEL); + firmware_buf = kmemdup(fw->data, fw->size, GFP_KERNEL); if (!firmware_buf) { rtStatus = _FAIL; goto Exit; } - memcpy(firmware_buf, fw->data, fw->size); buf = firmware_buf; fw_size = fw->size; release_firmware(fw); @@ -372,18 +374,19 @@ s32 rtl8723a_FirmwareDownload(struct rtw_adapter *padapter) /* Suggested by Filen. If 8051 is running in RAM code, driver should inform Fw to reset by itself, */ /* or it will cause download Fw fail. 2010.02.01. by tynli. */ - if (rtw_read8(padapter, REG_MCUFWDL) & RAM_DL_SEL) { + if (rtl8723au_read8(padapter, REG_MCUFWDL) & RAM_DL_SEL) { /* 8051 RAM code */ rtl8723a_FirmwareSelfReset(padapter); - rtw_write8(padapter, REG_MCUFWDL, 0x00); + rtl8723au_write8(padapter, REG_MCUFWDL, 0x00); } _FWDownloadEnable(padapter, true); fwdl_start_time = jiffies; while (1) { /* reset the FWDL chksum */ - rtw_write8(padapter, REG_MCUFWDL, - rtw_read8(padapter, REG_MCUFWDL) | FWDL_ChkSum_rpt); + rtl8723au_write8(padapter, REG_MCUFWDL, + rtl8723au_read8(padapter, REG_MCUFWDL) | + FWDL_ChkSum_rpt); rtStatus = _WriteFW(padapter, buf, fw_size); @@ -427,14 +430,6 @@ void rtl8723a_InitializeFirmwareVars(struct rtw_adapter *padapter) pHalData->LastHMEBoxNum = 0; } -static void rtl8723a_free_hal_data(struct rtw_adapter *padapter) -{ - - kfree(padapter->HalData); - padapter->HalData = NULL; - -} - /* */ /* Efuse related code */ /* */ @@ -445,7 +440,7 @@ hal_EfuseSwitchToBank(struct rtw_adapter *padapter, u8 bank) u32 value32 = 0; DBG_8723A("%s: Efuse switch bank to %d\n", __func__, bank); - value32 = rtw_read32(padapter, EFUSE_TEST); + value32 = rtl8723au_read32(padapter, EFUSE_TEST); bRet = true; switch (bank) { case 0: @@ -470,147 +465,12 @@ hal_EfuseSwitchToBank(struct rtw_adapter *padapter, u8 bank) bRet = false; break; } - rtw_write32(padapter, EFUSE_TEST, value32); + rtl8723au_write32(padapter, EFUSE_TEST, value32); return bRet; } static void -Hal_GetEfuseDefinition(struct rtw_adapter *padapter, - u8 efuseType, u8 type, void *pOut) -{ - u8 *pu1Tmp; - u16 *pu2Tmp; - u8 *pMax_section; - - switch (type) { - case TYPE_EFUSE_MAX_SECTION: - pMax_section = (u8 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pMax_section = EFUSE_MAX_SECTION_8723A; - else - *pMax_section = EFUSE_BT_MAX_SECTION; - break; - - case TYPE_EFUSE_REAL_CONTENT_LEN: - pu2Tmp = (u16 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pu2Tmp = EFUSE_REAL_CONTENT_LEN_8723A; - else - *pu2Tmp = EFUSE_BT_REAL_CONTENT_LEN; - break; - - case TYPE_AVAILABLE_EFUSE_BYTES_BANK: - pu2Tmp = (u16 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pu2Tmp = (EFUSE_REAL_CONTENT_LEN_8723A - - EFUSE_OOB_PROTECT_BYTES); - else - *pu2Tmp = (EFUSE_BT_REAL_BANK_CONTENT_LEN - - EFUSE_PROTECT_BYTES_BANK); - break; - - case TYPE_AVAILABLE_EFUSE_BYTES_TOTAL: - pu2Tmp = (u16 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pu2Tmp = (EFUSE_REAL_CONTENT_LEN_8723A - - EFUSE_OOB_PROTECT_BYTES); - else - *pu2Tmp = (EFUSE_BT_REAL_CONTENT_LEN - - (EFUSE_PROTECT_BYTES_BANK * 3)); - break; - - case TYPE_EFUSE_MAP_LEN: - pu2Tmp = (u16 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pu2Tmp = EFUSE_MAP_LEN_8723A; - else - *pu2Tmp = EFUSE_BT_MAP_LEN; - break; - - case TYPE_EFUSE_PROTECT_BYTES_BANK: - pu1Tmp = (u8 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pu1Tmp = EFUSE_OOB_PROTECT_BYTES; - else - *pu1Tmp = EFUSE_PROTECT_BYTES_BANK; - break; - - case TYPE_EFUSE_CONTENT_LEN_BANK: - pu2Tmp = (u16 *) pOut; - - if (efuseType == EFUSE_WIFI) - *pu2Tmp = EFUSE_REAL_CONTENT_LEN_8723A; - else - *pu2Tmp = EFUSE_BT_REAL_BANK_CONTENT_LEN; - break; - - default: - pu1Tmp = (u8 *) pOut; - *pu1Tmp = 0; - break; - } -} - -#define VOLTAGE_V25 0x03 -#define LDOE25_SHIFT 28 - -static void -Hal_EfusePowerSwitch(struct rtw_adapter *padapter, u8 bWrite, u8 PwrState) -{ - u8 tempval; - u16 tmpV16; - - if (PwrState == true) { - rtw_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON); - - /* 1.2V Power: From VDDON with Power - Cut(0x0000h[15]), defualt valid */ - tmpV16 = rtw_read16(padapter, REG_SYS_ISO_CTRL); - if (!(tmpV16 & PWC_EV12V)) { - tmpV16 |= PWC_EV12V; - rtw_write16(padapter, REG_SYS_ISO_CTRL, tmpV16); - } - /* Reset: 0x0000h[28], default valid */ - tmpV16 = rtw_read16(padapter, REG_SYS_FUNC_EN); - if (!(tmpV16 & FEN_ELDR)) { - tmpV16 |= FEN_ELDR; - rtw_write16(padapter, REG_SYS_FUNC_EN, tmpV16); - } - - /* Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock - from ANA, default valid */ - tmpV16 = rtw_read16(padapter, REG_SYS_CLKR); - if ((!(tmpV16 & LOADER_CLK_EN)) || (!(tmpV16 & ANA8M))) { - tmpV16 |= (LOADER_CLK_EN | ANA8M); - rtw_write16(padapter, REG_SYS_CLKR, tmpV16); - } - - if (bWrite == true) { - /* Enable LDO 2.5V before read/write action */ - tempval = rtw_read8(padapter, EFUSE_TEST + 3); - tempval &= 0x0F; - tempval |= (VOLTAGE_V25 << 4); - rtw_write8(padapter, EFUSE_TEST + 3, (tempval | 0x80)); - } - } else { - rtw_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF); - - if (bWrite == true) { - /* Disable LDO 2.5V after read/write action */ - tempval = rtw_read8(padapter, EFUSE_TEST + 3); - rtw_write8(padapter, EFUSE_TEST + 3, (tempval & 0x7F)); - } - } -} - -static void hal_ReadEFuse_WiFi(struct rtw_adapter *padapter, u16 _offset, u16 _size_byte, u8 *pbuf) { @@ -619,6 +479,7 @@ hal_ReadEFuse_WiFi(struct rtw_adapter *padapter, u8 offset, wden; u8 efuseHeader, efuseExtHdr, efuseData; u16 i, total, used; + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ @@ -628,7 +489,7 @@ hal_ReadEFuse_WiFi(struct rtw_adapter *padapter, return; } - efuseTbl = (u8 *) kmalloc(EFUSE_MAP_LEN_8723A, GFP_KERNEL); + efuseTbl = kmalloc(EFUSE_MAP_LEN_8723A, GFP_KERNEL); if (efuseTbl == NULL) { DBG_8723A("%s: alloc efuseTbl fail!\n", __func__); return; @@ -696,7 +557,7 @@ hal_ReadEFuse_WiFi(struct rtw_adapter *padapter, EFUSE_GetEfuseDefinition23a(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &total); used = eFuse_Addr - 1; - rtw_hal_set_hwreg23a(padapter, HW_VAR_EFUSE_BYTES, (u8 *)&used); + pHalData->EfuseUsedBytes = used; kfree(efuseTbl); } @@ -711,6 +572,7 @@ hal_ReadEFuse_BT(struct rtw_adapter *padapter, u8 efuseHeader, efuseExtHdr, efuseData; u8 offset, wden; u16 i, total, used; + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ @@ -812,15 +674,15 @@ hal_ReadEFuse_BT(struct rtw_adapter *padapter, EFUSE_GetEfuseDefinition23a(padapter, EFUSE_BT, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &total); used = (EFUSE_BT_REAL_BANK_CONTENT_LEN * (bank - 1)) + eFuse_Addr - 1; - rtw_hal_set_hwreg23a(padapter, HW_VAR_EFUSE_BT_BYTES, (u8 *) &used); + pHalData->BTEfuseUsedBytes = used; exit: kfree(efuseTbl); } -static void -Hal_ReadEFuse(struct rtw_adapter *padapter, - u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf) +void +rtl8723a_readefuse(struct rtw_adapter *padapter, + u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf) { if (efuseType == EFUSE_WIFI) hal_ReadEFuse_WiFi(padapter, _offset, _size_byte, pbuf); @@ -828,14 +690,14 @@ Hal_ReadEFuse(struct rtw_adapter *padapter, hal_ReadEFuse_BT(padapter, _offset, _size_byte, pbuf); } -static u16 -hal_EfuseGetCurrentSize_WiFi(struct rtw_adapter *padapter) +u16 rtl8723a_EfuseGetCurrentSize_WiFi(struct rtw_adapter *padapter) { u16 efuse_addr = 0; u8 hoffset = 0, hworden = 0; u8 efuse_data, word_cnts = 0; + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - rtw23a_hal_get_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8 *) &efuse_addr); + efuse_addr = pHalData->EfuseUsedBytes; DBG_8723A("%s: start_efuse_addr = 0x%X\n", __func__, efuse_addr); @@ -844,7 +706,7 @@ hal_EfuseGetCurrentSize_WiFi(struct rtw_adapter *padapter) while (AVAILABLE_EFUSE_ADDR(efuse_addr)) { if (efuse_OneByteRead23a(padapter, efuse_addr, &efuse_data) == - false) { + _FAIL) { DBG_8723A(KERN_ERR "%s: efuse_OneByteRead23a Fail! " "addr = 0x%X !!\n", __func__, efuse_addr); break; @@ -872,15 +734,14 @@ hal_EfuseGetCurrentSize_WiFi(struct rtw_adapter *padapter) efuse_addr += (word_cnts * 2) + 1; } - rtw_hal_set_hwreg23a(padapter, HW_VAR_EFUSE_BYTES, (u8 *) &efuse_addr); + pHalData->EfuseUsedBytes = efuse_addr; DBG_8723A("%s: CurrentSize =%d\n", __func__, efuse_addr); return efuse_addr; } -static u16 -hal_EfuseGetCurrentSize_BT(struct rtw_adapter *padapter) +u16 rtl8723a_EfuseGetCurrentSize_BT(struct rtw_adapter *padapter) { u16 btusedbytes; u16 efuse_addr; @@ -888,8 +749,9 @@ hal_EfuseGetCurrentSize_BT(struct rtw_adapter *padapter) u8 hoffset = 0, hworden = 0; u8 efuse_data, word_cnts = 0; u16 retU2 = 0; + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - rtw23a_hal_get_hwreg(padapter, HW_VAR_EFUSE_BT_BYTES, (u8 *) &btusedbytes); + btusedbytes = pHalData->BTEfuseUsedBytes; efuse_addr = (u16) ((btusedbytes % EFUSE_BT_REAL_BANK_CONTENT_LEN)); startBank = (u8) (1 + (btusedbytes / EFUSE_BT_REAL_BANK_CONTENT_LEN)); @@ -915,7 +777,7 @@ hal_EfuseGetCurrentSize_BT(struct rtw_adapter *padapter) while (AVAILABLE_EFUSE_ADDR(efuse_addr)) { if (efuse_OneByteRead23a(padapter, efuse_addr, - &efuse_data) == false) { + &efuse_data) == _FAIL) { DBG_8723A(KERN_ERR "%s: efuse_OneByteRead23a Fail!" " addr = 0x%X !!\n", __func__, efuse_addr); @@ -954,86 +816,14 @@ hal_EfuseGetCurrentSize_BT(struct rtw_adapter *padapter) } retU2 = ((bank - 1) * EFUSE_BT_REAL_BANK_CONTENT_LEN) + efuse_addr; - rtw_hal_set_hwreg23a(padapter, HW_VAR_EFUSE_BT_BYTES, (u8 *)&retU2); + pHalData->BTEfuseUsedBytes = retU2; DBG_8723A("%s: CurrentSize =%d\n", __func__, retU2); return retU2; } -static u16 -Hal_EfuseGetCurrentSize(struct rtw_adapter *pAdapter, u8 efuseType) -{ - u16 ret = 0; - - if (efuseType == EFUSE_WIFI) - ret = hal_EfuseGetCurrentSize_WiFi(pAdapter); - else - ret = hal_EfuseGetCurrentSize_BT(pAdapter); - - return ret; -} - -static u8 -Hal_EfuseWordEnableDataWrite(struct rtw_adapter *padapter, - u16 efuse_addr, u8 word_en, u8 *data) -{ - u16 tmpaddr = 0; - u16 start_addr = efuse_addr; - u8 badworden = 0x0F; - u8 tmpdata[PGPKT_DATA_SIZE]; - - memset(tmpdata, 0xFF, PGPKT_DATA_SIZE); - - if (!(word_en & BIT(0))) { - tmpaddr = start_addr; - efuse_OneByteWrite23a(padapter, start_addr++, data[0]); - efuse_OneByteWrite23a(padapter, start_addr++, data[1]); - - efuse_OneByteRead23a(padapter, tmpaddr, &tmpdata[0]); - efuse_OneByteRead23a(padapter, tmpaddr + 1, &tmpdata[1]); - if ((data[0] != tmpdata[0]) || (data[1] != tmpdata[1])) { - badworden &= (~BIT(0)); - } - } - if (!(word_en & BIT(1))) { - tmpaddr = start_addr; - efuse_OneByteWrite23a(padapter, start_addr++, data[2]); - efuse_OneByteWrite23a(padapter, start_addr++, data[3]); - - efuse_OneByteRead23a(padapter, tmpaddr, &tmpdata[2]); - efuse_OneByteRead23a(padapter, tmpaddr + 1, &tmpdata[3]); - if ((data[2] != tmpdata[2]) || (data[3] != tmpdata[3])) { - badworden &= (~BIT(1)); - } - } - if (!(word_en & BIT(2))) { - tmpaddr = start_addr; - efuse_OneByteWrite23a(padapter, start_addr++, data[4]); - efuse_OneByteWrite23a(padapter, start_addr++, data[5]); - - efuse_OneByteRead23a(padapter, tmpaddr, &tmpdata[4]); - efuse_OneByteRead23a(padapter, tmpaddr + 1, &tmpdata[5]); - if ((data[4] != tmpdata[4]) || (data[5] != tmpdata[5])) { - badworden &= (~BIT(2)); - } - } - if (!(word_en & BIT(3))) { - tmpaddr = start_addr; - efuse_OneByteWrite23a(padapter, start_addr++, data[6]); - efuse_OneByteWrite23a(padapter, start_addr++, data[7]); - - efuse_OneByteRead23a(padapter, tmpaddr, &tmpdata[6]); - efuse_OneByteRead23a(padapter, tmpaddr + 1, &tmpdata[7]); - if ((data[6] != tmpdata[6]) || (data[7] != tmpdata[7])) { - badworden &= (~BIT(3)); - } - } - - return badworden; -} - -static s32 -Hal_EfusePgPacketRead(struct rtw_adapter *padapter, u8 offset, u8 *data) +bool +rtl8723a_EfusePgPacketRead(struct rtw_adapter *padapter, u8 offset, u8 *data) { u8 efuse_data, word_cnts = 0; u16 efuse_addr = 0; @@ -1064,7 +854,7 @@ Hal_EfusePgPacketRead(struct rtw_adapter *padapter, u8 offset, u8 *data) /* */ while (AVAILABLE_EFUSE_ADDR(efuse_addr)) { if (efuse_OneByteRead23a(padapter, efuse_addr++, &efuse_data) == - false) { + _FAIL) { ret = false; break; } @@ -1110,281 +900,7 @@ Hal_EfusePgPacketRead(struct rtw_adapter *padapter, u8 offset, u8 *data) return ret; } -static u8 -hal_EfusePgCheckAvailableAddr(struct rtw_adapter *pAdapter, u8 efuseType) -{ - u16 max_available = 0; - u16 current_size; - - EFUSE_GetEfuseDefinition23a(pAdapter, efuseType, - TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, - &max_available); - - current_size = Efuse_GetCurrentSize23a(pAdapter, efuseType); - if (current_size >= max_available) { - DBG_8723A("%s: Error!! current_size(%d)>max_available(%d)\n", - __func__, current_size, max_available); - return false; - } - return true; -} - -static void -hal_EfuseConstructPGPkt(u8 offset, u8 word_en, u8 *pData, - struct pg_pkt_struct *pTargetPkt) -{ - memset(pTargetPkt->data, 0xFF, PGPKT_DATA_SIZE); - pTargetPkt->offset = offset; - pTargetPkt->word_en = word_en; - efuse_WordEnableDataRead23a(word_en, pData, pTargetPkt->data); - pTargetPkt->word_cnts = Efuse_CalculateWordCnts23a(pTargetPkt->word_en); -} - -static u8 -hal_EfusePartialWriteCheck(struct rtw_adapter *padapter, u8 efuseType, - u16 *pAddr, struct pg_pkt_struct *pTargetPkt) -{ - u8 bRet = false; - u16 startAddr = 0, efuse_max_available_len = 0, efuse_max = 0; - u8 efuse_data = 0; - - EFUSE_GetEfuseDefinition23a(padapter, efuseType, - TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, - &efuse_max_available_len); - EFUSE_GetEfuseDefinition23a(padapter, efuseType, - TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max); - - if (efuseType == EFUSE_WIFI) { - rtw23a_hal_get_hwreg(padapter, HW_VAR_EFUSE_BYTES, - (u8 *) &startAddr); - } else { - rtw23a_hal_get_hwreg(padapter, HW_VAR_EFUSE_BT_BYTES, - (u8 *) &startAddr); - } - startAddr %= efuse_max; - - while (1) { - if (startAddr >= efuse_max_available_len) { - bRet = false; - DBG_8723A("%s: startAddr(%d) >= efuse_max_available_" - "len(%d)\n", __func__, startAddr, - efuse_max_available_len); - break; - } - - if (efuse_OneByteRead23a(padapter, startAddr, &efuse_data) && - (efuse_data != 0xFF)) { - bRet = false; - DBG_8723A("%s: Something Wrong! last bytes(%#X = 0x%02X) " - "is not 0xFF\n", __func__, - startAddr, efuse_data); - break; - } else { - /* not used header, 0xff */ - *pAddr = startAddr; - bRet = true; - break; - } - } - - return bRet; -} - -static u8 -hal_EfusePgPacketWrite1ByteHeader(struct rtw_adapter *pAdapter, u8 efuseType, - u16 *pAddr, struct pg_pkt_struct *pTargetPkt) -{ - u8 pg_header = 0, tmp_header = 0; - u16 efuse_addr = *pAddr; - u8 repeatcnt = 0; - - pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; - - do { - efuse_OneByteWrite23a(pAdapter, efuse_addr, pg_header); - efuse_OneByteRead23a(pAdapter, efuse_addr, &tmp_header); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - DBG_8723A("%s: Repeat over limit for pg_header!!\n", - __func__); - return false; - } - } while (1); - - if (tmp_header != pg_header) { - DBG_8723A(KERN_ERR "%s: PG Header Fail!!(pg = 0x%02X " - "read = 0x%02X)\n", __func__, - pg_header, tmp_header); - return false; - } - - *pAddr = efuse_addr; - - return true; -} - -static u8 -hal_EfusePgPacketWrite2ByteHeader(struct rtw_adapter *padapter, u8 efuseType, - u16 *pAddr, struct pg_pkt_struct *pTargetPkt) -{ - u16 efuse_addr, efuse_max_available_len = 0; - u8 pg_header = 0, tmp_header = 0; - u8 repeatcnt = 0; - - EFUSE_GetEfuseDefinition23a(padapter, efuseType, - TYPE_AVAILABLE_EFUSE_BYTES_BANK, - &efuse_max_available_len); - - efuse_addr = *pAddr; - if (efuse_addr >= efuse_max_available_len) { - DBG_8723A("%s: addr(%d) over avaliable(%d)!!\n", __func__, - efuse_addr, efuse_max_available_len); - return false; - } - - pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; - - do { - efuse_OneByteWrite23a(padapter, efuse_addr, pg_header); - efuse_OneByteRead23a(padapter, efuse_addr, &tmp_header); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - DBG_8723A("%s: Repeat over limit for pg_header!!\n", - __func__); - return false; - } - } while (1); - - if (tmp_header != pg_header) { - DBG_8723A(KERN_ERR - "%s: PG Header Fail!!(pg = 0x%02X read = 0x%02X)\n", - __func__, pg_header, tmp_header); - return false; - } - - /* to write ext_header */ - efuse_addr++; - pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; - - do { - efuse_OneByteWrite23a(padapter, efuse_addr, pg_header); - efuse_OneByteRead23a(padapter, efuse_addr, &tmp_header); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - DBG_8723A("%s: Repeat over limit for ext_header!!\n", - __func__); - return false; - } - } while (1); - - if (tmp_header != pg_header) { /* offset PG fail */ - DBG_8723A(KERN_ERR - "%s: PG EXT Header Fail!!(pg = 0x%02X read = 0x%02X)\n", - __func__, pg_header, tmp_header); - return false; - } - - *pAddr = efuse_addr; - - return true; -} - -static u8 -hal_EfusePgPacketWriteHeader(struct rtw_adapter *padapter, u8 efuseType, - u16 *pAddr, struct pg_pkt_struct *pTargetPkt) -{ - u8 bRet = false; - - if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) { - bRet = hal_EfusePgPacketWrite2ByteHeader(padapter, efuseType, - pAddr, pTargetPkt); - } else { - bRet = hal_EfusePgPacketWrite1ByteHeader(padapter, efuseType, - pAddr, pTargetPkt); - } - - return bRet; -} - -static u8 -hal_EfusePgPacketWriteData(struct rtw_adapter *pAdapter, u8 efuseType, - u16 *pAddr, struct pg_pkt_struct *pTargetPkt) -{ - u16 efuse_addr; - u8 badworden; - - efuse_addr = *pAddr; - badworden = - Efuse_WordEnableDataWrite23a(pAdapter, efuse_addr + 1, - pTargetPkt->word_en, pTargetPkt->data); - if (badworden != 0x0F) { - DBG_8723A("%s: Fail!!\n", __func__); - return false; - } - - return true; -} - -static s32 -Hal_EfusePgPacketWrite(struct rtw_adapter *padapter, - u8 offset, u8 word_en, u8 *pData) -{ - struct pg_pkt_struct targetPkt; - u16 startAddr = 0; - u8 efuseType = EFUSE_WIFI; - - if (!hal_EfusePgCheckAvailableAddr(padapter, efuseType)) - return false; - - hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt); - - if (!hal_EfusePartialWriteCheck(padapter, efuseType, - &startAddr, &targetPkt)) - return false; - - if (!hal_EfusePgPacketWriteHeader(padapter, efuseType, - &startAddr, &targetPkt)) - return false; - - if (!hal_EfusePgPacketWriteData(padapter, efuseType, - &startAddr, &targetPkt)) - return false; - - return true; -} - -static bool -Hal_EfusePgPacketWrite_BT(struct rtw_adapter *pAdapter, - u8 offset, u8 word_en, u8 *pData) -{ - struct pg_pkt_struct targetPkt; - u16 startAddr = 0; - u8 efuseType = EFUSE_BT; - - if (!hal_EfusePgCheckAvailableAddr(pAdapter, efuseType)) - return false; - - hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt); - - if (!hal_EfusePartialWriteCheck(pAdapter, efuseType, - &startAddr, &targetPkt)) - return false; - - if (!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, - &startAddr, &targetPkt)) - return false; - - if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, - &startAddr, &targetPkt)) - return false; - - return true; -} - -static struct hal_version ReadChipVersion8723A(struct rtw_adapter *padapter) +void rtl8723a_read_chip_version(struct rtw_adapter *padapter) { u32 value32; struct hal_version ChipVersion; @@ -1392,7 +908,7 @@ static struct hal_version ReadChipVersion8723A(struct rtw_adapter *padapter) pHalData = GET_HAL_DATA(padapter); - value32 = rtw_read32(padapter, REG_SYS_CFG); + value32 = rtl8723au_read32(padapter, REG_SYS_CFG); ChipVersion.ICType = CHIP_8723A; ChipVersion.ChipType = ((value32 & RTL_ID) ? TEST_CHIP : NORMAL_CHIP); ChipVersion.RFType = RF_TYPE_1T1R; @@ -1404,13 +920,13 @@ static struct hal_version ReadChipVersion8723A(struct rtw_adapter *padapter) pHalData->RegulatorMode = ((value32 & SPS_SEL) ? RT_LDO_REGULATOR : RT_SWITCHING_REGULATOR); - value32 = rtw_read32(padapter, REG_GPIO_OUTSTS); + value32 = rtl8723au_read32(padapter, REG_GPIO_OUTSTS); /* ROM code version. */ ChipVersion.ROMVer = ((value32 & RF_RL_ID) >> 20); /* For multi-function consideration. Added by Roger, 2010.10.06. */ pHalData->MultiFunc = RT_MULTI_FUNC_NONE; - value32 = rtw_read32(padapter, REG_MULTI_FUNC_CTRL); + value32 = rtl8723au_read32(padapter, REG_MULTI_FUNC_CTRL); pHalData->MultiFunc |= ((value32 & WL_FUNC_EN) ? RT_MULTI_FUNC_WIFI : 0); pHalData->MultiFunc |= ((value32 & BT_FUNC_EN) ? RT_MULTI_FUNC_BT : 0); @@ -1430,13 +946,6 @@ static struct hal_version ReadChipVersion8723A(struct rtw_adapter *padapter) pHalData->rf_type = RF_1T1R; MSG_8723A("RF_Type is %x!!\n", pHalData->rf_type); - - return ChipVersion; -} - -static void rtl8723a_read_chip_version(struct rtw_adapter *padapter) -{ - ReadChipVersion8723A(padapter); } /* */ @@ -1461,33 +970,34 @@ void SetBcnCtrlReg23a(struct rtw_adapter *padapter, u8 SetBits, u8 ClearBits) addr = REG_BCN_CTRL; - *pRegBcnCtrlVal = rtw_read8(padapter, addr); + *pRegBcnCtrlVal = rtl8723au_read8(padapter, addr); *pRegBcnCtrlVal |= SetBits; *pRegBcnCtrlVal &= ~ClearBits; - rtw_write8(padapter, addr, *pRegBcnCtrlVal); + rtl8723au_write8(padapter, addr, *pRegBcnCtrlVal); } void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - rtw_write16(padapter, REG_BCN_CTRL, 0x1010); + rtl8723au_write16(padapter, REG_BCN_CTRL, 0x1010); pHalData->RegBcnCtrlVal = 0x1010; /* TODO: Remove these magic number */ - rtw_write16(padapter, REG_TBTT_PROHIBIT, 0x6404); /* ms */ + rtl8723au_write16(padapter, REG_TBTT_PROHIBIT, 0x6404); /* ms */ /* Firmware will control REG_DRVERLYINT when power saving is enable, */ /* so don't set this register on STA mode. */ if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE) == false) - rtw_write8(padapter, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME); + rtl8723au_write8(padapter, REG_DRVERLYINT, + DRIVER_EARLY_INT_TIME); /* 2ms */ - rtw_write8(padapter, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); + rtl8723au_write8(padapter, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); /* Suggested by designer timchen. Change beacon AIFS to the largest number beacause test chip does not contension before sending beacon. by tynli. 2009.11.03 */ - rtw_write16(padapter, REG_BCNTCFG, 0x660F); + rtl8723au_write16(padapter, REG_BCNTCFG, 0x660F); } static void ResumeTxBeacon(struct rtw_adapter *padapter) @@ -1501,10 +1011,11 @@ static void ResumeTxBeacon(struct rtw_adapter *padapter) RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("+ResumeTxBeacon\n")); pHalData->RegFwHwTxQCtrl |= BIT(6); - rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, pHalData->RegFwHwTxQCtrl); - rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, 0xff); + rtl8723au_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + pHalData->RegFwHwTxQCtrl); + rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 1, 0xff); pHalData->RegReg542 |= BIT(0); - rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, pHalData->RegReg542); + rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 2, pHalData->RegReg542); } static void StopTxBeacon(struct rtw_adapter *padapter) @@ -1518,10 +1029,11 @@ static void StopTxBeacon(struct rtw_adapter *padapter) RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("+StopTxBeacon\n")); pHalData->RegFwHwTxQCtrl &= ~BIT(6); - rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, pHalData->RegFwHwTxQCtrl); - rtw_write8(padapter, REG_TBTT_PROHIBIT + 1, 0x64); + rtl8723au_write8(padapter, REG_FWHW_TXQ_CTRL + 2, + pHalData->RegFwHwTxQCtrl); + rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 1, 0x64); pHalData->RegReg542 &= ~BIT(0); - rtw_write8(padapter, REG_TBTT_PROHIBIT + 2, pHalData->RegReg542); + rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 2, pHalData->RegReg542); CheckFwRsvdPageContent23a(padapter); /* 2010.06.23. Added by tynli. */ } @@ -1531,10 +1043,10 @@ static void _BeaconFunctionEnable(struct rtw_adapter *padapter, u8 Enable, { SetBcnCtrlReg23a(padapter, DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB, 0); - rtw_write8(padapter, REG_RD_CTRL + 1, 0x6F); + rtl8723au_write8(padapter, REG_RD_CTRL + 1, 0x6F); } -static void rtl8723a_SetBeaconRelatedRegisters(struct rtw_adapter *padapter) +void rtl8723a_SetBeaconRelatedRegisters(struct rtw_adapter *padapter) { u32 value32; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; @@ -1555,32 +1067,32 @@ static void rtl8723a_SetBeaconRelatedRegisters(struct rtw_adapter *padapter) /* */ /* ATIM window */ /* */ - rtw_write16(padapter, REG_ATIMWND, 2); + rtl8723au_write16(padapter, REG_ATIMWND, 2); /* */ /* Beacon interval (in unit of TU). */ /* */ - rtw_write16(padapter, REG_BCN_INTERVAL, pmlmeinfo->bcn_interval); + rtl8723au_write16(padapter, REG_BCN_INTERVAL, pmlmeinfo->bcn_interval); rtl8723a_InitBeaconParameters(padapter); - rtw_write8(padapter, REG_SLOT, 0x09); + rtl8723au_write8(padapter, REG_SLOT, 0x09); /* */ /* Reset TSF Timer to zero, added by Roger. 2008.06.24 */ /* */ - value32 = rtw_read32(padapter, REG_TCR); + value32 = rtl8723au_read32(padapter, REG_TCR); value32 &= ~TSFRST; - rtw_write32(padapter, REG_TCR, value32); + rtl8723au_write32(padapter, REG_TCR, value32); value32 |= TSFRST; - rtw_write32(padapter, REG_TCR, value32); + rtl8723au_write32(padapter, REG_TCR, value32); /* NOTE: Fix test chip's bug (about contention windows's randomness) */ if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE | WIFI_AP_STATE) == true) { - rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); - rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50); + rtl8723au_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); + rtl8723au_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50); } _BeaconFunctionEnable(padapter, true, true); @@ -1589,21 +1101,9 @@ static void rtl8723a_SetBeaconRelatedRegisters(struct rtw_adapter *padapter) SetBcnCtrlReg23a(padapter, DIS_BCNQ_SUB, 0); } -static void rtl8723a_GetHalODMVar(struct rtw_adapter *Adapter, - enum hal_odm_variable eVariable, - void *pValue1, bool bSet) -{ - switch (eVariable) { - case HAL_ODM_STA_INFO: - break; - default: - break; - } -} - -static void rtl8723a_SetHalODMVar(struct rtw_adapter *Adapter, - enum hal_odm_variable eVariable, - void *pValue1, bool bSet) +void rtl8723a_SetHalODMVar(struct rtw_adapter *Adapter, + enum hal_odm_variable eVariable, + void *pValue1, bool bSet) { struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); struct dm_odm_t *podmpriv = &pHalData->odmpriv; @@ -1636,32 +1136,33 @@ static void rtl8723a_SetHalODMVar(struct rtw_adapter *Adapter, } } -static void hal_notch_filter_8723a(struct rtw_adapter *adapter, bool enable) +void rtl8723a_notch_filter(struct rtw_adapter *adapter, bool enable) { if (enable) { DBG_8723A("Enable notch filter\n"); - rtw_write8(adapter, rOFDM0_RxDSP + 1, - rtw_read8(adapter, rOFDM0_RxDSP + 1) | BIT1); + rtl8723au_write8(adapter, rOFDM0_RxDSP + 1, + rtl8723au_read8(adapter, rOFDM0_RxDSP + 1) | + BIT(1)); } else { DBG_8723A("Disable notch filter\n"); - rtw_write8(adapter, rOFDM0_RxDSP + 1, - rtw_read8(adapter, rOFDM0_RxDSP + 1) & ~BIT1); + rtl8723au_write8(adapter, rOFDM0_RxDSP + 1, + rtl8723au_read8(adapter, rOFDM0_RxDSP + 1) & + ~BIT(1)); } } -s32 c2h_id_filter_ccx_8723a(u8 id) +bool c2h_id_filter_ccx_8723a(u8 id) { - s32 ret = false; + bool ret = false; if (id == C2H_CCX_TX_RPT) ret = true; return ret; } -static s32 c2h_handler_8723a(struct rtw_adapter *padapter, - struct c2h_evt_hdr *c2h_evt) +int c2h_handler_8723a(struct rtw_adapter *padapter, struct c2h_evt_hdr *c2h_evt) { - s32 ret = _SUCCESS; + int ret = _SUCCESS; u8 i = 0; if (c2h_evt == NULL) { @@ -1701,12 +1202,11 @@ static s32 c2h_handler_8723a(struct rtw_adapter *padapter, c2h_evt->payload[3], c2h_evt->payload[4])); break; -#ifdef CONFIG_8723AU_BT_COEXIST case C2H_BT_INFO: DBG_8723A("%s , Got C2H_BT_INFO \n", __func__); - BT_FwC2hBtInfo(padapter, c2h_evt->payload, c2h_evt->plen); + rtl8723a_fw_c2h_BT_info(padapter, + c2h_evt->payload, c2h_evt->plen); break; -#endif default: ret = _FAIL; @@ -1717,97 +1217,36 @@ exit: return ret; } -void rtl8723a_set_hal_ops(struct hal_ops *pHalFunc) -{ - pHalFunc->free_hal_data = &rtl8723a_free_hal_data; - - pHalFunc->dm_init = &rtl8723a_init_dm_priv; - pHalFunc->dm_deinit = &rtl8723a_deinit_dm_priv; - - pHalFunc->read_chip_version = &rtl8723a_read_chip_version; - - pHalFunc->set_bwmode_handler = &PHY_SetBWMode23a8723A; - pHalFunc->set_channel_handler = &PHY_SwChnl8723A; - - pHalFunc->hal_dm_watchdog = &rtl8723a_HalDmWatchDog; - - pHalFunc->SetBeaconRelatedRegistersHandler = - &rtl8723a_SetBeaconRelatedRegisters; - - pHalFunc->Add_RateATid = &rtl8723a_add_rateatid; - pHalFunc->run_thread = &rtl8723a_start_thread; - pHalFunc->cancel_thread = &rtl8723a_stop_thread; - - pHalFunc->read_bbreg = &PHY_QueryBBReg; - pHalFunc->write_bbreg = &PHY_SetBBReg; - pHalFunc->read_rfreg = &PHY_QueryRFReg; - pHalFunc->write_rfreg = &PHY_SetRFReg; - - /* Efuse related function */ - pHalFunc->EfusePowerSwitch = &Hal_EfusePowerSwitch; - pHalFunc->ReadEFuse = &Hal_ReadEFuse; - pHalFunc->EFUSEGetEfuseDefinition = &Hal_GetEfuseDefinition; - pHalFunc->EfuseGetCurrentSize = &Hal_EfuseGetCurrentSize; - pHalFunc->Efuse_PgPacketRead23a = &Hal_EfusePgPacketRead; - pHalFunc->Efuse_PgPacketWrite23a = &Hal_EfusePgPacketWrite; - pHalFunc->Efuse_WordEnableDataWrite23a = &Hal_EfuseWordEnableDataWrite; - pHalFunc->Efuse_PgPacketWrite23a_BT = &Hal_EfusePgPacketWrite_BT; - - pHalFunc->sreset_init_value23a = &sreset_init_value23a; - pHalFunc->sreset_reset_value23a = &sreset_reset_value23a; - pHalFunc->silentreset = &sreset_reset; - pHalFunc->sreset_xmit_status_check = &rtl8723a_sreset_xmit_status_check; - pHalFunc->sreset_linked_status_check = - &rtl8723a_sreset_linked_status_check; - pHalFunc->sreset_get_wifi_status23a = &sreset_get_wifi_status23a; - pHalFunc->sreset_inprogress = &sreset_inprogress; - pHalFunc->GetHalODMVarHandler = &rtl8723a_GetHalODMVar; - pHalFunc->SetHalODMVarHandler = &rtl8723a_SetHalODMVar; - - pHalFunc->hal_notch_filter = &hal_notch_filter_8723a; - - pHalFunc->c2h_handler = c2h_handler_8723a; - pHalFunc->c2h_id_filter_ccx = c2h_id_filter_ccx_8723a; -} - void rtl8723a_InitAntenna_Selection(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData; u8 val; - pHalData = GET_HAL_DATA(padapter); - - val = rtw_read8(padapter, REG_LEDCFG2); + val = rtl8723au_read8(padapter, REG_LEDCFG2); /* Let 8051 take control antenna settting */ val |= BIT(7); /* DPDT_SEL_EN, 0x4C[23] */ - rtw_write8(padapter, REG_LEDCFG2, val); + rtl8723au_write8(padapter, REG_LEDCFG2, val); } void rtl8723a_CheckAntenna_Selection(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData; u8 val; - pHalData = GET_HAL_DATA(padapter); - - val = rtw_read8(padapter, REG_LEDCFG2); + val = rtl8723au_read8(padapter, REG_LEDCFG2); /* Let 8051 take control antenna settting */ if (!(val & BIT(7))) { val |= BIT(7); /* DPDT_SEL_EN, 0x4C[23] */ - rtw_write8(padapter, REG_LEDCFG2, val); + rtl8723au_write8(padapter, REG_LEDCFG2, val); } } void rtl8723a_DeinitAntenna_Selection(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData; u8 val; - pHalData = GET_HAL_DATA(padapter); - val = rtw_read8(padapter, REG_LEDCFG2); + val = rtl8723au_read8(padapter, REG_LEDCFG2); /* Let 8051 take control antenna settting */ val &= ~BIT(7); /* DPDT_SEL_EN, clear 0x4C[23] */ - rtw_write8(padapter, REG_LEDCFG2, val); + rtl8723au_write8(padapter, REG_LEDCFG2, val); } void rtl8723a_init_default_value(struct rtw_adapter *padapter) @@ -1847,7 +1286,7 @@ u8 GetEEPROMSize8723A(struct rtw_adapter *padapter) u8 size = 0; u32 cr; - cr = rtw_read16(padapter, REG_9346CR); + cr = rtl8723au_read16(padapter, REG_9346CR); /* 6: EEPROM used is 93C46, 4: boot from E-Fuse. */ size = (cr & BOOT_FROM_EEPROM) ? 6 : 4; @@ -1861,19 +1300,19 @@ u8 GetEEPROMSize8723A(struct rtw_adapter *padapter) /* LLT R/W/Init function */ /* */ /* */ -static s32 _LLTWrite(struct rtw_adapter *padapter, u32 address, u32 data) +static int _LLTWrite(struct rtw_adapter *padapter, u32 address, u32 data) { - s32 status = _SUCCESS; + int status = _SUCCESS; s32 count = 0; u32 value = _LLT_INIT_ADDR(address) | _LLT_INIT_DATA(data) | _LLT_OP(_LLT_WRITE_ACCESS); u16 LLTReg = REG_LLT_INIT; - rtw_write32(padapter, LLTReg, value); + rtl8723au_write32(padapter, LLTReg, value); /* polling */ do { - value = rtw_read32(padapter, LLTReg); + value = rtl8723au_read32(padapter, LLTReg); if (_LLT_NO_ACTIVE == _LLT_OP_VALUE(value)) { break; } @@ -1890,23 +1329,23 @@ static s32 _LLTWrite(struct rtw_adapter *padapter, u32 address, u32 data) return status; } -s32 InitLLTTable23a(struct rtw_adapter *padapter, u32 boundary) +int InitLLTTable23a(struct rtw_adapter *padapter, u32 boundary) { - s32 status = _SUCCESS; + int status = _SUCCESS; u32 i; u32 txpktbuf_bndy = boundary; u32 Last_Entry_Of_TxPktBuf = LAST_ENTRY_OF_TX_PKT_BUFFER; for (i = 0; i < (txpktbuf_bndy - 1); i++) { status = _LLTWrite(padapter, i, i + 1); - if (_SUCCESS != status) { + if (status != _SUCCESS) { return status; } } /* end of list */ status = _LLTWrite(padapter, (txpktbuf_bndy - 1), 0xFF); - if (_SUCCESS != status) { + if (status != _SUCCESS) { return status; } @@ -1923,7 +1362,7 @@ s32 InitLLTTable23a(struct rtw_adapter *padapter, u32 boundary) /* Let last entry point to the start entry of ring buffer */ status = _LLTWrite(padapter, Last_Entry_Of_TxPktBuf, txpktbuf_bndy); - if (_SUCCESS != status) { + if (status != _SUCCESS) { return status; } @@ -1943,11 +1382,11 @@ n. LEDCFG 0x4C[15:0] = 0x8080 u32 u4bTmp; /* 1. Disable GPIO[7:0] */ - rtw_write16(padapter, REG_GPIO_PIN_CTRL + 2, 0x0000); - value32 = rtw_read32(padapter, REG_GPIO_PIN_CTRL) & 0xFFFF00FF; + rtl8723au_write16(padapter, REG_GPIO_PIN_CTRL + 2, 0x0000); + value32 = rtl8723au_read32(padapter, REG_GPIO_PIN_CTRL) & 0xFFFF00FF; u4bTmp = value32 & 0x000000FF; value32 |= ((u4bTmp << 8) | 0x00FF0000); - rtw_write32(padapter, REG_GPIO_PIN_CTRL, value32); + rtl8723au_write32(padapter, REG_GPIO_PIN_CTRL, value32); /* */ /* <Roger_Notes> For RTL8723u multi-function configuration which @@ -1958,15 +1397,15 @@ n. LEDCFG 0x4C[15:0] = 0x8080 /* 2. Disable GPIO[8] and GPIO[12] */ /* Configure all pins as input mode. */ - rtw_write16(padapter, REG_GPIO_IO_SEL_2, 0x0000); - value32 = rtw_read32(padapter, REG_GPIO_PIN_CTRL_2) & 0xFFFF001F; + rtl8723au_write16(padapter, REG_GPIO_IO_SEL_2, 0x0000); + value32 = rtl8723au_read32(padapter, REG_GPIO_PIN_CTRL_2) & 0xFFFF001F; u4bTmp = value32 & 0x0000001F; /* Set pin 8, 10, 11 and pin 12 to output mode. */ value32 |= ((u4bTmp << 8) | 0x001D0000); - rtw_write32(padapter, REG_GPIO_PIN_CTRL_2, value32); + rtl8723au_write32(padapter, REG_GPIO_PIN_CTRL_2, value32); /* 3. Disable LED0 & 1 */ - rtw_write16(padapter, REG_LEDCFG0, 0x8080); + rtl8723au_write16(padapter, REG_LEDCFG0, 0x8080); } /* end of _DisableGPIO() */ static void _DisableRFAFEAndResetBB8192C(struct rtw_adapter *padapter) @@ -1980,21 +1419,21 @@ e. SYS_FUNC_EN 0x02[7:0] = 0x14 reset BB state machine ***************************************/ u8 eRFPath = 0, value8 = 0; - rtw_write8(padapter, REG_TXPAUSE, 0xFF); + rtl8723au_write8(padapter, REG_TXPAUSE, 0xFF); PHY_SetRFReg(padapter, (enum RF_RADIO_PATH) eRFPath, 0x0, bMaskByte0, 0x0); value8 |= APSDOFF; - rtw_write8(padapter, REG_APSD_CTRL, value8); /* 0x40 */ + rtl8723au_write8(padapter, REG_APSD_CTRL, value8); /* 0x40 */ /* Set BB reset at first */ value8 = 0; value8 |= (FEN_USBD | FEN_USBA | FEN_BB_GLB_RSTn); - rtw_write8(padapter, REG_SYS_FUNC_EN, value8); /* 0x16 */ + rtl8723au_write8(padapter, REG_SYS_FUNC_EN, value8); /* 0x16 */ /* Set global reset. */ value8 &= ~FEN_BB_GLB_RSTn; - rtw_write8(padapter, REG_SYS_FUNC_EN, value8); /* 0x14 */ + rtl8723au_write8(padapter, REG_SYS_FUNC_EN, value8); /* 0x14 */ /* 2010/08/12 MH We need to set BB/GLBAL reset to save power for SS mode. */ @@ -2021,19 +1460,22 @@ static void _ResetDigitalProcedure1_92C(struct rtw_adapter *padapter, (8051 enable) ******************************/ u16 valu16 = 0; - rtw_write8(padapter, REG_MCUFWDL, 0); + rtl8723au_write8(padapter, REG_MCUFWDL, 0); - valu16 = rtw_read16(padapter, REG_SYS_FUNC_EN); + valu16 = rtl8723au_read16(padapter, REG_SYS_FUNC_EN); /* reset MCU , 8051 */ - rtw_write16(padapter, REG_SYS_FUNC_EN, (valu16 & (~FEN_CPUEN))); + rtl8723au_write16(padapter, REG_SYS_FUNC_EN, + valu16 & (~FEN_CPUEN)); - valu16 = rtw_read16(padapter, REG_SYS_FUNC_EN) & 0x0FFF; - rtw_write16(padapter, REG_SYS_FUNC_EN, - (valu16 | (FEN_HWPDN | FEN_ELDR))); /* reset MAC */ + valu16 = rtl8723au_read16(padapter, REG_SYS_FUNC_EN) & 0x0FFF; + /* reset MAC */ + rtl8723au_write16(padapter, REG_SYS_FUNC_EN, + valu16 | (FEN_HWPDN | FEN_ELDR)); - valu16 = rtw_read16(padapter, REG_SYS_FUNC_EN); + valu16 = rtl8723au_read16(padapter, REG_SYS_FUNC_EN); /* enable MCU , 8051 */ - rtw_write16(padapter, REG_SYS_FUNC_EN, (valu16 | FEN_CPUEN)); + rtl8723au_write16(padapter, REG_SYS_FUNC_EN, + valu16 | FEN_CPUEN); } else { u8 retry_cnts = 0; @@ -2041,41 +1483,43 @@ static void _ResetDigitalProcedure1_92C(struct rtw_adapter *padapter, are trying to enter IPS/HW&SW radio off. For S3/S4/S5/Disable, we can stop 8051 because */ /* we will init FW when power on again. */ - /* if (!pDevice->RegUsbSS) */ /* If we want to SS mode, we can not reset 8051. */ - if (rtw_read8(padapter, REG_MCUFWDL) & BIT1) { + if (rtl8723au_read8(padapter, REG_MCUFWDL) & BIT(1)) { /* IF fw in RAM code, do reset */ if (padapter->bFWReady) { /* 2010/08/25 MH Accordign to RD alfred's suggestion, we need to disable other */ /* HRCV INT to influence 8051 reset. */ - rtw_write8(padapter, REG_FWIMR, 0x20); + rtl8723au_write8(padapter, REG_FWIMR, 0x20); /* 2011/02/15 MH According to Alex's suggestion, close mask to prevent incorrect FW write operation. */ - rtw_write8(padapter, REG_FTIMR, 0x00); - rtw_write8(padapter, REG_FSIMR, 0x00); + rtl8723au_write8(padapter, REG_FTIMR, 0x00); + rtl8723au_write8(padapter, REG_FSIMR, 0x00); /* 8051 reset by self */ - rtw_write8(padapter, REG_HMETFR + 3, 0x20); + rtl8723au_write8(padapter, REG_HMETFR + 3, + 0x20); while ((retry_cnts++ < 100) && (FEN_CPUEN & - rtw_read16(padapter, REG_SYS_FUNC_EN))) { + rtl8723au_read16(padapter, + REG_SYS_FUNC_EN))) { udelay(50); /* us */ } if (retry_cnts >= 100) { /* Reset MAC and Enable 8051 */ - rtw_write8(padapter, - REG_SYS_FUNC_EN + 1, 0x50); + rtl8723au_write8(padapter, + REG_SYS_FUNC_EN + 1, + 0x50); mdelay(10); } } } /* Reset MAC and Enable 8051 */ - rtw_write8(padapter, REG_SYS_FUNC_EN + 1, 0x54); - rtw_write8(padapter, REG_MCUFWDL, 0); + rtl8723au_write8(padapter, REG_SYS_FUNC_EN + 1, 0x54); + rtl8723au_write8(padapter, REG_MCUFWDL, 0); } if (bWithoutHWSM) { @@ -2087,13 +1531,13 @@ static void _ResetDigitalProcedure1_92C(struct rtw_adapter *padapter, j. SYS_ISO_CTRL 0x00[7:0] = 0xF9 isolated digital to PON ******************************/ /* modify to 0x70A3 by Scott. */ - rtw_write16(padapter, REG_SYS_CLKR, 0x70A3); - rtw_write8(padapter, REG_AFE_PLL_CTRL, 0x80); - rtw_write16(padapter, REG_AFE_XTAL_CTRL, 0x880F); - rtw_write8(padapter, REG_SYS_ISO_CTRL, 0xF9); + rtl8723au_write16(padapter, REG_SYS_CLKR, 0x70A3); + rtl8723au_write8(padapter, REG_AFE_PLL_CTRL, 0x80); + rtl8723au_write16(padapter, REG_AFE_XTAL_CTRL, 0x880F); + rtl8723au_write8(padapter, REG_SYS_ISO_CTRL, 0xF9); } else { /* Disable all RF/BB power */ - rtw_write8(padapter, REG_RF_CTRL, 0x00); + rtl8723au_write8(padapter, REG_RF_CTRL, 0x00); } } @@ -2111,9 +1555,9 @@ l. SYS_CLKR 0x08[15:0] = 0x3083 disable ELDR clock m. SYS_ISO_CTRL 0x01[7:0] = 0x83 isolated ELDR to PON ******************************/ /* modify to 0x70a3 by Scott. */ - rtw_write16(padapter, REG_SYS_CLKR, 0x70a3); + rtl8723au_write16(padapter, REG_SYS_CLKR, 0x70a3); /* modify to 0x82 by Scott. */ - rtw_write8(padapter, REG_SYS_ISO_CTRL + 1, 0x82); + rtl8723au_write8(padapter, REG_SYS_ISO_CTRL + 1, 0x82); } static void _DisableAnalog(struct rtw_adapter *padapter, bool bWithoutHWSM) @@ -2130,12 +1574,12 @@ static void _DisableAnalog(struct rtw_adapter *padapter, bool bWithoutHWSM) clock automatically ******************************/ - rtw_write8(padapter, REG_LDOA15_CTRL, 0x04); - /* rtw_write8(padapter, REG_LDOV12D_CTRL, 0x54); */ + rtl8723au_write8(padapter, REG_LDOA15_CTRL, 0x04); + /* rtl8723au_write8(padapter, REG_LDOV12D_CTRL, 0x54); */ - value8 = rtw_read8(padapter, REG_LDOV12D_CTRL); + value8 = rtl8723au_read8(padapter, REG_LDOV12D_CTRL); value8 &= (~LDV12_EN); - rtw_write8(padapter, REG_LDOV12D_CTRL, value8); + rtl8723au_write8(padapter, REG_LDOV12D_CTRL, value8); /* RT_TRACE(COMP_INIT, DBG_LOUD, (" REG_LDOV12D_CTRL Reg0x21:0x%02x.\n", value8)); */ } @@ -2146,9 +1590,9 @@ static void _DisableAnalog(struct rtw_adapter *padapter, bool bWithoutHWSM) ******************************/ value8 = 0x23; if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) - value8 |= BIT3; + value8 |= BIT(3); - rtw_write8(padapter, REG_SPS0_CTRL, value8); + rtl8723au_write8(padapter, REG_SPS0_CTRL, value8); if (bWithoutHWSM) { /* value16 |= (APDM_HOST | FSM_HSUS |/PFM_ALDN); */ @@ -2161,13 +1605,13 @@ static void _DisableAnalog(struct rtw_adapter *padapter, bool bWithoutHWSM) value16 |= (APDM_HOST | AFSM_HSUS | PFM_ALDN); } - rtw_write16(padapter, REG_APS_FSMCO, value16); /* 0x4802 */ + rtl8723au_write16(padapter, REG_APS_FSMCO, value16); /* 0x4802 */ - rtw_write8(padapter, REG_RSV_CTRL, 0x0e); + rtl8723au_write8(padapter, REG_RSV_CTRL, 0x0e); } /* HW Auto state machine */ -s32 CardDisableHWSM(struct rtw_adapter *padapter, u8 resetMCU) +int CardDisableHWSM(struct rtw_adapter *padapter, u8 resetMCU) { int rtStatus = _SUCCESS; @@ -2193,9 +1637,9 @@ s32 CardDisableHWSM(struct rtw_adapter *padapter, u8 resetMCU) } /* without HW Auto state machine */ -s32 CardDisableWithoutHWSM(struct rtw_adapter *padapter) +int CardDisableWithoutHWSM(struct rtw_adapter *padapter) { - s32 rtStatus = _SUCCESS; + int rtStatus = _SUCCESS; /* RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Card Disable Without HWSM .\n")); */ @@ -2274,9 +1718,9 @@ static void Hal_EEValueCheck(u8 EEType, void *pInValue, void *pOutValue) u8 *pIn, *pOut; pIn = (u8 *) pInValue; pOut = (u8 *) pOutValue; - if (*pIn >= 0 && *pIn <= 63) { + if (*pIn <= 63) *pOut = *pIn; - } else { + else { RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("EETYPE_TX_PWR, value =%d is invalid, set " "to default = 0x%x\n", @@ -2346,7 +1790,7 @@ Hal_ReadPowerValueFromPROM_8723A(struct txpowerinfo *pwrInfo, [EEPROM_HT20_TX_PWR_INX_DIFF_8723A + group] >> (rfPath * 4)) & 0xF; /* 4bit sign number to 8 bit sign number */ - if (pwrInfo->HT20IndexDiff[rfPath][group] & BIT3) + if (pwrInfo->HT20IndexDiff[rfPath][group] & BIT(3)) pwrInfo->HT20IndexDiff[rfPath][group] |= 0xF0; pwrInfo->OFDMIndexDiff[rfPath][group] = @@ -2478,7 +1922,7 @@ Hal_EfuseParseBTCoexistInfo_8723A(struct rtw_adapter *padapter, u32 tmpu4; if (!AutoLoadFail) { - tmpu4 = rtw_read32(padapter, REG_MULTI_FUNC_CTRL); + tmpu4 = rtl8723au_read32(padapter, REG_MULTI_FUNC_CTRL); if (tmpu4 & BT_FUNC_EN) pHalData->EEPROMBluetoothCoexist = 1; else @@ -2498,9 +1942,8 @@ Hal_EfuseParseBTCoexistInfo_8723A(struct rtw_adapter *padapter, pHalData->EEPROMBluetoothAntIsolation = 0; pHalData->EEPROMBluetoothRadioShared = BT_Radio_Shared; } -#ifdef CONFIG_8723AU_BT_COEXIST - BT_InitHalVars(padapter); -#endif + + rtl8723a_BT_init_hal_vars(padapter); } void @@ -2586,20 +2029,20 @@ Hal_EfuseParseXtal_8723A(struct rtw_adapter *pAdapter, void Hal_EfuseParseThermalMeter_8723A(struct rtw_adapter *padapter, - u8 *PROMContent, u8 AutoloadFail) + u8 *PROMContent, bool AutoloadFail) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); /* */ /* ThermalMeter from EEPROM */ /* */ - if (false == AutoloadFail) + if (AutoloadFail == false) pHalData->EEPROMThermalMeter = PROMContent[EEPROM_THERMAL_METER_8723A]; else pHalData->EEPROMThermalMeter = EEPROM_Default_ThermalMeter; - if ((pHalData->EEPROMThermalMeter == 0xff) || (true == AutoloadFail)) { + if ((pHalData->EEPROMThermalMeter == 0xff) || (AutoloadFail == true)) { pHalData->bAPKThermalMeterIgnore = true; pHalData->EEPROMThermalMeter = EEPROM_Default_ThermalMeter; } @@ -2635,18 +2078,17 @@ static void fill_txdesc_sectype(struct pkt_attrib *pattrib, if ((pattrib->encrypt > 0) && !pattrib->bswenc) { switch (pattrib->encrypt) { /* SEC_TYPE */ - case _WEP40_: - case _WEP104_: - case _TKIP_: - case _TKIP_WTMIC_: + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: + case WLAN_CIPHER_SUITE_TKIP: ptxdesc->sectype = 1; break; - case _AES_: + case WLAN_CIPHER_SUITE_CCMP: ptxdesc->sectype = 3; break; - case _NO_PRIVACY_: + case 0: default: break; } @@ -2935,7 +2377,7 @@ void rtl8723a_fill_fake_txdesc(struct rtw_adapter *padapter, u8 *pDesc, rtl8723a_cal_txdesc_chksum(ptxdesc); } -static void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode) +void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode) { u8 val8; @@ -2951,10 +2393,8 @@ static void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode) val8 = DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB; SetBcnCtrlReg23a(padapter, val8, ~val8); } else if (mode == _HW_STATE_AP_) { -#ifdef CONFIG_8723AU_BT_COEXIST /* add NULL Data and BT NULL Data Packets to FW RSVD Page */ rtl8723a_set_BTCoex_AP_mode_FwRsvdPkt_cmd(padapter); -#endif ResumeTxBeacon(padapter); @@ -2962,26 +2402,29 @@ static void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode) SetBcnCtrlReg23a(padapter, val8, ~val8); /* Set RCR */ - /* rtw_write32(padapter, REG_RCR, 0x70002a8e); + /* rtl8723au_write32(padapter, REG_RCR, 0x70002a8e); CBSSID_DATA must set to 0 */ /* CBSSID_DATA must set to 0 */ - rtw_write32(padapter, REG_RCR, 0x7000228e); + rtl8723au_write32(padapter, REG_RCR, 0x7000228e); /* enable to rx data frame */ - rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF); + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0xFFFF); /* enable to rx ps-poll */ - rtw_write16(padapter, REG_RXFLTMAP1, 0x0400); + rtl8723au_write16(padapter, REG_RXFLTMAP1, 0x0400); /* Beacon Control related register for first time */ - rtw_write8(padapter, REG_BCNDMATIM, 0x02); /* 2ms */ - rtw_write8(padapter, REG_DRVERLYINT, 0x05); /* 5ms */ - rtw_write8(padapter, REG_ATIMWND, 0x0a); /* 10ms for port0 */ - rtw_write16(padapter, REG_BCNTCFG, 0x00); - rtw_write16(padapter, REG_TBTT_PROHIBIT, 0xff04); + /* 2ms */ + rtl8723au_write8(padapter, REG_BCNDMATIM, 0x02); + /* 5ms */ + rtl8723au_write8(padapter, REG_DRVERLYINT, 0x05); + /* 10ms for port0 */ + rtl8723au_write8(padapter, REG_ATIMWND, 0x0a); + rtl8723au_write16(padapter, REG_BCNTCFG, 0x00); + rtl8723au_write16(padapter, REG_TBTT_PROHIBIT, 0xff04); /* +32767 (~32ms) */ - rtw_write16(padapter, REG_TSFTR_SYN_OFFSET, 0x7fff); + rtl8723au_write16(padapter, REG_TSFTR_SYN_OFFSET, 0x7fff); /* reset TSF */ - rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(0)); + rtl8723au_write8(padapter, REG_DUAL_TSF_RST, BIT(0)); /* enable BCN Function */ /* don't enable update TSF (due to TSF update when @@ -2991,12 +2434,12 @@ static void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode) SetBcnCtrlReg23a(padapter, val8, ~val8); } - val8 = rtw_read8(padapter, MSR); + val8 = rtl8723au_read8(padapter, MSR); val8 = (val8 & 0xC) | mode; - rtw_write8(padapter, MSR, val8); + rtl8723au_write8(padapter, MSR, val8); } -static void hw_var_set_macaddr(struct rtw_adapter *padapter, u8 *val) +void hw_var_set_macaddr(struct rtw_adapter *padapter, u8 *val) { u8 idx = 0; u32 reg_macid; @@ -3004,10 +2447,10 @@ static void hw_var_set_macaddr(struct rtw_adapter *padapter, u8 *val) reg_macid = REG_MACID; for (idx = 0; idx < 6; idx++) - rtw_write8(padapter, (reg_macid + idx), val[idx]); + rtl8723au_write8(padapter, (reg_macid + idx), val[idx]); } -static void hw_var_set_bssid(struct rtw_adapter *padapter, u8 *val) +void hw_var_set_bssid(struct rtw_adapter *padapter, u8 *val) { u8 idx = 0; u32 reg_bssid; @@ -3015,10 +2458,10 @@ static void hw_var_set_bssid(struct rtw_adapter *padapter, u8 *val) reg_bssid = REG_BSSID; for (idx = 0; idx < 6; idx++) - rtw_write8(padapter, (reg_bssid + idx), val[idx]); + rtl8723au_write8(padapter, (reg_bssid + idx), val[idx]); } -static void hw_var_set_correct_tsf(struct rtw_adapter *padapter) +void hw_var_set_correct_tsf(struct rtw_adapter *padapter) { u64 tsf; u32 reg_tsftr; @@ -3028,14 +2471,14 @@ static void hw_var_set_correct_tsf(struct rtw_adapter *padapter) /* tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) - 1024; us */ tsf = pmlmeext->TSFValue - - rtw_modular6423a(pmlmeext->TSFValue, - (pmlmeinfo->bcn_interval * 1024)) - 1024; /* us */ + do_div(pmlmeext->TSFValue, + (pmlmeinfo->bcn_interval * 1024)) - 1024; /* us */ if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) { /* pHalData->RegTxPause |= STOP_BCNQ;BIT(6) */ - /* rtw_write8(padapter, REG_TXPAUSE, - (rtw_read8(Adapter, REG_TXPAUSE)|BIT(6))); */ + /* rtl8723au_write8(padapter, REG_TXPAUSE, + (rtl8723au_read8(Adapter, REG_TXPAUSE)|BIT(6))); */ StopTxBeacon(padapter); } @@ -3044,8 +2487,8 @@ static void hw_var_set_correct_tsf(struct rtw_adapter *padapter) /* disable related TSF function */ SetBcnCtrlReg23a(padapter, 0, EN_BCN_FUNCTION); - rtw_write32(padapter, reg_tsftr, tsf); - rtw_write32(padapter, reg_tsftr + 4, tsf >> 32); + rtl8723au_write32(padapter, reg_tsftr, tsf); + rtl8723au_write32(padapter, reg_tsftr + 4, tsf >> 32); /* enable related TSF function */ SetBcnCtrlReg23a(padapter, EN_BCN_FUNCTION, 0); @@ -3055,19 +2498,19 @@ static void hw_var_set_correct_tsf(struct rtw_adapter *padapter) ResumeTxBeacon(padapter); } -static void hw_var_set_mlme_disconnect(struct rtw_adapter *padapter) +void hw_var_set_mlme_disconnect(struct rtw_adapter *padapter) { /* reject all data frames */ - rtw_write16(padapter, REG_RXFLTMAP2, 0); + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0); /* reset TSF */ - rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(0)); + rtl8723au_write8(padapter, REG_DUAL_TSF_RST, BIT(0)); /* disable update TSF */ SetBcnCtrlReg23a(padapter, DIS_TSF_UDT, 0); } -static void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type) +void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type) { u8 RetryLimit = 0x30; @@ -3078,13 +2521,13 @@ static void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type) u32 v32; /* enable to rx data frame.Accept all data frame */ - /* rtw_write32(padapter, REG_RCR, - rtw_read32(padapter, REG_RCR)|RCR_ADF); */ - rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF); + /* rtl8723au_write32(padapter, REG_RCR, + rtl8723au_read32(padapter, REG_RCR)|RCR_ADF); */ + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0xFFFF); - v32 = rtw_read32(padapter, REG_RCR); + v32 = rtl8723au_read32(padapter, REG_RCR); v32 |= RCR_CBSSID_DATA | RCR_CBSSID_BCN; - rtw_write32(padapter, REG_RCR, v32); + rtl8723au_write32(padapter, REG_RCR, v32); if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true) RetryLimit = @@ -3094,7 +2537,7 @@ static void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type) } else if (type == 1) { /* joinbss_event callback when join res < 0 */ /* config RCR to receive different BSSID & not to receive data frame during linking */ - rtw_write16(padapter, REG_RXFLTMAP2, 0); + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0); } else if (type == 2) { /* sta add event callback */ /* enable update TSF */ SetBcnCtrlReg23a(padapter, 0, DIS_TSF_UDT); @@ -3102,351 +2545,27 @@ static void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type) if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE)) { /* fixed beacon issue for 8191su........... */ - rtw_write8(padapter, 0x542, 0x02); + rtl8723au_write8(padapter, 0x542, 0x02); RetryLimit = 0x7; } } - rtw_write16(padapter, REG_RL, - RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << - RETRY_LIMIT_LONG_SHIFT); + rtl8723au_write16(padapter, REG_RL, + RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << + RETRY_LIMIT_LONG_SHIFT); -#ifdef CONFIG_8723AU_BT_COEXIST switch (type) { case 0: /* prepare to join */ - BT_WifiAssociateNotify(padapter, true); + rtl8723a_BT_wifiassociate_notify(padapter, true); break; case 1: /* joinbss_event callback when join res < 0 */ - BT_WifiAssociateNotify(padapter, false); + rtl8723a_BT_wifiassociate_notify(padapter, false); break; case 2: /* sta add event callback */ /* BT_WifiMediaStatusNotify(padapter, RT_MEDIA_CONNECT); */ break; } -#endif -} - -void SetHwReg8723A(struct rtw_adapter *padapter, u8 variable, u8 *val) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - u32 *val32 = (u32 *)val; - - switch (variable) { - case HW_VAR_MEDIA_STATUS: - rtl8723a_set_media_status(padapter, *val); - break; - - case HW_VAR_MEDIA_STATUS1: - rtl8723a_set_media_status1(padapter, *val); - break; - - case HW_VAR_SET_OPMODE: - hw_var_set_opmode(padapter, *val); - break; - - case HW_VAR_MAC_ADDR: - hw_var_set_macaddr(padapter, val); - break; - - case HW_VAR_BSSID: - hw_var_set_bssid(padapter, val); - break; - - case HW_VAR_BASIC_RATE: - HalSetBrateCfg23a(padapter, val); - break; - - case HW_VAR_TXPAUSE: - rtl8723a_set_tx_pause(padapter, *val); - break; - - case HW_VAR_BCN_FUNC: - rtl8723a_set_bcn_func(padapter, *val); - break; - - case HW_VAR_CORRECT_TSF: - hw_var_set_correct_tsf(padapter); - break; - - case HW_VAR_CHECK_BSSID: - rtl8723a_check_bssid(padapter, *val); - break; - - case HW_VAR_MLME_DISCONNECT: - hw_var_set_mlme_disconnect(padapter); - break; - - case HW_VAR_MLME_SITESURVEY: - rtl8723a_mlme_sitesurvey(padapter, *val); - break; - - case HW_VAR_MLME_JOIN: - hw_var_set_mlme_join(padapter, *val); - break; - - case HW_VAR_ON_RCR_AM: - rtl8723a_on_rcr_am(padapter); - break; - - case HW_VAR_OFF_RCR_AM: - rtl8723a_off_rcr_am(padapter); - break; - - case HW_VAR_BEACON_INTERVAL: - rtl8723a_set_beacon_interval(padapter, *((u16 *) val)); - break; - - case HW_VAR_SLOT_TIME: - rtl8723a_set_slot_time(padapter, *val); - break; - - case HW_VAR_RESP_SIFS: - rtl8723a_set_resp_sifs(padapter, val[0], val[1], - val[2], val[3]); - break; - - case HW_VAR_ACK_PREAMBLE: - rtl8723a_ack_preamble(padapter, *val); - break; - - case HW_VAR_SEC_CFG: - rtl8723a_set_sec_cfg(padapter, *val); - break; - - case HW_VAR_DM_FLAG: - rtl8723a_odm_support_ability_write(padapter, *val32); - break; - case HW_VAR_DM_FUNC_OP: - rtl8723a_odm_support_ability_backup(padapter, *val); - break; - case HW_VAR_DM_FUNC_SET: - rtl8723a_odm_support_ability_set(padapter, *val32); - break; - - case HW_VAR_DM_FUNC_CLR: - rtl8723a_odm_support_ability_clr(padapter, *val32); - break; - - case HW_VAR_CAM_EMPTY_ENTRY: - rtl8723a_cam_empty_entry(padapter, *val); - break; - - case HW_VAR_CAM_INVALID_ALL: - rtl8723a_cam_invalid_all(padapter); - break; - - case HW_VAR_CAM_WRITE: - rtl8723a_cam_write(padapter, val32[0], val32[1]); - break; - - case HW_VAR_AC_PARAM_VO: - rtl8723a_set_ac_param_vo(padapter, *val32); - break; - - case HW_VAR_AC_PARAM_VI: - rtl8723a_set_ac_param_vi(padapter, *val32); - break; - - case HW_VAR_AC_PARAM_BE: - rtl8723a_set_ac_param_be(padapter, *val32); - break; - - case HW_VAR_AC_PARAM_BK: - rtl8723a_set_ac_param_bk(padapter, *val32); - break; - - case HW_VAR_ACM_CTRL: - rtl8723a_set_acm_ctrl(padapter, *val); - break; - - case HW_VAR_AMPDU_MIN_SPACE: - rtl8723a_set_ampdu_min_space(padapter, *val); - break; - - case HW_VAR_AMPDU_FACTOR: - rtl8723a_set_ampdu_factor(padapter, *val); - break; - - case HW_VAR_RXDMA_AGG_PG_TH: - rtl8723a_set_rxdma_agg_pg_th(padapter, *val); - break; - - case HW_VAR_H2C_FW_PWRMODE: - rtl8723a_set_FwPwrMode_cmd(padapter, *val); - break; - - case HW_VAR_H2C_FW_JOINBSSRPT: - rtl8723a_set_FwJoinBssReport_cmd(padapter, *val); - break; - -#ifdef CONFIG_8723AU_P2P - case HW_VAR_H2C_FW_P2P_PS_OFFLOAD: - rtl8723a_set_p2p_ps_offload_cmd(padapter, *val); - break; -#endif /* CONFIG_8723AU_P2P */ - - case HW_VAR_INITIAL_GAIN: - rtl8723a_set_initial_gain(padapter, *val32); - break; - case HW_VAR_EFUSE_BYTES: - pHalData->EfuseUsedBytes = *((u16 *) val); - break; - case HW_VAR_EFUSE_BT_BYTES: - pHalData->BTEfuseUsedBytes = *((u16 *) val); - break; - case HW_VAR_FIFO_CLEARN_UP: - rtl8723a_fifo_cleanup(padapter); - break; - case HW_VAR_CHECK_TXBUF: - break; - case HW_VAR_APFM_ON_MAC: - rtl8723a_set_apfm_on_mac(padapter, *val); - break; - - case HW_VAR_NAV_UPPER: - rtl8723a_set_nav_upper(padapter, *val32); - break; - case HW_VAR_BCN_VALID: - rtl8723a_bcn_valid(padapter); - break; - default: - break; - } - -} - -void GetHwReg8723A(struct rtw_adapter *padapter, u8 variable, u8 *val) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - switch (variable) { - case HW_VAR_BASIC_RATE: - *((u16 *) val) = pHalData->BasicRateSet; - break; - - case HW_VAR_TXPAUSE: - *val = rtw_read8(padapter, REG_TXPAUSE); - break; - - case HW_VAR_BCN_VALID: - /* BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2 */ - val[0] = (BIT0 & rtw_read8(padapter, REG_TDECTRL + 2)) ? true : - false; - break; - - case HW_VAR_RF_TYPE: - *val = pHalData->rf_type; - break; - - case HW_VAR_DM_FLAG: - { - struct dm_odm_t *podmpriv = &pHalData->odmpriv; - *((u32 *) val) = podmpriv->SupportAbility; - } - break; - - case HW_VAR_FWLPS_RF_ON: - { - /* When we halt NIC, we should check if FW LPS is leave. */ - u32 valRCR; - - if ((padapter->bSurpriseRemoved == true) || - (padapter->pwrctrlpriv.rf_pwrstate == rf_off)) { - /* If it is in HW/SW Radio OFF or IPS state, we do - not check Fw LPS Leave, because Fw is unload. */ - *val = true; - } else { - valRCR = rtw_read32(padapter, REG_RCR); - valRCR &= 0x00070000; - if (valRCR) - *val = false; - else - *val = true; - } - } - break; - case HW_VAR_EFUSE_BYTES: - *((u16 *) val) = pHalData->EfuseUsedBytes; - break; - - case HW_VAR_EFUSE_BT_BYTES: - *((u16 *) val) = pHalData->BTEfuseUsedBytes; - break; - - case HW_VAR_APFM_ON_MAC: - *val = pHalData->bMacPwrCtrlOn; - break; - case HW_VAR_CHK_HI_QUEUE_EMPTY: - *val = - ((rtw_read32(padapter, REG_HGQ_INFORMATION) & 0x0000ff00) == - 0) ? true : false; - break; - } -} - -#ifdef CONFIG_8723AU_BT_COEXIST - -void rtl8723a_SingleDualAntennaDetection(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; - } -} -#endif /* CONFIG_8723AU_BT_COEXIST */ - -void rtl8723a_clone_haldata(struct rtw_adapter *dst_adapter, - struct rtw_adapter *src_adapter) -{ - memcpy(dst_adapter->HalData, src_adapter->HalData, - dst_adapter->hal_data_sz); -} - -void rtl8723a_start_thread(struct rtw_adapter *padapter) -{ -} - -void rtl8723a_stop_thread(struct rtw_adapter *padapter) -{ } diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c index 8400e6e2fca8..d23525e664fb 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c @@ -18,6 +18,7 @@ #include <drv_types.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> /*---------------------------Define Local Constant---------------------------*/ /* Channel switch:The size of command tables for switch channel*/ @@ -87,7 +88,7 @@ PHY_QueryBBReg(struct rtw_adapter *Adapter, u32 RegAddr, u32 BitMask) { u32 ReturnValue = 0, OriginalValue, BitShift; - OriginalValue = rtw_read32(Adapter, RegAddr); + OriginalValue = rtl8723au_read32(Adapter, RegAddr); BitShift = phy_CalculateBitShift(BitMask); ReturnValue = (OriginalValue & BitMask) >> BitShift; return ReturnValue; @@ -123,12 +124,12 @@ PHY_SetBBReg(struct rtw_adapter *Adapter, u32 RegAddr, u32 BitMask, u32 Data) /* RT_TRACE(COMP_RF, DBG_TRACE, ("--->PHY_SetBBReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx)\n", RegAddr, BitMask, Data)); */ if (BitMask != bMaskDWord) {/* if not "double word" write */ - OriginalValue = rtw_read32(Adapter, RegAddr); + OriginalValue = rtl8723au_read32(Adapter, RegAddr); BitShift = phy_CalculateBitShift(BitMask); Data = ((OriginalValue & (~BitMask)) | (Data << BitShift)); } - rtw_write32(Adapter, RegAddr, Data); + rtl8723au_write32(Adapter, RegAddr, Data); /* RTPRINT(FPHY, PHY_BBW, ("BBW MASK = 0x%lx Addr[0x%lx]= 0x%lx\n", BitMask, RegAddr, Data)); */ /* RT_TRACE(COMP_RF, DBG_TRACE, ("<---PHY_SetBBReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx)\n", RegAddr, BitMask, Data)); */ @@ -212,10 +213,12 @@ phy_RFSerialRead(struct rtw_adapter *Adapter, enum RF_RADIO_PATH eRFPath, if (eRFPath == RF_PATH_A) RfPiEnable = (u8)PHY_QueryBBReg(Adapter, - rFPGA0_XA_HSSIParameter1, BIT8); + rFPGA0_XA_HSSIParameter1, + BIT(8)); else if (eRFPath == RF_PATH_B) RfPiEnable = (u8)PHY_QueryBBReg(Adapter, - rFPGA0_XB_HSSIParameter1, BIT8); + rFPGA0_XB_HSSIParameter1, + BIT(8)); if (RfPiEnable) { /* Read from BBreg8b8, 12 bits for 8190, 20bits for T65 RF */ @@ -413,28 +416,23 @@ PHY_SetRFReg(struct rtw_adapter *Adapter, enum RF_RADIO_PATH eRFPath, * 08/12/2008 MHC Create Version 0. * *---------------------------------------------------------------------------*/ -s32 PHY_MACConfig8723A(struct rtw_adapter *Adapter) +int PHY_MACConfig8723A(struct rtw_adapter *Adapter) { int rtStatus = _SUCCESS; struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - s8 *pszMACRegFile; - s8 sz8723MACRegFile[] = RTL8723_PHY_MACREG; bool is92C = IS_92C_SERIAL(pHalData->VersionID); - pszMACRegFile = sz8723MACRegFile; - /* */ /* Config MAC */ /* */ - if (HAL_STATUS_FAILURE == - ODM_ConfigMACWithHeaderFile23a(&pHalData->odmpriv)) + if (ODM_ConfigMACWithHeaderFile23a(&pHalData->odmpriv) == _FAIL) rtStatus = _FAIL; /* 2010.07.13 AMPDU aggregation number 9 */ /* rtw_write16(Adapter, REG_MAX_AGGR_NUM, MAX_AGGR_NUM); */ - rtw_write8(Adapter, REG_MAX_AGGR_NUM, 0x0A); /* By tynli. 2010.11.18. */ + rtl8723au_write8(Adapter, REG_MAX_AGGR_NUM, 0x0A); if (is92C && (BOARD_USB_DONGLE == pHalData->BoardType)) - rtw_write8(Adapter, 0x40, 0x04); + rtl8723au_write8(Adapter, 0x40, 0x04); return rtStatus; } @@ -751,27 +749,12 @@ phy_BB8723a_Config_ParaFile(struct rtw_adapter *Adapter) struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); int rtStatus = _SUCCESS; - u8 sz8723BBRegFile[] = RTL8723_PHY_REG; - u8 sz8723AGCTableFile[] = RTL8723_AGC_TAB; - u8 sz8723BBRegPgFile[] = RTL8723_PHY_REG_PG; - u8 sz8723BBRegMpFile[] = RTL8723_PHY_REG_MP; - - u8 *pszBBRegFile = NULL, *pszAGCTableFile = NULL; - u8 *pszBBRegPgFile = NULL, *pszBBRegMpFile = NULL; - - /* RT_TRACE(COMP_INIT, DBG_TRACE, ("==>phy_BB8192S_Config_ParaFile\n")); */ - - pszBBRegFile = sz8723BBRegFile ; - pszAGCTableFile = sz8723AGCTableFile; - pszBBRegPgFile = sz8723BBRegPgFile; - pszBBRegMpFile = sz8723BBRegMpFile; - /* */ /* 1. Read PHY_REG.TXT BB INIT!! */ /* We will seperate as 88C / 92C according to chip version */ /* */ - if (HAL_STATUS_FAILURE == ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv, - CONFIG_BB_PHY_REG)) + if (ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv, + CONFIG_BB_PHY_REG) == _FAIL) rtStatus = _FAIL; if (rtStatus != _SUCCESS) goto phy_BB8190_Config_ParaFile_Fail; @@ -801,8 +784,8 @@ phy_BB8723a_Config_ParaFile(struct rtw_adapter *Adapter) /* */ /* 3. BB AGC table Initialization */ /* */ - if (HAL_STATUS_FAILURE == ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv, - CONFIG_BB_AGC_TAB)) + if (ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv, + CONFIG_BB_AGC_TAB) == _FAIL) rtStatus = _FAIL; phy_BB8190_Config_ParaFile_Fail: @@ -822,30 +805,30 @@ PHY_BBConfig8723A(struct rtw_adapter *Adapter) /* Suggested by Scott. tynli_test. 2010.12.30. */ /* 1. 0x28[1] = 1 */ - TmpU1B = rtw_read8(Adapter, REG_AFE_PLL_CTRL); + TmpU1B = rtl8723au_read8(Adapter, REG_AFE_PLL_CTRL); udelay(2); - rtw_write8(Adapter, REG_AFE_PLL_CTRL, (TmpU1B|BIT1)); + rtl8723au_write8(Adapter, REG_AFE_PLL_CTRL, TmpU1B | BIT(1)); udelay(2); /* 2. 0x29[7:0] = 0xFF */ - rtw_write8(Adapter, REG_AFE_PLL_CTRL+1, 0xff); + rtl8723au_write8(Adapter, REG_AFE_PLL_CTRL+1, 0xff); udelay(2); /* 3. 0x02[1:0] = 2b'11 */ - TmpU1B = rtw_read8(Adapter, REG_SYS_FUNC_EN); - rtw_write8(Adapter, REG_SYS_FUNC_EN, - (TmpU1B | FEN_BB_GLB_RSTn | FEN_BBRSTB)); + TmpU1B = rtl8723au_read8(Adapter, REG_SYS_FUNC_EN); + rtl8723au_write8(Adapter, REG_SYS_FUNC_EN, + (TmpU1B | FEN_BB_GLB_RSTn | FEN_BBRSTB)); /* 4. 0x25[6] = 0 */ - TmpU1B = rtw_read8(Adapter, REG_AFE_XTAL_CTRL + 1); - rtw_write8(Adapter, REG_AFE_XTAL_CTRL+1, (TmpU1B & (~BIT6))); + TmpU1B = rtl8723au_read8(Adapter, REG_AFE_XTAL_CTRL + 1); + rtl8723au_write8(Adapter, REG_AFE_XTAL_CTRL+1, TmpU1B & ~BIT(6)); /* 5. 0x24[20] = 0 Advised by SD3 Alex Wang. 2011.02.09. */ - TmpU1B = rtw_read8(Adapter, REG_AFE_XTAL_CTRL+2); - rtw_write8(Adapter, REG_AFE_XTAL_CTRL+2, (TmpU1B & (~BIT4))); + TmpU1B = rtl8723au_read8(Adapter, REG_AFE_XTAL_CTRL+2); + rtl8723au_write8(Adapter, REG_AFE_XTAL_CTRL+2, TmpU1B & ~BIT(4)); /* 6. 0x1f[7:0] = 0x07 */ - rtw_write8(Adapter, REG_RF_CTRL, 0x07); + rtl8723au_write8(Adapter, REG_RF_CTRL, 0x07); /* */ /* Config BB and AGC */ @@ -974,20 +957,20 @@ _PHY_SetBWMode23a92C(struct rtw_adapter *Adapter) /* 3<1>Set MAC register */ /* 3 */ - regBwOpMode = rtw_read8(Adapter, REG_BWOPMODE); - regRRSR_RSC = rtw_read8(Adapter, REG_RRSR+2); + regBwOpMode = rtl8723au_read8(Adapter, REG_BWOPMODE); + regRRSR_RSC = rtl8723au_read8(Adapter, REG_RRSR+2); switch (pHalData->CurrentChannelBW) { case HT_CHANNEL_WIDTH_20: regBwOpMode |= BW_OPMODE_20MHZ; - rtw_write8(Adapter, REG_BWOPMODE, regBwOpMode); + rtl8723au_write8(Adapter, REG_BWOPMODE, regBwOpMode); break; case HT_CHANNEL_WIDTH_40: regBwOpMode &= ~BW_OPMODE_20MHZ; - rtw_write8(Adapter, REG_BWOPMODE, regBwOpMode); + rtl8723au_write8(Adapter, REG_BWOPMODE, regBwOpMode); regRRSR_RSC = (regRRSR_RSC & 0x90) | (pHalData->nCur40MhzPrimeSC << 5); - rtw_write8(Adapter, REG_RRSR+2, regRRSR_RSC); + rtl8723au_write8(Adapter, REG_RRSR+2, regRRSR_RSC); break; default: @@ -1002,7 +985,7 @@ _PHY_SetBWMode23a92C(struct rtw_adapter *Adapter) case HT_CHANNEL_WIDTH_20: PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bRFMOD, 0x0); PHY_SetBBReg(Adapter, rFPGA1_RFMOD, bRFMOD, 0x0); - PHY_SetBBReg(Adapter, rFPGA0_AnalogParameter2, BIT10, 1); + PHY_SetBBReg(Adapter, rFPGA0_AnalogParameter2, BIT(10), 1); break; @@ -1017,9 +1000,9 @@ _PHY_SetBWMode23a92C(struct rtw_adapter *Adapter) (pHalData->nCur40MhzPrimeSC >> 1)); PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0xC00, pHalData->nCur40MhzPrimeSC); - PHY_SetBBReg(Adapter, rFPGA0_AnalogParameter2, BIT10, 0); + PHY_SetBBReg(Adapter, rFPGA0_AnalogParameter2, BIT(10), 0); - PHY_SetBBReg(Adapter, 0x818, (BIT26 | BIT27), + PHY_SetBBReg(Adapter, 0x818, BIT(26) | BIT(27), (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) ? 2:1); break; @@ -1116,7 +1099,7 @@ static void _PHY_SwChnl8723A(struct rtw_adapter *Adapter, u8 channel) struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); if (Adapter->bNotifyChannelChange) - DBG_8723A("[%s] ch = %d\n", __FUNCTION__, channel); + DBG_8723A("[%s] ch = %d\n", __func__, channel); /* s1. pre common command - CmdID_SetTxPowerLevel */ PHY_SetTxPowerLevel8723A(Adapter, channel); diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c index ed39c18c3f84..c30bd232bf62 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c @@ -40,6 +40,7 @@ #include <drv_types.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> /*---------------------------Define Local Constant---------------------------*/ /* Define local structure for debug!!!!! */ @@ -368,7 +369,8 @@ static void writeOFDMPowerReg(struct rtw_adapter *Adapter, u8 index, u32 *pValue writeVal = (writeVal > 8) ? (writeVal-8) : 0; else writeVal = (writeVal > 6) ? (writeVal-6) : 0; - rtw_write8(Adapter, (u32)(RegOffset+i), (u8)writeVal); + rtl8723au_write8(Adapter, RegOffset + i, + (u8)writeVal); } } } @@ -417,12 +419,6 @@ static int phy_RF6052_Config_ParaFile(struct rtw_adapter *Adapter) struct bb_reg_define *pPhyReg; int rtStatus = _SUCCESS; struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - static char sz8723RadioAFile[] = RTL8723_PHY_RADIO_A; - static char sz8723RadioBFile[] = RTL8723_PHY_RADIO_B; - char *pszRadioAFile, *pszRadioBFile; - - pszRadioAFile = sz8723RadioAFile; - pszRadioBFile = sz8723RadioBFile; /* 3----------------------------------------------------------------- */ /* 3 <2> Initialize RF */ @@ -459,11 +455,19 @@ static int phy_RF6052_Config_ParaFile(struct rtw_adapter *Adapter) /*----Initialize RF fom connfiguration file----*/ switch (eRFPath) { case RF_PATH_A: - if (HAL_STATUS_FAILURE == ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, (enum RF_RADIO_PATH)eRFPath, (enum RF_RADIO_PATH)eRFPath)) + if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, + (enum RF_RADIO_PATH) + eRFPath, + (enum RF_RADIO_PATH) + eRFPath) == _FAIL) rtStatus = _FAIL; break; case RF_PATH_B: - if (HAL_STATUS_FAILURE == ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, (enum RF_RADIO_PATH)eRFPath, (enum RF_RADIO_PATH)eRFPath)) + if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, + (enum RF_RADIO_PATH) + eRFPath, + (enum RF_RADIO_PATH) + eRFPath) == _FAIL) rtStatus = _FAIL; break; } diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c index c0218e734b9e..0680e29a5528 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c @@ -16,6 +16,7 @@ #include <rtl8723a_sreset.h> #include <rtl8723a_hal.h> +#include <usb_ops_linux.h> void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) { @@ -27,10 +28,10 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) unsigned int diff_time; u32 txdma_status; - txdma_status = rtw_read32(padapter, REG_TXDMA_STATUS); + txdma_status = rtl8723au_read32(padapter, REG_TXDMA_STATUS); if (txdma_status != 0) { DBG_8723A("%s REG_TXDMA_STATUS:0x%08x\n", __func__, txdma_status); - rtw_hal_sreset_reset23a(padapter); + rtw_sreset_reset(padapter); } current_time = jiffies; @@ -47,7 +48,7 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) if (diff_time > 4000) { /* padapter->Wifi_Error_Status = WIFI_TX_HANG; */ DBG_8723A("%s tx hang\n", __func__); - rtw_hal_sreset_reset23a(padapter); + rtw_sreset_reset(padapter); } } } @@ -55,7 +56,7 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) { psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; - rtw_hal_sreset_reset23a(padapter); + rtw_sreset_reset(padapter); return; } } @@ -67,7 +68,7 @@ void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter) if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) { psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; - rtw_hal_sreset_reset23a(padapter); + rtw_sreset_reset(padapter); return; } } diff --git a/drivers/staging/rtl8723au/hal/rtl8723au_led.c b/drivers/staging/rtl8723au/hal/rtl8723au_led.c index 4d5c909487f8..b946636af9b3 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723au_led.c +++ b/drivers/staging/rtl8723au/hal/rtl8723au_led.c @@ -16,6 +16,7 @@ #include "drv_types.h" #include "rtl8723a_hal.h" #include "rtl8723a_led.h" +#include "usb_ops_linux.h" /* */ /* LED object. */ @@ -41,14 +42,18 @@ void SwLedOn23a(struct rtw_adapter *padapter, struct led_8723a *pLed) case LED_PIN_GPIO0: break; case LED_PIN_LED0: - rtw_write8(padapter, REG_LEDCFG0, (LedCfg&0xf0)|BIT5|BIT6); /* SW control led0 on. */ + /* SW control led0 on. */ + rtl8723au_write8(padapter, REG_LEDCFG0, + (LedCfg&0xf0)|BIT(5)|BIT(6)); break; case LED_PIN_LED1: - rtw_write8(padapter, REG_LEDCFG1, (LedCfg&0x00)|BIT6); /* SW control led1 on. */ + /* SW control led1 on. */ + rtl8723au_write8(padapter, REG_LEDCFG1, (LedCfg&0x00)|BIT(6)); break; case LED_PIN_LED2: - LedCfg = rtw_read8(padapter, REG_LEDCFG2); - rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0x80)|BIT5); /* SW control led1 on. */ + LedCfg = rtl8723au_read8(padapter, REG_LEDCFG2); + /* SW control led1 on. */ + rtl8723au_write8(padapter, REG_LEDCFG2, (LedCfg&0x80)|BIT(5)); break; default: break; @@ -70,14 +75,20 @@ void SwLedOff23a(struct rtw_adapter *padapter, struct led_8723a *pLed) case LED_PIN_GPIO0: break; case LED_PIN_LED0: - rtw_write8(padapter, REG_LEDCFG0, (LedCfg&0xf0)|BIT5|BIT6); /* SW control led0 on. */ + /* SW control led0 on. */ + rtl8723au_write8(padapter, REG_LEDCFG0, + (LedCfg&0xf0)|BIT(5)|BIT(6)); break; case LED_PIN_LED1: - rtw_write8(padapter, REG_LEDCFG1, (LedCfg&0x00)|BIT5|BIT6); /* SW control led1 on. */ + /* SW control led1 on. */ + rtl8723au_write8(padapter, REG_LEDCFG1, + (LedCfg&0x00)|BIT(5)|BIT(6)); break; case LED_PIN_LED2: - LedCfg = rtw_read8(padapter, REG_LEDCFG2); - rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0x80)|BIT3|BIT5); /* SW control led1 on. */ + LedCfg = rtl8723au_read8(padapter, REG_LEDCFG2); + /* SW control led1 on. */ + rtl8723au_write8(padapter, REG_LEDCFG2, + (LedCfg&0x80)|BIT(3)|BIT(5)); break; default: break; diff --git a/drivers/staging/rtl8723au/hal/rtl8723au_recv.c b/drivers/staging/rtl8723au/hal/rtl8723au_recv.c index 213d1936109d..6075b6dc1bee 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723au_recv.c +++ b/drivers/staging/rtl8723au/hal/rtl8723au_recv.c @@ -19,16 +19,10 @@ #include <mlme_osdep.h> #include <linux/ip.h> #include <linux/if_ether.h> -#include <ethernet.h> #include <usb_ops.h> #include <wifi.h> #include <rtl8723a_hal.h> -void rtl8723au_init_recvbuf(struct rtw_adapter *padapter, - struct recv_buf *precvbuf) -{ -} - int rtl8723au_init_recv_priv(struct rtw_adapter *padapter) { struct recv_priv *precvpriv = &padapter->recvpriv; @@ -49,9 +43,6 @@ int rtl8723au_init_recv_priv(struct rtw_adapter *padapter) if (!precvpriv->int_in_buf) DBG_8723A("alloc_mem for interrupt in endpoint fail !!!!\n"); - /* init recv_buf */ - _rtw_init_queue23a(&precvpriv->free_recv_buf_queue); - size = NR_RECVBUFF * sizeof(struct recv_buf); precvpriv->precv_buf = kzalloc(size, GFP_KERNEL); if (!precvpriv->precv_buf) { @@ -66,8 +57,8 @@ int rtl8723au_init_recv_priv(struct rtw_adapter *padapter) for (i = 0; i < NR_RECVBUFF; i++) { INIT_LIST_HEAD(&precvbuf->list); - res = rtw_os_recvbuf_resource_alloc23a(padapter, precvbuf); - if (res == _FAIL) + precvbuf->purb = usb_alloc_urb(0, GFP_KERNEL); + if (!precvbuf->purb) break; precvbuf->adapter = padapter; @@ -75,8 +66,6 @@ int rtl8723au_init_recv_priv(struct rtw_adapter *padapter) precvbuf++; } - precvpriv->free_recv_buf_queue_cnt = NR_RECVBUFF; - skb_queue_head_init(&precvpriv->rx_skb_queue); skb_queue_head_init(&precvpriv->free_recv_skb_queue); @@ -110,7 +99,11 @@ void rtl8723au_free_recv_priv(struct rtw_adapter *padapter) precvbuf = (struct recv_buf *)precvpriv->precv_buf; for (i = 0; i < NR_RECVBUFF; i++) { - rtw_os_recvbuf_resource_free23a(padapter, precvbuf); + usb_free_urb(precvbuf->purb); + + if (precvbuf->pskb) + dev_kfree_skb_any(precvbuf->pskb); + precvbuf++; } @@ -132,11 +125,20 @@ void rtl8723au_free_recv_priv(struct rtw_adapter *padapter) skb_queue_purge(&precvpriv->free_recv_skb_queue); } +struct recv_stat_cpu { + u32 rxdw0; + u32 rxdw1; + u32 rxdw2; + u32 rxdw3; + u32 rxdw4; + u32 rxdw5; +}; + void update_recvframe_attrib(struct recv_frame *precvframe, struct recv_stat *prxstat) { struct rx_pkt_attrib *pattrib; - struct recv_stat report; + struct recv_stat_cpu report; struct rxreport_8723a *prxreport; report.rxdw0 = le32_to_cpu(prxstat->rxdw0); @@ -182,25 +184,43 @@ void update_recvframe_phyinfo(struct recv_frame *precvframe, struct rtw_adapter *padapter = precvframe->adapter; struct rx_pkt_attrib *pattrib = &precvframe->attrib; struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - struct odm_phy_info *pPHYInfo = (struct odm_phy_info *)(&pattrib->phy_info); + struct phy_info *pPHYInfo = &pattrib->phy_info; struct odm_packet_info pkt_info; u8 *sa = NULL, *da; struct sta_priv *pstapriv; struct sta_info *psta; struct sk_buff *skb = precvframe->pkt; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; - u8 *wlanhdr = skb->data; + bool matchbssid = false; + u8 *bssid; + + matchbssid = (!ieee80211_is_ctl(hdr->frame_control) && + !pattrib->icv_err && !pattrib->crc_err); + + if (matchbssid) { + switch (hdr->frame_control & + cpu_to_le16(IEEE80211_FCTL_TODS | + IEEE80211_FCTL_FROMDS)) { + case cpu_to_le16(IEEE80211_FCTL_TODS): + bssid = hdr->addr1; + break; + case cpu_to_le16(IEEE80211_FCTL_FROMDS): + bssid = hdr->addr2; + break; + case cpu_to_le16(0): + bssid = hdr->addr3; + break; + default: + bssid = NULL; + matchbssid = false; + } - pkt_info.bPacketMatchBSSID = false; - pkt_info.bPacketToSelf = false; - pkt_info.bPacketBeacon = false; + if (bssid) + matchbssid = ether_addr_equal( + get_bssid(&padapter->mlmepriv), bssid); + } - pkt_info.bPacketMatchBSSID = - (!ieee80211_is_ctl(hdr->frame_control) && - !pattrib->icv_err && - !pattrib->crc_err && - !memcmp(get_hdr_bssid(wlanhdr), - get_bssid(&padapter->mlmepriv), ETH_ALEN)); + pkt_info.bPacketMatchBSSID = matchbssid; da = ieee80211_get_DA(hdr); pkt_info.bPacketToSelf = pkt_info.bPacketMatchBSSID && @@ -222,12 +242,12 @@ void update_recvframe_phyinfo(struct recv_frame *precvframe, psta = rtw_get_stainfo23a(pstapriv, sa); if (psta) { pkt_info.StationID = psta->mac_id; - /* printk("%s ==> StationID(%d)\n", __FUNCTION__, pkt_info.StationID); */ + /* printk("%s ==> StationID(%d)\n", __func__, pkt_info.StationID); */ } pkt_info.Rate = pattrib->mcs_rate; ODM_PhyStatusQuery23a(&pHalData->odmpriv, pPHYInfo, - (u8 *)pphy_status, &pkt_info); + (u8 *)pphy_status, &pkt_info); precvframe->psta = NULL; if (pkt_info.bPacketMatchBSSID && (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == true)) { diff --git a/drivers/staging/rtl8723au/hal/rtl8723au_xmit.c b/drivers/staging/rtl8723au/hal/rtl8723au_xmit.c index 2af2e3ee1abc..a67850fe6e5d 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723au_xmit.c +++ b/drivers/staging/rtl8723au/hal/rtl8723au_xmit.c @@ -21,20 +21,6 @@ /* include <rtl8192c_hal.h> */ #include <rtl8723a_hal.h> -s32 rtl8723au_init_xmit_priv(struct rtw_adapter *padapter) -{ - struct xmit_priv *pxmitpriv = &padapter->xmitpriv; - - tasklet_init(&pxmitpriv->xmit_tasklet, - (void(*)(unsigned long))rtl8723au_xmit_tasklet, - (unsigned long)padapter); - return _SUCCESS; -} - -void rtl8723au_free_xmit_priv(struct rtw_adapter *padapter) -{ -} - static void do_queue_select(struct rtw_adapter *padapter, struct pkt_attrib *pattrib) { u8 qsel; @@ -87,19 +73,18 @@ static void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxd if ((pattrib->encrypt > 0) && !pattrib->bswenc) { switch (pattrib->encrypt) { /* SEC_TYPE */ - case _WEP40_: - case _WEP104_: + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: ptxdesc->txdw1 |= cpu_to_le32((0x01<<22)&0x00c00000); break; - case _TKIP_: - case _TKIP_WTMIC_: + case WLAN_CIPHER_SUITE_TKIP: /* ptxdesc->txdw1 |= cpu_to_le32((0x02<<22)&0x00c00000); */ ptxdesc->txdw1 |= cpu_to_le32((0x01<<22)&0x00c00000); break; - case _AES_: + case WLAN_CIPHER_SUITE_CCMP: ptxdesc->txdw1 |= cpu_to_le32((0x03<<22)&0x00c00000); break; - case _NO_PRIVACY_: + case 0: default: break; } @@ -309,10 +294,11 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag return pull; } -static s32 rtw_dump_xframe(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe) +static int rtw_dump_xframe(struct rtw_adapter *padapter, + struct xmit_frame *pxmitframe) { - s32 ret = _SUCCESS; - s32 inner_ret = _SUCCESS; + int ret = _SUCCESS; + int inner_ret = _SUCCESS; int t, sz, w_sz, pull = 0; u8 *mem_addr; u32 ff_hwaddr; @@ -358,7 +344,8 @@ static s32 rtw_dump_xframe(struct rtw_adapter *padapter, struct xmit_frame *pxmi } ff_hwaddr = rtw_get_ff_hwaddr23a(pxmitframe); - inner_ret = rtw_write_port(padapter, ff_hwaddr, w_sz, pxmitbuf); + inner_ret = rtl8723au_write_port(padapter, ff_hwaddr, + w_sz, pxmitbuf); rtw_count_tx_stats23a(padapter, pxmitframe, sz); RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, @@ -377,8 +364,9 @@ static s32 rtw_dump_xframe(struct rtw_adapter *padapter, struct xmit_frame *pxmi return ret; } -s32 rtl8723au_xmitframe_complete(struct rtw_adapter *padapter, - struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +bool rtl8723au_xmitframe_complete(struct rtw_adapter *padapter, + struct xmit_priv *pxmitpriv, + struct xmit_buf *pxmitbuf) { struct hw_xmit *phwxmits; struct xmit_frame *pxmitframe; @@ -427,9 +415,10 @@ s32 rtl8723au_xmitframe_complete(struct rtw_adapter *padapter, return true; } -static s32 xmitframe_direct(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe) +static int xmitframe_direct(struct rtw_adapter *padapter, + struct xmit_frame *pxmitframe) { - s32 res = _SUCCESS; + int res; res = rtw_xmitframe_coalesce23a(padapter, pxmitframe->pkt, pxmitframe); if (res == _SUCCESS) @@ -442,9 +431,10 @@ static s32 xmitframe_direct(struct rtw_adapter *padapter, struct xmit_frame *pxm * true dump packet directly * false enqueue packet */ -static s32 pre_xmitframe(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe) +bool rtl8723au_hal_xmit(struct rtw_adapter *padapter, + struct xmit_frame *pxmitframe) { - s32 res; + int res; struct xmit_buf *pxmitbuf = NULL; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct pkt_attrib *pattrib = &pxmitframe->attrib; @@ -513,26 +503,17 @@ enqueue: return false; } -s32 rtl8723au_mgnt_xmit(struct rtw_adapter *padapter, struct xmit_frame *pmgntframe) +int rtl8723au_mgnt_xmit(struct rtw_adapter *padapter, + struct xmit_frame *pmgntframe) { return rtw_dump_xframe(padapter, pmgntframe); } -/* - * Return - * true dump packet directly ok - * false temporary can't transmit packets to hardware - */ -s32 rtl8723au_hal_xmit(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe) -{ - return pre_xmitframe(padapter, pxmitframe); -} - -s32 rtl8723au_hal_xmitframe_enqueue(struct rtw_adapter *padapter, - struct xmit_frame *pxmitframe) +int rtl8723au_hal_xmitframe_enqueue(struct rtw_adapter *padapter, + struct xmit_frame *pxmitframe) { struct xmit_priv *pxmitpriv = &padapter->xmitpriv; - s32 err; + int err; err = rtw_xmitframe_enqueue23a(padapter, pxmitframe); if (err != _SUCCESS) { diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c index e206829d50fa..6a7fb28e03da 100644 --- a/drivers/staging/rtl8723au/hal/usb_halinit.c +++ b/drivers/staging/rtl8723au/hal/usb_halinit.c @@ -25,8 +25,6 @@ #include <linux/ieee80211.h> #include <usb_ops.h> -#include <usb_hal.h> -#include <usb_osintf.h> static void _ConfigChipOutEP(struct rtw_adapter *pAdapter, u8 NumOutPipe) @@ -38,7 +36,7 @@ _ConfigChipOutEP(struct rtw_adapter *pAdapter, u8 NumOutPipe) pHalData->OutEpNumber = 0; /* Normal and High queue */ - value8 = rtw_read8(pAdapter, (REG_NORMAL_SIE_EP + 1)); + value8 = rtl8723au_read8(pAdapter, (REG_NORMAL_SIE_EP + 1)); if (value8 & USB_NORMAL_SIE_EP_MASK) { pHalData->OutEpQueueSel |= TX_SELE_HQ; @@ -51,7 +49,7 @@ _ConfigChipOutEP(struct rtw_adapter *pAdapter, u8 NumOutPipe) } /* Low queue */ - value8 = rtw_read8(pAdapter, (REG_NORMAL_SIE_EP + 2)); + value8 = rtl8723au_read8(pAdapter, (REG_NORMAL_SIE_EP + 2)); if (value8 & USB_NORMAL_SIE_EP_MASK) { pHalData->OutEpQueueSel |= TX_SELE_LQ; pHalData->OutEpNumber++; @@ -82,19 +80,11 @@ static bool rtl8723au_set_queue_pipe_mapping(struct rtw_adapter *pAdapter, return result; } -static void rtl8723au_interface_configure(struct rtw_adapter *padapter) +void rtl8723au_chip_configure(struct rtw_adapter *padapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); - if (pdvobjpriv->ishighspeed == true) { - /* 512 bytes */ - pHalData->UsbBulkOutSize = USB_HIGH_SPEED_BULK_SIZE; - } else { - /* 64 bytes */ - pHalData->UsbBulkOutSize = USB_FULL_SPEED_BULK_SIZE; - } - pHalData->interfaceIndex = pdvobjpriv->InterfaceNumber; rtl8723au_set_queue_pipe_mapping(padapter, @@ -102,15 +92,15 @@ static void rtl8723au_interface_configure(struct rtw_adapter *padapter) pdvobjpriv->RtNumOutPipes); } -static u8 _InitPowerOn(struct rtw_adapter *padapter) +static int _InitPowerOn(struct rtw_adapter *padapter) { - u8 status = _SUCCESS; + int status = _SUCCESS; u16 value16 = 0; u8 value8 = 0; /* RSV_CTRL 0x1C[7:0] = 0x00 unlock ISO/CLK/Power control register */ - rtw_write8(padapter, REG_RSV_CTRL, 0x0); + rtl8723au_write8(padapter, REG_RSV_CTRL, 0x0); /* HW Power on sequence */ if (!HalPwrSeqCmdParsing23a(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, @@ -118,20 +108,20 @@ static u8 _InitPowerOn(struct rtw_adapter *padapter) return _FAIL; /* 0x04[19] = 1, suggest by Jackie 2011.05.09, reset 8051 */ - value8 = rtw_read8(padapter, REG_APS_FSMCO+2); - rtw_write8(padapter, REG_APS_FSMCO + 2, (value8 | BIT3)); + value8 = rtl8723au_read8(padapter, REG_APS_FSMCO+2); + rtl8723au_write8(padapter, REG_APS_FSMCO + 2, value8 | BIT(3)); /* Enable MAC DMA/WMAC/SCHEDULE/SEC block */ /* Set CR bit10 to enable 32k calibration. Suggested by SD1 Gimmy. Added by tynli. 2011.08.31. */ - value16 = rtw_read16(padapter, REG_CR); + value16 = rtl8723au_read16(padapter, REG_CR); value16 |= (HCI_TXDMA_EN | HCI_RXDMA_EN | TXDMA_EN | RXDMA_EN | PROTOCOL_EN | SCHEDULE_EN | MACTXEN | MACRXEN | ENSEC | CALTMR_EN); - rtw_write16(padapter, REG_CR, value16); + rtl8723au_write16(padapter, REG_CR, value16); /* for Efuse PG, suggest by Jackie 2011.11.23 */ - PHY_SetBBReg(padapter, REG_EFUSE_CTRL, BIT28|BIT29|BIT30, 0x06); + PHY_SetBBReg(padapter, REG_EFUSE_CTRL, BIT(28)|BIT(29)|BIT(30), 0x06); return status; } @@ -143,10 +133,10 @@ static void _InitInterrupt(struct rtw_adapter *Adapter) /* HISR - turn all on */ value32 = 0xFFFFFFFF; - rtw_write32(Adapter, REG_HISR, value32); + rtl8723au_write32(Adapter, REG_HISR, value32); /* HIMR - turn all on */ - rtw_write32(Adapter, REG_HIMR, value32); + rtl8723au_write32(Adapter, REG_HIMR, value32); } static void _InitQueueReservedPage(struct rtw_adapter *Adapter) @@ -160,37 +150,33 @@ static void _InitQueueReservedPage(struct rtw_adapter *Adapter) u32 value32; u8 value8; bool bWiFiConfig = pregistrypriv->wifi_spec; - /* u32 txQPageNum, txQPageUnit, txQRemainPage; */ - { /* for WMM */ - /* RT_ASSERT((outEPNum>= 2), ("for WMM , number of out-ep " - "must more than or equal to 2!\n")); */ + /* RT_ASSERT((outEPNum>= 2), ("for WMM , number of out-ep " + "must more than or equal to 2!\n")); */ - numPubQ = bWiFiConfig ? - WMM_NORMAL_PAGE_NUM_PUBQ : NORMAL_PAGE_NUM_PUBQ; + numPubQ = bWiFiConfig ? WMM_NORMAL_PAGE_NUM_PUBQ : NORMAL_PAGE_NUM_PUBQ; - if (pHalData->OutEpQueueSel & TX_SELE_HQ) { - numHQ = bWiFiConfig ? - WMM_NORMAL_PAGE_NUM_HPQ : NORMAL_PAGE_NUM_HPQ; - } + if (pHalData->OutEpQueueSel & TX_SELE_HQ) { + numHQ = bWiFiConfig ? + WMM_NORMAL_PAGE_NUM_HPQ : NORMAL_PAGE_NUM_HPQ; + } - if (pHalData->OutEpQueueSel & TX_SELE_LQ) { - numLQ = bWiFiConfig ? - WMM_NORMAL_PAGE_NUM_LPQ : NORMAL_PAGE_NUM_LPQ; - } - /* NOTE: This step shall be proceed before - writting REG_RQPN. */ - if (pHalData->OutEpQueueSel & TX_SELE_NQ) { - numNQ = bWiFiConfig ? - WMM_NORMAL_PAGE_NUM_NPQ : NORMAL_PAGE_NUM_NPQ; - } - value8 = (u8)_NPQ(numNQ); - rtw_write8(Adapter, REG_RQPN_NPQ, value8); + if (pHalData->OutEpQueueSel & TX_SELE_LQ) { + numLQ = bWiFiConfig ? + WMM_NORMAL_PAGE_NUM_LPQ : NORMAL_PAGE_NUM_LPQ; } + /* NOTE: This step shall be proceed before + writting REG_RQPN. */ + if (pHalData->OutEpQueueSel & TX_SELE_NQ) { + numNQ = bWiFiConfig ? + WMM_NORMAL_PAGE_NUM_NPQ : NORMAL_PAGE_NUM_NPQ; + } + value8 = (u8)_NPQ(numNQ); + rtl8723au_write8(Adapter, REG_RQPN_NPQ, value8); /* TX DMA */ value32 = _HPQ(numHQ) | _LPQ(numLQ) | _PUBQ(numPubQ) | LD_RQPN; - rtw_write32(Adapter, REG_RQPN, value32); + rtl8723au_write32(Adapter, REG_RQPN, value32); } static void _InitTxBufferBoundary(struct rtw_adapter *Adapter) @@ -204,11 +190,11 @@ static void _InitTxBufferBoundary(struct rtw_adapter *Adapter) else /* for WMM */ txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY; - rtw_write8(Adapter, REG_TXPKTBUF_BCNQ_BDNY, txpktbuf_bndy); - rtw_write8(Adapter, REG_TXPKTBUF_MGQ_BDNY, txpktbuf_bndy); - rtw_write8(Adapter, REG_TXPKTBUF_WMAC_LBK_BF_HD, txpktbuf_bndy); - rtw_write8(Adapter, REG_TRXFF_BNDY, txpktbuf_bndy); - rtw_write8(Adapter, REG_TDECTRL+1, txpktbuf_bndy); + rtl8723au_write8(Adapter, REG_TXPKTBUF_BCNQ_BDNY, txpktbuf_bndy); + rtl8723au_write8(Adapter, REG_TXPKTBUF_MGQ_BDNY, txpktbuf_bndy); + rtl8723au_write8(Adapter, REG_TXPKTBUF_WMAC_LBK_BF_HD, txpktbuf_bndy); + rtl8723au_write8(Adapter, REG_TRXFF_BNDY, txpktbuf_bndy); + rtl8723au_write8(Adapter, REG_TDECTRL+1, txpktbuf_bndy); } static void _InitPageBoundary(struct rtw_adapter *Adapter) @@ -217,7 +203,7 @@ static void _InitPageBoundary(struct rtw_adapter *Adapter) /* srand(static_cast<unsigned int>(time(NULL))); */ u16 rxff_bndy = 0x27FF;/* rand() % 1) ? 0x27FF : 0x23FF; */ - rtw_write16(Adapter, (REG_TRXFF_BNDY + 2), rxff_bndy); + rtl8723au_write16(Adapter, (REG_TRXFF_BNDY + 2), rxff_bndy); /* TODO: ?? shall we set tx boundary? */ } @@ -226,13 +212,13 @@ static void _InitNormalChipRegPriority(struct rtw_adapter *Adapter, u16 beQ, u16 bkQ, u16 viQ, u16 voQ, u16 mgtQ, u16 hiQ) { - u16 value16 = rtw_read16(Adapter, REG_TRXDMA_CTRL) & 0x7; + u16 value16 = rtl8723au_read16(Adapter, REG_TRXDMA_CTRL) & 0x7; value16 |= _TXDMA_BEQ_MAP(beQ) | _TXDMA_BKQ_MAP(bkQ) | _TXDMA_VIQ_MAP(viQ) | _TXDMA_VOQ_MAP(voQ) | _TXDMA_MGQ_MAP(mgtQ) | _TXDMA_HIQ_MAP(hiQ); - rtw_write16(Adapter, REG_TRXDMA_CTRL, value16); + rtl8723au_write16(Adapter, REG_TRXDMA_CTRL, value16); } static void _InitNormalChipOneOutEpPriority(struct rtw_adapter *Adapter) @@ -356,11 +342,11 @@ static void _InitNetworkType(struct rtw_adapter *Adapter) { u32 value32; - value32 = rtw_read32(Adapter, REG_CR); + value32 = rtl8723au_read32(Adapter, REG_CR); /* TODO: use the other function to set network type */ value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AP); - rtw_write32(Adapter, REG_CR, value32); + rtl8723au_write32(Adapter, REG_CR, value32); } static void _InitTransferPageSize(struct rtw_adapter *Adapter) @@ -369,12 +355,12 @@ static void _InitTransferPageSize(struct rtw_adapter *Adapter) u8 value8; value8 = _PSRX(PBP_128) | _PSTX(PBP_128); - rtw_write8(Adapter, REG_PBP, value8); + rtl8723au_write8(Adapter, REG_PBP, value8); } static void _InitDriverInfoSize(struct rtw_adapter *Adapter, u8 drvInfoSize) { - rtw_write8(Adapter, REG_RX_DRVINFO_SZ, drvInfoSize); + rtl8723au_write8(Adapter, REG_RX_DRVINFO_SZ, drvInfoSize); } static void _InitWMACSetting(struct rtw_adapter *Adapter) @@ -389,15 +375,15 @@ static void _InitWMACSetting(struct rtw_adapter *Adapter) /* some REG_RCR will be modified later by phy_ConfigMACWithHeaderFile() */ - rtw_write32(Adapter, REG_RCR, pHalData->ReceiveConfig); + rtl8723au_write32(Adapter, REG_RCR, pHalData->ReceiveConfig); /* Accept all multicast address */ - rtw_write32(Adapter, REG_MAR, 0xFFFFFFFF); - rtw_write32(Adapter, REG_MAR + 4, 0xFFFFFFFF); + rtl8723au_write32(Adapter, REG_MAR, 0xFFFFFFFF); + rtl8723au_write32(Adapter, REG_MAR + 4, 0xFFFFFFFF); /* Accept all data frames */ /* value16 = 0xFFFF; */ - /* rtw_write16(Adapter, REG_RXFLTMAP2, value16); */ + /* rtl8723au_write16(Adapter, REG_RXFLTMAP2, value16); */ /* 2010.09.08 hpfan */ /* Since ADF is removed from RCR, ps-poll will not be indicate @@ -405,14 +391,14 @@ static void _InitWMACSetting(struct rtw_adapter *Adapter) /* RxFilterMap should mask ps-poll to gurantee AP mode can rx ps-poll. */ /* value16 = 0x400; */ - /* rtw_write16(Adapter, REG_RXFLTMAP1, value16); */ + /* rtl8723au_write16(Adapter, REG_RXFLTMAP1, value16); */ /* Accept all management frames */ /* value16 = 0xFFFF; */ - /* rtw_write16(Adapter, REG_RXFLTMAP0, value16); */ + /* rtl8723au_write16(Adapter, REG_RXFLTMAP0, value16); */ /* enable RX_SHIFT bits */ - /* rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, + /* rtl8723au_write8(Adapter, REG_TRXDMA_CTRL, rtl8723au_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); */ } @@ -422,49 +408,49 @@ static void _InitAdaptiveCtrl(struct rtw_adapter *Adapter) u32 value32; /* Response Rate Set */ - value32 = rtw_read32(Adapter, REG_RRSR); + value32 = rtl8723au_read32(Adapter, REG_RRSR); value32 &= ~RATE_BITMAP_ALL; value32 |= RATE_RRSR_CCK_ONLY_1M; - rtw_write32(Adapter, REG_RRSR, value32); + rtl8723au_write32(Adapter, REG_RRSR, value32); /* CF-END Threshold */ - /* m_spIoBase->rtw_write8(REG_CFEND_TH, 0x1); */ + /* m_spIoBase->rtl8723au_write8(REG_CFEND_TH, 0x1); */ /* SIFS (used in NAV) */ value16 = _SPEC_SIFS_CCK(0x10) | _SPEC_SIFS_OFDM(0x10); - rtw_write16(Adapter, REG_SPEC_SIFS, value16); + rtl8723au_write16(Adapter, REG_SPEC_SIFS, value16); /* Retry Limit */ value16 = _LRL(0x30) | _SRL(0x30); - rtw_write16(Adapter, REG_RL, value16); + rtl8723au_write16(Adapter, REG_RL, value16); } static void _InitRateFallback(struct rtw_adapter *Adapter) { /* Set Data Auto Rate Fallback Retry Count register. */ - rtw_write32(Adapter, REG_DARFRC, 0x00000000); - rtw_write32(Adapter, REG_DARFRC+4, 0x10080404); - rtw_write32(Adapter, REG_RARFRC, 0x04030201); - rtw_write32(Adapter, REG_RARFRC+4, 0x08070605); + rtl8723au_write32(Adapter, REG_DARFRC, 0x00000000); + rtl8723au_write32(Adapter, REG_DARFRC+4, 0x10080404); + rtl8723au_write32(Adapter, REG_RARFRC, 0x04030201); + rtl8723au_write32(Adapter, REG_RARFRC+4, 0x08070605); } static void _InitEDCA(struct rtw_adapter *Adapter) { /* Set Spec SIFS (used in NAV) */ - rtw_write16(Adapter, REG_SPEC_SIFS, 0x100a); - rtw_write16(Adapter, REG_MAC_SPEC_SIFS, 0x100a); + rtl8723au_write16(Adapter, REG_SPEC_SIFS, 0x100a); + rtl8723au_write16(Adapter, REG_MAC_SPEC_SIFS, 0x100a); /* Set SIFS for CCK */ - rtw_write16(Adapter, REG_SIFS_CTX, 0x100a); + rtl8723au_write16(Adapter, REG_SIFS_CTX, 0x100a); /* Set SIFS for OFDM */ - rtw_write16(Adapter, REG_SIFS_TRX, 0x100a); + rtl8723au_write16(Adapter, REG_SIFS_TRX, 0x100a); /* TXOP */ - rtw_write32(Adapter, REG_EDCA_BE_PARAM, 0x005EA42B); - rtw_write32(Adapter, REG_EDCA_BK_PARAM, 0x0000A44F); - rtw_write32(Adapter, REG_EDCA_VI_PARAM, 0x005EA324); - rtw_write32(Adapter, REG_EDCA_VO_PARAM, 0x002FA226); + rtl8723au_write32(Adapter, REG_EDCA_BE_PARAM, 0x005EA42B); + rtl8723au_write32(Adapter, REG_EDCA_BK_PARAM, 0x0000A44F); + rtl8723au_write32(Adapter, REG_EDCA_VI_PARAM, 0x005EA324); + rtl8723au_write32(Adapter, REG_EDCA_VO_PARAM, 0x002FA226); } static void _InitHWLed(struct rtw_adapter *Adapter) @@ -481,21 +467,21 @@ static void _InitHWLed(struct rtw_adapter *Adapter) static void _InitRDGSetting(struct rtw_adapter *Adapter) { - rtw_write8(Adapter, REG_RD_CTRL, 0xFF); - rtw_write16(Adapter, REG_RD_NAV_NXT, 0x200); - rtw_write8(Adapter, REG_RD_RESP_PKT_TH, 0x05); + rtl8723au_write8(Adapter, REG_RD_CTRL, 0xFF); + rtl8723au_write16(Adapter, REG_RD_NAV_NXT, 0x200); + rtl8723au_write8(Adapter, REG_RD_RESP_PKT_TH, 0x05); } static void _InitRetryFunction(struct rtw_adapter *Adapter) { u8 value8; - value8 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL); + value8 = rtl8723au_read8(Adapter, REG_FWHW_TXQ_CTRL); value8 |= EN_AMPDU_RTY_NEW; - rtw_write8(Adapter, REG_FWHW_TXQ_CTRL, value8); + rtl8723au_write8(Adapter, REG_FWHW_TXQ_CTRL, value8); /* Set ACK timeout */ - rtw_write8(Adapter, REG_ACKTO, 0x40); + rtl8723au_write8(Adapter, REG_ACKTO, 0x40); } /*----------------------------------------------------------------------------- @@ -599,35 +585,33 @@ enum rt_rf_power_state RfOnOffDetect23a(struct rtw_adapter *pAdapter) enum rt_rf_power_state rfpowerstate = rf_off; if (pAdapter->pwrctrlpriv.bHWPowerdown) { - val8 = rtw_read8(pAdapter, REG_HSISR); + val8 = rtl8723au_read8(pAdapter, REG_HSISR); DBG_8723A("pwrdown, 0x5c(BIT7) =%02x\n", val8); - rfpowerstate = (val8 & BIT7) ? rf_off : rf_on; + rfpowerstate = (val8 & BIT(7)) ? rf_off : rf_on; } else { /* rf on/off */ - rtw_write8(pAdapter, REG_MAC_PINMUX_CFG, - rtw_read8(pAdapter, REG_MAC_PINMUX_CFG) & ~BIT3); - val8 = rtw_read8(pAdapter, REG_GPIO_IO_SEL); + rtl8723au_write8(pAdapter, REG_MAC_PINMUX_CFG, + rtl8723au_read8(pAdapter, REG_MAC_PINMUX_CFG) & + ~BIT(3)); + val8 = rtl8723au_read8(pAdapter, REG_GPIO_IO_SEL); DBG_8723A("GPIO_IN =%02x\n", val8); - rfpowerstate = (val8 & BIT3) ? rf_on : rf_off; + rfpowerstate = (val8 & BIT(3)) ? rf_on : rf_off; } return rfpowerstate; } /* HalDetectPwrDownMode */ void _ps_open_RF23a(struct rtw_adapter *padapter); -static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) +static int rtl8723au_hal_init(struct rtw_adapter *Adapter) { - u8 val8 = 0; - u32 boundary, status = _SUCCESS; + u8 val8 = 0; + u32 boundary; + int status = _SUCCESS; struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv; struct registry_priv *pregistrypriv = &Adapter->registrypriv; - u32 NavUpper = WiFiNavUpperUs; unsigned long init_start_time = jiffies; -#define HAL_INIT_PROFILE_TAG(stage) do {} while (0) - - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); if (Adapter->pwrctrlpriv.bkeepfwalive) { _ps_open_RF23a(Adapter); @@ -644,7 +628,7 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) } /* Check if MAC has already power on. by tynli. 2011.05.27. */ - val8 = rtw_read8(Adapter, REG_CR); + val8 = rtl8723au_read8(Adapter, REG_CR); RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("%s: REG_CR 0x100 = 0x%02x\n", __func__, val8)); /* Fix 92DU-VC S3 hang with the reason is that secondary mac is not @@ -659,7 +643,6 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) ("%s: MAC has already power on\n", __func__)); } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PW_ON); status = _InitPowerOn(Adapter); if (status == _FAIL) { RT_TRACE(_module_hci_hal_init_c_, _drv_err_, @@ -667,7 +650,6 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) goto exit; } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_LLTT); if (!pregistrypriv->wifi_spec) { boundary = TX_PAGE_BOUNDARY; } else { @@ -684,11 +666,9 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) } } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC01); if (pHalData->bRDGEnable) _InitRDGSetting(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); status = rtl8723a_FirmwareDownload(Adapter); if (status != _SUCCESS) { Adapter->bFWReady = false; @@ -720,14 +700,12 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) /* <Roger_Notes> Current Channel will be updated again later. */ pHalData->CurrentChannel = 6;/* default set to 6 */ - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MAC); status = PHY_MACConfig8723A(Adapter); if (status == _FAIL) { DBG_8723A("PHY_MACConfig8723A fault !!\n"); goto exit; } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); /* */ /* d. Initialize BB related configurations. */ /* */ @@ -740,7 +718,6 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) /* Add for tx power by rate fine tune. We need to call the function after BB config. */ /* Because the tx power by rate table is inited in BB config. */ - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); status = PHY_RFConfig8723A(Adapter); if (status == _FAIL) { DBG_8723A("PHY_RFConfig8723A fault !!\n"); @@ -766,7 +743,6 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) pHalData->RfRegChnlVal[0] = PHY_QueryRFReg(Adapter, (enum RF_RADIO_PATH)0, RF_CHNLBW, bRFRegOffsetMask); pHalData->RfRegChnlVal[1] = PHY_QueryRFReg(Adapter, (enum RF_RADIO_PATH)1, RF_CHNLBW, bRFRegOffsetMask); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); if (!pHalData->bMACFuncEnable) { _InitQueueReservedPage(Adapter); _InitTxBufferBoundary(Adapter); @@ -779,7 +755,7 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) _InitDriverInfoSize(Adapter, DRVINFO_SZ); _InitInterrupt(Adapter); - hal_init_macaddr23a(Adapter);/* set mac_address */ + hw_var_set_macaddr(Adapter, Adapter->eeprompriv.mac_addr); _InitNetworkType(Adapter);/* set msr */ _InitWMACSetting(Adapter); _InitAdaptiveCtrl(Adapter); @@ -792,14 +768,11 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) _InitHWLed(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_TURN_ON_BLOCK); _BBTurnOnBlock(Adapter); /* NicIFSetMacAddress(padapter, padapter->PermanentAddress); */ - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_SECURITY); invalidate_cam_all23a(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); /* 2010/12/17 MH We need to set TX power according to EFUSE content at first. */ PHY_SetTxPowerLevel8723A(Adapter, pHalData->CurrentChannel); @@ -807,101 +780,89 @@ static u32 rtl8723au_hal_init(struct rtw_adapter *Adapter) /* HW SEQ CTRL */ /* set 0x0 to 0xFF by tynli. Default enable HW SEQ NUM. */ - rtw_write8(Adapter, REG_HWSEQ_CTRL, 0xFF); + rtl8723au_write8(Adapter, REG_HWSEQ_CTRL, 0xFF); /* */ /* Disable BAR, suggested by Scott */ /* 2010.04.09 add by hpfan */ /* */ - rtw_write32(Adapter, REG_BAR_MODE_CTRL, 0x0201ffff); + rtl8723au_write32(Adapter, REG_BAR_MODE_CTRL, 0x0201ffff); if (pregistrypriv->wifi_spec) - rtw_write16(Adapter, REG_FAST_EDCA_CTRL, 0); + rtl8723au_write16(Adapter, REG_FAST_EDCA_CTRL, 0); /* Move by Neo for USB SS from above setp */ _RfPowerSave(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); - /* 2010/08/26 MH Merge from 8192CE. */ - /* sherry masked that it has been done in _RfPowerSave */ - /* 20110927 */ - /* recovery for 8192cu and 9723Au 20111017 */ - if (pwrctrlpriv->rf_pwrstate == rf_on) { - if (pHalData->bIQKInitialized) { - rtl8723a_phy_iq_calibrate(Adapter, true); - } else { - rtl8723a_phy_iq_calibrate(Adapter, false); - pHalData->bIQKInitialized = true; - } + /* 2010/08/26 MH Merge from 8192CE. */ + /* sherry masked that it has been done in _RfPowerSave */ + /* 20110927 */ + /* recovery for 8192cu and 9723Au 20111017 */ + if (pwrctrlpriv->rf_pwrstate == rf_on) { + if (pHalData->bIQKInitialized) { + rtl8723a_phy_iq_calibrate(Adapter, true); + } else { + rtl8723a_phy_iq_calibrate(Adapter, false); + pHalData->bIQKInitialized = true; + } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_PW_TRACK); - rtl8723a_odm_check_tx_power_tracking(Adapter); + rtl8723a_odm_check_tx_power_tracking(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_LCK); - rtl8723a_phy_lc_calibrate(Adapter); + rtl8723a_phy_lc_calibrate(Adapter); -#ifdef CONFIG_8723AU_BT_COEXIST - rtl8723a_SingleDualAntennaDetection(Adapter); -#endif - } + rtl8723a_dual_antenna_detection(Adapter); + } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC21); - /* fixed USB interface interference issue */ - rtw_write8(Adapter, 0xfe40, 0xe0); - rtw_write8(Adapter, 0xfe41, 0x8d); - rtw_write8(Adapter, 0xfe42, 0x80); - rtw_write32(Adapter, 0x20c, 0xfd0320); + /* fixed USB interface interference issue */ + rtl8723au_write8(Adapter, 0xfe40, 0xe0); + rtl8723au_write8(Adapter, 0xfe41, 0x8d); + rtl8723au_write8(Adapter, 0xfe42, 0x80); + rtl8723au_write32(Adapter, 0x20c, 0xfd0320); /* Solve too many protocol error on USB bus */ if (!IS_81xxC_VENDOR_UMC_A_CUT(pHalData->VersionID)) { /* 0xE6 = 0x94 */ - rtw_write8(Adapter, 0xFE40, 0xE6); - rtw_write8(Adapter, 0xFE41, 0x94); - rtw_write8(Adapter, 0xFE42, 0x80); + rtl8723au_write8(Adapter, 0xFE40, 0xE6); + rtl8723au_write8(Adapter, 0xFE41, 0x94); + rtl8723au_write8(Adapter, 0xFE42, 0x80); /* 0xE0 = 0x19 */ - rtw_write8(Adapter, 0xFE40, 0xE0); - rtw_write8(Adapter, 0xFE41, 0x19); - rtw_write8(Adapter, 0xFE42, 0x80); + rtl8723au_write8(Adapter, 0xFE40, 0xE0); + rtl8723au_write8(Adapter, 0xFE41, 0x19); + rtl8723au_write8(Adapter, 0xFE42, 0x80); /* 0xE5 = 0x91 */ - rtw_write8(Adapter, 0xFE40, 0xE5); - rtw_write8(Adapter, 0xFE41, 0x91); - rtw_write8(Adapter, 0xFE42, 0x80); + rtl8723au_write8(Adapter, 0xFE40, 0xE5); + rtl8723au_write8(Adapter, 0xFE41, 0x91); + rtl8723au_write8(Adapter, 0xFE42, 0x80); /* 0xE2 = 0x81 */ - rtw_write8(Adapter, 0xFE40, 0xE2); - rtw_write8(Adapter, 0xFE41, 0x81); - rtw_write8(Adapter, 0xFE42, 0x80); + rtl8723au_write8(Adapter, 0xFE40, 0xE2); + rtl8723au_write8(Adapter, 0xFE41, 0x81); + rtl8723au_write8(Adapter, 0xFE42, 0x80); } -/* HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PABIAS); */ /* _InitPABias(Adapter); */ -#ifdef CONFIG_8723AU_BT_COEXIST - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BT_COEXIST); /* Init BT hw config. */ - BT_InitHwConfig(Adapter); -#endif + rtl8723a_BT_init_hwconfig(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); rtl8723a_InitHalDm(Adapter); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC31); - rtw_hal_set_hwreg23a(Adapter, HW_VAR_NAV_UPPER, (u8 *)&NavUpper); + rtl8723a_set_nav_upper(Adapter, WiFiNavUpperUs); /* 2011/03/09 MH debug only, UMC-B cut pass 2500 S5 test, but we need to fin root cause. */ - if (((rtw_read32(Adapter, rFPGA0_RFMOD) & 0xFF000000) != 0x83000000)) { + if (((rtl8723au_read32(Adapter, rFPGA0_RFMOD) & 0xFF000000) != + 0x83000000)) { PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT(24), 1); RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("%s: IQK fail recorver\n", __func__)); } /* ack for xmit mgmt frames. */ - rtw_write32(Adapter, REG_FWHW_TXQ_CTRL, rtw_read32(Adapter, REG_FWHW_TXQ_CTRL)|BIT(12)); + rtl8723au_write32(Adapter, REG_FWHW_TXQ_CTRL, + rtl8723au_read32(Adapter, REG_FWHW_TXQ_CTRL)|BIT(12)); exit: - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_END); - DBG_8723A("%s in %dms\n", __func__, jiffies_to_msecs(jiffies - init_start_time)); return status; @@ -923,9 +884,9 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, ReadXBYTE(REG_SYS_CLKR+1) | BIT(3)); */ /* 2. Force PWM, Enable SPS18_LDO_Marco_Block */ - rtw_write8(Adapter, REG_SPS0_CTRL, - rtw_read8(Adapter, REG_SPS0_CTRL) | - (BIT0|BIT3)); + rtl8723au_write8(Adapter, REG_SPS0_CTRL, + rtl8723au_read8(Adapter, REG_SPS0_CTRL) | + BIT(0) | BIT(3)); /* 3. restore BB, AFE control register. */ /* RF */ @@ -936,7 +897,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 1); PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 1); - PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1, 0); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT(1), 0); /* AFE */ if (pHalData->rf_type == RF_2T2R) @@ -959,17 +920,17 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, } else { /* Level 2 or others. */ /* h. AFE_PLL_CTRL 0x28[7:0] = 0x80 disable AFE PLL */ - rtw_write8(Adapter, REG_AFE_PLL_CTRL, 0x81); + rtl8723au_write8(Adapter, REG_AFE_PLL_CTRL, 0x81); /* i. AFE_XTAL_CTRL 0x24[15:0] = 0x880F gated AFE DIG_CLOCK */ - rtw_write16(Adapter, REG_AFE_XTAL_CTRL, 0x800F); + rtl8723au_write16(Adapter, REG_AFE_XTAL_CTRL, 0x800F); mdelay(1); /* 2. Force PWM, Enable SPS18_LDO_Marco_Block */ - rtw_write8(Adapter, REG_SPS0_CTRL, - rtw_read8(Adapter, REG_SPS0_CTRL) | - (BIT0|BIT3)); + rtl8723au_write8(Adapter, REG_SPS0_CTRL, + rtl8723au_read8(Adapter, REG_SPS0_CTRL) | + BIT(0) | BIT(3)); /* 3. restore BB, AFE control register. */ /* RF */ @@ -980,7 +941,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 1); PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 1); - PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1, 0); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT(1), 0); /* AFE */ if (pHalData->rf_type == RF_2T2R) @@ -1002,25 +963,27 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, } /* 5. gated MAC Clock */ - bytetmp = rtw_read8(Adapter, REG_APSD_CTRL); - rtw_write8(Adapter, REG_APSD_CTRL, bytetmp & ~BIT6); + bytetmp = rtl8723au_read8(Adapter, REG_APSD_CTRL); + rtl8723au_write8(Adapter, REG_APSD_CTRL, + bytetmp & ~BIT(6)); mdelay(10); /* Set BB reset at first */ - rtw_write8(Adapter, REG_SYS_FUNC_EN, 0x17); /* 0x16 */ + /* 0x16 */ + rtl8723au_write8(Adapter, REG_SYS_FUNC_EN, 0x17); /* Enable TX */ - rtw_write8(Adapter, REG_TXPAUSE, 0x0); + rtl8723au_write8(Adapter, REG_TXPAUSE, 0x0); } break; case rf_sleep: case rf_off: - value8 = rtw_read8(Adapter, REG_SPS0_CTRL) ; + value8 = rtl8723au_read8(Adapter, REG_SPS0_CTRL) ; if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) - value8 &= ~(BIT0); + value8 &= ~BIT(0); else - value8 &= ~(BIT0|BIT3); + value8 &= ~(BIT(0) | BIT(3)); if (bRegSSPwrLvl == 1) { RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL1\n")); /* Disable RF and BB only for SelectSuspend. */ @@ -1050,7 +1013,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, 0x38, 0); } PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 0); - PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1, 1); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT(1), 1); /* 2 .AFE control register to power down. bit[30:22] */ Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_AFE0] = @@ -1070,18 +1033,19 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, bRFRegOffsetMask, 0); /* 4. Force PFM , disable SPS18_LDO_Marco_Block */ - rtw_write8(Adapter, REG_SPS0_CTRL, value8); + rtl8723au_write8(Adapter, REG_SPS0_CTRL, value8); } else { /* Level 2 or others. */ RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL2\n")); { u8 eRFPath = RF_PATH_A, value8 = 0; - rtw_write8(Adapter, REG_TXPAUSE, 0xFF); + rtl8723au_write8(Adapter, REG_TXPAUSE, 0xFF); PHY_SetRFReg(Adapter, (enum RF_RADIO_PATH)eRFPath, 0x0, bMaskByte0, 0x0); value8 |= APSDOFF; /* 0x40 */ - rtw_write8(Adapter, REG_APSD_CTRL, value8); + rtl8723au_write8(Adapter, REG_APSD_CTRL, + value8); /* After switch APSD, we need to delay for stability */ @@ -1092,7 +1056,8 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, value8 |= (FEN_USBD | FEN_USBA | FEN_BB_GLB_RSTn); /* 0x16 */ - rtw_write8(Adapter, REG_SYS_FUNC_EN, value8); + rtl8723au_write8(Adapter, REG_SYS_FUNC_EN, + value8); } /* Disable RF and BB only for SelectSuspend. */ @@ -1121,7 +1086,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 0); PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 0); - PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1, 1); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT(1), 1); /* 2 .AFE control register to power down. bit[30:22] */ Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_AFE0] = @@ -1141,17 +1106,17 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter, bRFRegOffsetMask, 0); /* 4. Force PFM , disable SPS18_LDO_Marco_Block */ - rtw_write8(Adapter, REG_SPS0_CTRL, value8); + rtl8723au_write8(Adapter, REG_SPS0_CTRL, value8); /* 2010/10/13 MH/Isaachsu exchange sequence. */ /* h. AFE_PLL_CTRL 0x28[7:0] = 0x80 disable AFE PLL */ - rtw_write8(Adapter, REG_AFE_PLL_CTRL, 0x80); + rtl8723au_write8(Adapter, REG_AFE_PLL_CTRL, 0x80); mdelay(1); /* i. AFE_XTAL_CTRL 0x24[15:0] = 0x880F gated AFE DIG_CLOCK */ - rtw_write16(Adapter, REG_AFE_XTAL_CTRL, 0xA80F); + rtl8723au_write16(Adapter, REG_AFE_XTAL_CTRL, 0xA80F); } break; default: @@ -1177,19 +1142,19 @@ static void CardDisableRTL8723U(struct rtw_adapter *Adapter) PWR_INTF_USB_MSK, rtl8723AU_enter_lps_flow); /* 2. 0x1F[7:0] = 0 turn off RF */ - rtw_write8(Adapter, REG_RF_CTRL, 0x00); + rtl8723au_write8(Adapter, REG_RF_CTRL, 0x00); /* ==== Reset digital sequence ====== */ - if ((rtw_read8(Adapter, REG_MCUFWDL)&BIT7) && + if ((rtl8723au_read8(Adapter, REG_MCUFWDL) & BIT(7)) && Adapter->bFWReady) /* 8051 RAM code */ rtl8723a_FirmwareSelfReset(Adapter); /* Reset MCU. Suggested by Filen. 2011.01.26. by tynli. */ - u1bTmp = rtw_read8(Adapter, REG_SYS_FUNC_EN+1); - rtw_write8(Adapter, REG_SYS_FUNC_EN+1, (u1bTmp & (~BIT2))); + u1bTmp = rtl8723au_read8(Adapter, REG_SYS_FUNC_EN+1); + rtl8723au_write8(Adapter, REG_SYS_FUNC_EN+1, u1bTmp & ~BIT(2)); /* g. MCUFWDL 0x80[1:0]= 0 reset MCU ready status */ - rtw_write8(Adapter, REG_MCUFWDL, 0x00); + rtl8723au_write8(Adapter, REG_MCUFWDL, 0x00); /* ==== Reset digital sequence end ====== */ /* Card disable power action flow */ @@ -1198,16 +1163,16 @@ static void CardDisableRTL8723U(struct rtw_adapter *Adapter) rtl8723AU_card_disable_flow); /* Reset MCU IO Wrapper, added by Roger, 2011.08.30. */ - u1bTmp = rtw_read8(Adapter, REG_RSV_CTRL + 1); - rtw_write8(Adapter, REG_RSV_CTRL+1, (u1bTmp & (~BIT0))); - u1bTmp = rtw_read8(Adapter, REG_RSV_CTRL + 1); - rtw_write8(Adapter, REG_RSV_CTRL+1, u1bTmp | BIT0); + u1bTmp = rtl8723au_read8(Adapter, REG_RSV_CTRL + 1); + rtl8723au_write8(Adapter, REG_RSV_CTRL+1, u1bTmp & ~BIT(0)); + u1bTmp = rtl8723au_read8(Adapter, REG_RSV_CTRL + 1); + rtl8723au_write8(Adapter, REG_RSV_CTRL+1, u1bTmp | BIT(0)); /* 7. RSV_CTRL 0x1C[7:0] = 0x0E lock ISO/CLK/Power control register */ - rtw_write8(Adapter, REG_RSV_CTRL, 0x0e); + rtl8723au_write8(Adapter, REG_RSV_CTRL, 0x0e); } -static u32 rtl8723au_hal_deinit(struct rtw_adapter *padapter) +static int rtl8723au_hal_deinit(struct rtw_adapter *padapter) { DBG_8723A("==> %s\n", __func__); @@ -1223,67 +1188,57 @@ static u32 rtl8723au_hal_deinit(struct rtw_adapter *padapter) return _SUCCESS; } -static unsigned int rtl8723au_inirp_init(struct rtw_adapter *Adapter) +int rtl8723au_inirp_init(struct rtw_adapter *Adapter) { u8 i; struct recv_buf *precvbuf; - uint status; - struct intf_hdl *pintfhdl = &Adapter->iopriv.intf; + int status; struct recv_priv *precvpriv = &Adapter->recvpriv; - u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, - struct recv_buf *rbuf); - u32 (*_read_interrupt)(struct intf_hdl *pintfhdl, u32 addr); - struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - - _read_port = pintfhdl->io_ops._read_port; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); status = _SUCCESS; RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("===> usb_inirp_init\n")); - precvpriv->ff_hwaddr = RECV_BULK_IN_ADDR; - /* issue Rx irp to receive data */ precvbuf = (struct recv_buf *)precvpriv->precv_buf; for (i = 0; i < NR_RECVBUFF; i++) { - if (_read_port(pintfhdl, precvpriv->ff_hwaddr, 0, precvbuf) == - false) { + if (rtl8723au_read_port(Adapter, RECV_BULK_IN_ADDR, 0, + precvbuf) == _FAIL) { RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("usb_rx_init: usb_read_port error\n")); status = _FAIL; goto exit; } precvbuf++; - precvpriv->free_recv_buf_queue_cnt--; } - _read_interrupt = pintfhdl->io_ops._read_interrupt; - if (_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == false) { + if (rtl8723au_read_interrupt(Adapter, RECV_INT_IN_ADDR) == _FAIL) { RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("usb_rx_init: usb_read_interrupt error\n")); status = _FAIL; } - pHalData->IntrMask[0] = rtw_read32(Adapter, REG_USB_HIMR); + pHalData->IntrMask[0] = rtl8723au_read32(Adapter, REG_USB_HIMR); MSG_8723A("pHalData->IntrMask = 0x%04x\n", pHalData->IntrMask[0]); pHalData->IntrMask[0] |= UHIMR_C2HCMD|UHIMR_CPWM; - rtw_write32(Adapter, REG_USB_HIMR, pHalData->IntrMask[0]); + rtl8723au_write32(Adapter, REG_USB_HIMR, pHalData->IntrMask[0]); exit: RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("<=== usb_inirp_init\n")); return status; } -static unsigned int rtl8723au_inirp_deinit(struct rtw_adapter *Adapter) +int rtl8723au_inirp_deinit(struct rtw_adapter *Adapter) { struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("\n ===> usb_rx_deinit\n")); - rtw_read_port_cancel(Adapter); - pHalData->IntrMask[0] = rtw_read32(Adapter, REG_USB_HIMR); + rtl8723au_read_port_cancel(Adapter); + pHalData->IntrMask[0] = rtl8723au_read32(Adapter, REG_USB_HIMR); MSG_8723A("%s pHalData->IntrMask = 0x%04x\n", __func__, pHalData->IntrMask[0]); pHalData->IntrMask[0] = 0x0; - rtw_write32(Adapter, REG_USB_HIMR, pHalData->IntrMask[0]); + rtl8723au_write32(Adapter, REG_USB_HIMR, pHalData->IntrMask[0]); RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("\n <=== usb_rx_deinit\n")); return _SUCCESS; @@ -1420,7 +1375,7 @@ static void _ReadPROMContent(struct rtw_adapter *Adapter) struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(Adapter); u8 eeValue; - eeValue = rtw_read8(Adapter, REG_9346CR); + eeValue = rtl8723au_read8(Adapter, REG_9346CR); /* To check system boot selection. */ pEEPROM->EepromOrEfuse = (eeValue & BOOT_FROM_EEPROM) ? true : false; pEEPROM->bautoload_fail_flag = (eeValue & EEPROM_EN) ? false : true; @@ -1459,16 +1414,18 @@ static void hal_EfuseCellSel(struct rtw_adapter *Adapter) { u32 value32; - value32 = rtw_read32(Adapter, EFUSE_TEST); + value32 = rtl8723au_read32(Adapter, EFUSE_TEST); value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0); - rtw_write32(Adapter, EFUSE_TEST, value32); + rtl8723au_write32(Adapter, EFUSE_TEST, value32); } -static int _ReadAdapterInfo8723AU(struct rtw_adapter *Adapter) +void rtl8723a_read_adapter_info(struct rtw_adapter *Adapter) { - /* struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); */ unsigned long start = jiffies; + /* Read EEPROM size before call any EEPROM function */ + Adapter->EepromAddressSize = GetEEPROMSize8723A(Adapter); + MSG_8723A("====> _ReadAdapterInfo8723AU\n"); hal_EfuseCellSel(Adapter); @@ -1485,73 +1442,17 @@ static int _ReadAdapterInfo8723AU(struct rtw_adapter *Adapter) MSG_8723A("<==== _ReadAdapterInfo8723AU in %d ms\n", jiffies_to_msecs(jiffies - start)); - - return _SUCCESS; -} - -static void ReadAdapterInfo8723AU(struct rtw_adapter *Adapter) -{ - /* Read EEPROM size before call any EEPROM function */ - Adapter->EepromAddressSize = GetEEPROMSize8723A(Adapter); - - _ReadAdapterInfo8723AU(Adapter); -} - -#define GPIO_DEBUG_PORT_NUM 0 -static void rtl8723au_trigger_gpio_0(struct rtw_adapter *padapter) -{ - u32 gpioctrl; - DBG_8723A("==> trigger_gpio_0...\n"); - rtw_write16_async(padapter, REG_GPIO_PIN_CTRL, 0); - rtw_write8_async(padapter, REG_GPIO_PIN_CTRL+2, 0xFF); - gpioctrl = (BIT(GPIO_DEBUG_PORT_NUM) << 24)| - (BIT(GPIO_DEBUG_PORT_NUM) << 16); - rtw_write32_async(padapter, REG_GPIO_PIN_CTRL, gpioctrl); - gpioctrl |= (BIT(GPIO_DEBUG_PORT_NUM)<<8); - rtw_write32_async(padapter, REG_GPIO_PIN_CTRL, gpioctrl); - DBG_8723A("<=== trigger_gpio_0...\n"); -} - -/* - * If variable not handled here, - * some variables will be processed in SetHwReg8723A() - */ -static void SetHwReg8723AU(struct rtw_adapter *Adapter, u8 variable, u8 *val) -{ - switch (variable) { - case HW_VAR_RXDMA_AGG_PG_TH: - break; - case HW_VAR_SET_RPWM: - rtl8723a_set_rpwm(Adapter, *val); - break; - case HW_VAR_TRIGGER_GPIO_0: - rtl8723au_trigger_gpio_0(Adapter); - break; - default: - SetHwReg8723A(Adapter, variable, val); - break; - } - -} - -/* - * If variable not handled here, - * some variables will be processed in GetHwReg8723A() - */ -static void GetHwReg8723AU(struct rtw_adapter *Adapter, u8 variable, u8 *val) -{ - GetHwReg8723A(Adapter, variable, val); } /* */ /* Description: */ /* Query setting of specified variable. */ /* */ -static u8 GetHalDefVar8192CUsb(struct rtw_adapter *Adapter, - enum hal_def_variable eVariable, void *pValue) +int GetHalDefVar8192CUsb(struct rtw_adapter *Adapter, + enum hal_def_variable eVariable, void *pValue) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - u8 bResult = _SUCCESS; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); + int bResult = _SUCCESS; switch (eVariable) { case HAL_DEF_UNDERCORATEDSMOOTHEDPWDB: @@ -1596,79 +1497,8 @@ static u8 GetHalDefVar8192CUsb(struct rtw_adapter *Adapter, return bResult; } -/* Change default setting of specified variable. */ -static u8 SetHalDefVar8192CUsb(struct rtw_adapter *Adapter, - enum hal_def_variable eVariable, void *pValue) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); - u8 bResult = _SUCCESS; - - switch (eVariable) { - case HAL_DEF_DBG_DUMP_RXPKT: - pHalData->bDumpRxPkt = *((u8 *)pValue); - break; - case HAL_DEF_DBG_DM_FUNC: - { - u8 dm_func = *((u8 *)pValue); - struct dm_priv *pdmpriv = &pHalData->dmpriv; - struct dm_odm_t *podmpriv = &pHalData->odmpriv; - - if (dm_func == 0) { /* disable all dynamic func */ - podmpriv->SupportAbility = DYNAMIC_FUNC_DISABLE; - DBG_8723A("==> Disable all dynamic function...\n"); - } else if (dm_func == 1) {/* disable DIG */ - podmpriv->SupportAbility &= (~DYNAMIC_BB_DIG); - DBG_8723A("==> Disable DIG...\n"); - } else if (dm_func == 2) {/* disable High power */ - podmpriv->SupportAbility &= (~DYNAMIC_BB_DYNAMIC_TXPWR); - } else if (dm_func == 3) {/* disable tx power tracking */ - podmpriv->SupportAbility &= (~DYNAMIC_RF_CALIBRATION); - DBG_8723A("==> Disable tx power tracking...\n"); - } else if (dm_func == 4) {/* disable BT coexistence */ - pdmpriv->DMFlag &= (~DYNAMIC_FUNC_BT); - } else if (dm_func == 5) {/* disable antenna diversity */ - podmpriv->SupportAbility &= (~DYNAMIC_BB_ANT_DIV); - } else if (dm_func == 6) {/* turn on all dynamic func */ - if (!(podmpriv->SupportAbility & DYNAMIC_BB_DIG)) { - struct dig_t *pDigTable = - &podmpriv->DM_DigTable; - pDigTable->CurIGValue = rtw_read8(Adapter, 0xc50); - } - pdmpriv->DMFlag |= DYNAMIC_FUNC_BT; - podmpriv->SupportAbility = DYNAMIC_ALL_FUNC_ENABLE; - DBG_8723A("==> Turn on all dynamic function...\n"); - } - } - break; - case HW_DEF_FA_CNT_DUMP: - { - u8 bRSSIDump = *((u8 *)pValue); - struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; - if (bRSSIDump) - pDM_Odm->DebugComponents = ODM_COMP_DIG|ODM_COMP_FA_CNT; - else - pDM_Odm->DebugComponents = 0; - } - break; - case HW_DEF_ODM_DBG_FLAG: - { - u64 DebugComponents = *((u64 *)pValue); - struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; - pDM_Odm->DebugComponents = DebugComponents; - } - break; - default: - /* RT_TRACE(COMP_INIT, DBG_TRACE, ("SetHalDefVar819xUsb(): " - "Unkown variable: %d!\n", eVariable)); */ - bResult = _FAIL; - break; - } - - return bResult; -} - -static void UpdateHalRAMask8192CUsb(struct rtw_adapter *padapter, - u32 mac_id, u8 rssi_level) +void rtl8723a_update_ramask(struct rtw_adapter *padapter, + u32 mac_id, u8 rssi_level) { u8 init_rate = 0; u8 networkType, raid; @@ -1741,10 +1571,9 @@ static void UpdateHalRAMask8192CUsb(struct rtw_adapter *padapter, rate_bitmap = 0x0fffffff; rate_bitmap = ODM_Get_Rate_Bitmap23a(&pHalData->odmpriv, mac_id, mask, rssi_level); - printk(KERN_DEBUG "%s => mac_id:%d, networkType:0x%02x, " - "mask:0x%08x\n\t ==> rssi_level:%d, rate_bitmap:0x%08x\n", - __func__, - mac_id, networkType, mask, rssi_level, rate_bitmap); + DBG_8723A("%s => mac_id:%d, networkType:0x%02x, " + "mask:0x%08x\n\t ==> rssi_level:%d, rate_bitmap:0x%08x\n", + __func__, mac_id, networkType, mask, rssi_level, rate_bitmap); mask &= rate_bitmap; mask |= ((raid<<28)&0xf0000000); @@ -1770,7 +1599,8 @@ static void UpdateHalRAMask8192CUsb(struct rtw_adapter *padapter, if (shortGIrate == true) 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); } /* set ra_id */ @@ -1781,54 +1611,39 @@ static void UpdateHalRAMask8192CUsb(struct rtw_adapter *padapter, pdmpriv->INIDATA_RATE[mac_id] = init_rate; } -static void rtl8723au_init_default_value(struct rtw_adapter *padapter) +int rtw_hal_init23a(struct rtw_adapter *padapter) { - rtl8723a_init_default_value(padapter); -} + int status; -static u8 rtl8192cu_ps_func(struct rtw_adapter *Adapter, - enum hal_intf_ps_func efunc_id, u8 *val) -{ - return true; + padapter->hw_init_completed = false; + + status = rtl8723au_hal_init(padapter); + + if (status == _SUCCESS) { + padapter->hw_init_completed = true; + + if (padapter->registrypriv.notch_filter == 1) + rtl8723a_notch_filter(padapter, 1); + } else { + padapter->hw_init_completed = false; + DBG_8723A("rtw_hal_init23a: hal__init fail\n"); + } + + RT_TRACE(_module_hal_init_c_, _drv_err_, + ("-rtl871x_hal_init:status = 0x%x\n", status)); + + return status; } -int rtl8723au_set_hal_ops(struct rtw_adapter *padapter) +int rtw_hal_deinit23a(struct rtw_adapter *padapter) { - struct hal_ops *pHalFunc = &padapter->HalFunc; + int status; - padapter->HalData = kzalloc(sizeof(struct hal_data_8723a), GFP_KERNEL); - if (!padapter->HalData) { - DBG_8723A("cannot alloc memory for HAL DATA\n"); - return -ENOMEM; - } - padapter->hal_data_sz = sizeof(struct hal_data_8723a); - - pHalFunc->hal_init = &rtl8723au_hal_init; - pHalFunc->hal_deinit = &rtl8723au_hal_deinit; - - pHalFunc->inirp_init = &rtl8723au_inirp_init; - pHalFunc->inirp_deinit = &rtl8723au_inirp_deinit; - - pHalFunc->init_xmit_priv = &rtl8723au_init_xmit_priv; - pHalFunc->free_xmit_priv = &rtl8723au_free_xmit_priv; - - pHalFunc->init_recv_priv = &rtl8723au_init_recv_priv; - pHalFunc->free_recv_priv = &rtl8723au_free_recv_priv; - pHalFunc->InitSwLeds = NULL; - pHalFunc->DeInitSwLeds = NULL; - - pHalFunc->init_default_value = &rtl8723au_init_default_value; - pHalFunc->intf_chip_configure = &rtl8723au_interface_configure; - pHalFunc->read_adapter_info = &ReadAdapterInfo8723AU; - pHalFunc->SetHwRegHandler = &SetHwReg8723AU; - pHalFunc->GetHwRegHandler = &GetHwReg8723AU; - pHalFunc->GetHalDefVarHandler = &GetHalDefVar8192CUsb; - pHalFunc->SetHalDefVarHandler = &SetHalDefVar8192CUsb; - pHalFunc->UpdateRAMaskHandler = &UpdateHalRAMask8192CUsb; - pHalFunc->hal_xmit = &rtl8723au_hal_xmit; - pHalFunc->mgnt_xmit = &rtl8723au_mgnt_xmit; - pHalFunc->hal_xmitframe_enqueue = &rtl8723au_hal_xmitframe_enqueue; - pHalFunc->interface_ps_func = &rtl8192cu_ps_func; - rtl8723a_set_hal_ops(pHalFunc); - return 0; + status = rtl8723au_hal_deinit(padapter); + + if (status == _SUCCESS) + padapter->hw_init_completed = false; + else + DBG_8723A("\n rtw_hal_deinit23a: hal_init fail\n"); + return status; } diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c index 0311cdf77ff1..8e9e61c74bd0 100644 --- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c +++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c @@ -22,9 +22,10 @@ #include <rtl8723a_hal.h> #include <rtl8723a_recv.h> -static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u16 index, void *pdata, u16 len, u8 requesttype) +static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, + u16 value, u16 index, void *pdata, u16 len, + u8 requesttype) { - struct rtw_adapter *padapter = pintfhdl->padapter ; struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); struct usb_device *udev = pdvobjpriv->pusbdev; @@ -34,15 +35,17 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u u8 *pIo_buf; int vendorreq_times = 0; - if ((padapter->bSurpriseRemoved) || (padapter->pwrctrlpriv.pnp_bstop_trx)) { + if (padapter->bSurpriseRemoved || padapter->pwrctrlpriv.pnp_bstop_trx) { RT_TRACE(_module_hci_ops_os_c_, _drv_err_, - ("usbctrl_vendorreq:(padapter->bSurpriseRemoved||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + ("usbctrl_vendorreq:(padapter->bSurpriseRemoved||" + "adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); status = -EPERM; goto exit; } if (len > MAX_VENDOR_REQ_CMD_SIZE) { - DBG_8723A("[%s] Buffer len error , vendor request failed\n", __FUNCTION__); + DBG_8723A("[%s] Buffer len error , vendor request failed\n", + __func__); status = -EINVAL; goto exit; } @@ -53,7 +56,7 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u pIo_buf = pdvobjpriv->usb_vendor_req_buf; if (pIo_buf == NULL) { - DBG_8723A("[%s] pIo_buf == NULL \n", __FUNCTION__); + DBG_8723A("[%s] pIo_buf == NULL \n", __func__); status = -ENOMEM; goto release_mutex; } @@ -70,9 +73,9 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u memcpy(pIo_buf, pdata, len); } - status = rtw_usb_control_msg(udev, pipe, request, reqtype, - value, index, pIo_buf, len, - RTW_USB_CONTROL_MSG_TIMEOUT); + status = usb_control_msg(udev, pipe, request, reqtype, + value, index, pIo_buf, len, + RTW_USB_CONTROL_MSG_TIMEOUT); if (status == len) { /* Success this control transfer. */ rtw_reset_continual_urb_error(pdvobjpriv); @@ -85,21 +88,26 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u } else { /* error cases */ DBG_8723A("reg 0x%x, usb %s %u fail, status:%d value =" " 0x%x, vendorreq_times:%d\n", - value, (requesttype == 0x01) ? "read" : "write", + value, (requesttype == 0x01) ? + "read" : "write", len, status, *(u32 *)pdata, vendorreq_times); if (status < 0) { - if (status == (-ESHUTDOWN) || status == -ENODEV) { + if (status == -ESHUTDOWN || status == -ENODEV) padapter->bSurpriseRemoved = true; - } else { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - pHalData->srestpriv.Wifi_Error_Status = USB_VEN_REQ_CMD_FAIL; + else { + struct hal_data_8723a *pHalData; + pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.Wifi_Error_Status = + USB_VEN_REQ_CMD_FAIL; } } else { /* status != len && status >= 0 */ if (status > 0) { if (requesttype == 0x01) { - /* For Control read transfer, we have to copy - * the read data from pIo_buf to pdata. + /* + * For Control read transfer, + * we have to copy the read + * data from pIo_buf to pdata. */ memcpy(pdata, pIo_buf, len); } @@ -110,11 +118,11 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u padapter->bSurpriseRemoved = true; break; } - } /* firmware download is checksumed, don't retry */ - if ((value >= FW_8723A_START_ADDRESS && value <= FW_8723A_END_ADDRESS) || status == len) + if ((value >= FW_8723A_START_ADDRESS && + value <= FW_8723A_END_ADDRESS) || status == len) break; } @@ -124,7 +132,7 @@ exit: return status; } -static u8 usb_read8(struct intf_hdl *pintfhdl, u32 addr) +u8 rtl8723au_read8(struct rtw_adapter *padapter, u32 addr) { u8 request; u8 requesttype; @@ -140,19 +148,20 @@ static u8 usb_read8(struct intf_hdl *pintfhdl, u32 addr) wvalue = (u16)(addr&0x0000ffff); len = 1; - usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + usbctrl_vendorreq(padapter, request, wvalue, index, &data, + len, requesttype); return data; } -static u16 usb_read16(struct intf_hdl *pintfhdl, u32 addr) +u16 rtl8723au_read16(struct rtw_adapter *padapter, u32 addr) { u8 request; u8 requesttype; u16 wvalue; u16 index; u16 len; - u16 data = 0; + __le16 data; request = 0x05; requesttype = 0x01;/* read_in */ @@ -161,19 +170,20 @@ static u16 usb_read16(struct intf_hdl *pintfhdl, u32 addr) wvalue = (u16)(addr&0x0000ffff); len = 2; - usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + usbctrl_vendorreq(padapter, request, wvalue, index, &data, + len, requesttype); - return data; + return le16_to_cpu(data); } -static u32 usb_read32(struct intf_hdl *pintfhdl, u32 addr) +u32 rtl8723au_read32(struct rtw_adapter *padapter, u32 addr) { u8 request; u8 requesttype; u16 wvalue; u16 index; u16 len; - u32 data = 0; + __le32 data; request = 0x05; requesttype = 0x01;/* read_in */ @@ -182,12 +192,13 @@ static u32 usb_read32(struct intf_hdl *pintfhdl, u32 addr) wvalue = (u16)(addr&0x0000ffff); len = 4; - usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + usbctrl_vendorreq(padapter, request, wvalue, index, &data, + len, requesttype); - return data; + return le32_to_cpu(data); } -static int usb_write8(struct intf_hdl *pintfhdl, u32 addr, u8 val) +int rtl8723au_write8(struct rtw_adapter *padapter, u32 addr, u8 val) { u8 request; u8 requesttype; @@ -206,19 +217,20 @@ static int usb_write8(struct intf_hdl *pintfhdl, u32 addr, u8 val) data = val; - ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data, + len, requesttype); return ret; } -static int usb_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val) +int rtl8723au_write16(struct rtw_adapter *padapter, u32 addr, u16 val) { u8 request; u8 requesttype; u16 wvalue; u16 index; u16 len; - u16 data; + __le16 data; int ret; request = 0x05; @@ -228,20 +240,21 @@ static int usb_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val) wvalue = (u16)(addr&0x0000ffff); len = 2; - data = val; + data = cpu_to_le16(val); - ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data, + len, requesttype); return ret; } -static int usb_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val) +int rtl8723au_write32(struct rtw_adapter *padapter, u32 addr, u32 val) { u8 request; u8 requesttype; u16 wvalue; u16 index; u16 len; - u32 data; + __le32 data; int ret; request = 0x05; @@ -250,14 +263,16 @@ static int usb_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val) wvalue = (u16)(addr&0x0000ffff); len = 4; - data = val; + data = cpu_to_le32(val); - ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data, + len, requesttype); return ret; } -static int usb_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 length, u8 *pdata) +int rtl8723au_writeN(struct rtw_adapter *padapter, + u32 addr, u32 length, u8 *pdata) { u8 request; u8 requesttype; @@ -273,9 +288,10 @@ static int usb_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 length, u8 *pdata wvalue = (u16)(addr&0x0000ffff); len = length; - memcpy(buf, pdata, len); + memcpy(buf, pdata, len); - ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, buf, len, requesttype); + ret = usbctrl_vendorreq(padapter, request, wvalue, index, buf, + len, requesttype); return ret; } @@ -323,11 +339,11 @@ InterruptRecognized8723AU(struct rtw_adapter *Adapter, void *pContent, memcpy(&report.state, &buffer[USB_INTR_CPWM_OFFSET], 1); - return ((pHalData->IntArray[0])&pHalData->IntrMask[0]) != 0 || - ((pHalData->IntArray[1])&pHalData->IntrMask[1]) != 0; + return (pHalData->IntArray[0] & pHalData->IntrMask[0]) != 0 || + (pHalData->IntArray[1] & pHalData->IntrMask[1]) != 0; } -static void usb_read_interrupt_complete(struct urb *purb, struct pt_regs *regs) +static void usb_read_interrupt_complete(struct urb *purb) { int err; struct rtw_adapter *padapter = (struct rtw_adapter *)purb->context; @@ -336,7 +352,7 @@ static void usb_read_interrupt_complete(struct urb *purb, struct pt_regs *regs) padapter->bReadPortCancel) { DBG_8723A("%s() RX Warning! bDriverStopped(%d) OR " "bSurpriseRemoved(%d) bReadPortCancel(%d)\n", - __FUNCTION__, padapter->bDriverStopped, + __func__, padapter->bDriverStopped, padapter->bSurpriseRemoved, padapter->bReadPortCancel); return; @@ -359,30 +375,37 @@ static void usb_read_interrupt_complete(struct urb *purb, struct pt_regs *regs) if (c2h_evt_exist(c2h_evt)) { if (c2h_id_filter_ccx_8723a(c2h_evt->id)) { /* Handle CCX report here */ - handle_txrpt_ccx_8723a(padapter, (void *)(c2h_evt->payload)); - /* Replace with special pointer to - trigger c2h_evt_clear23a */ - if (rtw_cbuf_push23a(padapter->evtpriv.c2h_queue, - (void *)&padapter->evtpriv) != - _SUCCESS) - DBG_8723A("%s rtw_cbuf_push23a fail\n", - __func__); - schedule_work(&padapter->evtpriv.c2h_wk); - } else if ((c2h_evt = (struct c2h_evt_hdr *) - kmalloc(16, GFP_ATOMIC))) { - memcpy(c2h_evt, purb->transfer_buffer, 16); - if (rtw_cbuf_push23a(padapter->evtpriv.c2h_queue, - (void *)c2h_evt) != _SUCCESS) - DBG_8723A("%s rtw_cbuf_push23a fail\n", - __func__); - schedule_work(&padapter->evtpriv.c2h_wk); + handle_txrpt_ccx_8723a(padapter, (void *) + c2h_evt->payload); + schedule_work(&padapter->evtpriv.irq_wk); } else { - /* Error handling for malloc fail */ - if (rtw_cbuf_push23a(padapter->evtpriv.c2h_queue, - (void *)NULL) != _SUCCESS) - DBG_8723A("%s rtw_cbuf_push23a fail\n", - __func__); - schedule_work(&padapter->evtpriv.c2h_wk); + struct evt_work *c2w; + int res; + + c2w = kmalloc(sizeof(struct evt_work), + GFP_ATOMIC); + + if (!c2w) { + printk(KERN_WARNING "%s: unable to " + "allocate work buffer\n", + __func__); + goto urb_submit; + } + + c2w->adapter = padapter; + INIT_WORK(&c2w->work, rtw_evt_work); + memcpy(c2w->u.buf, purb->transfer_buffer, 16); + + res = queue_work(padapter->evtpriv.wq, + &c2w->work); + + if (!res) { + printk(KERN_ERR "%s: Call to " + "queue_work() failed\n", + __func__); + kfree(c2w); + goto urb_submit; + } } } @@ -415,7 +438,7 @@ urb_submit: case -EPROTO: break; case -EINPROGRESS: - DBG_8723A("ERROR: URB IS IN PROGRESS!/n"); + DBG_8723A("ERROR: URB IS IN PROGRESS!\n"); break; default: break; @@ -423,18 +446,17 @@ urb_submit: } } -static u32 usb_read_interrupt(struct intf_hdl *pintfhdl, u32 addr) +int rtl8723au_read_interrupt(struct rtw_adapter *adapter, u32 addr) { int err; unsigned int pipe; - u32 ret = _SUCCESS; - struct rtw_adapter *adapter = pintfhdl->padapter; + int ret = _SUCCESS; struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter); struct recv_priv *precvpriv = &adapter->recvpriv; struct usb_device *pusbd = pdvobj->pusbdev; /* translate DMA FIFO addr to pipehandle */ - pipe = ffaddr2pipehdl23a(pdvobj, addr); + pipe = usb_rcvintpipe(pusbd, pdvobj->RtInPipe[1]); usb_fill_int_urb(precvpriv->int_in_urb, pusbd, pipe, precvpriv->int_in_buf, USB_INTR_CONTENT_LENGTH, @@ -457,16 +479,16 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) u8 shift_sz = 0; u16 pkt_cnt; u32 pkt_offset, skb_len, alloc_sz; - s32 transfer_len; - struct recv_stat *prxstat; - struct phy_stat *pphy_info = NULL; - struct sk_buff *pkt_copy = NULL; - struct recv_frame *precvframe = NULL; - struct rx_pkt_attrib *pattrib = NULL; - struct recv_priv *precvpriv = &padapter->recvpriv; - struct rtw_queue *pfree_recv_queue = &precvpriv->free_recv_queue; - - transfer_len = (s32)pskb->len; + int transfer_len; + struct recv_stat *prxstat; + struct phy_stat *pphy_info; + struct sk_buff *pkt_copy; + struct recv_frame *precvframe; + struct rx_pkt_attrib *pattrib; + struct recv_priv *precvpriv = &padapter->recvpriv; + struct rtw_queue *pfree_recv_queue = &precvpriv->free_recv_queue; + + transfer_len = (int)pskb->len; pbuf = pskb->data; prxstat = (struct recv_stat *)pbuf; @@ -485,7 +507,7 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("recvbuf2recvframe: precvframe == NULL\n")); DBG_8723A("%s()-%d: rtw_alloc_recvframe23a() failed! RX " - "Drop!\n", __FUNCTION__, __LINE__); + "Drop!\n", __func__, __LINE__); goto _exit_recvbuf2recvframe; } @@ -497,31 +519,30 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) if (pattrib->crc_err) { DBG_8723A("%s()-%d: RX Warning! rx CRC ERROR !!\n", - __FUNCTION__, __LINE__); - rtw_free_recvframe23a(precvframe, pfree_recv_queue); + __func__, __LINE__); + rtw_free_recvframe23a(precvframe); goto _exit_recvbuf2recvframe; } pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->shift_sz + pattrib->pkt_len; - if ((pattrib->pkt_len <= 0) || (pkt_offset > transfer_len)) { + if (pattrib->pkt_len <= 0 || pkt_offset > transfer_len) { RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("recvbuf2recvframe: pkt_len<= 0\n")); DBG_8723A("%s()-%d: RX Warning!\n", - __FUNCTION__, __LINE__); - rtw_free_recvframe23a(precvframe, pfree_recv_queue); + __func__, __LINE__); + rtw_free_recvframe23a(precvframe); goto _exit_recvbuf2recvframe; } /* Modified by Albert 20101213 */ /* For 8 bytes IP header alignment. */ /* Qos data, wireless lan header length is 26 */ - if (pattrib->qos) { + if (pattrib->qos) shift_sz = 6; - } else { + else shift_sz = 0; - } skb_len = pattrib->pkt_len; @@ -529,7 +550,7 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) * 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. * modify alloc_sz for recvive crc error packet * by thomas 2011-06-02 */ - if ((pattrib->mfrag == 1) && (pattrib->frag_num == 0)) { + if (pattrib->mfrag == 1 && pattrib->frag_num == 0) { /* alloc_sz = 1664; 1664 is 128 alignment. */ if (skb_len <= 1650) alloc_sz = 1664; @@ -546,17 +567,20 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) if (pkt_copy) { pkt_copy->dev = padapter->pnetdev; precvframe->pkt = pkt_copy; - skb_reserve(pkt_copy, 8 - ((unsigned long)(pkt_copy->data) & 7));/* force pkt_copy->data at 8-byte alignment address */ - /*force ip_hdr at 8-byte alignment address according to shift_sz. */ + /* force pkt_copy->data at 8-byte alignment address */ + skb_reserve(pkt_copy, 8 - + ((unsigned long)(pkt_copy->data) & 7)); + /*force ip_hdr at 8-byte alignment address + according to shift_sz. */ skb_reserve(pkt_copy, shift_sz); - memcpy(pkt_copy->data, (pbuf + pattrib->shift_sz + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len); + memcpy(pkt_copy->data, pbuf + pattrib->shift_sz + + pattrib->drvinfo_sz + RXDESC_SIZE, skb_len); skb_put(pkt_copy, skb_len); } else { - if ((pattrib->mfrag == 1) && (pattrib->frag_num == 0)) { + if (pattrib->mfrag == 1 && pattrib->frag_num == 0) { DBG_8723A("recvbuf2recvframe: alloc_skb fail, " "drop frag frame \n"); - rtw_free_recvframe23a(precvframe, - pfree_recv_queue); + rtw_free_recvframe23a(precvframe); goto _exit_recvbuf2recvframe; } @@ -564,8 +588,7 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) if (!precvframe->pkt) { DBG_8723A("recvbuf2recvframe: skb_clone " "fail\n"); - rtw_free_recvframe23a(precvframe, - pfree_recv_queue); + rtw_free_recvframe23a(precvframe); goto _exit_recvbuf2recvframe; } } @@ -589,7 +612,7 @@ static int recvbuf2recvframe(struct rtw_adapter *padapter, struct sk_buff *pskb) if (transfer_len > 0 && pkt_cnt == 0) pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff; - } while ((transfer_len > 0) && (pkt_cnt > 0)); + } while (transfer_len > 0 && pkt_cnt > 0); _exit_recvbuf2recvframe: @@ -603,8 +626,7 @@ void rtl8723au_recv_tasklet(void *priv) struct recv_priv *precvpriv = &padapter->recvpriv; while (NULL != (pskb = skb_dequeue(&precvpriv->rx_skb_queue))) { - if ((padapter->bDriverStopped) || - (padapter->bSurpriseRemoved)) { + if (padapter->bDriverStopped || padapter->bSurpriseRemoved) { DBG_8723A("recv_tasklet => bDriverStopped or " "bSurpriseRemoved \n"); dev_kfree_skb_any(pskb); @@ -620,7 +642,7 @@ void rtl8723au_recv_tasklet(void *priv) } } -static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) +static void usb_read_port_complete(struct urb *purb) { struct recv_buf *precvbuf = (struct recv_buf *)purb->context; struct rtw_adapter *padapter = (struct rtw_adapter *)precvbuf->adapter; @@ -641,22 +663,22 @@ static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) DBG_8723A("%s()-%d: RX Warning! bDriverStopped(%d) OR " "bSurpriseRemoved(%d) bReadPortCancel(%d)\n", - __FUNCTION__, __LINE__, padapter->bDriverStopped, + __func__, __LINE__, padapter->bDriverStopped, padapter->bSurpriseRemoved, padapter->bReadPortCancel); return; } if (purb->status == 0) { - if ((purb->actual_length > MAX_RECVBUF_SZ) || - (purb->actual_length < RXDESC_SIZE)) { + if (purb->actual_length > MAX_RECVBUF_SZ || + purb->actual_length < RXDESC_SIZE) { RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("usb_read_port_complete: (purb->actual_" "length > MAX_RECVBUF_SZ) || (purb->actual_" "length < RXDESC_SIZE)\n")); - rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, - precvbuf); + rtl8723au_read_port(padapter, RECV_BULK_IN_ADDR, 0, + precvbuf); DBG_8723A("%s()-%d: RX Warning!\n", - __FUNCTION__, __LINE__); + __func__, __LINE__); } else { rtw_reset_continual_urb_error( adapter_to_dvobj(padapter)); @@ -669,8 +691,8 @@ static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) tasklet_schedule(&precvpriv->recv_tasklet); precvbuf->pskb = NULL; - rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, - precvbuf); + rtl8723au_read_port(padapter, RECV_BULK_IN_ADDR, 0, + precvbuf); } } else { RT_TRACE(_module_hci_ops_os_c_, _drv_err_, @@ -707,32 +729,30 @@ static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) pHalData = GET_HAL_DATA(padapter); pHalData->srestpriv.Wifi_Error_Status = USB_READ_PORT_FAIL; - rtw_read_port(padapter, precvpriv->ff_hwaddr, - 0, precvbuf); + rtl8723au_read_port(padapter, RECV_BULK_IN_ADDR, 0, + precvbuf); break; case -EINPROGRESS: - DBG_8723A("ERROR: URB IS IN PROGRESS!/n"); + DBG_8723A("ERROR: URB IS IN PROGRESS!\n"); break; default: break; } - } } -static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, - struct recv_buf *precvbuf) +int rtl8723au_read_port(struct rtw_adapter *adapter, u32 addr, u32 cnt, + struct recv_buf *precvbuf) { int err; unsigned int pipe; - unsigned long tmpaddr = 0; - unsigned long alignment = 0; - u32 ret = _SUCCESS; - struct urb *purb = NULL; - struct rtw_adapter *adapter = pintfhdl->padapter; - struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter); - struct recv_priv *precvpriv = &adapter->recvpriv; - struct usb_device *pusbd = pdvobj->pusbdev; + unsigned long tmpaddr; + unsigned long alignment; + int ret = _SUCCESS; + struct urb *purb; + struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter); + struct recv_priv *precvpriv = &adapter->recvpriv; + struct usb_device *pusbd = pdvobj->pusbdev; if (adapter->bDriverStopped || adapter->bSurpriseRemoved || adapter->pwrctrlpriv.pnp_bstop_trx) { @@ -752,8 +772,6 @@ static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, if (!precvbuf->pskb) precvbuf->pskb = skb_dequeue(&precvpriv->free_recv_skb_queue); - rtl8723au_init_recvbuf(adapter, precvbuf); - /* re-assign for linux based on skb */ if (!precvbuf->pskb) { precvbuf->pskb = netdev_alloc_skb(adapter->pnetdev, MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ); @@ -772,7 +790,7 @@ static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, purb = precvbuf->purb; /* translate DMA FIFO addr to pipehandle */ - pipe = ffaddr2pipehdl23a(pdvobj, addr); + pipe = usb_rcvbulkpipe(pusbd, pdvobj->RtInPipe[0]); usb_fill_bulk_urb(purb, pusbd, pipe, precvbuf->pskb->data, MAX_RECVBUF_SZ, usb_read_port_complete, @@ -792,7 +810,7 @@ static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void rtl8723au_xmit_tasklet(void *priv) { - int ret = false; + int ret; struct rtw_adapter *padapter = (struct rtw_adapter *)priv; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; @@ -800,9 +818,8 @@ void rtl8723au_xmit_tasklet(void *priv) return; while (1) { - if ((padapter->bDriverStopped) || - (padapter->bSurpriseRemoved) || - (padapter->bWritePortCancel)) { + if (padapter->bDriverStopped || padapter->bSurpriseRemoved || + padapter->bWritePortCancel) { DBG_8723A("xmit_tasklet => bDriverStopped or " "bSurpriseRemoved or bWritePortCancel\n"); break; @@ -815,31 +832,6 @@ void rtl8723au_xmit_tasklet(void *priv) } } -void rtl8723au_set_intf_ops(struct _io_ops *pops) -{ - - memset((u8 *)pops, 0, sizeof(struct _io_ops)); - - pops->_read8 = &usb_read8; - pops->_read16 = &usb_read16; - pops->_read32 = &usb_read32; - pops->_read_mem = &usb_read_mem23a; - pops->_read_port = &usb_read_port; - - pops->_write8 = &usb_write8; - pops->_write16 = &usb_write16; - pops->_write32 = &usb_write32; - pops->_writeN = &usb_writeN; - - pops->_write_mem = &usb_write_mem23a; - pops->_write_port = &usb_write_port23a; - - pops->_read_port_cancel = &usb_read_port_cancel23a; - pops->_write_port_cancel = &usb_write_port23a_cancel; - - pops->_read_interrupt = &usb_read_interrupt; -} - void rtl8723au_set_hw_type(struct rtw_adapter *padapter) { padapter->chip_type = RTL8723A; |