void rtw_hal_chip_configure(_adapter *padapter)
{
- if(padapter->HalFunc.intf_chip_configure)
- padapter->HalFunc.intf_chip_configure(padapter);
+ padapter->HalFunc.intf_chip_configure(padapter);
}
void rtw_hal_read_chip_info(_adapter *padapter)
{
- if(padapter->HalFunc.read_adapter_info)
- padapter->HalFunc.read_adapter_info(padapter);
+ padapter->HalFunc.read_adapter_info(padapter);
}
void rtw_hal_read_chip_version(_adapter *padapter)
{
- if(padapter->HalFunc.read_chip_version)
- padapter->HalFunc.read_chip_version(padapter);
+ padapter->HalFunc.read_chip_version(padapter);
}
void rtw_hal_def_value_init(_adapter *padapter)
{
if (is_primary_adapter(padapter)) {
- if(padapter->HalFunc.init_default_value)
- padapter->HalFunc.init_default_value(padapter);
+ padapter->HalFunc.init_default_value(padapter);
rtw_init_hal_com_default_value(padapter);
}
}
}
+
+u8 rtw_hal_data_init(_adapter *padapter)
+{
+ if (is_primary_adapter(padapter)) {
+ padapter->hal_data_sz = sizeof(HAL_DATA_TYPE);
+ padapter->HalData = rtw_zvmalloc(padapter->hal_data_sz);
+ if(padapter->HalData == NULL){
+ DBG_8192C("cant not alloc memory for HAL DATA \n");
+ return _FAIL;
+ }
+ }
+ return _SUCCESS;
+}
+
+void rtw_hal_data_deinit(_adapter *padapter)
+{
+ if (is_primary_adapter(padapter)) {
+ if (padapter->HalData)
+ {
+ #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
+ phy_free_filebuf(padapter);
+ #endif
+ rtw_vmfree(padapter->HalData, padapter->hal_data_sz);
+ padapter->HalData = NULL;
+ padapter->hal_data_sz = 0;
+ }
+ }
+}
+
void rtw_hal_free_data(_adapter *padapter)
{
//free HAL Data
- rtw_hal_data_deinit(padapter);
-
- if (is_primary_adapter(padapter))
- if(padapter->HalFunc.free_hal_data)
- padapter->HalFunc.free_hal_data(padapter);
+ rtw_hal_data_deinit(padapter);
}
void rtw_hal_dm_init(_adapter *padapter)
{
if (is_primary_adapter(padapter)) {
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
-
- if(padapter->HalFunc.dm_init)
- padapter->HalFunc.dm_init(padapter);
+
+ padapter->HalFunc.dm_init(padapter);
- _rtw_spinlock_init(&pdmpriv->IQKSpinLock);
+ _rtw_spinlock_init(&pHalData->IQKSpinLock);
}
}
void rtw_hal_dm_deinit(_adapter *padapter)
{
if (is_primary_adapter(padapter)) {
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
- if(padapter->HalFunc.dm_deinit)
- padapter->HalFunc.dm_deinit(padapter);
+ padapter->HalFunc.dm_deinit(padapter);
- _rtw_spinlock_free(&pdmpriv->IQKSpinLock);
+ _rtw_spinlock_free(&pHalData->IQKSpinLock);
}
}
void rtw_hal_sw_led_init(_adapter *padapter)
}
u32 rtw_hal_power_on(_adapter *padapter)
-{
- if(padapter->HalFunc.hal_power_on)
- return padapter->HalFunc.hal_power_on(padapter);
- return _FAIL;
+{
+ return padapter->HalFunc.hal_power_on(padapter);
}
void rtw_hal_power_off(_adapter *padapter)
-{
- if(padapter->HalFunc.hal_power_off)
- padapter->HalFunc.hal_power_off(padapter);
+{
+ padapter->HalFunc.hal_power_off(padapter);
}
+
void rtw_hal_init_opmode(_adapter *padapter)
{
NDIS_802_11_NETWORK_INFRASTRUCTURE networkType = Ndis802_11InfrastructureMax;
struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
int i;
-#ifdef CONFIG_DUALMAC_CONCURRENT
- if(padapter->hw_init_completed == _TRUE)
- {
- DBG_871X("rtw_hal_init: hw_init_completed == _TRUE\n");
- return status;
- }
-
- // before init mac0, driver must init mac1 first to avoid usb rx error.
- if((padapter->pbuddy_adapter != NULL) && (padapter->DualMacConcurrent == _TRUE)
- && (padapter->adapter_type == PRIMARY_ADAPTER))
- {
- if(padapter->pbuddy_adapter->hw_init_completed == _TRUE)
- {
- DBG_871X("rtw_hal_init: pbuddy_adapter hw_init_completed == _TRUE\n");
- }
- else
- {
- status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter);
- if(status == _SUCCESS){
- padapter->pbuddy_adapter->hw_init_completed = _TRUE;
- }
- else{
- padapter->pbuddy_adapter->hw_init_completed = _FALSE;
- RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail(pbuddy_adapter)\n"));
- DBG_871X("rtw_hal_init: hal__init fail(pbuddy_adapter)\n");
- return status;
- }
- }
- }
-#endif
-
status = padapter->HalFunc.hal_init(padapter);
if(status == _SUCCESS){
void rtw_hal_set_hwreg(_adapter *padapter, u8 variable, u8 *val)
{
- if (padapter->HalFunc.SetHwRegHandler)
- padapter->HalFunc.SetHwRegHandler(padapter, variable, val);
+ padapter->HalFunc.SetHwRegHandler(padapter, variable, val);
}
void rtw_hal_get_hwreg(_adapter *padapter, u8 variable, u8 *val)
{
- if (padapter->HalFunc.GetHwRegHandler)
- padapter->HalFunc.GetHwRegHandler(padapter, variable, val);
+ padapter->HalFunc.GetHwRegHandler(padapter, variable, val);
}
#ifdef CONFIG_C2H_PACKET_EN
u8 rtw_hal_set_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue)
{
- if(padapter->HalFunc.SetHalDefVarHandler)
- return padapter->HalFunc.SetHalDefVarHandler(padapter,eVariable,pValue);
- return _FAIL;
+ return padapter->HalFunc.SetHalDefVarHandler(padapter,eVariable,pValue);
}
u8 rtw_hal_get_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue)
{
- if(padapter->HalFunc.GetHalDefVarHandler)
- return padapter->HalFunc.GetHalDefVarHandler(padapter,eVariable,pValue);
- return _FAIL;
+ return padapter->HalFunc.GetHalDefVarHandler(padapter,eVariable,pValue);
}
void rtw_hal_set_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,BOOLEAN bSet)
{
- if(padapter->HalFunc.SetHalODMVarHandler)
- padapter->HalFunc.SetHalODMVarHandler(padapter,eVariable,pValue1,bSet);
+ padapter->HalFunc.SetHalODMVarHandler(padapter,eVariable,pValue1,bSet);
}
void rtw_hal_get_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,PVOID pValue2)
{
- if(padapter->HalFunc.GetHalODMVarHandler)
- padapter->HalFunc.GetHalODMVarHandler(padapter,eVariable,pValue1,pValue2);
+ padapter->HalFunc.GetHalODMVarHandler(padapter,eVariable,pValue1,pValue2);
}
+/* FOR SDIO & PCIE */
void rtw_hal_enable_interrupt(_adapter *padapter)
{
- if (padapter->HalFunc.enable_interrupt)
- padapter->HalFunc.enable_interrupt(padapter);
- else
- DBG_871X("%s: HalFunc.enable_interrupt is NULL!\n", __FUNCTION__);
-
+#if defined(CONFIG_PCI_HCI) || defined (CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+ padapter->HalFunc.enable_interrupt(padapter);
+#endif //#if defined(CONFIG_PCI_HCI) || defined (CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
}
+
+/* FOR SDIO & PCIE */
void rtw_hal_disable_interrupt(_adapter *padapter)
{
- if (padapter->HalFunc.disable_interrupt)
- padapter->HalFunc.disable_interrupt(padapter);
- else
- DBG_871X("%s: HalFunc.disable_interrupt is NULL!\n", __FUNCTION__);
-
+#if defined(CONFIG_PCI_HCI) || defined (CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+ padapter->HalFunc.disable_interrupt(padapter);
+#endif //#if defined(CONFIG_PCI_HCI) || defined (CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
}
+
u8 rtw_hal_check_ips_status(_adapter *padapter)
{
u8 val = _FALSE;
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
void rtw_hal_clear_interrupt(_adapter *padapter)
+{
+#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
+ padapter->HalFunc.clear_interrupt(padapter);
+#endif
+}
+void rtw_hal_set_wowlan_fw(_adapter *padapter, u8 sleep)
{
- if (padapter->HalFunc.clear_interrupt)
- padapter->HalFunc.clear_interrupt(padapter);
- else
- DBG_871X("%s: HalFunc.clear_interrupt is NULL!\n", __FUNCTION__);
-
+ padapter->HalFunc.hal_set_wowlan_fw(padapter, sleep);
}
+
#endif
+#if defined(CONFIG_USB_HCI) || defined (CONFIG_PCI_HCI)
u32 rtw_hal_inirp_init(_adapter *padapter)
{
- u32 rst = _FAIL;
- if(padapter->HalFunc.inirp_init)
- rst = padapter->HalFunc.inirp_init(padapter);
- else
- DBG_871X(" %s HalFunc.inirp_init is NULL!!!\n",__FUNCTION__);
- return rst;
+ if (is_primary_adapter(padapter))
+ return padapter->HalFunc.inirp_init(padapter);
+ return _SUCCESS;
}
-
u32 rtw_hal_inirp_deinit(_adapter *padapter)
{
-
- if(padapter->HalFunc.inirp_deinit)
+
+ if (is_primary_adapter(padapter))
return padapter->HalFunc.inirp_deinit(padapter);
- return _FAIL;
-
+ return _SUCCESS;
}
+#endif //#if defined(CONFIG_USB_HCI) || defined (CONFIG_PCI_HCI)
+#if defined(CONFIG_PCI_HCI)
void rtw_hal_irp_reset(_adapter *padapter)
{
- if(padapter->HalFunc.irp_reset)
- padapter->HalFunc.irp_reset(padapter);
- else
- DBG_871X("%s: HalFunc.rtw_hal_irp_reset is NULL!\n", __FUNCTION__);
+ padapter->HalFunc.irp_reset(padapter);
}
+#endif //#if defined(CONFIG_PCI_HCI)
+/* for USB Auto-suspend */
u8 rtw_hal_intf_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val)
{
if(padapter->HalFunc.interface_ps_func)
s32 rtw_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe)
{
- if(padapter->HalFunc.hal_xmitframe_enqueue)
- return padapter->HalFunc.hal_xmitframe_enqueue(padapter, pxmitframe);
-
- return _FALSE;
+ return padapter->HalFunc.hal_xmitframe_enqueue(padapter, pxmitframe);
}
s32 rtw_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe)
{
- if(padapter->HalFunc.hal_xmit)
- return padapter->HalFunc.hal_xmit(padapter, pxmitframe);
-
- return _FALSE;
+ return padapter->HalFunc.hal_xmit(padapter, pxmitframe);
}
/*
}
#endif //CONFIG_IEEE80211W
- if(padapter->HalFunc.mgnt_xmit)
- ret = padapter->HalFunc.mgnt_xmit(padapter, pmgntframe);
+ ret = padapter->HalFunc.mgnt_xmit(padapter, pmgntframe);
return ret;
}
s32 rtw_hal_init_xmit_priv(_adapter *padapter)
{
- if(padapter->HalFunc.init_xmit_priv != NULL)
- return padapter->HalFunc.init_xmit_priv(padapter);
- return _FAIL;
+ return padapter->HalFunc.init_xmit_priv(padapter);
}
void rtw_hal_free_xmit_priv(_adapter *padapter)
{
- if(padapter->HalFunc.free_xmit_priv != NULL)
- padapter->HalFunc.free_xmit_priv(padapter);
+ padapter->HalFunc.free_xmit_priv(padapter);
}
s32 rtw_hal_init_recv_priv(_adapter *padapter)
{
- if(padapter->HalFunc.init_recv_priv)
- return padapter->HalFunc.init_recv_priv(padapter);
-
- return _FAIL;
+ return padapter->HalFunc.init_recv_priv(padapter);
}
void rtw_hal_free_recv_priv(_adapter *padapter)
{
-
- if(padapter->HalFunc.free_recv_priv)
- padapter->HalFunc.free_recv_priv(padapter);
+ padapter->HalFunc.free_recv_priv(padapter);
}
void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level)
}
else
{
- if(padapter->HalFunc.UpdateRAMaskHandler)
- padapter->HalFunc.UpdateRAMaskHandler(padapter, psta->mac_id, rssi_level);
+ padapter->HalFunc.UpdateRAMaskHandler(padapter, psta->mac_id, rssi_level);
}
}
void rtw_hal_add_ra_tid(_adapter *padapter, u32 bitmap, u8* arg, u8 rssi_level)
{
- if(padapter->HalFunc.Add_RateATid)
- padapter->HalFunc.Add_RateATid(padapter, bitmap, arg, rssi_level);
+ padapter->HalFunc.Add_RateATid(padapter, bitmap, arg, rssi_level);
}
/* Start specifical interface thread */
void rtw_hal_start_thread(_adapter *padapter)
{
- if(padapter->HalFunc.run_thread)
- padapter->HalFunc.run_thread(padapter);
+#if defined(CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+#ifndef CONFIG_SDIO_TX_TASKLET
+ padapter->HalFunc.run_thread(padapter);
+#endif
+#endif
}
/* Start specifical interface thread */
void rtw_hal_stop_thread(_adapter *padapter)
{
- if(padapter->HalFunc.cancel_thread)
- padapter->HalFunc.cancel_thread(padapter);
+#if defined(CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+#ifndef CONFIG_SDIO_TX_TASKLET
+
+ padapter->HalFunc.cancel_thread(padapter);
+
+#endif
+#endif
}
u32 rtw_hal_read_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask)
if(padapter->HalFunc.write_rfreg)
padapter->HalFunc.write_rfreg(padapter, eRFPath, RegAddr, BitMask, Data);
}
-
+#if defined(CONFIG_PCI_HCI)
s32 rtw_hal_interrupt_handler(_adapter *padapter)
{
- if(padapter->HalFunc.interrupt_handler)
- return padapter->HalFunc.interrupt_handler(padapter);
- return _FAIL;
+ s32 ret = _FAIL;
+ ret = padapter->HalFunc.interrupt_handler(padapter);
+ return ret;
}
-
+#endif
void rtw_hal_set_bwmode(_adapter *padapter, CHANNEL_WIDTH Bandwidth, u8 Offset)
{
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- if(padapter->HalFunc.set_bwmode_handler)
- {
- ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
- if(pDM_Odm->RFCalibrateInfo.bIQKInProgress == _TRUE)
- DBG_871X_LEVEL(_drv_err_, "%s, %d, IQK may race condition\n", __func__,__LINE__);
- ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
- padapter->HalFunc.set_bwmode_handler(padapter, Bandwidth, Offset);
- }
+ ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
+ if(pDM_Odm->RFCalibrateInfo.bIQKInProgress == _TRUE)
+ DBG_871X_LEVEL(_drv_err_, "%s, %d, IQK may race condition\n", __func__,__LINE__);
+ ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
+ padapter->HalFunc.set_bwmode_handler(padapter, Bandwidth, Offset);
+
}
void rtw_hal_set_chan(_adapter *padapter, u8 channel)
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- if(padapter->HalFunc.set_channel_handler)
- {
- ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
- if(pDM_Odm->RFCalibrateInfo.bIQKInProgress == _TRUE)
- DBG_871X_LEVEL(_drv_err_, "%s, %d, IQK may race condition\n", __func__,__LINE__);
- ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
- padapter->HalFunc.set_channel_handler(padapter, channel);
- }
+ ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
+ if(pDM_Odm->RFCalibrateInfo.bIQKInProgress == _TRUE)
+ DBG_871X_LEVEL(_drv_err_, "%s, %d, IQK may race condition\n", __func__,__LINE__);
+ ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
+ padapter->HalFunc.set_channel_handler(padapter, channel);
}
void rtw_hal_set_chnl_bw(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80)
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- if(padapter->HalFunc.set_chnl_bw_handler)
- {
- ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
- if(pDM_Odm->RFCalibrateInfo.bIQKInProgress == _TRUE)
- DBG_871X_LEVEL(_drv_err_, "%s, %d, IQK may race condition\n", __func__,__LINE__);
- ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
- padapter->HalFunc.set_chnl_bw_handler(padapter, channel, Bandwidth, Offset40, Offset80);
- }
+ ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
+ if(pDM_Odm->RFCalibrateInfo.bIQKInProgress == _TRUE)
+ DBG_871X_LEVEL(_drv_err_, "%s, %d, IQK may race condition\n", __func__,__LINE__);
+ ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK);
+ padapter->HalFunc.set_chnl_bw_handler(padapter, channel, Bandwidth, Offset40, Offset80);
}
void rtw_hal_set_tx_power_level(_adapter *padapter, u8 channel)
void rtw_hal_dm_watchdog(_adapter *padapter)
{
-#if defined(CONFIG_CONCURRENT_MODE)
- if (padapter->adapter_type != PRIMARY_ADAPTER)
+ if (!is_primary_adapter(padapter))
return;
-#endif
- if(padapter->HalFunc.hal_dm_watchdog)
- padapter->HalFunc.hal_dm_watchdog(padapter);
+ padapter->HalFunc.hal_dm_watchdog(padapter);
}
+#ifdef CONFIG_LPS_LCLK_WD_TIMER
void rtw_hal_dm_watchdog_in_lps(_adapter *padapter)
{
#if defined(CONFIG_CONCURRENT_MODE)
return;
#endif
- if (adapter_to_pwrctl(padapter)->bFwCurrentInPSMode ==_TRUE )
- {
- if(padapter->HalFunc.hal_dm_watchdog_in_lps)
- {
- padapter->HalFunc.hal_dm_watchdog_in_lps(padapter);//this fuction caller is in interrupt context
- }
+ if (adapter_to_pwrctl(padapter)->bFwCurrentInPSMode ==_TRUE ) {
+ padapter->HalFunc.hal_dm_watchdog_in_lps(padapter);//this fuction caller is in interrupt context
}
}
+#endif
void rtw_hal_bcn_related_reg_setting(_adapter *padapter)
-{
- if(padapter->HalFunc.SetBeaconRelatedRegistersHandler)
- padapter->HalFunc.SetBeaconRelatedRegistersHandler(padapter);
+{
+ padapter->HalFunc.SetBeaconRelatedRegistersHandler(padapter);
}
#ifdef DBG_CONFIG_ERROR_DETECT
void rtw_hal_sreset_init(_adapter *padapter)
{
- if(padapter->HalFunc.sreset_init_value)
- padapter->HalFunc.sreset_init_value(padapter);
+ padapter->HalFunc.sreset_init_value(padapter);
}
void rtw_hal_sreset_reset(_adapter *padapter)
{
padapter = GET_PRIMARY_ADAPTER(padapter);
-
- if(padapter->HalFunc.silentreset)
- padapter->HalFunc.silentreset(padapter);
+ padapter->HalFunc.silentreset(padapter);
}
void rtw_hal_sreset_reset_value(_adapter *padapter)
{
- if(padapter->HalFunc.sreset_reset_value)
- padapter->HalFunc.sreset_reset_value(padapter);
+ padapter->HalFunc.sreset_reset_value(padapter);
}
void rtw_hal_sreset_xmit_status_check(_adapter *padapter)
if (!is_primary_adapter(padapter))
return;
- if(padapter->HalFunc.sreset_xmit_status_check)
- padapter->HalFunc.sreset_xmit_status_check(padapter);
+ padapter->HalFunc.sreset_xmit_status_check(padapter);
}
void rtw_hal_sreset_linked_status_check(_adapter *padapter)
{
if (!is_primary_adapter(padapter))
return;
-
- if(padapter->HalFunc.sreset_linked_status_check)
- padapter->HalFunc.sreset_linked_status_check(padapter);
+ padapter->HalFunc.sreset_linked_status_check(padapter);
}
u8 rtw_hal_sreset_get_wifi_status(_adapter *padapter)
-{
- u8 status = 0;
- if(padapter->HalFunc.sreset_get_wifi_status)
- status = padapter->HalFunc.sreset_get_wifi_status(padapter);
- return status;
+{
+ return padapter->HalFunc.sreset_get_wifi_status(padapter);
}
bool rtw_hal_sreset_inprogress(_adapter *padapter)
{
- bool inprogress = _FALSE;
-
padapter = GET_PRIMARY_ADAPTER(padapter);
-
- if(padapter->HalFunc.sreset_inprogress)
- inprogress = padapter->HalFunc.sreset_inprogress(padapter);
- return inprogress;
+ return padapter->HalFunc.sreset_inprogress(padapter);
}
#endif //DBG_CONFIG_ERROR_DETECT
#ifdef CONFIG_XMIT_THREAD_MODE
s32 rtw_hal_xmit_thread_handler(_adapter *padapter)
-{
- if(padapter->HalFunc.xmit_thread_handler)
- return padapter->HalFunc.xmit_thread_handler(padapter);
- return _FAIL;
+{
+ return padapter->HalFunc.xmit_thread_handler(padapter);
}
#endif
HAL_VERSION *hal_ver = &HalData->VersionID;
bool ret = _FAIL;
- if (IS_81XXC(*hal_ver) || IS_8723_SERIES(*hal_ver) ||IS_92D(*hal_ver) ||IS_8188E(*hal_ver)) {
+ if (IS_8188E(*hal_ver)) {
ret = c2h_evt_valid((struct c2h_evt_hdr *)buf);
} else if(IS_8192E(*hal_ver) || IS_8812_SERIES(*hal_ver) || IS_8821_SERIES(*hal_ver) || IS_8723B_SERIES(*hal_ver)) {
ret = c2h_evt_valid((struct c2h_evt_hdr_88xx*)buf);
HAL_VERSION *hal_ver = &HalData->VersionID;
s32 ret = _FAIL;
- if (IS_81XXC(*hal_ver) || IS_8723_SERIES(*hal_ver) ||IS_92D(*hal_ver) ||IS_8188E(*hal_ver)) {
+ if (IS_8188E(*hal_ver)) {
ret = c2h_evt_read(adapter, buf);
} else if(IS_8192E(*hal_ver) || IS_8812_SERIES(*hal_ver) || IS_8821_SERIES(*hal_ver) || IS_8723B_SERIES(*hal_ver)) {
ret = c2h_evt_read_88xx(adapter, buf);
s32 rtw_hal_fill_h2c_cmd(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer)
{
- s32 ret = _FAIL;
+ return padapter->HalFunc.fill_h2c_cmd(padapter, ElementID, CmdLen, pCmdBuffer);
+}
- if (padapter->HalFunc.fill_h2c_cmd)
- ret = padapter->HalFunc.fill_h2c_cmd(padapter, ElementID, CmdLen, pCmdBuffer);
- else
- {
- DBG_871X("%s: func[fill_h2c_cmd] not defined!\n", __FUNCTION__);
- rtw_warn_on(1);
+void rtw_hal_fill_fake_txdesc(_adapter* padapter, u8* pDesc, u32 BufferLen,
+ u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame)
+{
+ padapter->HalFunc.fill_fake_txdesc(padapter, pDesc, BufferLen,IsPsPoll, IsBTQosNull, bDataFrame);
+
+}
+u8 rtw_hal_get_txbuff_rsvd_page_num(_adapter *adapter, bool wowlan)
+{
+ return adapter->HalFunc.hal_get_tx_buff_rsvd_page_num(adapter, wowlan);
+}
+
+#ifdef CONFIG_GPIO_API
+void rtw_hal_update_hisr_hsisr_ind(_adapter *padapter, u32 flag)
+{
+ if (padapter->HalFunc.update_hisr_hsisr_ind)
+ padapter->HalFunc.update_hisr_hsisr_ind(padapter, flag);
+}
+#endif
+
+#define rtw_hal_error_msg(ops_fun) \
+ DBG_871X_LEVEL(_drv_always_, "### %s - Error : Please hook HalFunc.%s ###\n",__FUNCTION__,ops_fun)
+
+u8 rtw_hal_ops_check(_adapter *padapter)
+{
+ u8 ret = _SUCCESS;
+#if 1
+ /*** initialize section ***/
+ if (NULL == padapter->HalFunc.read_chip_version) {
+ rtw_hal_error_msg("read_chip_version");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.init_default_value) {
+ rtw_hal_error_msg("init_default_value");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.intf_chip_configure) {
+ rtw_hal_error_msg("intf_chip_configure");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.read_adapter_info) {
+ rtw_hal_error_msg("read_adapter_info");
+ ret = _FAIL;
}
- return ret;
+ if (NULL == padapter->HalFunc.hal_power_on) {
+ rtw_hal_error_msg("hal_power_on");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.hal_power_off) {
+ rtw_hal_error_msg("hal_power_off");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.hal_init) {
+ rtw_hal_error_msg("hal_init");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.hal_deinit) {
+ rtw_hal_error_msg("hal_deinit");
+ ret = _FAIL;
+ }
+
+ /*** xmit section ***/
+ if (NULL == padapter->HalFunc.init_xmit_priv) {
+ rtw_hal_error_msg("init_xmit_priv");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.free_xmit_priv) {
+ rtw_hal_error_msg("free_xmit_priv");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.hal_xmit) {
+ rtw_hal_error_msg("hal_xmit");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.mgnt_xmit) {
+ rtw_hal_error_msg("mgnt_xmit");
+ ret = _FAIL;
+ }
+ #ifdef CONFIG_XMIT_THREAD_MODE
+ if (NULL == padapter->HalFunc.xmit_thread_handler) {
+ rtw_hal_error_msg("xmit_thread_handler");
+ ret = _FAIL;
+ }
+ #endif
+ if (NULL == padapter->HalFunc.hal_xmitframe_enqueue) {
+ rtw_hal_error_msg("hal_xmitframe_enqueue");
+ ret = _FAIL;
+ }
+ #if defined(CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+ #ifndef CONFIG_SDIO_TX_TASKLET
+ if (NULL == padapter->HalFunc.run_thread) {
+ rtw_hal_error_msg("run_thread");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.cancel_thread) {
+ rtw_hal_error_msg("cancel_thread");
+ ret = _FAIL;
+ }
+ #endif
+ #endif
+
+ /*** recv section ***/
+ if (NULL == padapter->HalFunc.init_recv_priv) {
+ rtw_hal_error_msg("init_recv_priv");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.free_recv_priv) {
+ rtw_hal_error_msg("free_recv_priv");
+ ret = _FAIL;
+ }
+ #if defined(CONFIG_USB_HCI) || defined (CONFIG_PCI_HCI)
+ if (NULL == padapter->HalFunc.inirp_init) {
+ rtw_hal_error_msg("inirp_init");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.inirp_deinit) {
+ rtw_hal_error_msg("inirp_deinit");
+ ret = _FAIL;
+ }
+ #endif //#if defined(CONFIG_USB_HCI) || defined (CONFIG_PCI_HCI)
+
+
+ /*** interrupt hdl section ***/
+ #if defined(CONFIG_PCI_HCI)
+ if (NULL == padapter->HalFunc.irp_reset) {
+ rtw_hal_error_msg("irp_reset");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.interrupt_handler) {
+ rtw_hal_error_msg("interrupt_handler");
+ ret = _FAIL;
+ }
+ #endif //#if defined(CONFIG_PCI_HCI)
+
+ #if defined(CONFIG_PCI_HCI) || defined (CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+ if (NULL == padapter->HalFunc.enable_interrupt) {
+ rtw_hal_error_msg("enable_interrupt");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.disable_interrupt) {
+ rtw_hal_error_msg("disable_interrupt");
+ ret = _FAIL;
+ }
+ #endif //defined(CONFIG_PCI_HCI) || defined (CONFIG_SDIO_HCI) || defined (CONFIG_GSPI_HCI)
+
+
+ /*** DM section ***/
+ if (NULL == padapter->HalFunc.dm_init) {
+ rtw_hal_error_msg("dm_init");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.dm_deinit) {
+ rtw_hal_error_msg("dm_deinit");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.hal_dm_watchdog) {
+ rtw_hal_error_msg("hal_dm_watchdog");
+ ret = _FAIL;
+ }
+ #ifdef CONFIG_LPS_LCLK_WD_TIMER
+ if (NULL == padapter->HalFunc.hal_dm_watchdog_in_lps) {
+ rtw_hal_error_msg("hal_dm_watchdog_in_lps");
+ ret = _FAIL;
+ }
+ #endif
+
+ /*** xxx section ***/
+ if (NULL == padapter->HalFunc.set_bwmode_handler) {
+ rtw_hal_error_msg("set_bwmode_handler");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.set_channel_handler) {
+ rtw_hal_error_msg("set_channel_handler");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.set_chnl_bw_handler) {
+ rtw_hal_error_msg("set_chnl_bw_handler");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.SetHwRegHandler) {
+ rtw_hal_error_msg("SetHwRegHandler");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.GetHwRegHandler) {
+ rtw_hal_error_msg("GetHwRegHandler");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.GetHalDefVarHandler) {
+ rtw_hal_error_msg("GetHalDefVarHandler");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.SetHalDefVarHandler) {
+ rtw_hal_error_msg("SetHalDefVarHandler");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.GetHalODMVarHandler) {
+ rtw_hal_error_msg("GetHalODMVarHandler");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.SetHalODMVarHandler) {
+ rtw_hal_error_msg("SetHalODMVarHandler");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.UpdateRAMaskHandler) {
+ rtw_hal_error_msg("UpdateRAMaskHandler");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.SetBeaconRelatedRegistersHandler) {
+ rtw_hal_error_msg("SetBeaconRelatedRegistersHandler");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.Add_RateATid) {
+ rtw_hal_error_msg("Add_RateATid");
+ ret = _FAIL;
+ }
+
+ if (NULL == padapter->HalFunc.fill_h2c_cmd) {
+ rtw_hal_error_msg("fill_h2c_cmd");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.fill_fake_txdesc) {
+ rtw_hal_error_msg("fill_fake_txdesc");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.hal_get_tx_buff_rsvd_page_num) {
+ rtw_hal_error_msg("hal_get_tx_buff_rsvd_page_num");
+ ret = _FAIL;
+ }
+
+ #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
+ #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
+ if (NULL == padapter->HalFunc.clear_interrupt) {
+ rtw_hal_error_msg("clear_interrupt");
+ ret = _FAIL;
+ }
+ #endif
+ if (NULL == padapter->HalFunc.hal_set_wowlan_fw) {
+ rtw_hal_error_msg("hal_set_wowlan_fw");
+ ret = _FAIL;
+ }
+ #endif //CONFIG_WOWLAN
+
+
+ /*** SReset section ***/
+ #ifdef DBG_CONFIG_ERROR_DETECT
+ if (NULL == padapter->HalFunc.sreset_init_value) {
+ rtw_hal_error_msg("sreset_init_value");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.sreset_reset_value) {
+ rtw_hal_error_msg("sreset_reset_value");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.silentreset) {
+ rtw_hal_error_msg("silentreset");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.sreset_xmit_status_check) {
+ rtw_hal_error_msg("sreset_xmit_status_check");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.sreset_linked_status_check) {
+ rtw_hal_error_msg("sreset_linked_status_check");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.sreset_get_wifi_status) {
+ rtw_hal_error_msg("sreset_get_wifi_status");
+ ret = _FAIL;
+ }
+ if (NULL == padapter->HalFunc.sreset_inprogress) {
+ rtw_hal_error_msg("sreset_inprogress");
+ ret = _FAIL;
+ }
+ #endif //#ifdef DBG_CONFIG_ERROR_DETECT
+
+#endif
+ return ret;
}