diff --git a/hal/hal_com.c b/hal/hal_com.c index decf35e..7ef3222 100644 --- a/hal/hal_com.c +++ b/hal/hal_com.c @@ -4330,6 +4330,28 @@ s32 rtw_hal_set_FwMediaStatusRpt_cmd(_adapter *adapter, bool opmode, bool miraca if (ret != _SUCCESS) goto exit; +#if defined(CONFIG_RTL8188E) + if (rtw_get_chip_type(adapter) == RTL8188E) { + HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); + + /* 8188E FW doesn't set macid no link, driver does it by self */ + if (opmode) + rtw_hal_set_hwreg(adapter, HW_VAR_MACID_LINK, &macid); + else + rtw_hal_set_hwreg(adapter, HW_VAR_MACID_NOLINK, &macid); + + /* for 8188E RA */ +#if (RATE_ADAPTIVE_SUPPORT == 1) + if (hal_data->fw_ractrl == _FALSE) { + u8 max_macid; + + max_macid = rtw_search_max_mac_id(adapter); + rtw_hal_set_hwreg(adapter, HW_VAR_TX_RPT_MAX_MACID, &max_macid); + } +#endif + } +#endif + #if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) /* TODO: this should move to IOT issue area */ if (rtw_get_chip_type(adapter) == RTL8812 @@ -4734,6 +4756,21 @@ static void rtw_hal_force_enable_rxdma(_adapter *adapter) rtw_write32(adapter, REG_RXPKT_NUM, (rtw_read32(adapter, REG_RXPKT_NUM) & (~RW_RELEASE_EN))); } +#if defined(CONFIG_RTL8188E) +static void rtw_hal_disable_tx_report(_adapter *adapter) +{ + rtw_write8(adapter, REG_TX_RPT_CTRL, + ((rtw_read8(adapter, REG_TX_RPT_CTRL) & ~BIT(1))) & ~BIT(5)); + RTW_INFO("disable TXRPT:0x%02x\n", rtw_read8(adapter, REG_TX_RPT_CTRL)); +} + +static void rtw_hal_enable_tx_report(_adapter *adapter) +{ + rtw_write8(adapter, REG_TX_RPT_CTRL, + ((rtw_read8(adapter, REG_TX_RPT_CTRL) | BIT(1))) | BIT(5)); + RTW_INFO("enable TX_RPT:0x%02x\n", rtw_read8(adapter, REG_TX_RPT_CTRL)); +} +#endif static void rtw_hal_release_rx_dma(_adapter *adapter) { u32 val32 = 0; @@ -5819,6 +5856,10 @@ static void rtw_hal_ap_wow_enable(_adapter *padapter) issue_beacon(padapter, 0); rtw_msleep_os(2); + #if defined(CONFIG_RTL8188E) + if (IS_HARDWARE_TYPE_8188E(padapter)) + rtw_hal_disable_tx_report(padapter); + #endif /* RX DMA stop */ res = rtw_hal_pause_rx_dma(padapter); if (res == _FAIL) @@ -5879,6 +5920,11 @@ static void rtw_hal_ap_wow_disable(_adapter *padapter) } #endif /*DBG_CHECK_FW_PS_STATE*/ + #if defined(CONFIG_RTL8188E) + if (IS_HARDWARE_TYPE_8188E(padapter)) + rtw_hal_enable_tx_report(padapter); + #endif + rtw_hal_force_enable_rxdma(padapter); rtw_hal_fw_dl(padapter, _FALSE); @@ -9558,6 +9604,10 @@ static void rtw_hal_wow_enable(_adapter *adapter) (u8 *)&media_status_rpt); /* RX DMA stop */ + #if defined(CONFIG_RTL8188E) + if (IS_HARDWARE_TYPE_8188E(adapter)) + rtw_hal_disable_tx_report(adapter); + #endif res = rtw_hal_pause_rx_dma(adapter); if (res == _FAIL) @@ -9746,6 +9796,11 @@ static void rtw_hal_wow_disable(_adapter *adapter) #endif rtw_hal_release_rx_dma(adapter); + #if defined(CONFIG_RTL8188E) + if (IS_HARDWARE_TYPE_8188E(adapter)) + rtw_hal_enable_tx_report(adapter); + #endif + if ((pwrctl->wowlan_wake_reason != RX_DISASSOC) && (pwrctl->wowlan_wake_reason != RX_DEAUTH) && (pwrctl->wowlan_wake_reason != FW_DECISION_DISCONNECT)) { @@ -12549,6 +12604,61 @@ int hal_efuse_macaddr_offset(_adapter *adapter) interface_type = rtw_get_intf_type(adapter); switch (rtw_get_chip_type(adapter)) { +#ifdef CONFIG_RTL8723B + case RTL8723B: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8723BU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8723BS; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8723BE; + break; +#endif +#ifdef CONFIG_RTL8703B + case RTL8703B: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8703BU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8703BS; + break; +#endif +#ifdef CONFIG_RTL8723D + case RTL8723D: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8723DU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8723DS; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8723DE; + break; +#endif + +#ifdef CONFIG_RTL8188E + case RTL8188E: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_88EU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_88ES; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_88EE; + break; +#endif +#ifdef CONFIG_RTL8188F + case RTL8188F: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8188FU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8188FS; + break; +#endif +#ifdef CONFIG_RTL8188GTV + case RTL8188GTV: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8188GTVU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8188GTVS; + break; +#endif #ifdef CONFIG_RTL8812A case RTL8812: if (interface_type == RTW_USB) @@ -12567,6 +12677,16 @@ int hal_efuse_macaddr_offset(_adapter *adapter) addr_offset = EEPROM_MAC_ADDR_8821AE; break; #endif +#ifdef CONFIG_RTL8192E + case RTL8192E: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8192EU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8192ES; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8192EE; + break; +#endif #ifdef CONFIG_RTL8814A case RTL8814A: if (interface_type == RTW_USB) @@ -12576,6 +12696,46 @@ int hal_efuse_macaddr_offset(_adapter *adapter) break; #endif +#ifdef CONFIG_RTL8822B + case RTL8822B: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8822BU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8822BS; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8822BE; + break; +#endif /* CONFIG_RTL8822B */ + +#ifdef CONFIG_RTL8821C + case RTL8821C: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8821CU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8821CS; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8821CE; + break; +#endif /* CONFIG_RTL8821C */ + +#ifdef CONFIG_RTL8710B + case RTL8710B: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8710B; + break; +#endif + +#ifdef CONFIG_RTL8192F + case RTL8192F: + if (interface_type == RTW_USB) + addr_offset = EEPROM_MAC_ADDR_8192FU; + else if (interface_type == RTW_SDIO) + addr_offset = EEPROM_MAC_ADDR_8192FS; + else if (interface_type == RTW_PCIE) + addr_offset = EEPROM_MAC_ADDR_8192FE; + break; +#endif /* CONFIG_RTL8192F */ + } if (addr_offset == -1) { @@ -12793,6 +12953,32 @@ void rtw_bb_rf_gain_offset(_adapter *padapter) } else RTW_INFO("Using the default RF gain.\n"); +#elif defined(CONFIG_RTL8188E) + if (value & BIT4 && (registry_par->RegPwrTrimEnable == 1)) { + RTW_INFO("8188ES Offset RF Gain.\n"); + RTW_INFO("8188ES Offset RF Gain. EEPROMRFGainVal=0x%x\n", + pHalData->EEPROMRFGainVal); + + if (pHalData->EEPROMRFGainVal != 0xff) { + res = rtw_hal_read_rfreg(padapter, RF_PATH_A, + REG_RF_BB_GAIN_OFFSET, 0xffffffff); + + RTW_INFO("Offset RF Gain. reg 0x55=0x%x\n", res); + res &= 0xfff87fff; + + res |= (pHalData->EEPROMRFGainVal & 0x0f) << 15; + RTW_INFO("Offset RF Gain. res=0x%x\n", res); + + rtw_hal_write_rfreg(padapter, RF_PATH_A, + REG_RF_BB_GAIN_OFFSET, + RF_GAIN_OFFSET_MASK, res); + } else { + RTW_INFO("Offset RF Gain. EEPROMRFGainVal=0x%x == 0xff, didn't run Kfree\n", + pHalData->EEPROMRFGainVal); + } + } else + RTW_INFO("Using the default RF gain.\n"); +#else /* TODO: call this when channel switch */ if (kfree_data->flag & KFREE_FLAG_ON) rtw_rf_apply_tx_gain_offset(padapter, 6); /* input ch6 to select BB_GAIN_2G */ @@ -13524,8 +13710,14 @@ u8 rtw_get_current_tx_sgi(_adapter *padapter, struct sta_info *psta) return curr_tx_sgi; if (padapter->fix_rate == 0xff) { +#if defined(CONFIG_RTL8188E) +#if (RATE_ADAPTIVE_SUPPORT == 1) + curr_tx_sgi = hal_data->odmpriv.ra_info[psta->cmn.mac_id].rate_sgi; +#endif /* (RATE_ADAPTIVE_SUPPORT == 1)*/ +#else ra_info = &psta->cmn.ra_info; curr_tx_sgi = ((ra_info->curr_tx_rate) & 0x80) >> 7; +#endif } else { curr_tx_sgi = ((padapter->fix_rate) & 0x80) >> 7; } @@ -13543,8 +13735,14 @@ u8 rtw_get_current_tx_rate(_adapter *padapter, struct sta_info *psta) return rate_id; if (padapter->fix_rate == 0xff) { +#if defined(CONFIG_RTL8188E) +#if (RATE_ADAPTIVE_SUPPORT == 1) + rate_id = hal_data->odmpriv.ra_info[psta->cmn.mac_id].decision_rate; +#endif /* (RATE_ADAPTIVE_SUPPORT == 1)*/ +#else ra_info = &psta->cmn.ra_info; rate_id = ra_info->curr_tx_rate & 0x7f; +#endif } else { rate_id = padapter->fix_rate & 0x7f; } @@ -13628,6 +13826,14 @@ void hal_set_crystal_cap(_adapter *adapter, u8 crystal_cap) crystal_cap = crystal_cap & 0x3F; switch (rtw_get_chip_type(adapter)) { +#if defined(CONFIG_RTL8188E) || defined(CONFIG_RTL8188F) || defined(CONFIG_RTL8188GTV) + case RTL8188E: + case RTL8188F: + case RTL8188GTV: + /* write 0x24[16:11] = 0x24[22:17] = CrystalCap */ + phy_set_bb_reg(adapter, REG_AFE_XTAL_CTRL, 0x007FF800, (crystal_cap | (crystal_cap << 6))); + break; +#endif #if defined(CONFIG_RTL8812A) case RTL8812: /* write 0x2C[30:25] = 0x2C[24:19] = CrystalCap */ @@ -13651,6 +13857,25 @@ void hal_set_crystal_cap(_adapter *adapter, u8 crystal_cap) /* write 0x2C[26:21] = 0x2C[20:15] = CrystalCap*/ phy_set_bb_reg(adapter, REG_MAC_PHY_CTRL, 0x07FF8000, (crystal_cap | (crystal_cap << 6))); break; +#endif +#if defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8192F) + + case RTL8822B: + case RTL8821C: + case RTL8192F: + /* write 0x28[6:1] = 0x24[30:25] = CrystalCap */ + crystal_cap = crystal_cap & 0x3F; + phy_set_bb_reg(adapter, REG_AFE_XTAL_CTRL, 0x7E000000, crystal_cap); + phy_set_bb_reg(adapter, REG_AFE_PLL_CTRL, 0x7E, crystal_cap); + break; +#endif +#if defined(CONFIG_RTL8710B) + case RTL8710B: + /*Change by ylb 20160728, Becase 0x2C[23:12] is removed to syson 0x60[29:18] */ + /* 0x2C[23:18] = 0x2C[29:24] = CrystalCap //Xo:[29:24], Xi:[23:18]*/ + crystal_cap = crystal_cap & 0x3F; + hal_set_syson_reg(adapter, REG_SYS_XTAL_CTRL0, 0x3FFC0000, (crystal_cap | (crystal_cap << 6))); + break; #endif default: rtw_warn_on(1); @@ -13665,6 +13890,36 @@ int hal_spec_init(_adapter *adapter) interface_type = rtw_get_intf_type(adapter); switch (rtw_get_chip_type(adapter)) { +#ifdef CONFIG_RTL8723B + case RTL8723B: + init_hal_spec_8723b(adapter); + break; +#endif +#ifdef CONFIG_RTL8703B + case RTL8703B: + init_hal_spec_8703b(adapter); + break; +#endif +#ifdef CONFIG_RTL8723D + case RTL8723D: + init_hal_spec_8723d(adapter); + break; +#endif +#ifdef CONFIG_RTL8188E + case RTL8188E: + init_hal_spec_8188e(adapter); + break; +#endif +#ifdef CONFIG_RTL8188F + case RTL8188F: + init_hal_spec_8188f(adapter); + break; +#endif +#ifdef CONFIG_RTL8188GTV + case RTL8188GTV: + init_hal_spec_8188gtv(adapter); + break; +#endif #ifdef CONFIG_RTL8812A case RTL8812: init_hal_spec_8812a(adapter); @@ -13675,11 +13930,36 @@ int hal_spec_init(_adapter *adapter) init_hal_spec_8821a(adapter); break; #endif +#ifdef CONFIG_RTL8192E + case RTL8192E: + init_hal_spec_8192e(adapter); + break; +#endif #ifdef CONFIG_RTL8814A case RTL8814A: init_hal_spec_8814a(adapter); break; #endif +#ifdef CONFIG_RTL8822B + case RTL8822B: + rtl8822b_init_hal_spec(adapter); + break; +#endif +#ifdef CONFIG_RTL8821C + case RTL8821C: + init_hal_spec_rtl8821c(adapter); + break; +#endif +#ifdef CONFIG_RTL8710B + case RTL8710B: + init_hal_spec_8710b(adapter); + break; +#endif +#ifdef CONFIG_RTL8192F + case RTL8192F: + init_hal_spec_8192f(adapter); + break; +#endif default: RTW_ERR("%s: unknown chip_type:%u\n" diff --git a/hal/hal_intf.c b/hal/hal_intf.c index b20ef63..66a2954 100644 --- a/hal/hal_intf.c +++ b/hal/hal_intf.c @@ -20,9 +20,20 @@ const u32 _chip_type_to_odm_ic_type[] = { 0, + ODM_RTL8188E, + ODM_RTL8192E, ODM_RTL8812, ODM_RTL8821, + ODM_RTL8723B, ODM_RTL8814A, + ODM_RTL8703B, + ODM_RTL8188F, + ODM_RTL8188F, + ODM_RTL8822B, + ODM_RTL8723D, + ODM_RTL8821C, + ODM_RTL8710B, + ODM_RTL8192F, 0, }; @@ -1402,6 +1413,7 @@ bool rtw_hal_rfkill_poll(_adapter *adapter, u8 *valid) u8 rtw_hal_ops_check(_adapter *padapter) { u8 ret = _SUCCESS; +#if 1 /*** initialize section ***/ if (NULL == padapter->hal_func.read_chip_version) { rtw_hal_error_msg("read_chip_version"); @@ -1591,6 +1603,12 @@ u8 rtw_hal_ops_check(_adapter *padapter) rtw_hal_error_msg("hal_mac_c2h_handler"); ret = _FAIL; } +#elif !defined(CONFIG_RTL8188E) + if (NULL == padapter->hal_func.c2h_handler) { + rtw_hal_error_msg("c2h_handler"); + ret = _FAIL; + } +#endif #if defined(CONFIG_LPS) || defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) if (NULL == padapter->hal_func.fill_fake_txdesc) { diff --git a/hal/hal_mp.c b/hal/hal_mp.c index 5dfaf91..7960556 100644 --- a/hal/hal_mp.c +++ b/hal/hal_mp.c @@ -21,12 +21,39 @@ #ifdef RTW_HALMAC #include /* struct HAL_DATA_TYPE, RF register definition and etc. */ #else /* !RTW_HALMAC */ + #ifdef CONFIG_RTL8188E + #include + #endif + #ifdef CONFIG_RTL8723B + #include + #endif + #ifdef CONFIG_RTL8192E + #include + #endif #if defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8812A) #include #endif #if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) #include #endif + #ifdef CONFIG_RTL8703B + #include + #endif + #ifdef CONFIG_RTL8723D + #include + #endif + #ifdef CONFIG_RTL8710B + #include + #endif + #ifdef CONFIG_RTL8188F + #include + #endif + #ifdef CONFIG_RTL8188GTV + #include + #endif + #ifdef CONFIG_RTL8192F + #include + #endif #endif /* !RTW_HALMAC */ diff --git a/hal/phydm/halrf/rtl8814a/halrf_8814a_ap.c b/hal/phydm/halrf/rtl8814a/halrf_8814a_ap.c index 5bfb270..6c93e5f 100644 --- a/hal/phydm/halrf/rtl8814a/halrf_8814a_ap.c +++ b/hal/phydm/halrf/rtl8814a/halrf_8814a_ap.c @@ -1202,6 +1202,16 @@ VOID IN BOOLEAN is2T ) { +#if (RT_PLATFORM == PLATFORM_WINDOWS) +#if !(DM_ODM_SUPPORT_TYPE & ODM_AP) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); +#if (DM_ODM_SUPPORT_TYPE == ODM_CE) + PDM_ODM_T pDM_Odm = &pHalData->odmpriv; +#endif +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + PDM_ODM_T pDM_Odm = &pHalData->DM_OutSrc; +#endif +#endif u4Byte tmpReg, tmpReg2, index, i; u1Byte path, pathbound = PATH_NUM; @@ -1216,12 +1226,12 @@ VOID rRx_TO_Rx, rStandby, rSleep, rPMPD_ANAEN }; - u4Byte BB_backup[DP_BB_REG_NUM]; + u4Byte BB_backup[DP_BB_REG_NUM]; u4Byte BB_REG[DP_BB_REG_NUM] = { - rOFDM0_TRxPathEnable, rFPGA0_RFMOD, + rOFDM0_TRxPathEnable, rFPGA0_RFMOD, rOFDM0_TRMuxPar, rFPGA0_XCD_RFInterfaceSW, - rFPGA0_XAB_RFInterfaceSW, rFPGA0_XA_RFInterfaceOE, - rFPGA0_XB_RFInterfaceOE}; + rFPGA0_XAB_RFInterfaceSW, rFPGA0_XA_RFInterfaceOE, + rFPGA0_XB_RFInterfaceOE}; u4Byte BB_settings[DP_BB_REG_NUM] = { 0x00a05430, 0x02040000, 0x000800e4, 0x22208000, 0x0, 0x0, 0x0}; diff --git a/hal/phydm/rtl8814a/halphyrf_8814a_ap.c b/hal/phydm/rtl8814a/halphyrf_8814a_ap.c index 81ea9a6..adf2cd9 100644 --- a/hal/phydm/rtl8814a/halphyrf_8814a_ap.c +++ b/hal/phydm/rtl8814a/halphyrf_8814a_ap.c @@ -1201,29 +1201,39 @@ VOID IN BOOLEAN is2T ) { +#if (RT_PLATFORM == PLATFORM_WINDOWS) +#if !(DM_ODM_SUPPORT_TYPE & ODM_AP) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); +#if (DM_ODM_SUPPORT_TYPE == ODM_CE) + PDM_ODM_T pDM_Odm = &pHalData->odmpriv; +#endif +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + PDM_ODM_T pDM_Odm = &pHalData->DM_OutSrc; +#endif +#endif u32 tmpReg, tmpReg2, index, i; u8 path, pathbound = PATH_NUM; u32 AFE_backup[IQK_ADDA_REG_NUM]; - u32 AFE_REG[IQK_ADDA_REG_NUM] = { - rFPGA0_XCD_SwitchControl, rBlue_Tooth, + u32 AFE_REG[IQK_ADDA_REG_NUM] = { + rFPGA0_XCD_SwitchControl, rBlue_Tooth, rRx_Wait_CCA, rTx_CCK_RFON, - rTx_CCK_BBON, rTx_OFDM_RFON, + rTx_CCK_BBON, rTx_OFDM_RFON, rTx_OFDM_BBON, rTx_To_Rx, - rTx_To_Tx, rRx_CCK, + rTx_To_Tx, rRx_CCK, rRx_OFDM, rRx_Wait_RIFS, - rRx_TO_Rx, rStandby, + rRx_TO_Rx, rStandby, rSleep, rPMPD_ANAEN }; - u32 BB_backup[DP_BB_REG_NUM]; + u32 BB_backup[DP_BB_REG_NUM]; u32 BB_REG[DP_BB_REG_NUM] = { - rOFDM0_TRxPathEnable, rFPGA0_RFMOD, + rOFDM0_TRxPathEnable, rFPGA0_RFMOD, rOFDM0_TRMuxPar, rFPGA0_XCD_RFInterfaceSW, rFPGA0_XAB_RFInterfaceSW, rFPGA0_XA_RFInterfaceOE, - rFPGA0_XB_RFInterfaceOE}; + rFPGA0_XB_RFInterfaceOE}; u32 BB_settings[DP_BB_REG_NUM] = { 0x00a05430, 0x02040000, 0x000800e4, 0x22208000, - 0x0, 0x0, 0x0}; + 0x0, 0x0, 0x0}; u32 RF_backup[DP_PATH_NUM][DP_RF_REG_NUM]; u32 RF_REG[DP_RF_REG_NUM] = { diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index b2427fe..5c0bf0d 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -1585,9 +1585,9 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); // Reset USB mode switch setting rtw_write8(Adapter, REG_SDIO_CTRL_8814A, 0x0); rtw_write8(Adapter, REG_ACLK_MON, 0x0); - + //RT_TRACE(COMP_INIT, DBG_TRACE, ("InitializeAdapter8188EUsb() <====\n")); - + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); // 2010/08/26 MH Merge from 8192CE. if(pwrctrlpriv->rf_pwrstate == rf_on) @@ -2048,19 +2048,19 @@ InitAdapterVariablesByPROM_8814AU( hal_ReadTxPowerInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadBoardType8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_Read_TRX_antenna_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + // // Read Bluetooth co-exist and initialize // hal_EfuseParseBTCoexistInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + hal_ReadChannelPlan8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_EfuseParseXtal_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadThermalMeter_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadRemoteWakeup_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadAntennaDiversity8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadRFEType_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + ReadLEDSetting_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadUsbModeSwitch_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); @@ -2074,7 +2074,7 @@ InitAdapterVariablesByPROM_8814AU( static void hal_ReadPROMContent_8814A( IN PADAPTER Adapter ) -{ +{ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); u8 eeValue; @@ -2097,7 +2097,7 @@ ReadAdapterInfo8814AU( ) { Hal_InitEfuseVars_8814A(Adapter); - + /* Read all content in Efuse/EEPROM. */ hal_ReadPROMContent_8814A(Adapter); @@ -2118,17 +2118,17 @@ void UpdateInterruptMask8814AU(PADAPTER padapter,u8 bHIMR0 ,u32 AddMSR, u32 Remo himr = &(pHalData->IntrMask[0]); else himr = &(pHalData->IntrMask[1]); - + if (AddMSR) *himr |= AddMSR; if (RemoveMSR) *himr &= (~RemoveMSR); - if(bHIMR0) + if(bHIMR0) rtw_write32(padapter, REG_HIMR0_8814A, *himr); else - rtw_write32(padapter, REG_HIMR1_8814A, *himr); + rtw_write32(padapter, REG_HIMR1_8814A, *himr); } @@ -2223,7 +2223,7 @@ u8 SetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) void GetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); switch(variable) { @@ -2340,7 +2340,7 @@ static void rtl8814au_init_default_value(_adapter * padapter) } static u8 rtl8814au_ps_func(PADAPTER Adapter,HAL_INTF_PS_FUNC efunc_id, u8 *val) -{ +{ u8 bResult = _TRUE; switch(efunc_id){ @@ -2365,7 +2365,7 @@ void rtl8814au_set_hal_ops(_adapter * padapter) pHalFunc->hal_power_on = _InitPowerOn_8814AU; pHalFunc->hal_power_off = hal_carddisable_8814; - + pHalFunc->hal_init = &rtl8814au_hal_init; pHalFunc->hal_deinit = &rtl8814au_hal_deinit; @@ -2384,11 +2384,11 @@ void rtl8814au_set_hal_ops(_adapter * padapter) // pHalFunc->InitSwLeds = NULL; // pHalFunc->DeInitSwLeds = NULL; #endif//CONFIG_RTW_LED - + pHalFunc->init_default_value = &rtl8814au_init_default_value; pHalFunc->intf_chip_configure = &rtl8814au_interface_configure; pHalFunc->read_adapter_info = &ReadAdapterInfo8814AU; - + pHalFunc->set_hw_reg_handler = &SetHwReg8814AU; pHalFunc->GetHwRegHandler = &GetHwReg8814AU; pHalFunc->get_hal_def_var_handler = &GetHalDefVar8814AUsb; diff --git a/include/gspi_osintf.h b/include/gspi_osintf.h index 2bff22f..6393f77 100644 --- a/include/gspi_osintf.h +++ b/include/gspi_osintf.h @@ -15,4 +15,11 @@ #ifndef __SDIO_OSINTF_H__ #define __SDIO_OSINTF_H__ + +#ifdef PLATFORM_OS_CE + extern NDIS_STATUS ce_sd_get_dev_hdl(PADAPTER padapter); + SD_API_STATUS ce_sd_int_callback(SD_DEVICE_HANDLE hDevice, PADAPTER padapter); + extern void sd_setup_irs(PADAPTER padapter); +#endif + #endif diff --git a/include/rtl8812a_recv.h b/include/rtl8812a_recv.h index 07b8245..bf1d4b6 100644 --- a/include/rtl8812a_recv.h +++ b/include/rtl8812a_recv.h @@ -18,6 +18,9 @@ #if defined(CONFIG_USB_HCI) #ifndef MAX_RECVBUF_SZ + #ifdef PLATFORM_OS_CE + #define MAX_RECVBUF_SZ (8192+1024) /* 8K+1k */ + #else #ifndef CONFIG_MINIMAL_MEMORY_USAGE #ifdef CONFIG_PREALLOC_RX_SKB_BUFFER #define MAX_RECVBUF_SZ (rtw_rtkm_get_buff_size()) /*depend rtkm*/ @@ -36,6 +39,7 @@ #else #define MAX_RECVBUF_SZ (4000) /* about 4K */ #endif + #endif #endif /* !MAX_RECVBUF_SZ */ #elif defined(CONFIG_PCI_HCI) diff --git a/include/rtl8814a_recv.h b/include/rtl8814a_recv.h index f723c0a..c6792d8 100644 --- a/include/rtl8814a_recv.h +++ b/include/rtl8814a_recv.h @@ -18,6 +18,9 @@ #if defined(CONFIG_USB_HCI) #ifndef MAX_RECVBUF_SZ + #ifdef PLATFORM_OS_CE + #define MAX_RECVBUF_SZ (8192+1024) /* 8K+1k */ + #else #ifndef CONFIG_MINIMAL_MEMORY_USAGE #ifdef CONFIG_PLATFORM_MSTAR #define MAX_RECVBUF_SZ (8192) /* 8K */ @@ -32,6 +35,7 @@ #else #define MAX_RECVBUF_SZ (4000) /* about 4K */ #endif + #endif #endif /* !MAX_RECVBUF_SZ */ #elif defined(CONFIG_PCI_HCI) diff --git a/include/rtw_cmd.h b/include/rtw_cmd.h index 0f549a6..4df6760 100644 --- a/include/rtw_cmd.h +++ b/include/rtw_cmd.h @@ -26,7 +26,11 @@ #define MAX_RSPSZ 512 #define MAX_EVTSZ 1024 -#define CMDBUFF_ALIGN_SZ 512 +#ifdef PLATFORM_OS_CE + #define CMDBUFF_ALIGN_SZ 4 +#else + #define CMDBUFF_ALIGN_SZ 512 +#endif struct cmd_obj { _adapter *padapter; @@ -110,6 +114,9 @@ struct evt_priv { #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) u8 *c2h_mem; u8 *allocated_c2h_mem; +#ifdef PLATFORM_OS_XP + PMDL pc2h_mdl; +#endif #endif }; diff --git a/include/rtw_debug.h b/include/rtw_debug.h index 93f9e6e..e3562ca 100644 --- a/include/rtw_debug.h +++ b/include/rtw_debug.h @@ -28,6 +28,10 @@ enum { #define DRIVER_PREFIX "RTW: " +#ifdef PLATFORM_OS_CE +extern void rtl871x_cedbg(const char *fmt, ...); +#endif + #define RTW_PRINT(x, ...) do {} while (0) #define RTW_ERR(x, ...) do {} while (0) #define RTW_WARN(x,...) do {} while (0) diff --git a/include/rtw_recv.h b/include/rtw_recv.h index ee0ec77..d6422a1 100644 --- a/include/rtw_recv.h +++ b/include/rtw_recv.h @@ -19,6 +19,19 @@ #define RTW_RX_MSDU_ACT_INDICATE BIT0 #define RTW_RX_MSDU_ACT_FORWARD BIT1 +#ifdef PLATFORM_OS_XP + #ifdef CONFIG_SDIO_HCI + #define NR_RECVBUFF 1024/* 512 */ /* 128 */ + #else + #define NR_RECVBUFF (16) + #endif +#elif defined(PLATFORM_OS_CE) + #ifdef CONFIG_SDIO_HCI + #define NR_RECVBUFF (128) + #else + #define NR_RECVBUFF (4) + #endif +#else /* PLATFORM_LINUX /PLATFORM_BSD */ #include @@ -42,6 +55,7 @@ #ifdef CONFIG_RTW_NAPI #define RTL_NAPI_WEIGHT (32) #endif +#endif #if defined(CONFIG_RTL8821C) && defined(CONFIG_SDIO_HCI) && defined(CONFIG_RECV_THREAD_MODE) #ifdef NR_RECVBUFF @@ -340,6 +354,17 @@ struct recv_priv { _adapter *adapter; +#ifdef PLATFORM_WINDOWS + _nic_hdl RxPktPoolHdl; + _nic_hdl RxBufPoolHdl; + +#ifdef PLATFORM_OS_XP + PMDL pbytecnt_mdl; +#endif + uint counter; /* record the number that up-layer will return to drv; only when counter==0 can we release recv_priv */ + NDIS_EVENT recv_resource_evt ; +#endif + u32 is_any_non_be_pkts; @@ -508,11 +533,20 @@ struct recv_buf { #ifdef CONFIG_USB_HCI -#if defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) +#if defined(PLATFORM_OS_XP) || defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) PURB purb; dma_addr_t dma_transfer_addr; /* (in) dma addr for transfer_buffer */ u32 alloc_sz; #endif + +#ifdef PLATFORM_OS_XP + PIRP pirp; +#endif + +#ifdef PLATFORM_OS_CE + USB_TRANSFER usb_transfer_read_port; +#endif + u8 irp_pending; int transfer_len; diff --git a/include/rtw_xmit.h b/include/rtw_xmit.h index 69ec205..660a29a 100644 --- a/include/rtw_xmit.h +++ b/include/rtw_xmit.h @@ -60,6 +60,10 @@ #endif #define NR_XMITBUFF (128) #endif + +#ifdef PLATFORM_OS_CE + #define XMITBUF_ALIGN_SZ 4 +#else #ifdef CONFIG_PCI_HCI #define XMITBUF_ALIGN_SZ 4 #else @@ -68,6 +72,7 @@ #else #define XMITBUF_ALIGN_SZ 512 #endif + #endif #endif /* xmit extension buff defination */ diff --git a/include/sdio_osintf.h b/include/sdio_osintf.h index 2bff22f..7c2abd1 100644 --- a/include/sdio_osintf.h +++ b/include/sdio_osintf.h @@ -15,4 +15,11 @@ #ifndef __SDIO_OSINTF_H__ #define __SDIO_OSINTF_H__ + +#ifdef PLATFORM_OS_CE +extern NDIS_STATUS ce_sd_get_dev_hdl(PADAPTER padapter); +SD_API_STATUS ce_sd_int_callback(SD_DEVICE_HANDLE hDevice, PADAPTER padapter); +extern void sd_setup_irs(PADAPTER padapter); +#endif + #endif diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 7d10c0c..7553f2c 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -1135,6 +1135,11 @@ void _rtw_init_sema(_sema *sema, int init_val) sema_init(sema, init_val, "rtw_drv"); #endif +#ifdef PLATFORM_OS_CE + if (*sema == NULL) + *sema = CreateSemaphore(NULL, init_val, SEMA_UPBND, NULL); +#endif + } void _rtw_free_sema(_sema *sema) @@ -1142,6 +1147,9 @@ void _rtw_free_sema(_sema *sema) #ifdef PLATFORM_FREEBSD sema_destroy(sema); #endif +#ifdef PLATFORM_OS_CE + CloseHandle(*sema); +#endif } @@ -1156,6 +1164,10 @@ void _rtw_up_sema(_sema *sema) #ifdef PLATFORM_FREEBSD sema_post(sema); #endif + +#ifdef PLATFORM_OS_CE + ReleaseSemaphore(*sema, 1, NULL); +#endif } u32 _rtw_down_sema(_sema *sema) @@ -1173,6 +1185,13 @@ u32 _rtw_down_sema(_sema *sema) sema_wait(sema); return _SUCCESS; #endif + +#ifdef PLATFORM_OS_CE + if (WAIT_OBJECT_0 == WaitForSingleObject(*sema, INFINITE)) + return _SUCCESS; + else + return _FAIL; +#endif } #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) @@ -1192,6 +1211,10 @@ inline void kthread_thread_exit(_completion *comp) #ifdef PLATFORM_FREEBSD printf("%s", "RTKTHREAD_exit"); #endif + +#ifdef PLATFORM_OS_CE + ExitThread(STATUS_SUCCESS); +#endif } inline void _rtw_init_completion(_completion *comp) @@ -1227,6 +1250,10 @@ void _rtw_mutex_init(_mutex *pmutex) #ifdef PLATFORM_FREEBSD mtx_init(pmutex, "", NULL, MTX_DEF | MTX_RECURSE); #endif + +#ifdef PLATFORM_OS_CE + *pmutex = CreateMutex(NULL, _FALSE, NULL); +#endif } void _rtw_mutex_free(_mutex *pmutex); @@ -1243,6 +1270,10 @@ void _rtw_mutex_free(_mutex *pmutex) sema_destroy(pmutex); #endif +#endif + +#ifdef PLATFORM_OS_CE + #endif }